簡體   English   中英

從打字稿中提取 $localize 消息在 Angular 9 中不起作用

[英]Extracting $localize messages from typescript not working in Angular 9

到目前為止,我知道我可以通過執行ng xi18n來提取 i18n 消息(來自 html)。 但我也有一些需要翻譯的打字稿文本。 我正在像這樣使用 $localize: $localize':@@info:It's green!' . 如果我運行ng xi18n ,它不會使用 $localize 提取文本。 我正在使用 Angular 9。也許它是一個僅適用於 Angular 10 的功能? 如果是這樣,運行 xi18n 命令會成功嗎?

全新的更新仍然有些未記錄,但是對於ng xi18n您現在需要添加--ivy

最終,這甚至不應該使用XLF文件了,但在加載polyfill為對象映射(提取到這種形式是不是自動,雖然沒有完成)。

由於您的應用已啟用本地化(ng add @angular/localize),然后在您應用的 angular.json 文件中,您可以將 "ivy":true 添加到 extract-i18n 屬性下的選項中,如下所示: "extract-i18n": { "builder ": "@angular-devkit/build-angular:extract-i18n", "options": { "browserTarget": "commons-admin:build", "ivy":true } } 然后你會看到 i18n-extraction 是不僅可以提取 HTML 文件,還可以提取使用 $localize 格式的 *.ts 文件。

即使使用 angular cli v10,我也遇到了同樣的問題。 我嘗試使用--ivy選項,但遇到了同樣的問題。 我找到了一個解決方法:因為只有提取到 xlf 文件不起作用,但是build:prod之后的翻譯即使對於 ts 文件中的$localize也很有效,當我有一些只在 ts 文件中需要翻譯的東西時,我在組件的 html 文件中添加了要翻譯的單詞,我從不顯示的 ng-container 中。 然后像往常一樣,當我運行ng xi18n我可以在 xlf 文件中找到我需要的單詞並翻譯它們。

html文件:

<!-- my regular content -->
<p> this is the regular content of my html file</p>

<!-- The words in my ts files I need to translate with
displayi18n always to "false" so it is never displayed-->
<ng-container *ngIf="displayi18n">
  <span i18n="@@settings">Paramètres</span>
  <span i18n="@@users">Utilisateurs</span>
</ng-container>

在我的 ts 文件中:

@Component ...
export class MyComponent ...
  ...
  // Var to tell ngIf to not display the ng-container for i18n
  public displayi18n: boolean = false;
  
  // Where I need the translated words:
  public settings_label: string = $localize`:@@settings:Paramètres`
  public users_label: string = $localize`:@@users:Utilisateurs`
  ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM