Angular i18本地化模板中插值字符串的值

Sta*_*eff 5 internationalization angular-i18n angular

假设我必须在我的角度应用程序 xliff 中进行翻译,@@field-is-required它有一个字符串插值,并且@@lastname是正常翻译。

<trans-unit id="field-is-required" datatype="html">
    <source><x id="INTERPOLATION" equiv-text="{{ fieldName }}"/> is required</source>
    <target><x id="INTERPOLATION" equiv-text="{{ fieldName }}"/> ist Pflichtfeld</target>
</trans-unit>
<trans-unit id="lastname" datatype="html">
    <source>Lastname</source>
    <target>Nachname</target>
</trans-unit>
Run Code Online (Sandbox Code Playgroud)

有什么方法可以与模板中@@field-is-required的值结合起来吗?@@lastname

我正在想象这样的事情:

<div i18n="@@field-is-required">
    {{ '@@lastname' }} is required
</div>
Run Code Online (Sandbox Code Playgroud)

我尝试了几种组合,但对我来说没有任何效果。而且 Angular i18n 的在线文档非常缺乏($localize甚至没有深入解释)。

Sch*_*tky 3

如果你有一组特定的替代方案,Angular 建议采用类似的方法

{name, select, lastName {last name} firstName {first name} other {unknwon}} is required
Run Code Online (Sandbox Code Playgroud)

如果姓氏可以是任意字符串,您可以在组件中定义它(例如):

const fieldOptions: string[] = [
   $localize`:Last name of a person:Last name`,
   $localize`:First name of a person:First name`,
]
...
let myOption = fieldOptions[0];
Run Code Online (Sandbox Code Playgroud)

最后在 html 中:

<div i18n="@@field-is-required">
    {{myOption}} is required
</div>
Run Code Online (Sandbox Code Playgroud)