我在Angular应用程序中使用ngx-translate。
我的HTML模板:
<span [ngClass]="(role === 'ADMIN') ? 'badge badge-danger' : 'badge badge-success'">{{ 'ADMIN.USER.ROLES.' + role | translate }}</span>
我的i18n json文件:
"ADMIN": {
"USER": {
"ROLES": {
"ADMIN": "Administrator",
"FOO": "Auditor FOO",
"DOO": "Auditor DOO",
"ROO": "Auditor ROO",
"unknown": "Unknown"
}
}
}
如果我的角色是BIPBIP
,我想使用'ADMIN.USER.ROLES.unknown'键。
我正在寻找HTML模板解决方案(不使用Java ):
this._translateService.get("app.key").subscribe(res=>{
if(...) {
// message does not exist
}
else {
// message exists
}
}))
答案 0 :(得分:1)
由于我找不到安全检查翻译是否存在的方法,所以我最好的办法是同步检查是否相等:
echo input | perl -wpe's/[^w,.-]//g'
但是,I filed an issue with ngx-translate要求使用正式的检查方法。
因此,对于您的模板,您只需使用hasTranslation(key: string): boolean {
return this.translateService.instant(myKey) !== myKey);
}
答案 1 :(得分:0)
我真的认为这应该使用JavaScript中的函数来完成。假设您有一个名为ADMIN
的对象,您可以这样做。
<span [ngClass]="(role === 'ADMIN') ? 'badge badge-danger' : 'badge badge-success'">{{ this.ADMIN.USER.ROLES[role] ? 'ADMIN.USER.ROLES.' + role : 'ADMIN.USER.ROLES.unknown' | translate }}</span>
答案 2 :(得分:0)
在 ngx-translate 中,如果翻译不存在,key 的字符串将被直接返回,所以试试这个:
{{ ('EQUIPMENT-TYPE' + equipment.type.name | translate) !== 'EQUIPMENT-TYPE' + equipment.type.name ? ('EQUIPMENT-TYPE' + equipment.type.name | translate) : equipment.type.name }}