我正在开发一个webapp.我正在使用i18next,除非我在选项上指定“lng”,否则它不会检测语言.
如果我使用“navigator.language || navigator.userLanguage”,Chrome就可以了.它返回类似“en”的内容.但是Firefox例如返回“en-GB”.我不使用区域翻译,i18next不会将“en-GB”重定向到“en”.所以,系统不起作用.
这是我的代码:
$(document).ready(function(){
i18next.use(i18nextXHRBackend);
i18next.init({
'debug': true,
'lng': navigator.language || navigator.userLanguage,
'fallbackLng': 'en',
'load': 'currentOnly',
'backend': {
loadPath: 'locales/{{lng}}/{{ns}}.json'
}
}, function() {
jqueryI18next.init(i18next, $);
$('body').localize();
});
});
最佳答案 i18next支持区域语言……这就是本地化的意义所在.
如果您只想支持没有区域设置加载的语言:’languageOnly’:
$(document).ready(function(){
i18next.use(i18nextXHRBackend);
i18next.init({
'debug': true,
'load': 'languageOnly',
'lng': navigator.language || navigator.userLanguage,
'fallbackLng': 'en',
'load': 'currentOnly',
'backend': {
loadPath: 'locales/{{lng}}/{{ns}}.json'
}
}, function() {
jqueryI18next.init(i18next, $);
$('body').localize();
});
});
这将避免接受en-GB进行查找并仅使用en.如果没有设置,i18next仍将输出相同的结果,但也尝试加载en-GB翻译.