Перейти к содержимому

Дополнительная аналитика, запись сессий и реклама отключены, пока вы не дадите согласие. Вы можете отказаться от них и пользоваться Transglot. Изменить выбор можно в любое время в Настройки файлов cookie. Политика использования файлов cookie

для команд, которые мержат каждый день

Непрерывная локализация: каждый язык при каждом слиянии.

Непрерывная локализация переводит новые и изменённые строки по мере изменения кода, а не в отдельной фазе перед каждым релизом. Каждый язык всегда готов к выпуску вместе с кодом, для которого он нужен.

Это симуляция двух способов работы, а не измерение. Нажмите «Слить изменение» и прочитайте колонку справа: именно так увидят текст пользователи этого языка.
acme / web
mainAdd a gift cardcheckout.gift_card
frAjouter une carte cadeauпереведено
deGeschenkkarte hinzufügenпереведено
jaギフトカードを追加переведено
arأضف بطاقة هديةпереведено
pt-BRAdicionar vale-presenteпереведено
Языки, готовые к релизу прямо сейчас5 из 5
Строки позади mainнет
краткий ответ

Что такое непрерывная локализация?

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

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

Это часть непрерывной доставки (continuous delivery). Команда, которая сливает код каждый день, но передаёт строки на перевод раз в несколько недель, большую часть месяца отстаёт по языкам от кода. Непрерывная локализация сокращает этот разрыв до длительности одного прогона.

Это не значит, что машинный перевод публикуется без проверки. Вы решаете, какие строки требуют участия человека, и в релиз попадает только то, что прошло ревью.

непрерывная против традиционной локализации

Разница в том, когда происходит перевод, а не в том, кто его делает.

Переводчики, рецензенты и глоссарии присутствуют в обоих столбцах. Разница заключается в моменте начала работы и размере каждой части.
Рядом
Когда происходит перевод
На этапе перед каждым релизом
Что запускает процесс
Кто-то экспортирует файл
Размер каждой части
Недели накопленных строк за раз
Чего ожидает релиз
Возврата файла
Изменение копии на позднем этапе
Ещё один цикл обмена данными
С чем работает переводчик
Таблица со строками
Языки на момент запуска
Поэтапно, волна за волной
одна строка от начала до конца

Как работает непрерывная локализация

Проследите путь одной новой строки по циклу. На каждом этапе показано то, что вы действительно увидите.

ваш терминал или журнал CI
+ "checkout.gift_card": "Add a {brand} gift card"
$ git push origin main
$ transglot push --wait
push locales/en.json (en, json_nested)
Batch: #4182
$ transglot pull
written locales/fr.json
written locales/ja.json
checkout.gift_card
источникAdd a {brand} gift card
frAjouter une carte cadeau {brand}Черновик Glossa
de{brand}-Geschenkkarte hinzufügenиз памяти, 0 слов
ja{brand} ギフトカードを追加Черновик Glossa
arأضف بطاقة هدية {brand}Черновик Glossa
четыре этапа, один запуск
Подстановочные переменные1 исправлено
Формы множественного числапройдено
Термины глоссарияпройдено
Длинапройдено
ja · заполнитель потерян, исправлен один раз, проверен сноваギフトカードを追加{brand} ギフトカードを追加
cart.save
источник изменёнSave Save draft
frEnregistrerпроверено человеком: сохранено, вам отправлен отчётПредложено: Enregistrer le brouillon
deEntwurf speichernмашинная строка: переведена снова
pull requestобновлено на месте
Обновить переводыtransglot/sync → mainоткрыт, один на репозиторий
locales/fr.json+3 −1
locales/de.json+3 −1
locales/ja.json+3 −1
или в pull request на GitHub оставьте комментарий/translate

Изменение попадает в Transglot через CLI, действие GitHub или приложение на вашем Git-хосте. Исходные файлы разбираются в одном из 20 нативных форматов, и каждая строка сравнивается с тем, что уже есть в проекте. Далее идут только новые и изменённые строки.

Точное совпадение из памяти переводов заполняет строку и не требует оплаты слов. Всё остальное отправляется в Glossa с вашим глоссарием, руководством по стилю и контекстом этого ключа.

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

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

Приложения Git фиксируют файлы локалей в одной ветке синхронизации и поддерживают один pull request в актуальном состоянии. В GitHub оставьте комментарий /translate в pull request, и файлы попадут в отдельную ветку этого запроса. Или опубликуйте их в CDN, тогда работающий продукт получит изменения без нового релиза.

где команды сталкиваются с проблемами

Шесть способов, как непрерывная локализация даёт сбой, и что предотвращает каждый из них

Запуск перезаписывает работу человека

Каждый модуль сначала проверяет состояние строки: запуск, совпадение в памяти и push. Строка, отредактированная или проверенная человеком, сохраняется, а система сообщает о ней.

fr, проверено, источник только что изменён

сохранено, учтено, отправлен отчёт

Повреждённая строка попадает в продакшн

Каждый добавленный токен должен быть возвращён. В проекте с ICU сообщение, которое вызвало бы ошибку при рендеринге, не попадает в пул-реквест, коннектор и бандл CDN, а запуск присваивает ему имя.

{count, plural, one {# article}

исключено из файла, названо в запуске

Репозиторий заполняется пул-реквестами от бота

Одна ветка синхронизации и один пул-реквест на репозиторий. Два быстрых пуша объединяются в ней вместо создания второго пул-реквеста.

#812 #815 #819 #823 обновление локализации

#812 transglot/sync, обновлено на месте

Изменение исходного текста оставляет старые переводы

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

«Сохранить» стало «Сохранить черновик». fr, de, ja всё ещё говорят «Сохранить»

fr, de, ja повторно обработаны по этому одному ключу

Каждый запуск снова тарифицирует весь проект

Объём запуска определяется изменениями. Неизменённые строки не отправляются, точное совпадение в памяти не стоит ни слова, а строки, закреплённые за человеком, отклоняются до любых затрат.

файл содержит 48 000 слов

этот запуск: 60 слов

Незавершённый пул-реквест стирает файл локали

Если сервер сообщает об отсутствии записей для локали, пул-реквест отказывается перезаписывать файл с содержимым и завершается с кодом 1, останавливая пайплайн.

пул: 0 записей для ja, файл содержит 1 204

отказ от перезаписи locales/ja.json пустым бандлом

  • run 4182 fr: в черновике отсутствовал плейсхолдер, исправлено при повторной попытке
  • run 4182 de: сохранено 3 строки, они закреплены за человеком
  • run 4182 ja: 41 строка из памяти, 0 слов
  • run 4183 ar: после повторной попытки отсутствует форма множественного числа, строка отклонена
  • pull записано locales/pt-BR.json
  • sync transglot/sync обновлён, пул-реквест #812
измерено относительно двух сравниваемых вариантов

Все три варианта подключаются к вашему репозиторию. Разница заключается в том, что происходит при слиянии.

Данные взяты со страниц каждой компании от 5 ноября 2026 года. Строка с ценами основана на наших страницах сравнения, ссылки на которые приведены ниже; там указаны план и расчёты. Цены и планы меняются, поэтому проверяйте их перед принятием решения.

Transglot
Новая строка сливается
Переводится по умолчанию
Отправка запускает процесс. Настройка проекта может его отключить.
Перевод не проходит проверку
Исправляется один раз, затем отклоняется
Для каждого запуска проверяются все строки на наличие повреждённых подстановочных знаков, форм множественного числа или запрещённых терминов. Превышение длины фиксируется. В проектах с ICU повреждённые строки не попадают в pull-запросы, коннекторы и CDN.
Строка уже отредактирована человеком
Запуск отказывается её записывать
То же самое происходит при совпадении с памятью переводов и отправке. Если исходный текст изменится позже, запуск сообщит об этой строке.
Pull-запросы в активном репозитории
Одна ветка, один pull-запрос
Обновляется на месте при каждой отправке.
Что учитывает тарифный план
Количество переведённых слов, один раз для каждого языка
Точные совпадения из памяти переводов бесплатны. Хранение строк бесплатно.
Что оплачивает ИИ
Слова по тарифу
Не тарифицируется отдельно.
Та же задача: 5,000 строк в 10 языках
$39 в месяц
Team, перевод включён
GitHub, GitLab, Bitbucket, Azure Repos, CLI и сервер MCP
Все
Git-приложения доступны начиная с плана Team и охватывают облачные версии.
используйте то, что уже работает у вас

Запускайте процесс оттуда, где хранятся ваши строки. Все пути ведут к одному конвейеру.

Одни и те же память, глоссарий, проверки и рецензирование, независимо от того, каким путём пришла строка.
.github/workflows/translations.yml
on:
push:
branches: [main]
jobs:
translations:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v7
- uses: transglot/transglot-action@v1
with:
token: ${{ secrets.TRANSGLOT_TOKEN }}
с чего начать

Как настроить непрерывную локализацию

  1. Извлечь строки из кода

    Каждая пользовательская строка должна иметь стабильный ключ в файле локали. Transglot поддерживает 20 форматов, поэтому используйте тот, который у вас уже есть.

  2. Подключение репозитория

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

  3. Запускать при каждом слиянии

    Добавьте действие GitHub, вызывайте CLI из любой другой CI-системы или установите приложение для GitHub, GitLab, Bitbucket или Azure Repos.

  4. Определите, что требует участия человека

    Установите min_state в reviewed в правиле pull, и этот файл будет содержать только строки, проверенные человеком. Если не установить, черновики будут отправляться.

посчитайте по своим цифрам

Стоимость работы при каждом слиянии: изменившиеся слова.

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

25
40
6
20,000
Слов в месяц26,000по этим данным · 25 слияний в неделю, по 40 слов каждое, 6 языков

Входит в тариф Starter: $19/mo, 300,000 слов в месяц.

Это около 9% от лимита.

Первый запуск, одноразово120,000Ваши существующие строки на всех языках. Импортированные переводы не переводятся повторно.

Здесь учитывается только перевод. Проверки качества, черновики брендового голоса и исправления также считаются как слова, а точные совпадения из памяти ничего не стоят. CLI и действие GitHub начинаются с тарифа Starter, а приложения для GitHub, GitLab, Bitbucket и Azure Repos — с тарифа Team.

чего она не сделает за вас

Три задачи, которые непрерывная локализация не решает

Строки всё ещё застряли в коде

Конвейер может перевести только то, что способен прочитать. Жёстко закодированные строки и предложения, собранные из частей, нужно сначала исправить — именно они обычно становятся причиной задержек при внедрении.

Отсутствие ответственного за терминологию

Автоматизация перемещает строки, но не решает, как ваш продукт называет те или иные элементы. Кто-то должен отвечать за глоссарий, иначе язык, который никто не читает, начнёт искажаться незамеченным.

Тексты, требующие экспертной оценки

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

Часто задаваемые вопросы о непрерывной локализации

Вопросы, которые команды задают перед включением функции.

Что такое непрерывная локализация?
Подход к работе, при котором новые и изменённые строки автоматически отправляются на перевод по мере их изменения, а переведённый текст возвращается в продукт без запланированной передачи. Это заменяет этап перевода перед релизом на небольшие циклы после каждого изменения.
При традиционной локализации строки группируются в файл, который отправляется незадолго до релиза, после чего приходится ждать. Непрерывная локализация обрабатывает каждое изменение по мере его появления, поэтому объёмы работ малы, языки запускаются одновременно, а поздние правки текста требуют повторного запуска только для одного ключа, а не полного цикла.
Нет. CI/CD отвечает за сборку, тестирование и выпуск кода. Непрерывная локализация обеспечивает параллельное движение переводов. Они встречаются в конвейере: push-запрос, запускающий ваши тесты, может также отправлять строки на перевод и возвращать файлы обратно.
Нет. Приложения для GitHub, GitLab, Bitbucket и Azure Repos реагируют на push-запросы без дополнительных настроек вашего конвейера, а коннекторы контента реагируют на изменения в CMS или магазине. CLI и действие GitHub доступны, если вы хотите интегрировать процесс в свой собственный рабочий поток.
Нет. Черновики могут публиковаться, либо правило pull может включать только то, что проверил человек, файл за файлом. Рецензенты работают в редакторе, где рядом с каждой строкой отображаются термины глоссария, совпадения из памяти переводов и скриншоты.
Нет. Запуск, совпадение из памяти переводов и push-запрос сначала проверяют строку, и строка, отредактированная или проверенная человеком, сохраняется. Если её источник позже изменится, текст останется, запуск учтёт эту строку и сообщит о ней, а начиная с тарифа Team будет предложено обновление для принятия человеком.
Для небольших команд это часто наиболее важно, поскольку ни у кого нет обязанности заниматься передачей задач. Если вы выпускаете продукт на одном языке без планов добавления второго, можно подождать.
Размер запуска оценивается до его начала. Бесплатный тариф имеет жёсткий лимит. Платный тариф останавливается при исчерпании квоты, если вы не включите оплату сверх лимита, которая также ограничивается установленным вами потолком расходов. В CI CLI завершает работу с кодом 3, если запуск превысит лимит, позволяя конвейеру соответствующим образом отреагировать.
Да, на GitLab.com, Bitbucket Cloud и Azure DevOps Services. Приложения не поддерживают самостоятельно размещённые версии GitLab или Bitbucket Data Center, но CLI работает в любом CI, где есть Node 22 и доступен API.
Да. Коннекторы контента считывают данные из CMS, магазина или центра поддержки, а двунаправленные коннекторы записывают обратно проверенный перевод. Некоторые работают только на импорт, и на странице каждого коннектора указано, какие именно.
Да. Опубликуйте локаль в CDN, и ваш продукт будет считывать её во время выполнения через SDK среды выполнения. Последний URL кэшируется на шестьдесят секунд, каждая опубликованная версия сохраняет свой собственный URL, а последние двадцать версий сохраняются.
Импортер переносит проекты, ключи и существующие переводы из Lokalise, Phrase, Crowdin, Transifex, Weblate and POEditor. Импортированные переводы считаются выполненными человеком, поэтому автоматические процессы их не перезаписывают. Функция доступна бесплатно на любом тарифе и выполняется один раз.