【发布时间】:2012-10-24 00:59:56
【问题描述】:
我正在使用 I18Next 作为基于 Javascript 的翻译解决方案,以下是需要做的事情:
- 已加载默认命名空间“Core”。它包含我想要的大多数键,但不是全部。
- 没有固定的命名空间列表:因此我不能只告诉
i18n.init我想要的ns.namespaces。 - 在页面加载期间,可选的一些“模块”被加载到应用程序中,它们也需要被翻译。他们应该在某处报告他们的 i18n 命名空间名称,然后 i18n shuold 使该命名空间的键可用。
基本上,i18next 有没有办法在调用命名空间时自动加载它们?保证通过t("[SomeNamespace]Key.Key2"); 调用的命名空间是有效的并且肯定存在。问题只是 i18next 无法“自动加载”,我无法找到一种方法让 i18n“手动”加载资源文件在调用 i18n.init 之后。
这是我当前的代码。
$.i18n.init(
{
lng: "en",
fallbackLng: "en",
useCookie: false,
resGetPath: "System/i18n/__ns__/__lng__.json",
ns: "Core"
},
function(t) {
System.I18N = t;
alert(System.I18N("LoginUI:Messages.Name"));
}
);
正如预期的那样,它只是向我显示LoginUI:Messages.Name,而不是System/i18n/LoginUI/en.json中的翻译:
{
"Messages": {
"Name": "Logon Interface"
}
}
(在这种情况下,Core/en.json 无关紧要。我目前需要的是自动加载“LoginUI/en.json”,或者我可以强制手动加载。)
【问题讨论】:
标签: javascript internationalization i18next