【问题标题】:i18next changing resGetPath on the flyi18next 即时更改 resGetPath
【发布时间】:2015-08-07 22:14:12
【问题描述】:

我有一个节点应用程序,它使用 i18next 模块来处理 i18n,但我遇到了一个似乎无法在服务器端解决的问题。

该应用程序内置于node 并使用express 框架。

在作为 ap 入口点的主 app.js 文件中,我需要 i18n 模块并运行 init 方法。

这是为了在客户端使用它。

稍后在另一个文件中,我尝试重置 resGetPath 属性,以便将翻译文件加载到与正常位置不同的位置(一些文件位于默认的 locales/__lng__/__ns__.json 路径中,其他位于他们自己的单独文件夹)。

我似乎无法在 i18n 对象上找到执行此操作的特定方法,因此我一直在尝试使用回调再次运行 init 方法。

但是,即使我这样做了,resGetPath 属性也不会改变,也不会从新文件中提取翻译字符串。

如果我在app.js 的第一个init 调用中设置resGetPath 属性,尽管它按预期工作(尽管它在locales/__lng__/__ns__.json 中丢失了正常翻译)

基本上这就是我想要做的:

app.js

i18n.init({
  detectLngQS: 'lang',
  debug: false,
  useCookie: false,
  detectLngFromHeaders: true,
  fallbackLng: ['en-GB', 'dev']
});

after-app.js

i18n.init({
  resGetPath: path.join(__dirname, '../new-path.json')
}, function(t) {
  // Here `t` does not get the strings in the new resGetPath
});

谁能告诉我如何即时更改resGetPath,或者告诉我我做错了什么?

【问题讨论】:

    标签: javascript node.js express i18next


    【解决方案1】:

    我想通了。

    你只需要在运行init之前运行i18n.sync.resStore = {},然后它会强制重新加载。

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 2021-08-14
      • 2013-07-18
      • 2017-11-11
      • 2020-08-01
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多