成功加载名称空间后,我想将其作为给定语言的对象进行访问。
如果给定语言的名称空间不存在,我想获取后备语言的名称空间。
如果后备语言的命名空间都不存在,我想得到一个空对象。
我已经尝试过:
type Screen = 'screen1' | 'screen2' | 'screen3';
const transitions = [
{name: 'from1to2', from: 'screen1', to: 'screen2'},
{name: 'from2to3', from: 'screen2', to: 'screen3'},
{name: 'from3to2', from: 'screen3', to: 'screen2'},
{name: 'from2to1', from: 'screen2', to: 'screen1'},
];
// DRY here! But how?
type Transition = 'from1to2' | 'from2to3' | 'from3to2' | 'from2to1';
但是必须有一个更优雅的解决方案。
答案 0 :(得分:0)
您可以直接使用i18next
从getResourceBundle()
访问翻译器对象的资源库的内容。
来自API:
getResourceBundle
i18next.getResourceBundle(lng, ns)
返回资源束。
要获取给定语言或备用语言的名称空间,可以使用:
var ns = "abc";
var ns_obj = i18next.getResourceBundle(i18next.language, ns)
|| i18next.getResourceBundle(i18next.options.fallbackLng[0], ns)
|| {};
如果您使用多种后备语言,则必须迭代i18next.options.fallbackLng
。