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