如何使用 i18n 在角度中翻译自定义管道?



我正在使用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 });
}
// [...]

最新更新