【问题标题】:i18next Load translations from json filesi18next 从 json 文件加载翻译
【发布时间】:2019-03-03 11:23:57
【问题描述】:

我在路径中有英文 json 翻译文件:translation/en.json

我像这样初始化 i18next:

i18next.init({
    lng: navigator.language,
    fallbackLng : "en",
    backend: {
        loadPath: '/translation/{{lng}}.json',
    }
});

运行后

i18next.t(KEY);

将在翻译文件中打印“KEY”而不是其值

当翻译位于 i18next 对象的“资源”参数内时,它运行良好。如下:

i18next.init({
    lng: navigator.language,
    fallbackLng : "en",
    resources: {
        en: {
            translation: {
                "KEY": "keyValue"
            }
        }
    }
});

我使用 i18next 框架

【问题讨论】:

  • 如果您查看 devtools 的网络选项卡,您能否确认您的 .json 文件已加载?如果您只使用主要语言,也应该使用load: 'languageOnly'
  • json 文件未加载。此外,我使用不止一种语言。
  • 这是我使用的一个示例,它可能会帮助您解决问题:pastebin.com/cbu0jCnZ

标签: javascript jquery translation i18next


【解决方案1】:

我使用了 initImmediate:false 等待翻译加载。

i18next
  .use(i18nextXHRBackend)
  .init({
    //debug:true,
    initImmediate: false, // set initImmediate false -> init method finished only when all resources/translation finish loading (async behaviour)
    lng: "en",
    fallbackLng : "en",
    backend:{
      loadPath: chrome.runtime.getURL('translation/{{lng}}.json')
    }
});

我使用chrome.runtime.getURL,因为我在chrome扩展中使用i18next,翻译文件应该加载到这个文件夹“翻译”

【讨论】:

    猜你喜欢
    • 2021-09-24
    • 2013-07-21
    • 2022-10-13
    • 1970-01-01
    • 2014-08-01
    • 2019-10-04
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多