首先,我确实了解我正在使用AOT编译,这是静态的。虽然,我想知道如果ID是已知的(并在source.{language}.xlf
文件中定义),是否可以加载正确的翻译?
总的来说,我需要对幕后情况有更多的了解,更具体地说,Angular如何识别要替换的占位符?
我正在尝试完成以下任务:
以下尝试没有任何运气:
<p class="message message--warning" i18n="{{error}}"> /* {{error}} = error_code */
{{error}}
</p>
我在select
选项中玩了一点,但这似乎效果不佳。
如果有人能够指出我正确的方向,那就太好了。
目前我有这个:
html文件:
<span i18n="@@error-message">
{error, select,
invalid.phone { invalid.phone }
invalid.name { invalid.name }
...
}
</span>
xlf文件
<trans-unit id="error-message" datatype="html">
<source><x id="ICU" equiv-text="{error, select, invalid.phone {...} invalid.name {...}}"/></source>
<target><x id="ICU" equiv-text="{error, select, invalid.phone {...} invalid.name {...}}"/></target>
</trans-unit>
<trans-unit id="7cefd72dcdd90f3149190b11f35dd151b0abd193" datatype="html">
<source>{VAR_SELECT, select, invalid.phone {invalid.phone } invalid.name {invalid.name }}</source>
<target>{VAR_SELECT, select, invalid.phone {Invalid phone} invalid.name {Invalid name}}</target>
</trans-unit>
基本上我还有2个问题:
<span i18n="@@error-message">
{error, select, error { error }}
</span>
trans-unit
元素中,例如:<trans-unit id="7cefd72dcdd90f3149190b11f35dd151b0abd193" datatype="html">
<source>{VAR_SELECT, select, invalid.phone {invalid.phone } invalid.name {invalid.name }}</source>
<target>{VAR_SELECT, select, invalid.phone {message.invalid.phone} invalid.name {message.invalid.name}}</target>
</trans-unit>
<trans-unit id="message.invalid.name" datatype="html">
<source>invalid.name</source>
<target>Invalid name</target>
</trans-unit>
这将使其更易于维护。