Я следовал инструкциям по использованию $localize
и пытался использовать его следующим образом:
Мой angular.json
(связанные части):
"build": {
...
"configurations": {
...
"fr-FR": {
"aot": true,
"outputPath": "dist/fr-FR",
"i18nFile": "src/locale/messages.fr.xlf",
"i18nFormat": "xlf",
"i18nLocale": "fr-FR",
"i18nMissingTranslation": "error"
}
}
},
"serve": {
...
"configurations": {
...
"fr-FR": {
"browserTarget": "frontend:build:fr-FR"
}
}
},
и запуска приложения с: ng serve --configuration=fr-FR
Когда я использую атрибут i18n
в своих шаблонах следующим образом:
<p i18n="@@profile">Profile</p>
и в моей messages.fr.xlf
есть следующая запись :
<trans-unit id="profile" datatype="html">
<source>Profile</source>
<target>Profil</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/profile/profile.component.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
все работает как положено. Но теперь мне нужно получить доступ к переводу в машинописи, скажем (profile.component.ts
). Для этого у меня есть следующее:
let profileText = $localize`:@@profile`;
console.log(profileText);
Это приводит к следующей ошибке в консоли:
ERROR Error: Unterminated $localize metadata block in ":@@profile".
, и если я пытаюсь сделать следующее:
let profileText = $localize`:@@profile:Profile`;
console.log(profileText);
ошибка исчезла, но всегда печатает Profile
, а не перевод. Чего мне не хватает?
Обновление:
Пожалуйста, найдите ссылку StackBlitz . Дело в том, что это; Я не думаю, что StackBlitz учитывает --configuration=fr-FR
(из package.json
) при работе и поведение такое же.
Обновление 2:
StackBlitz ссылка может вводить в заблуждение, так как я не знаю, как запустить проект с определенной c конфигурацией (скажем, --configuration=fr-FR
). Поэтому я повторил проблему в репозитории Github .