i18next 显示键而不是值,TVOs,js

i18next Displayed key instead of value, TVOs, js

我遇到了和这个类似的问题,但是我做了所有他们写的,但仍然有问题 i18next Displayed key instead of value

我在 /locales/en/

中有 translation.json 个文件
  {
    "Ustawienia"    :   "Settings",
    "O aplikacji"   :   "About Application"
   }

在application.js

function launchApp(options) {
    var javascriptFiles = [
        `${options.BASEURL}js/i18next.min.js`,
        `${options.BASEURL}js/i18next-xhr-backend.min.js`,
        `${options.BASEURL}templates/MainTemplate.js`,
];
evaluateScripts(javascriptFiles, function(success) {
        if(success) {

            i18next.use(i18nextXHRBackend);
            i18next.init({
                lng: userLanguage,
                debug: true,
                fallbackLng: false,
                keySeparator: false,
                nsSeparator: false,
                useLocalStorage: true ,
                useDataAttrOptions:true,

                //resGetPath :  '/locales/{{lng}}/{{ns}}.json',
                backend: {
                    loadPath: options.BASEURL + '/locales/{{lng}}/{{ns}}.json'

                },


            }, (err, t) => {
  // initialized and ready to go!


                    });

            var doc = new MainTemplate().getTemplate();
            doc.addEventListener("select", handleMainNavigationClick);
            mainDocument = doc;
            navigationDocument.pushDocument(doc);
            setTimeout(dismissModalView, 2000);
        }

当我想在模板中使用 i18next.t 例如

<title>${i18next.t("Ustawienia")}</title>

它显示键(Ustawienia)而不是值(设置)你有什么提示可以告诉我我遗漏了什么吗?

我认为您的问题可能出在初始化 mainDocument 的地方。来自 i18next.init() 的回调未被使用,但是 that 是您确定它实际上 is 初始化的地方。您的代码应如下所示

if(success) {

    i18next.use(i18nextXHRBackend);
    i18next.init({
        lng: userLanguage,
        debug: true,
        fallbackLng: false,
        keySeparator: false,
        nsSeparator: false,
        useLocalStorage: true ,
        useDataAttrOptions:true,
        backend: {
            loadPath: options.BASEURL + '/locales/{{lng}}/{{ns}}.json'

        },
    }, (err, t) => {
        // initialized and ready to go!
        // this is where initialisation-dependent code should go

        // additionally check if there was an error initialising i18next
        if (err === undefined) {
            var doc = new MainTemplate().getTemplate();
            doc.addEventListener("select", handleMainNavigationClick);
            mainDocument = doc;
            navigationDocument.pushDocument(doc);
            setTimeout(dismissModalView, 2000);
        } else {
            // there was an error, handle it
        }
    });

}