我想使用ngx-translate
和| translate
管道在Angular HTML模板中转换一些值。目前,我的代码如下所示:
<div>
{{equipment.type.name}}
</div>
equipment
来自component.ts的对象在哪里。因此,仅显示设备类型的名称。
我要实现的是翻译这些类型的设备,因此我在i18n json文件中添加了一些翻译:
"EQUIPMENT-TYPE": {
"chair": "Chair",
"table": "Table",
}
我已经修改了我的HTML模板,如下所示:
<div>
{{'EQUIPMENT-TYPE' + equipment.type.name | translate}}
</div>
并且它实际上有效,但是仅当将翻译添加到i18n json文件时才有效。
我的问题是:是否可以检查json文件中是否存在特定的转换密钥,如果不存在,则仅使用设备类型的名称进行dsplay?
下面的代码不起作用,即使它不存在,它也会始终尝试转换密钥:
<div>
{{ ('EQUIPMENT-TYPE' + equipment.type.name) ? ('EQUIPMENT-TYPE' + equipment.type.name | translate) : equipment.type.name }}
</div>
在ngx-translate中,如果翻译不存在,则将直接撤消键的字符串,因此请尝试以下操作:
{{ ('EQUIPMENT-TYPE' + equipment.type.name | translate) !== 'EQUIPMENT-TYPE' + equipment.type.name ? ('EQUIPMENT-TYPE' + equipment.type.name | translate) : equipment.type.name }}
如果翻译不存在,那么translateService将直接返回字符串,因此
this.translateService.instant('stringToBeTranslated') is equal to stringToBeTranslated// it does not exist
但是当您将其添加到json中时
'stringToBeTranslated': "test"
this.translateService.instant('stringToBeTranslated) is equal to test