Я использую поддержку i18n для Angular2 (4.0.3), как описано здесь. Я создал файлы xlf
, и все работает счастливо.
Однако скажем, что у меня есть кнопка меню, которая ссылается на мою домашнюю страницу. Я создаю DOM node, используя атрибут i18n="@@homeTitle"
. Теперь в компоненте моей домашней страницы я хотел бы использовать тот же самый идентификатор перевода в теге <h1>
, чтобы получить тот же перевод, не поддерживая несколько записей с тем же содержимым в файлах xlf
.
Я надеялся сделать что-то вроде приведенного ниже и автоматически заполнить свой <a>
node соответствующим переводом.
// home.component.html
<h1 i18n="@@homeTitle">Home</h1>
// menu.component.html
<a routerLink="/" i18n="@@homeTitle"></a>
Однако это не работает. <a>
node отображается с пустым текстом, а не с целью перевода. (Кроме того, по умолчанию в автогенерированном файле messages.xlf
нет цели перевода).
Фактически документы вызывают эту ситуацию, но не предлагают решения. Проблема также была вызвана пользователем в GitHub для обычных строк, таких как понедельник и отмена, но эта проблема не распространяется на решение этой проблемы особая проблема.
Как я могу повторно использовать переводы i18n, определенные в моих файлах xlf
на нескольких узлах?
Изменить: Вот xlf
, сгенерированный с помощью ng-xi18n --i18nFormat=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>
изменяется соответственно.