ГлавнаяПесочницаВитринаПриложениеДокументБлог
    • Englishанглийский
      EN
    • русскийрусский
      RU
    • 日本語японский
      JA
    • françaisфранцузский
      FR
    • 한국어корейский
      KO
    • 中文китайский
      ZH
    • españolиспанский
      ES
    • Deutschнемецкий
      DE
    • العربيةарабский
      AR
    • italianoитальянский
      IT
    • British Englishбританский английский
      EN-GB
    • portuguêsпортугальский
      PT
    • हिन्दीхинди
      HI
    • Türkçeтурецкий
      TR
    • polskiпольский
      PL
    • Indonesiaиндонезийский
      ID
    • Tiếng Việtвьетнамский
      VI
    • українськаукраинский
      UK
    /
    Alt+←
    Что такое интернационализация (i18n)?
    SEO и Интернационализация
    Руководство
    • i18n с помощью next-i18next
    • i18n с помощью next-intl
    Используйте Intlayer в вашем решении
    • Автоматизировать next-i18next
    • Автоматизировать react-i18next
    • Автоматизировать next-intl
    • Автоматизировать react-intl
    • Автоматизировать vue-i18n
    Сравнения
    • next-i18next vs next-intl vs Intlayer
    • react-i18next vs react-intl vs Intlayer
    Документация
    1. Blog
    2. I18n technologies
    3. Frameworks
    4. Angular
    Создание:2025-01-16Последнее обновление:2025-06-29
    Ссылайтесь на этот документ на ваш любимый ассистент AI
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI

    Содержимое этой страницы было переведено с помощью ИИ.

    Смотреть последнюю версию оригинального контента на английском
    Изменить эту документацию

    Если у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.

    Ссылка на документацию GitHub
    Копировать

    Копировать Markdown документа в буфер обмена

    Изучение решений i18n для перевода вашего веб-сайта на Angular

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


    i18n illustration

    Что такое интернационализация (i18n)?

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

    Узнайте больше о основах i18n, прочитав нашу статью: Что такое интернационализация (i18n)? Определение и проблемы.


    Проблема перевода для приложений на Angular

    Перевод приложения на Angular вводит несколько проблем:

    • Модульная структура: Модульный подход Angular (с компонентами, модулями и сервисами) означает, что строки перевода могут быть разбросаны по вашему кодовой базе, что требует их централизации и эффективного управления.
    • Динамический контент: Обработка контента в реальном времени (например, данные из REST API, контент, создаваемый пользователем) требует тщательного рассмотрения, чтобы гарантировать, что новые строки также переводятся.
    • SEO соображения: Если вы используете Angular Universal для серверного рендеринга, вам нужно будет настроить локализованные URL, мета-теги и карты сайта, чтобы сделать ваши многоязычные страницы удобными для поисковых систем.
    • Маршрутизация и состояние: Обеспечение правильного языка при навигации между маршрутами включает управление состоянием и, возможно, пользовательские охранники маршрутов или перехватчики.
    • Масштабируемость и обслуживание: Файлы переводов могут быстро увеличиваться в объеме, и поддержание их в организации, версиях и синхронизации с развитием вашего приложения может быть постоянной задачей.

    Ведущие решения i18n для Angular

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

    1. Intlayer

    Веб-сайт: https://intlayer.org/

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

    Ключевые особенности

    • Декларативное объявление переводов: Позволяет объявлять все переводы в одном файле на уровне компонентов, что упрощает масштабирование и обслуживание.
    • TypeScript и автодополнение: Предоставляет автоматически генерируемые определения типов для ключей перевода, обеспечивая надежное автодополнение и обнаружение ошибок.
    • Серверные компоненты и SSR: Создана с учетом серверного рендеринга (SSR) и серверных компонентов, обеспечивая эффективную отрисовку локализованного контента как на стороне клиента, так и на стороне сервера.
    • Локализованные метаданные и URL-адреса для SEO: Легко управляйте динамическими маршрутами на основе локали, картами сайта и записями robots.txt для улучшения видимости и SEO.
    • Бесшовная интеграция: Совместима с Angular CLI и другими инструментами, что упрощает настройку.
    • Асинхронная загрузка: Динамически загружайте словари переводов, уменьшая начальный размер бандла и повышая производительность.

    Что следует учитывать

    • Сообщество и экосистема: Хотя экосистема постоянно растет, она всё еще относительно новая, поэтому количество плагинов и инструментов от сообщества может быть более ограниченным по сравнению с более устоявшимися решениями.

    2. Встроенное i18n Angular

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

    Ключевые особенности

    • Нативная интеграция: Дополнительная библиотека не требуется; оно работает сразу из коробки с проектами Angular.
    • Переводы на этапе компиляции: CLI Angular извлекает текст для переводов, и вы создаете отдельные пакеты для каждого языка. Этот подход может привести к более быстрому времени выполнения, потому что переводы включены в компиляцию.
    • Легкая обработка плюрализации и гендера: Встроенные функции для сложной плюрализации и интерполяции сообщений.
    • AOT & производственные сборки: Полностью совместимо с компанией Angular AOT, обеспечивая оптимизированные производственные пакеты.

    Рассмотрения

    • Несколько сборок: Каждый язык требует своей сборки, что может привести к более сложным сценариям развертывания.
    • Динамический контент: Обработка контента в реальном времени или контента, созданного пользователем, может потребовать дополнительной логики, так как встроенное решение Angular сильно ориентировано на переводы на этапе компиляции.
    • Ограниченная гибкость времени выполнения: Смена языков на лету (без перезагрузки приложения) может быть сложной, так как переводы включены на этапе сборки.

    3. ngx-translate

    Сайт: https://github.com/ngx-translate/core

    Обзор
    ngx-translate , одна из самых известных сторонних библиотек i18n в экосистеме Angular. Она позволяет переводить это в режиме выполнения, позволяя загружать языковые файлы по мере необходимости и переключать локали динамически без пересборки всего вашего приложения.

    Ключевые особенности

    • Переводы в режиме выполнения: Идеально подходит для динамической смены языка и сценариев, когда вы не хотите многократные производственные сборки.
    • JSON файлы перевода: Храните переводы в простых JSON файлах, что облегчает их структуру и поддержку.
    • Асинхронная загрузка: Лениво загружайте переводы, чтобы держать начальные размеры пакетов меньше.
    • Поддержка нескольких языков: Мгновенно переключайте локали и отслеживайте изменения языка по вашим компонентам.

    Рассмотрения

    • Состояние и сложность: Управление большим количеством файлов перевода может стать сложным в больших приложениях.
    • SEO и SSR: Если вам нужен серверный рендеринг с Angular Universal, ngx-translate требует дополнительной настройки для обеспечения корректных переводов, которые будут переданы краулерам и браузерам при первой загрузке.
    • Производительность: Хотя оно гибко во время выполнения, обработка большого количества переводов на больших страницах может иметь последствия для производительности, поэтому рекомендуется использовать стратегии кэширования.

    4. Transloco

    Сайт: https://ngneat.github.io/transloco/

    Обзор
    Transloco , это современная, ориентированная на сообщество библиотека Angular i18n, которая акцентирует внимание на масштабируемой архитектуре и плавном пользовательском опыте разработчика. Она предоставляет основанный на плагинах подход для бесшовной интеграции с вашим существующим решением Angular.

    Ключевые особенности

    • Интеграция управления состоянием: Совместимость с библиотеками управления состоянием, такими как NgRx и Akita.
    • Ленивая загрузка: Разделите переводы на отдельные части и загружайте их только по мере необходимости.
    • Богатая экосистема плагинов: Обработайте всё от интеграции с SSR до автоматического извлечения сообщений.
    • Время выполнения или время сборки: Предлагает гибкость для различных рабочих процессов перевода, будь то вы предпочитаете переключение времени выполнения или предварительно собранную локализацию.

    Рассмотрения

    • Кривая обучения: Хотя документация хорошая, подход, основанный на плагинах, может потребовать дополнительных шагов для расширенных случаев использования (например, SSR, маршруты с несколькими языками).
    • Размер сообщества: Transloco имеет активное сообщество, но всё ещё растет по сравнению с встроенным решением Angular или ngx-translate.
    • Структура папок: Сохранение переводов в организации может быть сложной задачей для очень больших приложений. Хорошая структура папок и соглашения об именах крайне важны.

    Заключительные мысли

    При выборе подхода к i18n для вашего Angular приложения:

    • Оцените требования проекта: Учитывайте такие факторы, как динамическое переключение языков, скорость разработки и потребности в интеграции сторонних библиотек.
    • Проверьте SSR и SEO: Если вы используете Angular Universal для серверного рендеринга, убедитесь, что ваше выбранное решение легко интегрируется с локализованными метаданными и обработкой маршрутов.
    • Производительность и стратегия сборки: Оцените, нужны ли вам несколько выходов сборки (на язык) или вы предпочитаете один пакет с переводами времени выполнения.
    • Поддерживаемость и масштабирование: Для больших приложений убедитесь, что ваша библиотека поддерживает чистую файловую структуру, типизированные ключи (если это необходимо) и простой процесс обновления.
    • Опыт разработчика: Автозаполнение TypeScript, экосистема плагинов и инструменты CLI могут значительно снизить трение при обновлении или добавлении новых переводов.

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

    Что такое интернационализация (i18n)?
    Alt+→

    На этой странице

      Обсуждения анонимны и регулярно просматриваются для решения распространённых проблем. Не стесняйтесь делиться идеями функций, отзывами о документации или чем-либо, связанным с Intlayer, мы используем эту информацию для формирования нашей дорожной карты и улучшения продукта.