Node.js i18next:回退到[相同语言+不同名称空间],而不是[不同语言+相同名称空间]
这是关于在node.js后端中使用i18next的。 这是初始化:Node.js i18next:回退到[相同语言+不同名称空间],而不是[不同语言+相同名称空间],node.js,i18next,Node.js,I18next,这是关于在node.js后端中使用i18next的。 这是初始化: i18next.init({ lng: 'de', fallbackLng: ['de'], ns: { namespaces: ['formal', 'informal'], defaultNs: 'formal' }, fallbackToDefaultNS: true, resStore: { de: resourcesDE,
i18next.init({
lng: 'de',
fallbackLng: ['de'],
ns: {
namespaces: ['formal', 'informal'],
defaultNs: 'formal'
},
fallbackToDefaultNS: true,
resStore: {
de: resourcesDE,
en: resourcesEN
}
});
其中resourcesDE是一个结构为{formal:{},normal:{}的对象,resourcesEN具有相同的结构,但只有“formal”,没有“normal”,但即使resourcesEN中有“normal”,我也有这个问题
现在,我想要的是:
如果我请求将“非正式:myKey”翻译成英语,则搜索路径==回退为:
非正式的:myKey'>en'myKey'>de'unformal:myKey'>de'myKey'
或
非正式用语:myKey'>en'myKey'>de'myKey'
但实际情况是:
非正式的:myKey'>de'非正式的:myKey'>de'myKey'
这意味着,在尝试从不同的默认名称空间获取相同语言的文本之前,语言会发生更改
我怎样才能做到这一点,或者沿着这些思路去做。我也尝试过在这些备选方案中使用上下文而不是名称空间,但其行为似乎是相同的。不过,我很高兴被证明是错的。最终为我找到的解决方案是: 我不使用名称空间,而是使用特殊的语言风格:“de-unformal”和“en-unformal”。如果在“en非正式”下未找到标签,则查找将返回到“en”,首先是开箱即用。如果fallbackLng设置为“de”,则如果中的标签未在“en”中找到,它也将返回到“de”