如何在Framework7 ajax加载页面上加载i18next翻译?

时间:2016-09-08 12:29:38

标签: javascript jquery ajax html-framework-7

我正在使用i18next jquery版本来本地化我的framework7代码中的文本。如果我单击按钮更改语言(使用localstorage保存语言选项),它适用于每个文件。但是,如果我在视图中加载另一个文件,例如关于页面,则它不起作用。

我是javascript的新手,我使用教程和其他帮助完成了这项工作。

如何将翻译应用到视图中加载的每个页面,而无需按下按钮来更改它?

这是我的带翻译的i18next函数(language.js):

var itemslang = {
    "en": {
        "translation": {
          /* MENU */
          "About-Framework7": "About-Framework7",
          "Welcome-to-Framework7": "Welcome-to-Framework7",
        }
    },
        "br": {
        "translation": {
          /* MENU */
          "About-Framework7": "Sobre o Framework7",
          "Welcome-to-Framework7": "Bem Vindo ao Framework7",
        }
    }
};

$(document).ready(function() {
    var language = "en";
    if (localStorage.getItem("language") != null)
        language = localStorage.getItem("language");

    i18n.init({
        lng: language,
        resStore: itemslang,
        fallbackLng: "en"
    }, function(o) {
        $(document).i18n()
    }), $(".lang").click(function() {
        var o = $(this).attr("data-lang");

        localStorage.setItem("language", o);

        i18n.init({
            lng: o
        }, function(o) {
            $(document).i18n()
        })
    })
});

这里有改变语言的按钮:

<button class="lang en" data-lang="en">EN</button>
<button class="lang br" data-lang="br">BR</button>

1 个答案:

答案 0 :(得分:0)

找到了答案!

我忘了在index.html中加载文件my-app.js

其中包含翻译工作的代码:

$$(document).on('pageInit', function (e) {
  $(document).i18n();
});

这将在每个加载的视图中应用翻译。