【问题标题】:i18next: fallback to [same language + different namespace] instead of [different language + same namespace]i18next:回退到 [相同语言 + 不同命名空间] 而不是 [不同语言 + 相同命名空间]
【发布时间】:2015-04-20 20:26:18
【问题描述】:

这是关于在 node.js 后端使用 i18next。 这是初始化:

i18next.init({
    lng: 'de',
    fallbackLng: ['de'],
    ns: {
        namespaces: ['formal', 'informal'],
        defaultNs: 'formal'
    },
    fallbackToDefaultNS: true,

    resStore: {
        de: resourcesDE,
        en: resourcesEN
    }
});

其中 resourcesDE 是具有结构 { 正式:{ },非正式:{ }} 的对象,resourcesEN 具有相同的结构,但只有“正式”,没有“非正式”(但即使有“非正式”,我也有这个问题在资源中EN)。

现在,我想要拥有的是:

如果我要求将 'informal:myKey' 翻译成英文,则搜索路径(== 后备)是:

(en)'informal:myKey' > (en)'myKey' > (de)'informal:myKey' > (de)'myKey' 或者 (en)'informal:myKey' > (en)'myKey' > (de)'myKey'

实际上发生的是:

(zh)'informal:myKey' > (de)'informal:myKey' > (de)'myKey'

意味着在尝试从不同(默认)命名空间获取相同语言的文本之前,语言会发生变化。

我怎样才能做到这一点或类似的事情。我也尝试使用上下文而不是名称空间来替代这些替代方案,但这似乎表现相同。不过我很高兴被证明是错误的。

【问题讨论】:

    标签: node.js i18next


    【解决方案1】:

    最终解决了我的问题:

    我使用特殊语言风格而不是命名空间:“de-INFORMAL”和“en-INFORMAL”。如果在“en-INFORMAL”下未找到任何标签,则查找将回退到“en”,首先是开箱即用。如果fallbackLng 设置为 'de',如果在 'en' 中找不到标签,它也会回退到那个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多