Поиск по сайту
Ctrl + K
Вопросы по Angular

Как Angular упрощает интернационализацию?

Angular предоставляет мощные средства для интернационализации (i18n), которые помогают разработчикам легко адаптировать веб-приложения для различных языков и культур. Интернационализация включает в себя не только перевод текста, но и форматирование дат, чисел, валют и других локализованных данных.

Основные концепции интернационализации в Angular

  • Переводы строк: В Angular можно использовать специальные атрибуты для определения строк, которые нужно переводить. Для этого используется элемент <i18n>.

    Пример:

    <h1 i18n="@@homeTitle">Добро пожаловать на наш сайт!</h1>
    

    Здесь атрибут i18n сообщает Angular, что этот текст следует перевести. @@homeTitle — это уникальный идентификатор строки, который поможет отслеживать изменения.
  • Создание переводов: Для создания перевода можно воспользоваться Angular CLI. В командной строке выполните команду:
    ng xi18n
    

    Эта команда создаст файл messages.xlf, содержащий все строки с атрибутом i18n. В этом файле необходимо добавить переводы.

    Пример файла messages.xlf:

    <xliff version="1.2">
      <file source-language="en" datatype="plaintext" date="2021-07-01T12:00:00Z" original="ng2.template">
        <body>
          <trans-unit id="homeTitle" datatype="html">
            <source>Welcome to our website!</source>
            <target>Добро пожаловать на наш сайт!</target>
          </trans-unit>
        </body>
      </file>
    </xliff>
    
  • Поддержка разных языков: Чтобы сделать приложение доступным на нескольких языках, необходимо создать дополнительные файлы переводов для каждого языка. Например, для русского языка это может быть messages.ru.xlf.
  • Конфигурация приложения для поддержки i18n: Вам необходимо обновить модуль приложения, чтобы указать Angular, какие языки поддерживаются и какой язык является языком по умолчанию.

    Пример конфигурации:

    import { NgModule } from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    import { AppComponent } from './app.component';
    import { registerLocaleData } from '@angular/common';
    import localeRu from '@angular/common/locales/ru';
    
    registerLocaleData(localeRu);
    
    @NgModule({
      declarations: [AppComponent],
      imports: [BrowserModule],
      providers: [{ provide: LOCALE_ID, useValue: 'ru' }],
      bootstrap: [AppComponent]
    })
    export class AppModule {}
    

    В данном примере мы регистрируем локализацию для русского языка и устанавливаем его в качестве языка по умолчанию.
  • Форматирование локализованных данных: Angular предоставляет директивы и пайпы для форматирования различных данных в зависимости от локали. Например, можно использовать пайпы DatePipe, CurrencyPipe, и DecimalPipe.

    Пример использования пайпов:

    <p>{{ today | date }}</p>
    <p>{{ amount | currency }}</p>
    <p>{{ number | number:'1.2-2' }}</p>
    

    В этом примере мы отображаем текущую дату, сумму с учетом валюты и число с определенным форматом.
  • Заключение

    Интернационализация в Angular значительно упрощает задачу адаптации приложений для разных языков и культур. С помощью простых атрибутов, команд и встроенных пайпов вы можете создать приложение, которое будет доступно для широкой аудитории. Это повышает пользовательский опыт и позволяет вашему приложению быть более универсальным.