9

有没有办法使用 Angular i18n AOT 翻译子组件中的自定义属性值?

我知道我们可以如下翻译 HTML 元素属性。

 <input i18n-placeholder="search criteria date @@criteriaDate"
        placeholder="Date"
        formControlName="date" required>

但我想为我的组件属性做同样的事情。在这个例子中,我想传递 title 属性的翻译值。

 <custom-spinner
        formControlName="nights"
        [title]="'Nights'"
        i18n-title="search criteria nights@@criteriaNights">
      </custom-spinner>

当我尝试这个时,它不会在 messages.xlf 文件上生成条目。我找不到这方面的任何例子。

4

3 回答 3

8

在 Angular 7 中测试。它默认工作。您不能对 i18n 文本使用 [title] 表示法。它应该是纯文本。

      <custom-spinner
        formControlName="nights"
        title="Nights"
        i18n-title="search criteria nights@@criteriaNights">
      </custom-spinner>

请注意,它也适用于任何属性。例如,my-attri18n-my-attr会翻译里面的文字my-attr

于 2019-02-04T17:40:41.960 回答
3

试试这个语法。i18n-xxx 基本上是供编译器识别的,因此它不遵循 Angular 模板绑定语法

<custom-spinner
 formControlName="nights"
 [title]="'Nights'"
 i18n-[title]="search criteria nights@@criteriaNights">
</custom-spinner>
于 2019-11-29T05:19:27.140 回答
1

您可以尝试角度属性绑定的规范形式- 它也应该适用于 angular 4.4.6 和 typescript 2.3.4。我已经用这个环境证明了它:

Angular CLI: 1.6.8
Node: 6.10.0
OS: win32 x64
Angular: 5.2.5
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

@angular/cli: 1.6.8
@angular-devkit/build-optimizer: 0.0.42
@angular-devkit/core: 0.0.29
@angular-devkit/schematics: 0.0.52
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.8
@schematics/angular: 0.1.17
typescript: 2.6.2
webpack: 3.10.0

请尝试此解决方案 - 我希望它会有所帮助:

<custom-spinner
 formControlName="nights"
 bind-title="'Nights'"
 i18n-bind-title="search criteria nights@@criteriaNights">
</custom-spinner>
于 2018-03-23T08:56:03.350 回答