代码之家  ›  专栏  ›  技术社区  ›  k.vincent

如何在转换开始前将i18n密钥从父组件传递到子组件?

  •  0
  • k.vincent  · 技术社区  · 7 年前

    我正在使用一个输入字段组件,我可以使用表单将它嵌入到不同的父组件中。

    在输入子组件中,我有一个i18n translation键作为使用插值的变量,我想根据客户的选择从父组件动态生成它。

    输入.component.ts

    <div i18n="{{labelTextKey}}">{{labelText}}</div>
    <div>
        <input matInput [required]="required" 
                        [name]="name"
                        [(ngModel)]="value" 
                        [type]="type">
    </div>
    

    表格.component.ts :

    <app-input [labelText]="'Second name'"
               [labelTextKey]="'@@LabelSecondName'"
               [name]="'secondName'"
               [ngModel] = "secondName"
               [type] = "'text'"
    </app-input>
    

    @@LabelSecondName

    因此,labelText保留了原始语言。我得到的不是翻译,而是一种随机生成的数字,因为这些数字作为键不存在于 XLF公司 (版本2.0)文件,文本/标签未翻译。

    错误消息: Missing translation for message "8901569964118207331"

    labelTextKey 没有得到值: @@标签名称 很快就过去了。

    question 似乎更接近我,但不完全相同的情况下,也没有答案。

    1 回复  |  直到 7 年前
        1
  •  2
  •   k.vincent    7 年前

    问题已解决。解决方案:

    子组件中不需要i18n标记,只需在父组件中使用它,如下所示:

    <app-input i18n-labelText="@@LabelSecondName" labelText="Second name"></app-input>
    

    <app-input [labelText]="'Second name'"
           i18n-labelText="@@LabelSecondName"
           [name]="'secondName'"
           [ngModel] = "secondName"
           [type] = "'text'"
    </app-input>