[英]How to translate custom pipes in angular using i18n?
我正在使用 i18n 翻译我的 Angular 7 应用程序,并且我有生成文本的自定义管道。 如何翻译管道产生的文本?
我坚持 angular 文档提供的i18n 指南,我使用此xliff 合并策略进行开发,并使用本教程进行我的每个语言环境的构建。
例如,我试图翻译这段时间之前的管道,其中数字被转换为文本。
目前我不知道如何翻译自定义管道。 我只知道如何使用i18n
属性翻译 html 标签,这似乎不适用于我使用的自定义管道。
这个有角度的 i18n 段落建议在主app.module.ts
设置某种全局变量,但示例有点稀缺,并且 (a) 我不知道如何根据每种语言的构建设置语言环境我确实遵循本教程,(b) 我不知道如何将全局语言环境放入我的自定义管道中,(c) 是否可以翻译messages.<locale>.xlf
管道的内容messages.<locale>.xlf
文件而不是内部管道?
通常在这种情况下您可以做的是将 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 });
}
// [...]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.