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

Переведите ваш проект

Настройте переводы для проекта, поддерживайте их актуальность с помощью Quality Control и отслеживайте их стоимость.

Coroid переводит ваш продукт с тем же движком, который используется для работы с тринадцатью языками. Ваши каталоги остаются файлами в вашем репозитории. Любое изменение в них поступает как обычная задача и pull request, при этом на обработку модели отправляются только новые, изменённые или повреждённые строки.

Переводы размещаются в разделе Quality Control → Переводы. В списке отображаются каждый проект, информация о настроенных переводах и последнее сканирование. Откройте проект, чтобы получить доступ к его рабочему пространству.

Интернет-магазин
Настроено · исходный язык: en · 4 целевых языка
ОбзорНастройкаКонфигурацияУчастникиПредложенияАвтоматизации
Последнее сканированиеПросмотреть результатыПросмотреть запуск
ЯзыкОтсутствуетУстаревшие
de02
fr140
ja141
ar140
  • ПереводыQA задач и создание пулл-реквестов · только изменённые строкиОпубликованные
  • Аудит переводовПо расписанию · каждая каталожная страница и страница языкаЧерновик

Контроль качества → Переводы для одного проекта: последняя проверка перевода по каждому языку, а также элементы управления переводами и аудитом переводов. Примерные данные.

Что нужно для вашего репозитория

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

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

Вам пока не нужны переводы. Если в вашем проекте нет поддержки i18n, Coroid может её добавить.

Настроить

Раздел Настройка содержит инструкцию по трём шагам.

  1. Обнаружить. Coroid создаёт задачу на обнаружение. Он запускает закреплённый движок перевода в вашем репозитории и фиксирует стек технологий, каталоги, исходный язык и всё, что вызывает сомнения.
  2. Выбрать. Выберите Использовать существующую систему i18n чтобы сохранить ваш фреймворк и каталоги, а также добавить проверки и движок различий от Coroid. Выберите Внедрить i18n чтобы Coroid настроил ваш фреймворк, извлек представительные строки и добавил маршрутизацию по локалям, механизмы резервного восстановления и поддержку направления слева направо.
  3. Создать. Coroid создаёт задачу на настройку с техническим заданием и критериями приемки. В итоге получается pull request, которое вы проверяете как любую другую задачу.
Интернет-магазин
Еще не настроено · процесс установки ведется
ОбзорНастройкаКонфигурацияУчастникиПредложенияАвтоматизации
  1. Обнаружить
  2. 2Выбрать
  3. 3Создать
Обнаружено: Next.js с next-intl · 3 каталога JSON · исходный язык: en
Используйте существующую систему локализации

Сохраните текущую структуру и каталоги, добавив функции проверки переводов и движка различий от Coroid.

Внедрите систему локализации

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

Исходный язык
en
Целевые языки
de, fr, ja, ar
Продолжить

Вкладка «Настройка» после обнаружения: используйте существующую систему i18n или внедрите её, указав исходный и целевые языки. Примерные данные.

Настройка будет завершена после того, как этот pull request объединят с веткой по умолчанию, и Coroid синхронизирует данные. До этого момента ничего в рабочем пространстве не будет учитывать эту настройку.

Файл репозитория

При настройке создаётся .coroid/i18n.json. Он описывает ваш репозиторий, поэтому хранится в нём, а изменения вносятся через pull request:

{
  "version": 1,
  "cli": { "version": "1.7.0", "sha256": "…" },
  "sourceLocale": "en",
  "targetLocales": ["de", "fr", "ja", "ar"],
  "catalogs": [
    {
      "id": "ui",
      "format": "i18next-json",
      "source": "messages/{locale}.json"
    }
  ],
  "localeTier": { "ja": "escalation" }
}
  • cli фиксирует точную версию движка и её контрольную сумму. Coroid загружает и проверяет эту версию перед каждым запуском, чтобы обновление не изменило результаты внезапно.
  • sourceLocale может быть любым языком. Шведский исходный текст, переведённый на английский и немецкий, обрабатывается одинаково.
  • localeTier запрашивает более качественный вариант перевода для конкретной локали. Вы выбираете уровень, а не модель.

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

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

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

Проверяйте каждое изменение

Переводы включаются в процесс проверки через два этапа Quality Control. Добавьте их из раздела Обзор .

  • Переводы запускается при проверке задач и в pull request. Он проверяет только те строки, которые затронуты изменением.
  • Аудит переводов запускается по расписанию. Он проверяет каждый каталог и локаль, а также может включать браузерное тестирование страниц с учётом локали: проверку направления слева направо, переполнения текста и отсутствия непереведённого текста на странице.

Добавление контроля создаёт черновик политики. Проверьте его и опубликуйте в разделе Политики качества чтобы включить его.

Каждая проблема оформляется как находка с кодом ошибки:

КодЗначениеБлокирует по умолчанию
missingДля строки отсутствует переводДа
invalid_syntaxПеревод не корректно парсится, например, нарушена структура ICUДа
placeholder_mismatchПлейсхолдеры отличаются от исходныхДа
plural_categoriesОтсутствует необходимая форма множественного числа для данной локалиДа
staleИсходный текст изменился после перевода строкиНет

Вы сами выбираете, какие коды блокировать в настройках элемента управления. Глоссарий, правила длины и запрещённых терминов указывают свои собственные коды при соответствующей настройке файла.

Контроль качества
Результаты последних проверок, отфильтрованные по критерию «Локализация».
ПолитикиРезультаты4Запуски
  • missingui · checkout.total · frНе переведено
  • staleui · nav.deals · deИсходный текст изменился после перевода
  • placeholder_mismatchui · cart.items · jaПлейсхолдеры отличаются от исходного текста
  • plural_categoriesui · cart.count · arДля данного языка отсутствуют формы множественного числа

Результаты проверки качества переводов: один код проблемы на каждое найденное несоответствие. Примерные данные.

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

Модель Translator

В профилях AI переводу отведена собственная роль, Переводчик, наряду с Архитектором, Разработчиком, Инженером по проверке качества и Рецензентом. По умолчанию используется модель перевода Hy-MT2, а в качестве резервной — GPT-6 Luna, если это разрешено политикой вашей организации. Изменить соответствие можно в профиле AI так же, как и для любой другой роли.

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

Затраты

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

При использовании стандартного маршрута Translator стоимость перевода составляет около двух центов за 1 000 строк на один язык. Перевод каталога из 2 000 строк на десять языков обошёлся примерно в 0,33 доллара при наших тестах.

  • Оплачиваются только изменения. Движок сохраняет кэш, привязанный к исходному тексту, поэтому неизменённые строки больше не отправляются.
  • На каждую задачу установлен лимит перевода. Сессия прекращается при достижении установленного лимита расходов по задаче — по умолчанию 1 доллар. В проекте можно задать более низкий лимит в разделе Настройка → Доступ и расходы.
  • Проверки не вызывают запросов к моделям. Элемент управления Переводами и функция аудита считывают ваши каталоги; они не выполняют перевод.

Перевод вне Coroid

Движок представляет собой инструмент командной строки, coroid-i18n. Ваша собственная система непрерывной интеграции может запустить ту же закреплённую версию с собственным ключом OpenRouter. Внутри Coroid задачи всегда используют шлюз перевода, поэтому расходы и лимиты остаются в одном месте.