ngx翻译中的键中是否允许使用点



我现在正在处理的代码库中有一个与带点的键有关的问题。

基本上,i18nJSON包含类似以下内容:

{
a: {
title: 'Title for a'
},
b: {
title: 'Title for b'
},
'a.b': {
title: 'Title for a.b'
}
}

在 html 中,我们正在访问它

{{ 'a.title' | translate }}

简而言之,这些是现有键的结果

<th style="text-align: left;">keystyle="text-align: left;">astyle="text-align: left;">a.titlestyle="文本对齐:左;">bstyle="text-align: left;">b.titlestyle="text-align: left;">a.bstyle="text-align: left;">a.b.title
ResultWorks
{title: 'Title for a'}
a
{title: 'Title for b'}
标题 b
undefined
undefined

默认情况下使用{{ 'a.b.title' | translate }}ngx-translate 搜索这个

{
a: {
b: {
title: 'Title for a'
}
}
}

为了回答我自己的帖子,键中允许使用是点,但如果你有复合键,它很容易给你带来麻烦。

我的解决方案是扁平化所有翻译,这使得底层代码 O(1) 获取每个键,并允许我们甚至在组合键中使用点。

平展所有翻译意味着以下内容:

{
a: {
b: {
title: 'Title for b',
label: 'Label for b'
}
}
}

成为:

'a.b.title': 'Title for b'
'a.b.label': 'Label for b'

最新更新