【发布时间】: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