i18next:回退到 [相同语言 + 不同名称空间] 而不是 [不同语言 + 相同名称空间]

i18next: fallback to [same language + different namespace] instead of [different language + same namespace]

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

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

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

其中resourcesDE是结构为{formal: { }, informal: { }}的对象,resourcesEN有相同的结构但只有'formal',没有'informal'(但我什至有这个问题如果资源EN中有'informal')。

现在,我想要拥有的是:

如果我请求将 'informal:myKey' 翻译成英语,则搜索路线(== 回退)是:

(en)'informal:myKey' > (en)'myKey' > (de)'informal:myKey' > (de)'myKey' 要么 (en)'informal:myKey' > (en)'myKey' > (de)'myKey'

但是实际上发生的是:

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

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

我怎样才能实现这个或类似的东西。我也尝试过为这些替代方案使用上下文而不是名称空间,但这似乎表现相同。不过我很高兴被证明是错误的。

最终为我解决的解决方案:

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