我正在设置一个新的Angular 7应用程序。我想设置默认文本进行翻译。因此,在翻译{{'wait'|翻译}},如果有任何后备内容,我想将文本“立即等待”设置为默认文本。意味着如果正在加载数据或缺少密钥,则应该显示传递的值(在这种情况下为Waiting Now)。
我试图做类似{{ 'Intro' | translate:'localizedText' }}
不是没用
{{ 'Intro' | translate:'localizedText' }}
我希望结果应该是
{{'简介'|翻译:“ localizedText”}} =>简介(如果正在加载或缺少密钥)
{{'简介'|翻译:“ localizedText”}} =>翻译文字
答案 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;
}
}