Lingo.dev поддерживает два способа запустить непрерывную локализацию на GitHub: управляемый GitHub App и @lingo.dev/cli внутри задания GitHub Actions.
Какой способ выбрать?
Начните с GitHub App — он работает на стороне сервера, автоматически реагирует на пуши и pull request'ы и не требует ни раннера, ни секрета с API-ключом, ни управления lockfile. Переходите к GitHub Actions, если хотите запускать локализацию в собственном пайплайне вместе с другими шагами CI.
GitHub App (рекомендуется)#
GitHub App — самый простой способ запустить непрерывную локализацию на GitHub. Установите один раз, укажите движок — и приложение будет реагировать на каждый пуш и pull request.
- Установите приложение со страницы GitHub App и предоставьте ему доступ к репозиторию.
- Добавьте
.lingo/config.jsonв корень репозитория: опишите бакеты и локали, укажитеengineIdдвижка, который должно использовать приложение. Формат файла — в разделе Конфигурация. - Сделайте пуш. Приложение локализует изменённый контент на стороне сервера и коммитит результаты (или открывает pull request), автоматически поддерживая
.lingo/lock.jsonв актуальном состоянии.
Так как приложение работает на стороне сервера, не нужно поддерживать раннер, хранить секрет LINGO_API_KEY или запускать команды для управления lockfile.
GitHub Actions#
Чтобы запустить локализацию в собственном пайплайне, установите CLI в задании, выполните lingo push, а затем закоммитьте результаты или откройте pull request с помощью ваших инструментов.
Сохраните API-ключ как секрет репозитория с именем LINGO_API_KEY (Settings > Secrets and variables > Actions). CLI считывает его из окружения.
Коммит в текущую ветку#
Создайте .github/workflows/localize.yml:
name: Localize
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
- name: Install Lingo.dev CLI
run: npm install -g @lingo.dev/cli
- name: Localize
run: lingo push
env:
LINGO_API_KEY: ${{ secrets.LINGO_API_KEY }}
- name: Commit translations
run: |
git config user.name "Lingo.dev"
git config user.email "support@lingo.dev"
git add .
git diff --staged --quiet || git commit -m "feat: update translations"
git pushЛокализует изменённый контент и коммитит результаты прямо в ветку при каждом пуше.
Открытие pull request#
Если хотите, чтобы переводы проходили проверку перед слиянием, а не коммитились напрямую, — отправьте результаты в ветку и откройте pull request. В этом примере используется GitHub CLI, предустановленный на раннерах GitHub:
name: Localize
on:
push:
branches: [main]
permissions:
contents: write
pull-requests: write
jobs:
localize:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install Lingo.dev CLI
run: npm install -g @lingo.dev/cli
- name: Localize
run: lingo push
env:
LINGO_API_KEY: ${{ secrets.LINGO_API_KEY }}
- name: Open pull request
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config user.name "Lingo.dev"
git config user.email "support@lingo.dev"
branch="lingo/translations-${{ github.run_id }}"
git checkout -b "$branch"
git add .
git diff --staged --quiet && exit 0
git commit -m "feat: update translations"
git push origin "$branch"
gh pr create --fill --base "${{ github.ref_name }}" --head "$branch"Для рабочих процессов на основе PR включите Settings > Actions > General > Allow GitHub Actions to create and approve pull requests.
Задание работает и на feature-ветках — измените фильтр on.push.branches (например, branches-ignore: [main]), чтобы контролировать, где запускается локализация.
