Работа с файлами перевода¶
28.02.2022
После подготовки компонента к переводу используйте команду extract-i18n Angular CLI для извлечения помеченного текста компонента в файл исходного языка.
Размеченный текст включает текст, помеченный i18n, атрибуты, помеченные i18n-attribute, и текст, помеченный $localize, как описано в Подготовка компонента к переводу.
Выполните следующие шаги, чтобы создать и обновить файлы перевода для вашего проекта.
-
Извлечение файла исходного языка.
- По желанию измените местоположение, формат и имя.
-
Скопируйте исходный языковой файл в создать файл перевода для каждого языка.
-
Переведите каждый файл перевода
-
Переведите множественное число и альтернативные выражения отдельно.
Извлечение файла исходного языка¶
Чтобы извлечь исходный языковой файл, выполните следующие действия.
-
Откройте окно терминала.
-
Перейдите в корневой каталог вашего проекта.
-
Выполните следующую команду CLI.
1ng extract-i18n
Команда extract-i18n создает файл исходного языка с именем messages.xlf в корневом каталоге вашего проекта. Подробнее о XML Localization Interchange File Format (XLIFF, версия 1.2) смотрите в XLIFF.
Используйте следующие опции команды extract-i18n, чтобы изменить местоположение, формат и имя файла исходного языка.
| Опция команды | Подробности |
|---|---|
--format | Установить формат выходного файла |
--out-file | Установите имя выходного файла |
--output-path | Установите путь к выходному каталогу |
Изменить расположение файла исходного языка¶
Чтобы создать файл в каталоге src/locale, укажите путь вывода в качестве опции.
extract-i18n --output-path пример¶
В следующем примере путь вывода указан в качестве опции.
1 | |
Изменение формата файла исходного языка¶
Команда extract-i18n создает файлы в следующих форматах перевода.
| Формат перевода | Подробности | Расширение файла |
|---|---|---|
| ARB | Application Resource Bundle | .arb |
| JSON | JavaScript Object Notation | .json |
| XLIFF 1.2 | XML Localization Interchange File Format, version 1.2 | .xlf |
| XLIFF 2 | XML Localization Interchange File Format, версия 2 | .xlf |
| XMB | XML Message Bundle | .xmb (.xtb) |
Укажите формат перевода в явном виде с помощью опции команды --format.
Формат XMB генерирует файлы исходного языка .xmb, но использует файлы перевода .xtb.
extract-i18n --format пример¶
Следующий пример демонстрирует несколько форматов перевода.
1 2 3 4 5 | |
Изменить имя файла исходного языка¶
Чтобы изменить имя файла исходного языка, создаваемого инструментом извлечения, используйте опцию команды --out-file.
extract-i18n --out-file пример¶
Следующий пример демонстрирует присвоение имени выходному файлу.
1 | |
Создание файла перевода для каждого языка¶
Чтобы создать файл перевода для локали или языка, выполните следующие действия.
-
Сделайте копию исходного языкового файла, чтобы создать переводной файл для каждого языка.
-
Переименуйте файл translation, чтобы добавить локаль.
1messages.xlf --> messages.{locale}.xlf -
Создайте новый каталог в корне проекта с именем
locale.1src/locale -
Переместите файл translation в новый каталог.
-
Отправьте файл translation своему переводчику.
-
Повторите описанные выше шаги для каждого языка, который вы хотите добавить в свое приложение.
extract-i18n пример для французского языка¶
Например, чтобы создать файл перевода на французский язык, выполните следующие действия.
-
Выполните команду
extract-i18n. -
Создайте копию исходного языкового файла
messages.xlf. -
Переименуйте копию в
messages.fr.xlfдля перевода на французский язык (fr). -
Переместите файл перевода
frв каталогsrc/locale. -
Отправьте файл перевода
frпереводчику.
Переведите каждый файл перевода.¶
Если вы не владеете языком и у вас нет времени на редактирование переводов, вы, скорее всего, выполните следующие шаги.
-
Отправьте каждый файл перевода переводчику.
-
Переводчик использует редактор файлов XLIFF для выполнения следующих действий.
-
Создайте перевод.
-
Отредактируйте перевод.
-
Пример процесса перевода для французского языка¶
Чтобы продемонстрировать этот процесс, просмотрите файл messages.fr.xlf в Example Angular Internationalization application. В Пример приложения Angular Internationalization включен перевод на французский язык, который можно редактировать без специального редактора XLIFF или знания французского языка.
Следующие действия описывают процесс перевода на французский язык.
-
Откройте файл
messages.fr.xlfи найдите первый элемент<trans-unit>. Это переводной блок, также известный как текстовый узел, который представляет собой перевод тега приветствия<h1>, который ранее был помечен атрибутомi18n.1 2 3 4 5 6 7 8 9
<trans-unit id="introductionHeader" datatype="html"> <source>Hello i18n!</source> <note priority="1" from="description"> An introduction header for this sample </note> <note priority="1" from="meaning"> User welcome </note> </trans-unit>id="introductionHeader"— это пользовательский ID, но без префикса@@, необходимого в исходном HTML. -
Продублируйте элемент
<source>... </source>элемент в узле text, переименуйте его вtarget, а затем замените содержимое французским текстом.1 2 3 4 5 6 7 8 9 10
<trans-unit id="introductionHeader" datatype="html"> <source>Hello i18n!</source> <target>Bonjour i18n !</target> <note priority="1" from="description"> An introduction header for this sample </note> <note priority="1" from="meaning"> User welcome </note> </trans-unit>При более сложном переводе информация и контекст в элементах описания и значения помогают выбрать правильные слова для перевода.
-
Переведите остальные текстовые узлы.
В следующем примере показан способ перевода.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
<trans-unit id="ba0cc104d3d69bf669f97b8d96a4c5d8d9559aa3" datatype="html" > <source>I don't output any element</source> <target>Je n'affiche aucun élément</target> </trans-unit> <trans-unit id="701174153757adf13e7c24a248c8a873ac9f5193" datatype="html" > <source>Angular logo</source> <target>Logo d'Angular</target> </trans-unit>Не изменяйте идентификаторы для единиц перевода.
Каждый атрибут
idгенерируется Angular и зависит от содержания текста компонента и назначенного значения.Если вы измените либо текст, либо значение, то изменится и атрибут
id.Подробнее об управлении обновлениями текста и идентификаторами см. в разделе custom IDs.
Переведите множественное число¶
Добавьте или удалите падежи множественного числа, если это необходимо для каждого языка.
Правила множественного числа языка см. в CLDR plural rules.
minute plural пример¶
Чтобы перевести множественное число, переведите значения соответствия формата ICU.
just nowone minute ago<x id="INTERPOLATION" equiv-text="{{minutes}}"/> minutes ago
В следующем примере показан способ перевода.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Перевод альтернативных выражений¶
Angular также извлекает альтернативные выражения select ICU в виде отдельных единиц перевода.
Пример gender select¶
Следующий пример отображает ICU-выражение select в шаблоне компонента.
1 2 3 4 | |
В этом примере Angular разделяет выражение на две единицы перевода. Первая содержит текст вне клаузы select и использует место для select (<x id="ICU">):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Когда вы переводите текст, при необходимости переместите заполнитель, но не удаляйте его. Если вы удалите заполнитель, выражение ICU будет удалено из переведенного приложения.
В следующем примере отображается вторая единица перевода, содержащая предложение select.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
В следующем примере после завершения перевода отображаются обе единицы перевода.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
Перевод вложенных выражений¶
Angular обрабатывает вложенное выражение таким же образом, как и альтернативное выражение. Angular разделяет выражение на две единицы перевода.
Пример вложенного выражения plural¶
В следующем примере отображается первая единица перевода, содержащая текст вне вложенного выражения.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
В следующем примере отображается вторая единица перевода, содержащая полное вложенное выражение.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
В следующем примере после перевода отображаются обе единицы перевода.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | |