У CLI нет отдельной команды ci. Для локализации в CI есть два варианта: доверить это GitHub App Lingo.dev на стороне сервера (рекомендуется для GitHub) или запустить lingo push в своём пайплайне и зафиксировать результаты.
Вариант 1: GitHub App (рекомендуется)#
Установите GitHub App Lingo.dev на свой репозиторий. Укажите на зафиксированный .lingo/config.json (с engineId) — и он будет автоматически реагировать на пуши и pull request'ы: находить изменённые строки, переводить их через ваш движок и фиксировать результаты в ветке или открывать pull request. Никакого раннера, API-ключей и файлов блокировки.
Вариант 2: запустить lingo push в своём раннере#
CLI работает напрямую в любой среде CI с Node.js 22+. Авторизуйтесь с помощью API-ключа (сохранённого как секрет), выполните push и зафиксируйте результаты.
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
jobs:
localize:
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 push
env:
LINGO_API_KEY: ${{ secrets.LINGO_API_KEY }}
- name: Commit translations
run: |
git config user.name "lingo-bot"
git config user.email "support@lingo.dev"
git add .
git diff --cached --quiet || git commit -m "chore: update translations"
git pushlingo push переводит только то, что изменилось с последнего запуска (отслеживается в .lingo/lock.json), дожидается завершения и записывает результаты. Чтобы открыть pull request вместо коммита в ветку, запушьте изменения в отдельную ветку и откройте PR инструментами своей платформы (например, gh pr create).
Проверка перед деплоем#
Добавьте шаг lingo check перед сборкой — пайплайн завершится с ошибкой, если у какой-то исходной строки нет перевода:
lingo checkСм. также#
- GitHub App — управляемая непрерывная локализация без раннера и секретов.
- lingo push — паттерны по области,
--backfill-missing, поведение при повторных попытках. - Конфигурация —
.lingo/config.jsonи файл блокировки.
