Перейти до вмісту

Додаткова аналітика, запис сесій і реклама вимкнені, доки ви не надасте згоду. Ви можете відхилити їх і користуватися 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-запитоновлено на місці
Оновити переклади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 Action або додаток на вашому Git-хості. Вихідні файли аналізуються в одному з 20 нативних форматів, і кожен рядок порівнюється з тим, що вже є в проєкті. Далі йдуть лише нові та змінені рядки.

Точний збіг із пам’яті перекладів заповнює рядок і не витрачає слова. Усе інше надсилається до Glossa разом із вашим глосарієм, посібником зі стилю та контекстом цього ключа.

Заповнювачі, форми множини, терміни глосарію та довжина перевіряються в кожному рядку кожного запуску. Пошкоджений заповнювач, відсутня форма множини або заборонений термін глосарію виправляються один раз і перевіряються знову; якщо вони не проходять перевірку вдруге, їх відхиляють, а не публікують. Рядок, який лише перевищує обмеження довжини, записується, а на плані Team функція автоматичного затвердження або запуск контролю якості позначає його для перегляду.

Запуск ніколи не перезаписує рядок, який людина відредагувала або перевірила. Якщо його джерело змінюється пізніше, текст залишається, запуск рахує цей рядок і повідомляє вас, а на плані Team запропоноване оновлення чекає поруч, щоб хтось міг його прийняти.

Застосунки Git фіксують файли локалізації в одній гілці синхронізації та підтримують один pull request актуальним. На GitHub додайте коментар /translate до pull request, і файли потраплять у власну гілку цього запиту. Або опублікуйте в CDN, і працюючий продукт прочитає зміни без жодного релізу.

де команди зазнають невдач

Шість способів, у яких безперервна локалізація дає збій, і що цьому запобігає

Запуск перезаписує роботу людини

Кожен учасник спочатку перевіряє стан рядка: запуск, збіг із пам’яттю та відправлення. Рядок, який людина відредагувала або перевірила, залишається незмінним, а запуск повідомляє про це.

fr, перевірено, джерело щойно змінилося

збережено, враховано, повідомлено

Пошкоджений рядок потрапляє у продакшн

Кожен токен, який увійшов, має вийти назад. У проєкті з ICU повідомлення, яке викликало б помилку під час рендерингу, не включається до пул-реквесту, конектора та CDN-пакета, а запуск його ідентифікує.

{count, plural, one {# article}

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

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

Одна гілка синхронізації та один пул-реквест на репозиторій. Два швидкі push-запити сходяться в ній, замість того щоб створювати ще одну.

#812 #815 #819 #823 оновлення l10n

#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 Action, викликайте 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 Action доступні на плані Starter, а додатки для GitHub, GitLab, Bitbucket і Azure Repos — на плані Team.

чого це не зробить за вас

Три речі, яких безперервна локалізація не вирішує

Рядки все ще застрягли в коді

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

Ніхто не відповідає за текст

Автоматизація переміщує рядки. Вона не вирішує, як ваш продукт називає речі. Хтось має відповідати за глосарій, інакше мова, яку ніхто не читає, буде дрейфувати без чиєїсь уваги.

Копірайтинг, що потребує оцінки

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

FAQ про безперервну локалізацію

Запитання, які команди ставлять перед тим, як увімкнути її.

Що таке безперервна локалізація?
Це спосіб роботи, за якого нові та змінені рядки автоматично надсилаються на переклад у міру змін, а перекладений текст повертається в продукт без запланованої передачі. Він замінює етап перекладу перед релізом на невеликий процес після кожної зміни.
Традиційна локалізація групує рядки у файл, надсилає його незадовго до релізу та чекає. Безперервна локалізація обробляє кожну зміну в міру її появи, тому фрагменти є невеликими, мови запускаються одночасно, а пізня зміна тексту коштує повторного запуску для одного ключа, а не нового циклу взаємодії.
Ні. CI/CD будує, тестує та випускає код. Безперервна локалізація забезпечує рух перекладів паралельно з цим. Вони зустрічаються в пайплайні: push-подія, яка запускає ваші тести, може також надсилати рядки на переклад і повертати файли назад.
Ні. Застосунки для GitHub, GitLab, Bitbucket та Azure Repos реагують на push без додаткових налаштувань у вашому пайплайні, а конектори контенту реагують на зміни в CMS або магазині. CLI та GitHub Action доступні, якщо ви хочете інтегрувати це у власний робочий процес.
Ні. Чернетки можуть публікуватися, або правило 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. Імпортовані переклади вважаються ручною роботою, тому жодне оновлення їх не перезапише. Це безкоштовно на будь-якому плані та виконується один раз.