Angular предоставляет встроенный инструмент i18n, позволяющий локализовать приложения и управлять переводами текстов. Основной процесс заключается в извлечении статических строк из шаблонов и генерации файлов перевода в формате XLIFF или XMB.
Включение поддержки i18n в шаблонах через атрибут
i18n.
<h1 i18n="site header|Title for the home page">Главная страница</h1>
В данном примере "site header|Title for the home page" —
это описание контекста для переводчиков.
Объявление локали в конфигурации приложения:
import { LOCALE_ID } from '@angular/core';
providers: [{ provide: LOCALE_ID, useValue: 'ru' }]Для извлечения текстов используется Angular CLI с командой
extract-i18n:
ng extract-i18n --output-path src/locale
Результатом является файл messages.xlf, который содержит
все строки с атрибутом i18n и уникальными
идентификаторами:
<trans-unit id="site_header" datatype="html">
<source>Главная страница</source>
<note priority="1" from="description">Title for the home page</note>
</trans-unit>
Файлы XLIFF можно отправлять переводчикам или интегрировать с системами автоматического перевода. После перевода приложение можно собрать для конкретной локали:
ng build --localize
Angular автоматически подставит переводы из соответствующих файлов, заменив оригинальные строки.
i18n поддерживает параметры и переменные, что позволяет локализовать строки с динамическими данными:
<p i18n="greeting message|User greeting">Привет, {{ userName }}!</p>
В файле перевода параметр {{ userName }} сохраняется как
placeholder:
<source>Привет, {{ userName }}!</source>
Это обеспечивает корректное использование динамических данных в разных языках без изменения шаблонов.
Angular позволяет обновлять файлы перевода при добавлении новых строк через:
ng extract-i18n --output-path src/locale --format xlf2
Это сохраняет существующие переводы и добавляет новые строки, минимизируя работу по поддержке локализации больших приложений.