|
Документация
Заказать демоПлатформа
ПлатформаMCPCLIAPIРабочие процессы
РуководстваЖурнал изменений

Непрерывная локализация

  • Как это работает
  • Настройка

Платформы

  • GitHub App
  • GitHub
  • GitLab CI/CD
  • Bitbucket Pipelines
  • Продвинутые сценарии

Продвинутые сценарии

Продвинутые сценарии локализации в CI/CD: выбор рабочего процесса, проверка полноты переводов и разрешение merge-конфликтов.

Выбор рабочего процесса#

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

Рабочий процессЛучше всего подходит дляКомпромисс
Коммит в mainНебольших команд и быстрых обновлений без лишних шаговНет отдельного этапа проверки переводов
PR из mainКоманд, которым важно проверять переводыТребуется ручное одобрение PR
Коммит в feature-веткуДолгоживущих feature-ветокКоммиты с переводами остаются в истории ветки
PR из feature-веткиМаксимального контроля на уровне каждой фичиДля каждой фичи приходится вести несколько PR

На GitHub Lingo.dev GitHub App берёт на себя большинство этих паттернов на стороне сервера: реагирует на пуши и PR, коммитит переводы и не требует ни раннера, ни секретов. CLI-паттерны ниже — для тех, кто запускает локализацию внутри собственного пайплайна.

Если сомневаетесь, начните с варианта "Коммит в main". Это самый простой рабочий процесс, и он полностью исключает merge-конфликты, потому что ветки не расходятся.

Проверка полноты переводов#

Команда lingo check проверяет, что весь контент переведён, но не создаёт новые переводы. Если какой-то контент отсутствует, она завершается с ненулевым кодом выхода:

bash
lingo check

Используйте это как условие деплоя, чтобы непереведённый контент не попал в продакшн. Установите CLI через npm install -g @lingo.dev/cli (Node 22+) и аутентифицируйте раннер с помощью переменной окружения LINGO_API_KEY.

yaml
name: Check translations
on: [push, pull_request]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - run: npm install -g @lingo.dev/cli
      - run: lingo check
        env:
          LINGO_API_KEY: ${{ secrets.LINGO_API_KEY }}

Разрешение merge-конфликтов#

Merge-конфликты возникают, когда файл .lingo/lock.json расходится между ветками — обычно если переводы независимо обновлялись в разных ветках.

Как предотвратить#

Если коммитить переводы напрямую в main (а не вести их через feature-ветки), конфликтов lockfile можно избежать полностью.

Разрешение через merge#

1

Начните merge

bash
git merge <branch-name>
2

Удалите конфликтующий lockfile

bash
rm .lingo/lock.json
3

Завершите merge

bash
git add .
git merge --continue
4

Сгенерируйте lockfile заново

bash
lingo push

При запуске lingo push пересобирает .lingo/lock.json из текущего состояния исходных файлов — это часть обычной синхронизации.

Разрешение через rebase#

То же работает и с rebase: удалите .lingo/lock.json на каждом шаге конфликта, продолжите rebase, а в конце запустите lingo push, чтобы пересоздать lockfile:

bash
git rebase <branch-name>
# On each conflict: rm .lingo/lock.json && git add . && git rebase --continue
lingo push

Что дальше#

GitHub App
Локализация на GitHub без раннера — всё автоматически
lingo push
Синхронизация исходного контента и переводов
Как это работает
Как устроен CI/CD-конвейер локализации
Настройка
Настройте CI/CD для своего проекта

Эта страница была полезной?

Max PrilutskiyMax Prilutskiy·Обновлено 27 дней назад·2 минуты чтения