Мастер интернационализации делает проект многоязычным. Он анализирует ваш репозиторий, начинает работу с найденных данных и завершается созданием одной задачи, которая открывает один pull request. Вам не нужно вводить код языка или редактировать JSON; изменяйте только то, что требуется, и ничего не изменится в репозитории до момента слияния.
Владельцы и администраторы запускают мастер. Начните его через Глобализация → Интернационализация: выберите Интернационализировать проект, или Запустить мастер в строке соответствующего проекта. Для уже многоязычного проекта Настройки → Изменить языки в его рабочей области открывает тот же мастер для предложения изменений.
Этапы
1. Сканирование
Coroid считывает данные из ветки по умолчанию, не запуская при этом код. Он ищет каталоги и соответствующие им языки, используемые фреймворки, а также текст, всё ещё написанный прямо в коде, с учётом количества строк в каждом файле.
- Найдены каталоги. Мастер сохраняет их: Coroid добавляет проверки и переводит отсутствующие элементы. Это называется адаптацией.
- Каталогов пока нет. Coroid переносит текст из вашего кода в каталоги и заменяет его на ссылки на них. Это называется внедрением.
- Конфигурация уже настроена. В проекте уже есть конфигурация Coroid, и мастер предлагает изменения к ней.
2. Исходный язык
Язык, на котором написан продукт; все остальные языки переводятся с него. Мастер определяет его по вашим каталогам или угадывает по тексту в коде. Исходным может быть любой язык: шведский продукт, переведённый на английский и немецкий, работает так же.
3. Языки
Выбирайте языки по одному или добавьте целый рынок сразу: Наиболее распространённые, Европа, Скандинавия, Восточная Азия, Америка или С письмом справа налево. Для каждого языка указывается его название, направление письма и количество форм множественного числа.
Региональные варианты можно получать путём наследования, а не перевода. Британский английский формируется из американского английского с британским правописанием, а швейцарский немецкий — из немецкого с швейцарским правописанием; они не требуют дополнительных затрат и остаются синхронизированными с родительским языком.
Каждый шаг основан на данных, уже имеющихся в репозитории. Изменяйте только то, что необходимо; ничего не будет применено до момента слияния pull request.
- Сканировать
- Исходный язык
- Языки
- Строки
- Стиль и термины
- Культура
- Качество и автоматизация
- Проверка
Выберите языки по отдельности или добавьте целый рынок. Региональные варианты, такие как британский английский, могут быть сформированы на основе правил без необходимости в ручном переводе.
- 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 YAML | config/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 открывает задачу, в которой применяется именно этот файл, и исправляет все затронутые переводы. Для настройки языков и стиля проще воспользоваться мастером.