Angular 如何使用i18n以角度平移自定义管道?

Angular 如何使用i18n以角度平移自定义管道?,angular,localization,internationalization,Angular,Localization,Internationalization,我正在使用i18n翻译Angular 7应用程序,我有定制的管道来生成文本。如何翻译管道生成的文本 我坚持angular文档提供的方法,我使用它进行开发,并根据区域设置进行构建 例如,我尝试将数字转换为文本 目前我不知道如何翻译自定义管道。我只知道如何使用i18n属性翻译html标记,这似乎不适用于我使用的自定义管道 这建议在mainapp.module.ts中设置某种全局变量,但是示例有点少,(a)我不知道如何根据每种语言的构建设置区域设置,正如我下面所做的那样,(b)我不知道如何将全局区域设

我正在使用i18n翻译Angular 7应用程序,我有定制的管道来生成文本。如何翻译管道生成的文本

我坚持angular文档提供的方法,我使用它进行开发,并根据区域设置进行构建

例如,我尝试将数字转换为文本

目前我不知道如何翻译自定义管道。我只知道如何使用
i18n
属性翻译html标记,这似乎不适用于我使用的自定义管道


这建议在main
app.module.ts
中设置某种全局变量,但是示例有点少,(a)我不知道如何根据每种语言的构建设置区域设置,正如我下面所做的那样,(b)我不知道如何将全局区域设置到我的自定义管道中,(c)是否可以在
messages..xlf
文件中而不是在管道中翻译管道的内容?

在这种情况下,通常可以将translateService作为依赖项添加到管道中,然后仅从代码进行翻译

因此,管道中的构造函数如下所示:

构造函数(私有changeDetectorRef:changeDetectorRef,私有ngZone:ngZone,私有tr:TranslateService){}
在transform函数中,您可以使用以下命令返回文本值:

/[…]
}否则,如果(第545天)
返回this.tr.instant('time.years ago',{years});
}
// [...]

谢谢你的回答,Coo!我认为使用管道翻译服务是不可避免的。尽管如此,我还是希望所有的翻译都放在一个地方,但这似乎并不实用。我建议的解决方案可以让你仍然把你的翻译放在一个地方!TranslateService似乎不是解决方案,因为该服务不是Angular的一部分,而是第三方模块(ngx translate)。我还没有找到解决方案。您可以让管道返回普通文本或翻译字符串,并且在模板中仍然保留i18属性。e、 g.:
{{some.data | myCustomPipe}}
。这符合你的需要吗?