Мастер интернационализации превращает проект в многоязычный. Он считывает содержимое вашего репозитория, начинает работу с полученных данных и в итоге создает одну задачу, которая открывает один 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. Качество и автоматизация
Все параметры включены по умолчанию, но их можно изменить позже:
- Проверять переводы при каждом изменении. Проверка переводов в разделе «Контроль качества» отправляет уведомление об ошибке, если в переводе не хватает строк или есть ошибки.
- Переводить строки, добавленные вне Coroid. Если кто-то добавляет новый текст без участия Coroid, создаётся задача на его перевод.
- Применять исправления каждую ночь. Утверждённые предложения от участников поступают как одна задача pull request каждую ночь.
- Разрешить приглашённым пользователям предлагать варианты текста. Приглашённые носители языка могут корректировать переводы прямо на вашем сайте. Подробнее на Поддерживать переводы с помощью предложений.
Файл конфигурации хранит последние настройки. Coroid включит остальные параметры в следующий раз, когда владелец или администратор откроет раздел «Локализация» после слияния pull request, и только один раз: если вы отключите какой-то параметр позже, он останется выключенным.
7. Рецензирование
В сводке указаны данные о проекте, действиях задачи, исходном языке, списке языков и тех из них, что используют наследование, объёме перевода, терминах, сохранённых в исходном виде, и параметрах, которые включатся после слияния. Перевод оплачивается как использование модели, как и другая работа агентов, с лимитом на одну задачу.
Выберите Интернационализировать. Coroid создаст одну задачу со спецификацией и критериями приемки и сразу запустит её.
Что делает задача
- Адаптация Записывает файл конфигурации точно так, как его создал мастер, а затем переводит все отсутствующие строки.
- Представляем Связывает вашу платформу, переносит текст выбранных файлов в каталоги, добавляет маршрутизацию по языкам, механизмы замены и поддержку направления справа налево, а затем выполняет перевод.
- Изменение Записывает новую конфигурацию и исправляет переводы, на которые влияют эти изменения.
Задача завершается созданием одного pull request. После его слияния с веткой по умолчанию все языки появятся в разделе Локализация.
Форматы
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.9.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)."
}
}cliУказывает точную версию движка и ее контрольную сумму. Coroid загружает и проверяет эту версию перед каждым запуском, чтобы обновление случайно не изменило результат.derivedLocalesПеречисляет региональные варианты, созданные правилами.protectedTermsиlocaleInstructionsсодержат ваши выбранные параметры Стиль и термины.
В файле также могут храниться глоссарий, контекст продукта, маршруты перевода по языкам и привязка предложений для участников проекта.
Настройки → Файл конфигурации в рабочей области показывает точный файл из ветки по умолчанию. Чтобы изменить его там, нужно создать предложение и выбрать Предложить изменение: Coroid создает задачу, которая применяет именно этот файл и исправляет переводы, на которые влияют изменения. Для настройки языков и стиля проще воспользоваться мастером.