Документация

Интернационализация проекта

Запустите мастер интернационализации, чтобы сделать проект многоязычным. Coroid проанализирует репозиторий, предложит нужные языки и настройки, а затем подготовит один pull request.

Мастер интернационализации делает проект многоязычным. Он анализирует ваш репозиторий, начинает работу с найденных данных и завершается созданием одной задачи, которая открывает один pull request. Вам не нужно вводить код языка или редактировать JSON; изменяйте только то, что требуется, и ничего не изменится в репозитории до момента слияния.

Владельцы и администраторы запускают мастер. Начните его через Глобализация → Интернационализация: выберите Интернационализировать проект, или Запустить мастер в строке соответствующего проекта. Для уже многоязычного проекта Настройки → Изменить языки в его рабочей области открывает тот же мастер для предложения изменений.

Этапы

1. Сканирование

Coroid считывает данные из ветки по умолчанию, не запуская при этом код. Он ищет каталоги и соответствующие им языки, используемые фреймворки, а также текст, всё ещё написанный прямо в коде, с учётом количества строк в каждом файле.

  • Найдены каталоги. Мастер сохраняет их: Coroid добавляет проверки и переводит отсутствующие элементы. Это называется адаптацией.
  • Каталогов пока нет. Coroid переносит текст из вашего кода в каталоги и заменяет его на ссылки на них. Это называется внедрением.
  • Конфигурация уже настроена. В проекте уже есть конфигурация Coroid, и мастер предлагает изменения к ней.

2. Исходный язык

Язык, на котором написан продукт; все остальные языки переводятся с него. Мастер определяет его по вашим каталогам или угадывает по тексту в коде. Исходным может быть любой язык: шведский продукт, переведённый на английский и немецкий, работает так же.

3. Языки

Выбирайте языки по одному или добавьте целый рынок сразу: Наиболее распространённые, Европа, Скандинавия, Восточная Азия, Америка или С письмом справа налево. Для каждого языка указывается его название, направление письма и количество форм множественного числа.

Региональные варианты можно получать путём наследования, а не перевода. Британский английский формируется из американского английского с британским правописанием, а швейцарский немецкий — из немецкого с швейцарским правописанием; они не требуют дополнительных затрат и остаются синхронизированными с родительским языком.

Интернационализация
Мастер интернационализации

Каждый шаг основан на данных, уже имеющихся в репозитории. Изменяйте только то, что необходимо; ничего не будет применено до момента слияния pull request.

Шаг 3 из 8
Языки для добавления

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

5 языки
  • Deutschнемецкий · de · 2 формы множественного числа
  • Françaisфранцузский · fr · 3 формы множественного числа
  • 日本語японский · ja · 1 форма множественного числа
  • العربيةарабский · ar · справа налево · 6 формы множественного числа
  • British Englishбританский английский · en-GB · 2 формы множественного числаС вариантами написания по британским правилам
Добавить рынок
Наиболее распространённыеЕвропаСкандинавияВосточная АзияАмерикаСправа налево
НазадПродолжить

Мастер интернационализации на шаге «Языки»: для каждого языка указаны направление письма и формы множественного числа, британский английский формируется по правилам, а рынки добавляются одним действием. Иллюстративные данные.

4. Строки

При адаптации выбирайте каталоги, которые Coroid сохраняет для перевода; их ключи и структура остаются прежними. При внедрении выбирайте файлы, чей текст Coroid переносит в каталоги; файлы, которые вы не включите, останутся без изменений.

5. Стиль и термины

Всё это необязательно и применяется ко всем языкам:

  • Формальный или неформальный стиль. Для языков, где обращение к собеседнику бывает формальным или неформальным, например для немецкого Sie и du. По умолчанию каждый вариант следует тону исходного текста.
  • Термины сохраняются в исходном виде. Названия продуктов, брендов и функций остаются одинаковыми во всех языках.
  • О продукте. Несколько предложений о продукте и его аудитории, которые помогают переводчикам выбирать правильные слова.

6. Культура

Каждый рынок использует свои форматы дат, чисел и цен. Выберите, как код будет форматировать данные для читателя: мастер предложит форматтер из найденного фреймворка, например next-intl или react-intl, или вы укажете свой. Затем выберите валюту, в которой платят на каждом рынке; для каждой валюты используется региональный стандарт. Для каждого рынка показывается пример даты и числа, день начала недели и размер бумаги. Агенты Coroid следуют обоим выборам; подробнее см. в разделе Культура.

7. Качество и автоматизация

Включено по умолчанию, и каждый параметр можно изменить позже:

  • Проверять переводы при каждом изменении. При этом Проверка глобализации отправляет уведомление об изменении, если в переводах не хватает строк или они повреждены, либо если текст добавляется в код вместо каталога.
  • Переводить строки, добавленные вне Coroid. Если кто-то сливает новый текст без участия Coroid, создаётся задача на его перевод.
  • Применять исправления каждую ночь. Утверждённые предложения от участников приходят как одна задача pull request каждую ночь.
  • Разрешить приглашённым людям предлагать варианты текста. Приглашённые вами носители языка могут корректировать переводы на вашем сайте. Подробнее см. в разделе Поддерживать переводы с помощью предложений.

Файл конфигурации сохраняет последний вариант настроек. Coroid включит остальные параметры в следующий раз, когда владелец или администратор откроет раздел Глобализация после слияния pull request, и только один раз: если вы отключите какой-то параметр позже, он останется отключённым.

8. Рецензирование

В кратком описании проекта указываются назначение задачи, исходный язык, целевые языки и их производные, объем перевода, термины, сохраняемые в исходном виде, параметры форматирования и валюты, а также действия, выполняемые после слияния. Стоимость перевода рассчитывается как использование модели — так же, как и работа других агентов — с лимитом на одну задачу.

Выберите Интернационализация. Coroid создает одну задачу со спецификацией и критериями приемки и запускает ее немедленно.

Назначение задачи

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

Задача завершается созданием одного pull request. После слияния с основной веткой каждый язык отображается в разделе Локализация, а инструмент World readiness анализирует код на предмет элементов, до сих пор привязанных к одному языку.

Форматы

Coroid считывает каталоги в следующих форматах:

ФорматИспользуйте для
ICU JSONФайлы сообщений с плагинами и операторами выбора ICU
i18next JSONКаталоги i18next и react-i18next, включая суффиксы множественного числа
Vue i18n JSONСообщения vue-i18n, включая связанные сообщения и плагины для множественного числа
Rails YAMLconfig/locales/*.yml, с %{name} интерполяцией и ключами множественного числа
gettext PO.po файлы и .pot шаблон, с Plural-Forms на каждый язык
Markdown и MDXСтраницы документации в папке с языком (docs/en/…): текст, описания изображений и выбранные поля мета-данных; код и разметка остаются без изменений
НастраиваемыйЛюбой другой формат — через небольшую команду-адаптер в вашем репозитории

Файл конфигурации

Мастер записывает .coroid/i18n.json. В нём описывается ваш репозиторий, поэтому он хранится в репозитории и изменяется через запросы на объединение:

{
  "version": 1,
  "cli": { "version": "1.16.0", "sha256": "…" },
  "sourceLocale": "en",
  "targetLocales": ["de", "fr", "ja", "ar"],
  "derivedLocales": [
    { "locale": "en-GB", "from": "en", "rules": "en-gb-spelling" }
  ],
  "catalogs": [
    {
      "id": "ui",
      "format": "i18next-json",
      "source": "messages/{locale}.json"
    }
  ],
  "protectedTerms": ["Storefront"],
  "localeInstructions": {
    "de": "Address the reader informally (du)."
  },
  "world": {
    "formatter": "useFormatter from next-intl",
    "currencies": { "de": "EUR", "fr": "EUR", "ja": "JPY", "ar": "SAR" }
  }
}
  • cli В нём указывается точная версия движка и её контрольная сумма. Coroid загружает и проверяет эту версию перед каждым запуском, чтобы обновление не меняло результат работы неожиданно.
  • derivedLocales Здесь перечислены региональные варианты, созданные по правилам.
  • protectedTerms и localeInstructions Содержат то, что вы выбрали в разделе Стиль и термины, и world то, что вы выбрали в разделе Культура. Этот Проверка Глобализации перечисляет остальные элементы world.

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

Настройки → Файл конфигурации В рабочей области отображается точный файл из ветки по умолчанию. Чтобы изменить его, отредактируйте предложение и выберите Предложить изменения: Coroid открывает задачу, в которой применяется именно этот файл, и исправляет все затронутые переводы. Для настройки языков и стиля проще воспользоваться мастером.