【发布时间】:2018-01-25 03:37:33
【问题描述】:
我正在使用 i18n 对 Angular2 (4.0.3) 的支持,如 here 所述。我已经生成了xlf 文件,一切正常。
但是,假设我有一个链接到我的主页的菜单按钮。我使用属性i18n="@@homeTitle" 创建了DOM 节点。现在,在我的主页组件中,我想在<h1> 标记中使用相同的翻译ID,这样我就可以得到相同的翻译,而不必维护多个具有相同内容的条目xlf 文件。
我曾希望做类似下面的事情,并让它使用适当的翻译自动填充我的<a> 节点。
// home.component.html
<h1 i18n="@@homeTitle">Home</h1>
// menu.component.html
<a routerLink="/" i18n="@@homeTitle"></a>
但是,这不起作用。 <a> 节点显示为空文本,而不是翻译目标。 (此外,默认情况下,自动生成的messages.xlf 文件中没有翻译目标。)
文档实际上是call out this situation,但没有提供解决方案。用户on GitHub 也针对 Monday 和 cancel 等常见字符串提出了该问题,但该问题线程并未涵盖此特定问题的解决方案。
如何跨多个节点重复使用我的xlf 文件中定义的 i18n 翻译?
编辑:这里是使用ng-xi18n --i18nFormat=xlf生成的xlf:
<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="ng2.template">
<body>
<trans-unit id="homeTitle" datatype="html">
<source>Home</source>
<target/>
</trans-unit>
</body>
</file>
</xliff>
如果切换两个@@homeTitle节点的解析顺序,<source>会分别改变。
【问题讨论】:
-
你能不能显示相关的 xlf ?另外你用什么来提取翻译键并生成 xlf ?
-
@Romain 我已经添加了
xlf,虽然我不确定它会有多大用处。
标签: angular internationalization