Angular предоставляет встроенные средства для интернационализации и сборки локализованных версий приложений, что особенно важно для поддержки нескольких языков и региональных настроек.
Маркировка текста для перевода Для того чтобы
Angular распознал строки для перевода, используется директива
i18n:
<h1 i18n="site header|Main page title">Добро пожаловать</h1>
Здесь "site header|Main page title" — описание и
контекст перевода.
Создание файлов локализации Используется команда Angular CLI для извлечения сообщений:
ng extract-i18n --output-path src/locale
В результате генерируется файл messages.xlf с тегами
<trans-unit> для каждой строки, помеченной
i18n.
Редактирование переводов Файл .xlf
редактируется вручную или через специализированные CAT-инструменты.
Каждому исходному сообщению присваивается перевод на нужный
язык.
После подготовки переводов можно создавать версии для разных языков:
angular.json:"projects": {
"my-app": {
"i18n": {
"sourceLocale": "ru",
"locales": {
"en": "src/locale/messages.en.xlf",
"fr": "src/locale/messages.fr.xlf"
}
}
}
}
ng build --localize
Команда создаёт отдельные сборки для каждой локали, заменяя текстовые строки на соответствующие переводы. Опционально можно указывать конкретную локаль:
ng build --configuration=en
Для приложений, где язык определяется на лету, используют runtime translation. Angular позволяет загружать JSON-файлы с переводами и динамически менять язык без пересборки всего проекта, интегрируя это через сервисы и пайпы:
import { TranslateService } from '@ngx-translate/core';
constructor(private translate: TranslateService) {
translate.setDefaultLang('ru');
translate.use('en');
}
Использование такой схемы особенно важно для SPA, где требуется мгновенная смена языка на пользовательском интерфейсе без перезагрузки страницы.