我可以使用Angular i18n转换打字稿代码中的字符串文字吗

Nik*_*iki 3 internationalization typescript angular

我正在使用Angular的i18n工具本地化Angular应用程序,该工具将HTML模板中的文本提取到xlf文件中,然后使用AOT(提前编译)构建整个应用程序的本地化版本。

我的问题是:是否可以使用此框架来提取打字稿代码中的字符串文字,以便它们在同一xlf文件中列出并在本地化的AOT构建中替换?

理想情况下,我想在我的打字稿代码中写这样的东西:

foo() {
   this.bar = i18n('baz');
Run Code Online (Sandbox Code Playgroud)

而字符串“ baz”将列在我发送给翻译人员的xlf文件中。

或者,如果不可能,是否有一个类似库?即从打字稿代码中提取字符串到xlf文件中,然后在运行时或在构建过程中替换它们?

aze*_*ati 8

我可以确认@JB Nizet 在他的回答中所指的内容现在在 Angular 9 中工作,所以这有效:

  foo() {
    const appTitle = $localize`:@@siteTitle:Example Title`;
    // appTitle is now translated based on locale

    titleService.setTitle(appTitle); 
  }
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多关于它的信息https://github.com/angular/angular/blob/master/packages/localize/init/index.ts

  • 推荐文章:https://blog.ninja-squad.com/2019/12/10/angular-localize/ (2认同)

JB *_*zet 5

尚无官方支持,但是ngx-translate的作者(您可以使用)和负责i18n的Angular团队的成员Olivier Combe编写了一个可以使用的投机性polyfill