7

我有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. 我在代码中遗漏了什么?谢谢

4

3 回答 3

0

您必须将useLocalStorageuseDataAttrOptions设置为 true

$.i18n.init({useLocalStorage: true , useDataAttrOptions:true, ....});
于 2013-08-24T03:47:03.733 回答
0

从 i18next V2 开始,不再提供开箱即用的后端(请参阅迁移指南),因此您需要backend在 init 块中定义配置:

backend: {
    loadPath: '/locales/{{lng}}/{{ns}}.json'
},

如果您不这样做,您的资源将不会被加载,并且翻译值将回退到它们各自的键(参见源代码)。

于 2016-06-03T01:40:17.117 回答
0

在 js 中,这是因为$(document).ready不等待加载外部内容。你需要使用$(window).on('load',function(){...}).

于 2017-01-31T15:14:38.700 回答