Angular-ngx-translate-检查Angular是否存在转换键

时间:2019-03-05 16:58:05

标签: angular ngx-translate

我在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
    }
}))

3 个答案:

答案 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 }}

感谢https://www.nuomiphp.com/eplan/en/390812.html