我使用的国际化支持Angular2(4.0.3)记录here。我已经生成了xlf
文件,并且一切都很顺利。如何在Angular中重用i18n翻译密钥?
但是,让我们说,我有一个菜单按钮链接到我的主页。我使用属性i18n="@@homeTitle"
创建DOM节点。现在,在我的主页组件,我想用相同的转换ID在我<h1>
标签,让我得到相同的转换,而不必维持与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像周一和取消,但这个问题的主题不覆盖解决这个特殊的问题。
如何在多个节点上重复使用在我的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
@Romain我已经添加了'xlf',但我不确定它会有多大用处。 – Eric