我正在使用i18n翻译我的Angular 7应用程序,并且我有生成文本的自定义管道。如何翻译管道生成的文本?
我坚持 angular 文档提供的 i18n 指南,我使用这个 xliff 合并策略进行开发,并将本教程用于每个语言环境的构建。
例如,我正在尝试翻译这个时间前的管道,其中数字被转换为文本。
目前我不知道如何翻译自定义管道。我只知道如何使用i18n
属性翻译 html 标签,这似乎不适用于我使用的自定义管道。
这个角度 i18n 段落建议在主app.module.ts
中设置某种全局变量,但示例有点稀缺,并且 (a) 我不知道如何根据每种语言的构建设置语言环境,就像我按照本教程所做的那样,(b) 我不知道如何将全局区域设置放入我的自定义管道中,以及 (c) 是否可以翻译CC_中管道的内容3 个文件而不是在管道内?
通常在这种情况下,您可以做的是将 translateService 作为依赖项添加到管道中,然后从代码进行翻译。
因此,管道中的构造函数如下所示:
constructor(private changeDetectorRef: ChangeDetectorRef, private ngZone: NgZone, private tr: TranslateService) {}
在您的转换函数中,您可以使用以下内容返回文本值:
// [...]
} else if (days <= 545) {
return this.tr.instant('time.one-year-ago');
} else { // (days > 545)
return this.tr.instant('time.years-ago', { years });
}
// [...]