Wil*_*iam 6 javascript internationalization typescript i18next
我的应用程序相当大,因此为了拥有更有条理的翻译文件,我想使用嵌套命名空间。例子:
{
"contract": {
"index": {
"pageTitle": "Contract"
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当我访问它时。在这个问题的帮助下,我发现我可以通过使用它来访问索引内的键,如下所示:
const { t, i18n } = useTranslation('contract', { useSuspense: false });
...
t('index.pageTitle')
Run Code Online (Sandbox Code Playgroud)
问题是似乎没有必要index.为我想要访问的每个键添加前缀。我想做的是导入命名空间索引而不是合约,并按如下方式使用它:
const { t, i18n } = useTranslation('contract:index', { useSuspense: false });
...
t('pageTitle')
Run Code Online (Sandbox Code Playgroud)
这是行不通的。我contract.index也尝试过。在官方文档中我没有找到任何关于嵌套的内容。是否有可能完成我想要做的事情,或者我必须坚持为每个键添加前缀?
经过一段愉快的时间,我发现了一些类似于 i18n 中嵌套命名空间的东西。显然,您可以从翻译挂钩获取新的翻译对象,如下所示:
const { t } = useTranslation('batch');
const nestedNamespace = t('id.someOtherSection', { returnObjects: true })
Run Code Online (Sandbox Code Playgroud)
并且,要访问 的属性nestedNamespace,您可以直接调用它,如下所示:
nestedNamespace.someTranslation -> THIS WORKS!!!
nestedNamespace('someTranslation') -> THIS WON'T WORK!
Run Code Online (Sandbox Code Playgroud)