我在translation.json
/locales/en/
个文件
{
"app": {
"name": "Example App"
}
}
在html
中,我有:
<a href="/" data-i18n="app.name">
在js
:
$(document).ready(function() {
var language_complete = navigator.language.split("-");
var language = (language_complete[0]);
console.log('language', language);
$.i18n.init({
lng: language,
fallbackLng: false,
debug: false
}, function() {
$('a').i18n();
});
});
它显示app.name
而不是Example App
。我的代码中错过了什么?感谢
答案 0 :(得分:0)
您必须将 useLocalStorage 和 useDataAttrOptions 设置为true
$.i18n.init({useLocalStorage: true , useDataAttrOptions:true, ....});
答案 1 :(得分:0)
从i18next V2开始,后端不再提供开箱即用的see the migration guide),因此您需要在{0}}中定义backend
配置init块:
backend: {
loadPath: '/locales/{{lng}}/{{ns}}.json'
},
如果您不这样做,您的资源将不会被加载,翻译价值将回退到各自的键(see the source code)。
答案 2 :(得分:0)
在js中,因为$(document).ready
不等待加载外部内容。您需要使用$(window).on('load',function(){...})
。