javascript - 自动加载命名空间 i18next

标签 javascript internationalization i18next

我使用 I18Next 作为基于 Javascript 的翻译解决方案,这是需要发生的事情:

  1. 已加载默认 namespace “Core”。它包含我想要的大部分 key ,但不是全部。
  2. 没有固定的命名空间列表:因此我不能只告诉 i18n.init 我想要的 ns.namespace
  3. 在页面加载期间,可以选择将一些“模块”加载到应用程序中,并且还需要对其进行翻译。他们应该在某处报告他们的 i18n 命名空间名称,然后 i18n 应该使该命名空间的键可用。

基本上,有没有办法让 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”,或者我可以强制手动加载。)

最佳答案

i18next 现在带有一个在初始化后加载额外命名空间的函数:https://www.i18next.com/principles/namespaces#sample

关于javascript - 自动加载命名空间 i18next,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13210978/

相关文章:

jquery - data-i18n 不显示符号

javascript - 响应式网站上的超宽图像 slider

php - 页面无法打印正常吗?

javascript - Jquery 图像交换 onLoad

PHP 函数来制作 slug(URL 字符串)

android - 如何改变 native 布局方向?

reactjs - i18next 警告或检查缺少语言的键(不是 fallbackLng)

javascript - 我使用 Chosen 插件在选择中添加了箭头,但它无法正常工作

java - 调用 String#toLowerCase 时应该指定哪个区域设置?

internationalization - 设计用于全局应用程序的国际翻译/语言适配器