ngx-如果缺少密钥或正在加载翻译文件,则翻译默认文本

时间:2019-04-13 05:47:41

标签: angular typescript translation ngx-translate

我正在设置一个新的Angular 7应用程序。我想设置默认文本进行翻译。因此,在翻译{{'wait'|翻译}},如果有任何后备内容,我想将文本“立即等待”设置为默认文本。意味着如果正在加载数据或缺少密钥,则应该显示传递的值(在这种情况下为Waiting Now)。

我试图做类似{{ 'Intro' | translate:'localizedText' }}

的事情

不是没用

{{ 'Intro' | translate:'localizedText' }}

我希望结果应该是

{{'简介'|翻译:“ localizedText”}} =>简介(如果正在加载或缺少密钥)

{{'简介'|翻译:“ localizedText”}} =>翻译文字

2 个答案:

答案 0 :(得分:0)

您将需要使用自定义MissingTranslationHandler,如下所示:

在您的app.module或您要加载TranslateModule.forRoot的任何地方执行以下操作:

@Injectable()
export class MyMissingTranslationHandler implements MissingTranslationHandler {
    handle(params: MissingTranslationHandlerParams): string {
        return `**MISSING KEY: ${params.key}**`;
    }
}

然后在您的providers:[]中添加以下内容:(导入MissingTranslationHandler后)

{
    provide: MissingTranslationHandler,
    useClass: MyMissingTranslationHandler
},

有关更多详细信息,请参见此链接:

https://github.com/ngx-translate/core#how-to-handle-missing-translations

要为缺失值返回默认值,您可以尝试以下操作:

1-创建一个对象/ json以包含默认值,该json应包含与原始json相同的结构。

const alternativeJson = {  
       value1: 'default1'
}

handle(params: MissingTranslationHandlerParams): string {
        return this.alternativeJson[params.key];
}

答案 1 :(得分:0)

我按照说明在此处创建缺少的翻译处理程序:https://github.com/ngx-translate/core#how-to-handle-missing-translations

但是我的版本允许将默认值传递给这样的管道

<span>{{"MyTranslateKey" | translate: {Default: "Default Translation"} }}</span>

默认值可以是上面指定的字符串或变量。

这是我的处理程序:

import {MissingTranslationHandler, MissingTranslationHandlerParams} from '@ngx-translate/core';

export class MissingTranslationHelper implements MissingTranslationHandler {
  handle(params: MissingTranslationHandlerParams) {
    if (params.interpolateParams) {
      return params.interpolateParams["Default"] || params.key;
    }
    return params.key;
  }
}