Coroid переводит ваш продукт с тем же движком, который используется для перевода на тринадцать языков. Ваши каталоги остаются файлами в вашем репозитории. Любое изменение в них приходит как задача и pull request, причем в модель отправляются только новые, измененные или некорректные строки.
Раздел Локализация расположен в главном меню. На одной странице он показывает языки каждого Проекта и предоставляет для каждого Проекта рабочее место. Проекты, которые пока не являются многоязычными, начинают с Мастер интернационализации.
Все проекты на одной странице
Раздел Локализация открывается со списком доступных для чтения Проектов. В каждой строке указаны исходный язык Проекта, количество используемых языков, число строк, а также полоса, отражающая уровень перевода по всем языкам.
Небольшой глобус рядом с каждым Проектом содержит по одной точке на каждый язык: зеленая точка означает завершенный язык, бирюзовое кольцо — наличие пропущенных или измененных строк, а янтарная точка — наличие некорректных строк.
Обеспечьте соответствие каждого проекта языковым предпочтениям ваших пользователей и сохраняйте это при любых изменениях продукта.
- Интернет-магазинанглийский исходный код · 5 языки · 1 240 строки97,2 %135 строки в ожидании
- Центр помощишведский исходный код · 2 языки · 318 строки100 %Все языки переведены полностью
- Запустить мастерПриложение для бронированияЕщё не интернационализировано
Локализация: языки каждого проекта представлены в виде бусин вокруг небольшого глобуса — показано, сколько текста переведено и что ещё требует работы. Иллюстративные данные.
Проект без переводов отображается как Еще не интернационализирован. Владельцы и администраторы запускают мастер с этой строки или из Интернационализировать Проект в верхней части страницы.
Рабочее место
Открытие Проекта показывает его рабочее место: разделы слева и открытый раздел рядом с ними.
| Раздел | Для чего он предназначен |
|---|---|
| Обзор | Статус каждого языка и действие, необходимое для перевода недостающих элементов. |
| Строки | Все строки на всех языках, отфильтрованные под задачи, требующие внимания. |
| Предложения | Исправления от участников, ожидающие принятия решения. |
| Обмен | Файлы для агентств, инструментов перевода и таблиц, а также их переведенные версии. |
| Участники | Кто может предлагать варианты текста и на каких языках. |
| Автоматизации | Исправления применяются еженощно, а перевод строк, выполненный вне Coroid, также учитывается. |
| Настройки | Языки, проверка переводов, доступ и расходы, а также конфигурационный файл. |
Разделы «Предложения», «Участники» и «Автоматизации» описаны в Поддерживайте переводы с помощью предложений.
Рабочее место считывает каталоги из вашей ветки по умолчанию. При их изменении Coroid перечитывает их в следующий раз, когда кто-то открывает Проект; до этого в разделе Обзор будет указано, что идет процесс чтения. Для этой операции Coroid никогда не запускает код вашего репозитория. Каталоги с пользовательским адаптером не отображаются; их строки все равно проверяются в задачах.
Обзор: по одной строке на язык
Раздел Обзор начинается с четырех итоговых показателей: число строк, количество языков, уровень перевода и число строк, требующих работы. Под ними для каждого языка отображается строка, проходящая через три этапа:
- Интернационализировать. Каталог данного языка существует и содержит строки.
- Локализовать. Все строки переводятся с учетом текущего исходного текста.
- Проверить. Ни одна строка не является некорректной: все они корректно парсятся, сохраняют плейсхолдеры исходного текста и имеют нужные формы множественного числа для соответствующего языка.
Следующий этап развития языка определяется местом окончания его строки. Зеленая отметка означает завершение, бирюзовое кольцо — этап, требующий работы, а янтарная отметка — наличие некорректных строк.
- ОбзорТекущее состояние каждого языка
- СтрокиВсе строки на всех языках
- ПредложенияОжидают решения
- ОбменФайлы для других инструментов
- УчастникиКто может предлагать варианты текста
- АвтоматизацииРабота ночью и при слиянии веток
- НастройкиЯзыки, доступ и расходы
Каждый язык проходит через три этапа. Следующий шаг определяется местом завершения текущего этапа.
- Englishанглийский · en · Источник
1 240 строки в 3 каталогах
- Deutschнемецкий · de100 %ГотовоСоответствует требованиям
- Françaisфранцузский · fr98 %18 отсутствуют строкиСоответствует требованиям
- 日本語японский · ja96,3 %42 отсутствуют строки3 поврежденные строки
- العربيةарабский · ar94,6 %64 отсутствуют строкиСоответствует требованиям
- British Englishбританский английский · en-GB · Сформировано на основе английский100 %Производное и актуальноеСоответствует требованиям
Обзор рабочего стола: каждый язык отображается в виде строки через этапы интернационализации, локализации и проверки, с указанием разрыва, мешающего завершению процесса. Иллюстративные данные.
Полоса под Локализовать отображает информацию с самого начала: темно-зеленый цвет — строки, проверенные людьми, светло-зеленый — строки, созданные моделью, янтарный — строки, требующие внимания, а пустая часть — отсутствующие строки. Текст под полосой указывает на разрыв, например, 42 отсутствующие строки, и открывает именно эти строки.
Языки, полученные из другого языка по правилам, например британский английский из американского, отображаются как Производный и актуальный после применения правил ко всем строкам.
Перевести недостающие элементы
Владельцы и администраторы видят в верхней части раздела Обзор одну кнопку Перевести с указанием числа строк, требующих работы: отсутствующих, измененных в исходном тексте или некорректных. Перевод выполняется в рабочем месте в два этапа:
- Память переводов. Строка, которую уже перевел другой Проект вашей организации с точно таким же исходным текстом, использует этот же перевод. Переводы, сделанные людьми, имеют приоритет над машино-сгенерированными. Для этого не требуется обращение к модели, и это не стоит никаких затрат.
- Модель Translator. Остальные строки переводятся движком, закрепленным в вашем репозитории, через шлюз перевода с проверкой каждого ответа на соответствие плейсхолдерам и формам множественного числа.
В процессе выполнения над итоговыми показателями отображается панель с числом переведенных строк и затраченными ресурсами, а полоса каждого языка заполняется полосатой краской по мере поступления строк. Остановить перевод прекращает процесс; выполненные переводы сохраняются.
- ОбзорТекущее состояние каждого языка
- СтрокиВсе строки на всех языках
- ПредложенияОжидают решения
- ОбменФайлы для других инструментов
- УчастникиКто может предлагать варианты текста
- АвтоматизацииРабота ночью и при слиянии веток
- НастройкиЯзыки, доступ и расходы
Каждый язык проходит через три этапа. Следующий шаг определяется местом завершения текущего этапа.
Переведено строк пока что: 71 из 133
Повторно использовано из памяти переводов без дополнительных затрат: 26 · 0,04 $ израсходовано из лимита в 5,00 $
- Deutschнемецкий · deГотово
- Françaisфранцузский · frПереводы готовы к коммитированию: 24
- 日本語японский · jaПроцесс перевода: записано 28 из 45
- العربيةарабский · arПроцесс перевода: записано 19 из 64
Обзор в процессе машинного перевода: печатный механизм работает, каждый язык заполняется полосатыми чернилами по мере поступления строк, а память переводов подсказывает готовые варианты из других проектов. Иллюстративные данные.
Переведенные данные не сразу попадают в ваш репозиторий. Они ждут Зафиксировать вместе с остальными изменениями, отмеченными как машинные переводы, чтобы вы могли проверить их в Строки сначала. Строку, которую уже отредактировал кто-то другой или предложил участник проекта, оставляют за ним.
Строки
Строки перечисляет все строки со своим исходным текстом и значением на одном языке. Он открывается в Требует доработки: строки, которых не хватает, чей исходный текст изменился, которые содержат ошибки или остались такими же, как исходный текст. Выберите другой язык, каталог или воспользуйтесь поиском по ключам и тексту.
| Состояние | Значение |
|---|---|
| Отсутствует | Для этой строки перевод отсутствует |
| Исходный текст изменился | Исходный текст изменился после того, как строка была переведена |
| Некорректно | Текст не поддаётся разбору, его плейсхолдеры отличаются от исходных или формы множественного числа не соответствуют языку |
| То же, что и исходный текст | Строка полностью совпадает с исходным текстом |
| Машинный | Её создала модель, и её ещё не проверил человек |
| Проверено | Её написал или исправил человек |
| Производное | Её получили по правилам из другого языка |
Выберите строку, чтобы увидеть её на всех языках. Плейсхолдеры и разметка отображаются как заблокированные элементы, так как они должны сохраняться без изменений при переводе. Для выбранного языка в деталях также указано, кто создал значение, в чём заключается ошибка и, для сообщений с множественным числом, какие формы множественного числа требуются для данного языка.
- ОбзорТекущее состояние каждого языка
- СтрокиВсе строки на всех языках
- ПредложенияОжидают решения
- ОбменФайлы для других инструментов
- УчастникиКто может предлагать варианты текста
- АвтоматизацииРабота ночью и при слиянии веток
- НастройкиЯзыки, доступ и расходы
Все строки на всех языках. Фильтры позволяют сразу видеть нужные элементы работы.
| Исходный текст | 日本語 |
|---|---|
| Total: {amount} | 合計: {price}Некорректно |
| Your cart is empty | Перевода пока нетОтсутствует |
| Welcome back, {name} | Перевода пока нетОтсутствует |
| Prices include <b>VAT</b> | 価格には<b>消費税</b>が含まれますНекорректно |
| Weekly deals | Перевода пока нетОтсутствует |
- 日本語 · японскийНекорректно合計: {price}
Создано моделью · Плейсхолдеры отличаются от исходного текста
- DeutschПровереноGesamt: {amount}
- FrançaisМашинный переводTotal : {amount}
- العربيةМашинный переводالإجمالي: {amount}
- 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 задачи всегда используют шлюз перевода, поэтому расходы и лимиты остаются в одном месте.