检查angular2是否存在翻译密钥

时间:2017-10-19 07:36:15

标签: angular angular-translate

我正在使用ngx-translate,我有一个静态文件,我在其中定义了键及其含义。但是当我使用这样的翻译时{{“app.key”|如果密钥不存在,它会在屏幕上打印“app.key”,但我希望能够检查它是否存在,我该怎么办呢?提前谢谢。

2 个答案:

答案 0 :(得分:2)

您可以通过两种方式处理该问题:

第一个变体:手动检查特定翻译的存在:

由于我找不到安全检查翻译是否存在的方法,所以我最好的办法是同步检查是否相等:

if (this.translateService.instant(myKey) === myKey) {
  // key is not present
}

但是,I filed an issue with ngx-translate正在请求检查方法。

第二个变体:使用通用处理程序来处理缺少的翻译:

如果您只想查找一般缺少的翻译,则可以设置missingTranslationHandler

@NgModule({
  imports: [
    ...
    TranslateModule.forRoot({
      missingTranslationHandler: {
        provide: MissingTranslationHandler,
        useClass: MyMissingTranslationHandler,
      },
    }),
  ],
})
export class myModule {
  ...
}


class MyMissingTranslationHandler implements MissingTranslationHandler {
  handle(params: MissingTranslationHandlerParams): any {
    console.warn(`Missing translation: ${params.key}`);
    return '[MISSING]: ' + params.key;
  }
}

答案 1 :(得分:0)

您需要使用API​​中的get函数,如果它返回您要检查的密钥而不是翻译,则表示没有可用的翻译。

this._translateService.get("app.key").subscribe(res=>{
    if(res === "app.key") {
        // message does not exist
    }
    else {
        // message exists
    }
})
相关问题