繁体   English   中英

如何使用 i18n 以角度转换自定义管道?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM