我正在使用i18n翻译我的Angular 7应用,并且我具有生成文本的自定义管道。如何翻译管道产生的文字?
我坚持使用angular文档提供的i18n guideline,我使用此xliff merge strategy进行开发,并使用this tutorial进行每个语言环境的构建。
例如,我正在尝试翻译将数字转换为文本的time ago pipe。
目前我还不知道如何翻译自定义管道。我只知道如何使用i18n
属性来翻译html标签,该属性似乎不适用于我使用的自定义管道。
此angular i18n paragraph建议在主app.module.ts
中设置某种全局变量,但示例有点稀少,而且(a)我不知道如何根据按照我在this tutorial之后的操作,按照每种语言进行构建,(b)我不知道如何将全局语言环境导入我的自定义管道,并且(c)是否有可能在{{1 }}文件而不是管道中的文件?
答案 0 :(得分:1)
通常,在这种情况下,您可以做的是将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 });
}
// [...]