![](/img/trans.png)
[英]Internalization Angular 10 @angular/localize, $localize is not working
[英]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.