База знаний
Ответы на частые вопросы о локализации приложений, документации и контента с помощью General Translation.
Интернационализация
Настройка i18n в кодовой базе: библиотеки, фреймворки и компоненты.
- Что проверить перед запуском многоязычного приложения?Перед запуском многоязычного приложения проверьте девять аспектов в каждой поддерживаемой локали: пользовательские сценарии целиком, включая ошибки; определение и переключение языка; переменные и формы множественного числа; валюту и часовые пояса; увеличение длины текста; вёрстку для языков с письмом справа налево; доступность; доставку переводов в рабочей среде; индексируемые языковые URL для SEO. Для каждой проверки нужен явный критерий успешного прохождения.
- Писать собственную i18n или использовать General Translation?Самописной i18n (по словарю на каждый язык и небольшой вспомогательной функции t()) вполне достаточно для одного-двух языков и небольшого объёма текста. По мере роста приложения вам приходится заново реализовывать правила множественного числа, резервные варианты и синхронизацию файлов, а переводы всё равно нужно где-то брать. Библиотеки General Translation с открытым исходным кодом берут на себя рендеринг, а General Translation генерирует и обновляет переводы на основе вашего кода.
- Альтернативы react-intl: General Translation или react-intlGeneral Translation позволяет React-командам сохранить синтаксис ICU-сообщений и при этом получить генерацию переводов, общую терминологию и проверку в панели управления. react-intl отвечает за форматирование и предоставляет инструменты FormatJS для работы с каталогами, а General Translation ещё и создаёт сами переводы.
- Альтернативы i18next: General Translation или i18nextВыбирайте General Translation, если хотите хранить тексты прямо в React-компонентах и создавать переводы с учётом их JSX-структуры и контекста продукта. Можно также оставить i18next и переводить существующие каталоги с помощью General Translation. i18next отвечает за рендеринг сообщений и выбор форм множественного числа, а сами переводы предоставляет отдельный сервис.
- General Translation против i18next, react-intl и next-intl: какую библиотеку интернационализации выбрать?Библиотеки с открытым исходным кодом, такие как i18next, react-intl и next-intl, ничего не переводят. Они лишь отображают переводы, которые вы сами помещаете в файл каталога для каждого языка, — их пишете вы, ваши переводчики или сторонний сервис. Библиотеки General Translation тоже имеют открытый исходный код и делают то же самое, но General Translation ещё и выполняет перевод, используя ваш код как контекст.
- General Translation или vue-i18n: что выбрать?General Translation позволяет командам Vue писать исходные тексты прямо в шаблонах и создавать переводы с помощью CLI. Плагин gt-vue выполняет рендеринг этого контента с учётом локали, включая формы множественного числа и форматирование чисел. Выбирайте его, если хотите избавиться от поддержки исходных файлов с ключами; vue-i18n по-прежнему подходит командам, которые используют модуль i18n для Nuxt и уже сложившийся рабочий процесс с каталогами.
- General Translation или Symfony Translation: что выбрать?Symfony Translation выполняет рендеринг сообщений в PHP и Twig. General Translation переводит его YAML-каталоги в CI, поддерживает их в актуальном состоянии при изменении исходного текста и даёт рецензентам панель управления для их редактирования. Оставьте рендеринг за Symfony и добавьте автоматический перевод в рабочий процесс релиза.
- General Translation или Paraglide JS: что выбрать?Выбирайте General Translation, если хотите держать тексты прямо в коде и создавать переводы с учётом структуры ваших React-компонентов, общей терминологии и проверки в панели управления. Выбирайте Paraglide JS, если вам нужны скомпилированные типизированные функции сообщений и tree-shaking на уровне отдельных сообщений. Paraglide выполняет рендеринг ваших каталогов, а General Translation связывает исходные тексты с созданием переводов и их последующим обновлением.
- General Translation или nestjs-i18n: что выбрать?nestjs-i18n определяет язык каждого запроса в приложении NestJS и выполняет рендеринг сообщений из JSON- или YAML-каталогов для каждого языка, но сам ничего не переводит. CLI General Translation переводит эти каталоги, а библиотека gt-node переводит контент, который появляется только во время выполнения, поэтому можно оставить nestjs-i18n и добавить к нему General Translation.
- General Translation или Mobility: что выбрать?Mobility хранит переведённые атрибуты моделей в вашей базе данных. General Translation создаёт эти переводы через свой API с учётом вашего Glossary и пользовательских промптов. Используйте оба инструмента, чтобы переводить карточки товаров, публикации и другой контент из базы данных, не отказываясь от своих моделей Rails.
- General Translation или Lingui: что выбрать?Выбирайте General Translation, если хотите, как и в Lingui, держать тексты прямо в коде и генерировать переводы, используя структуру JSX в качестве контекста. Lingui извлекает встроенные сообщения в каталоги, которые затем переводят ваши переводчики или подключённый сервис. CLI General Translation обновляет переводы по мере изменения кода, а ваша команда проверяет их в панели управления.
- General Translation или Intlayer: что выбрать?Intlayer хранит контент каждого компонента в типизированном файле объявлений рядом с ним, где все языки записаны бок о бок, и может заполнять недостающие языки с помощью настроенного вами ИИ-провайдера. General Translation хранит тексты прямо в компонентах на одном языке и генерирует остальные языки с учётом контекста вашего кода.
- General Translation или Babel и Flask-Babel: что выбрать?Babel форматирует даты, числа и валюты для любой локали и управляет каталогами gettext, а Flask-Babel интегрирует его с Flask, но ни один из них не переводит ваши строки. CLI General Translation заполняет PO-файлы Babel для всех языков, включая формы множественного числа, поэтому вы можете и дальше использовать Flask-Babel, но больше не переводить каталоги вручную.
- General Translation и фреймворк переводов Django: нужны ли оба?Используйте фреймворк переводов Django вместе с General Translation. Django отвечает за извлечение сообщений, выбор языка и рендеринг. General Translation заполняет его PO-файлы, включая формы множественного числа, с учётом терминологии вашего продукта и проверки в панели управления. Ваши шаблоны и URL-шаблоны остаются прежними, а переводы обновляются вместе с кодом.
- General Translation и Rails I18n: нужны ли оба?Rails I18n находит сообщения и форматирует даты и числа. General Translation создаёт переводы, поддерживает их в актуальном состоянии по мере изменения английского текста и предоставляет вашей команде панель управления для проверки. Используйте оба инструмента, чтобы выпускать переведённые каталоги Rails с каждым релизом.
- General Translation и GNU gettext: нужны ли оба?Оставьте GNU gettext для извлечения и рендеринга, а General Translation подключите для генерации и сопровождения PO-файлов. General Translation учитывает при генерации заметки для переводчиков и контекст сообщений, применяет общую терминологию и предоставляет рецензентам редактор в панели управления. Существующие вызовы gettext и скомпилированные каталоги остаются на месте.
- Можно ли реализовать i18n без файлов перевода?Да. С gt-react или gt-next контент остаётся встроенным прямо в ваши компоненты внутри компонента <T>, а переводы генерируются во время сборки, поэтому не нужно писать ключи и JSON-файлы для каждой локали и следить за их синхронизацией.Видео
- Как перевести условный текст в JSX?Не переводите каждую ветвь тернарного оператора по отдельности — оберните всё предложение в компонент <T> и задайте условие с помощью <Branch>. Так переводчик увидит полный контекст и сможет перестроить предложение для каждого языка.Видео
Форматирование с учётом локали
Формы множественного числа, даты, числа, валюты и текст с направлением right-to-left в каждой локали.
Перевод
Машинный перевод и перевод с помощью ИИ, качество, контекст и глоссарии.
Многоязычное SEO
Маршрутизация по локалям, hreflang, карты сайта и переведённые метаданные для многоязычных сайтов.
Инструменты для рабочих процессов
Выбор инструментов локализации и синхронизация переводов в рамках непрерывной локализации.
- Почему стоит выбрать General Translation вместо TMS (Smartling, Lokalise, Phrase, Crowdin или Transifex)?Система управления переводами (TMS), например Smartling, Lokalise, Phrase, Crowdin или Transifex, координирует работу переводчиков, но инженерам всё равно приходится извлекать строки, отправлять их на перевод, ждать результатов и встраивать переводы обратно в продукт. General Translation переводит контент прямо в вашем коде с учётом контекста, выпускает все языки с каждым релизом и работает на библиотеках с открытым исходным кодом без привязки к поставщику.
- Какая библиотека интернационализации лучше всего подходит для приложения React?Четыре основные библиотеки интернационализации для React — это gt-react от General Translation, react-i18next, Lingui и React Intl. Все четыре выполняют рендеринг и форматирование переводов, но только gt-react ещё и генерирует их — на основе текста, написанного прямо в JSX. Выбирайте react-i18next, если хотите сохранить каталоги и плагины i18next, Lingui — если нужно извлечение текста в скомпилированные каталоги, а React Intl — если вам нужны FormatJS и ICU MessageFormat.
- Альтернативы Transifex: General Translation или TransifexВыбирайте General Translation, чтобы переводить размеченный JSX с сохранением его структуры и контекста разработчика, а затем включать результаты в бандл или раздавать их через CDN. Transifex Native тоже хранит строки в коде, но публикует их через собственную службу доставки контента. Transifex хорошо подходит командам, которые работают с его партнёрами-переводчиками, оценками качества или переводят сайты с помощью встраиваемого сниппета.
- Альтернативы Smartling: General Translation или SmartlingВыбирайте General Translation, если хотите, чтобы переводы приложения генерировались из кода в рамках каждого релиза. Smartling объединяет систему управления переводами, услуги машинного перевода с помощью ИИ и перевода, выполняемого людьми, а также прокси для перевода веб-сайтов. General Translation хранит тексты прямо в ваших компонентах, передаёт их контекст в перевод и даёт вашей команде панель управления для проверки.
- Альтернативы Phrase: General Translation или PhraseGeneral Translation — сильная альтернатива Phrase Strings, если приложение и документация выходят одновременно. Он генерирует переводы из кода и файлов контента, применяет общую терминологию и встраивается в рабочий процесс релиза. Phrase объединяет локализацию ПО с TMS для работы с документами, управлением поставщиками и широким выбором движков перевода.
- Альтернативы next-intl: gt-next или next-intlnext-intl рендерит переводы, которые вы предоставляете в каталоге сообщений для каждого языка. gt-next тоже рендерит переводы, а General Translation, кроме того, генерирует их из текста, написанного прямо в вашем JSX. Обе библиотеки распространяются по лицензии MIT и поддерживают App Router и серверные компоненты. Если ваши каталоги next-intl уже работают, их можно оставить и переводить с помощью General Translation без миграции.
- Альтернативы Lokalise: General Translation или LokaliseGeneral Translation — сильная альтернатива Lokalise для команд, которым нужен читаемый текст прямо в JSX и перевод, встроенный в процесс разработки. Lokalise построен вокруг общих ключей, интеграций с инструментами дизайна и OTA-доставки обновлений в мобильные приложения. General Translation генерирует переводы на основе размеченного контента приложения и позволяет проверять их в панели управления или в пул-реквестах GitHub.
- Альтернативы Crowdin: General Translation или CrowdinВыбирайте General Translation, если хотите хранить тексты прямо в компонентах и создавать переводы во время сборки. Crowdin управляет проектами перевода, выстроенными вокруг файлов ресурсов, переводчиков и процессов проверки, — инженерам приходится подключать всё это к приложению и поддерживать по мере развития продукта. При этом Crowdin по-прежнему хорошо подходит для перевода силами open-source-сообщества и для программ, которые ведут подрядчики.
- General Translation или Weblate: что выбрать?Weblate — это платформа локализации на основе Git, которую можно развернуть на собственном сервере. Она создана для перевода файлов репозитория силами сообщества или команды. General Translation встраивает генерацию переводов в разработку и релизы, опираясь на размеченный JSX и общий контекст продукта. Оставьте свои файлы gettext или перейдите на написание текста непосредственно в коде — тогда отпадёт и необходимость поддерживать каталог исходных сообщений.
- General Translation или Tolgee: что выбрать?Tolgee объединяет сообщения с ключами, редактирование в контексте и ИИ-перевод в платформе, которую можно развернуть на собственных серверах. General Translation хранит читаемый текст прямо в ваших компонентах и генерирует переводы из размеченного JSX, поэтому новый текст можно выпускать сразу на всех языках, не поддерживая ключи сообщений.
- General Translation или Locize: что выбрать?Locize — система управления переводами от создателей i18next. Она доставляет переводы через CDN, собирает новые ключи из работающего приложения, а также предлагает ИИ-перевод и редактор с контекстом страницы. При этом поддерживать библиотеку интернационализации и её ключи по-прежнему придётся вам. General Translation может стать вашей библиотекой интернационализации и сам переводить строки — или переводить уже имеющиеся у вас файлы i18next.
- General Translation или i18n-tasks: что выбрать?i18n-tasks — это Ruby-gem, который находит отсутствующие и неиспользуемые ключи Rails I18N, наводит порядок в файлах локалей и умеет заполнять недостающие ключи с помощью Google Translate, DeepL, OpenAI, Yandex или watsonx. General Translation переводит файлы локалей целиком с учётом вашего Glossary и пользовательских промптов, а результат можно проверить в панели управления. Эти инструменты решают разные задачи, и многим командам пригодятся оба.
- Какое ПО для локализации лучше всего подходит разработчикам?Ищите единую систему, которая охватывает весь конвейер — от библиотеки интернационализации в вашем коде до перевода и доставки, — а не собирайте по частям отдельную библиотеку, систему управления переводами и поставщика переводов.Видео
Разверните приложение уже сегодня
Присоединяйтесь к лучшим командам разработчиков мира в General Translation