这是关于在node.js后端使用i18next。 这是初始化:
i18next.init({
lng: 'de',
fallbackLng: ['de'],
ns: {
namespaces: ['formal', 'informal'],
defaultNs: 'formal'
},
fallbackToDefaultNS: true,
resStore: {
de: resourcesDE,
en: resourcesEN
}
});
其中resourcesDE是一个具有结构{formal:{}的对象,非正式:{}}和resourcesEN具有相同的结构,但只有'正式',没有'非正式'(但即使有'非正式',我也有这个问题在resourcesEN)。
现在,我想要拥有的是:
如果我要求为英语翻译'非正式:myKey',那么搜索路线(==后备)是:
(en)'非正式:myKey'> (en)'myKey'> (de)'非正式:myKey'> (DE) '的myKey' 要么 (en)'非正式:myKey'> (en)'myKey'> (DE) '的myKey'
但实际发生的是:
(en)'非正式:myKey'> (de)'非正式:myKey'> (DE) '的myKey'
意味着语言在尝试从不同的(默认)命名空间中获取相同语言的文本之前就会发生变化。
我怎样才能实现这一点或类似的东西。我也尝试过使用上下文而不是命名空间来实现这些替代方案,但这似乎表现得相同。我很高兴被证明是错的。
答案 0 :(得分:0)
最终为我解决的解决方案:
我使用特殊的语言风格而不是命名空间:' de-INFORMAL'和' en-INFORMAL'。如果在' en-INFORMAL'下找不到标签,则查找将首先退回到' en'首先开箱即用。如果fallbackLng
设置为' de'如果在' en'中找不到标签,它将会回退。