簡體   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