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

Локализация

Узнайте, на каком этапе находятся языки каждого проекта, найдите строки, требующие обработки, и всегда держите переводы актуальными при любых изменениях.

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

Раздел Локализация расположен в главном меню. На одной странице он показывает языки каждого Проекта и предоставляет для каждого Проекта рабочее место. Проекты, которые пока не являются многоязычными, начинают с Мастер интернационализации.

Все проекты на одной странице

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

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

Локализация

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

Интернационализировать проект2 проекта · 6 языков · 135 строк ожидают
  • Интернет-магазин
    английский исходный код · 5 языки · 1 240 строки
    97,2 %
    135 строки в ожидании
  • Центр помощи
    шведский исходный код · 2 языки · 318 строки
    100 %
    Все языки переведены полностью
  • Приложение для бронирования
    Ещё не интернационализировано
    Запустить мастер

Локализация: языки каждого проекта представлены в виде бусин вокруг небольшого глобуса — показано, сколько текста переведено и что ещё требует работы. Иллюстративные данные.

Проект без переводов отображается как Еще не интернационализирован. Владельцы и администраторы запускают мастер с этой строки или из Интернационализировать Проект в верхней части страницы.

Рабочее место

Открытие Проекта показывает его рабочее место: разделы слева и открытый раздел рядом с ними.

РазделДля чего он предназначен
ОбзорСтатус каждого языка и действие, необходимое для перевода недостающих элементов.
СтрокиВсе строки на всех языках, отфильтрованные под задачи, требующие внимания.
ПредложенияИсправления от участников, ожидающие принятия решения.
ОбменФайлы для агентств, инструментов перевода и таблиц, а также их переведенные версии.
УчастникиКто может предлагать варианты текста и на каких языках.
АвтоматизацииИсправления применяются еженощно, а перевод строк, выполненный вне Coroid, также учитывается.
НастройкиЯзыки, проверка переводов, доступ и расходы, а также конфигурационный файл.

Разделы «Предложения», «Участники» и «Автоматизации» описаны в Поддерживайте переводы с помощью предложений.

Рабочее место считывает каталоги из вашей ветки по умолчанию. При их изменении Coroid перечитывает их в следующий раз, когда кто-то открывает Проект; до этого в разделе Обзор будет указано, что идет процесс чтения. Для этой операции Coroid никогда не запускает код вашего репозитория. Каталоги с пользовательским адаптером не отображаются; их строки все равно проверяются в задачах.

Обзор: по одной строке на язык

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

  1. Интернационализировать. Каталог данного языка существует и содержит строки.
  2. Локализовать. Все строки переводятся с учетом текущего исходного текста.
  3. Проверить. Ни одна строка не является некорректной: все они корректно парсятся, сохраняют плейсхолдеры исходного текста и имеют нужные формы множественного числа для соответствующего языка.

Следующий этап развития языка определяется местом окончания его строки. Зеленая отметка означает завершение, бирюзовое кольцо — этап, требующий работы, а янтарная отметка — наличие некорректных строк.

Локализация
Интернет-магазин
английский исходный код · 5 языки · проверено 2 часа назад в 3f2c9a1
  • Обзор
  • Строки
  • Предложения
  • Обмен
  • Участники
  • Автоматизации
  • Настройки
Обзор

Каждый язык проходит через три этапа. Следующий шаг определяется местом завершения текущего этапа.

Перевести 135 строки
Строки1 240в 3 каталогах
Языки4плюс 1 производные
Переведено97,2 %1 020 рассмотрено людьми
Требует доработки135по всем 3 языкам
  1. Englishанглийский · en · Источник

    1 240 строки в 3 каталогах

  2. Deutschнемецкий · de
    100 %
    Готово
    Соответствует требованиям
  3. Françaisфранцузский · fr
    98 %
    18 отсутствуют строки
    Соответствует требованиям
  4. 日本語японский · ja
    96,3 %
    42 отсутствуют строки
    3 поврежденные строки
  5. العربيةарабский · ar
    94,6 %
    64 отсутствуют строки
    Соответствует требованиям
  6. British Englishбританский английский · en-GB · Сформировано на основе английский
    100 %
    Производное и актуальное
    Соответствует требованиям

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

Полоса под Локализовать отображает информацию с самого начала: темно-зеленый цвет — строки, проверенные людьми, светло-зеленый — строки, созданные моделью, янтарный — строки, требующие внимания, а пустая часть — отсутствующие строки. Текст под полосой указывает на разрыв, например, 42 отсутствующие строки, и открывает именно эти строки.

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

Перевести недостающие элементы

Владельцы и администраторы видят в верхней части раздела Обзор одну кнопку Перевести с указанием числа строк, требующих работы: отсутствующих, измененных в исходном тексте или некорректных. Перевод выполняется в рабочем месте в два этапа:

  1. Память переводов. Строка, которую уже перевел другой Проект вашей организации с точно таким же исходным текстом, использует этот же перевод. Переводы, сделанные людьми, имеют приоритет над машино-сгенерированными. Для этого не требуется обращение к модели, и это не стоит никаких затрат.
  2. Модель Translator. Остальные строки переводятся движком, закрепленным в вашем репозитории, через шлюз перевода с проверкой каждого ответа на соответствие плейсхолдерам и формам множественного числа.

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

Локализация
Интернет-магазин
английский исходный код · 5 языки · проверено 2 часа назад в 3f2c9a1
  • Обзор
  • Строки
  • Предложения
  • Обмен
  • Участники
  • Автоматизации
  • Настройки
Обзор

Каждый язык проходит через три этапа. Следующий шаг определяется местом завершения текущего этапа.

Остановить перевод
Машинный перевод в процессе выполнения

Переведено строк пока что: 71 из 133

Повторно использовано из памяти переводов без дополнительных затрат: 26 · 0,04 $ израсходовано из лимита в 5,00 $

  1. Deutschнемецкий · de
    Готово
  2. Françaisфранцузский · fr
    Переводы готовы к коммитированию: 24
  3. 日本語японский · ja
    Процесс перевода: записано 28 из 45
  4. العربيةарабский · ar
    Процесс перевода: записано 19 из 64

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

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

Строки

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

СостояниеЗначение
ОтсутствуетДля этой строки перевод отсутствует
Исходный текст изменилсяИсходный текст изменился после того, как строка была переведена
НекорректноТекст не поддаётся разбору, его плейсхолдеры отличаются от исходных или формы множественного числа не соответствуют языку
То же, что и исходный текстСтрока полностью совпадает с исходным текстом
МашинныйЕё создала модель, и её ещё не проверил человек
ПровереноЕё написал или исправил человек
ПроизводноеЕё получили по правилам из другого языка

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

Локализация
Интернет-магазин
английский исходный код · 5 языки · проверено 2 часа назад в 3f2c9a1
  • Обзор
  • Строки
  • Предложения
  • Обмен
  • Участники
  • Автоматизации
  • Настройки
Строки

Все строки на всех языках. Фильтры позволяют сразу видеть нужные элементы работы.

日本語Все каталогиНайти ключи и текст…
Требует работы45Отсутствует42Исходный текст изменён0Некорректно3То же, что и исходный текст0Машинный перевод1 035Проверено160Все1 240
Исходный текст日本語
Total: {amount}合計: {price}Некорректно
Your cart is emptyПеревода пока нетОтсутствует
Welcome back, {name}Перевода пока нетОтсутствует
Prices include <b>VAT</b>価格には<b>消費税</b>が含まれますНекорректно
Weekly dealsПеревода пока нетОтсутствует
checkout.total
Каталог ui · label
Исходный код · английский
Total: {amount}
  1. 日本語 · японскийНекорректно
    合計: {price}

    Создано моделью · Плейсхолдеры отличаются от исходного текста

  2. DeutschПроверено
    Gesamt: {amount}
  3. FrançaisМашинный перевод
    Total : {amount}
  4. العربيةМашинный перевод
    الإجمالي: {amount}
  5. British EnglishПроизводное
    Total: {amount}

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

Редактировать и зафиксировать

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

Предложить в редакторе предлагает перевод для конкретной строки: из памяти переводов, если такая есть в другом проекте, либо от модели-переводчика. Выберите Использовать чтобы поместить его в редактор; ничего не сохраняется до тех пор, пока вы не сохраните изменения.

Сохранённые изменения отображаются в панели под списком строк, где их можно проверить или отменить e каждое из них. Зафиксировать объединяет все эти изменения вместе с одобренными предложениями участников и машинными переводами в одну задачу. Задача применяет именно эти значения с помощью закреплённого движка и открывает один pull request. Один коммит может включать до 5 000 изменений; остальные ожидают следующего коммита. Пока этот pull request не будет объединён, строки будут отображаться как Не зафиксировано или В процессе применения.

Зафиксированный машинный перевод остаётся машинным переводом в кэше движка, поэтому он по-прежнему считается Машинный до тех пор, пока его не проверит человек.

Для редактирования необходимо включить возможность внесения изменений в конфигурационном файле; Мастер интернационализации включает её по умолчанию. Участники также могут предложить более подходящую формулировку на вашем собственном сайте.

Обмен файлами

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

ФорматЯзыки в файлеПрименяется для
XLIFF 1.2 и 2.0ОдинИнструменты и агентства перевода; плейсхолдеры передаются как заблокированные теги
Gettext POОдинPoedit, Weblate и другие инструменты Gettext
CSV и ExcelВсе языкиТаблицы, со всеми языками рядом
JSONОдинКлючи и переводы
Apple String CatalogВсе языкиXcode
Apple .stringsОдинПроекты Xcode
Android strings.xmlОдинAndroid Studio
Flutter ARBОдинFlutter

Экспорт содержит строки, требующие доработки, или все строки. Плейсхолдеры и сообщения с множественным числом сохраняются в том виде, в котором они написаны.

При импорте отображаются все строки до того, как что-либо сохраняется. Новые переводы и изменения можно принять. Coroid исключает ключи, отсутствующие в проекте, переводы, сделанные по изменённому исходному тексту, некорректные плейсхолдеры и плагальные формы, необходимые для данного языка. Принятые строки становятся изменениями, ожидающими Зафиксировать, так же как правки, внесённые в Строки.

JSON, файлы .strings и Android не указывают язык, для которого предназначены. Coroid определяет его по имени файла, например storefront-de.json, или запрашивает его.

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

Функция Переводы проверка в разделе Quality Control выполняется при тестировании задач и в рамках запросов на объединение, затрагивая лишь те строки, которые были изменены. Мастер включает её по умолчанию после объединения pull request; Настройки показывает, включена ли она, и открывает её в Quality Control. На странице Обзор Просмотреть последнюю проверку в разделе Проверить открывает самый свежий результат.

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

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

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

Перевести текст оформления заказаЗадача
Обнаружены проблемы
  • Открытьui · checkout.total · fr: missingПроверка переводов · Не переведено
  • Открытьui · nav.deals · de: staleПроверка переводов · Исходный текст изменился после перевода
  • В процессе исправленияui · cart.items · ja: placeholder_mismatchПроверка переводов · Плейсхолдеры отличаются от исходного текста
  • Исправленоui · cart.count · ar: plural_categoriesПроверка переводов · Для данного языка отсутствуют формы множественного числа

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

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

Модель Translator

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

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

Расходы

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

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

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

Перевод вне Coroid

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