GitHub Actions
AI-перевод с помощью GitHub Actions и Lingo.dev CI/CD
Что такое GitHub Actions?
GitHub Actions — это встроенная в GitHub платформа для CI/CD и автоматизации. Она позволяет пользователям определять рабочие процессы в YAML-файлах для сборки, тестирования, развертывания кода или автоматизации задач, запускаемых событиями в репозитории.
Что такое Lingo.dev CI/CD?
Lingo.dev CI/CD — это инструмент на базе ИИ для локализации приложений и контента в CI/CD, который гарантирует, что переводы всегда будут актуальными. Он построен на основе Lingo.dev CLI и доступен через команду ci:
npx lingo.dev@latest ci --help
О данном руководстве
Это руководство объясняет, как настроить Lingo.dev CI/CD с помощью GitHub Actions и Lingo.dev Engine.
Шаг 1. Настройка Lingo.dev CLI
Для начала выполните шаги из Quickstart для Lingo.dev CLI.
В результате у вас должны быть:
- API-ключ для Lingo.dev
- файл
i18n.json, который настраивает поведение конвейера перевода - возможность переводить контент с помощью команды
npx lingo.dev@latest run
Шаг 2. Настройка секретного ключа репозитория
- Перейдите в Настройки > Секреты и переменные > Действия.
- Нажмите Новый секрет репозитория.
- В поле Имя введите
LINGODOTDEV_API_KEY. - В поле Секрет введите API-ключ Lingo.dev.
- Нажмите Добавить секрет.
Шаг 3. Выбор рабочего процесса
Вы можете настроить Lingo.dev CI/CD разными способами для поддержки различных рабочих процессов. Вот некоторые из рекомендуемых нами рабочих процессов (с примерами):
- Когда контент объединяется в
main, переводы коммитятся вmain - Когда контент объединяется в
main, создается pull request изmain - Когда контент объединяется в feature-ветку, переводы коммитятся в эту ветку
- Когда контент объединяется в feature-ветку, создается pull request из этой ветки
Но нет "лучшего" рабочего процесса. У каждого есть свои плюсы и минусы. Если вы не уверены, с чего начать, мы рекомендуем выбрать первый вариант. Это самый простой и незаметный рабочий процесс.
Шаг 4. Настройте рабочий процесс
-
В репозитории создайте директорию
.github/workflows:mkdir -p .github/workflowsУбедитесь, что включили точку (
.) в начале.github. -
В директории
.github/workflowsсоздайте YAML-файл:touch .github/workflows/translate.ymlИмя файла не имеет значения.
-
Скопируйте один из примеров рабочих процессов в файл.
-
Если рабочий процесс создает pull-запросы:
- Перейдите в Настройки > Действия > Общие.
- Включите Разрешить GitHub Actions создавать и утверждать pull-запросы.
- Нажмите Сохранить.
-
Закоммитьте и отправьте изменения в ветку
main:git add .github/workflows/translate.yml git commit -m "feat: GitHub action for Lingo.dev" git push
(Опционально) Шаг 5. Настройте рабочий процесс
Lingo.dev CI/CD имеет значения по умолчанию, которые в большинстве случаев не требуют настройки. Однако вы можете переопределить их, используя флаги CLI команды ci.
npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY" --commit-message "Мое пользовательское сообщение коммита!"
Чтобы просмотреть все доступные параметры, смотрите CLI команды.
Примеры рабочих процессов
Коммит в main
Когда контент объединяется в main, коммит переводов выполняется в main.
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Lingo.dev
run: npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY"
env:
LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}
Pull-запрос из main
Когда контент объединяется в main, создается pull-запрос из main.
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
pull-requests: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Lingo.dev
run: npx lingo.dev@latest ci --pull-request --api-key "$LINGODOTDEV_API_KEY"
env:
LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Коммит в feature-ветку
Когда контент сливается в feature-ветку, коммиты с переводами добавляются в эту ветку.
name: Translate
on:
push:
branches-ignore: [main]
permissions:
contents: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Lingo.dev (commit to non-main)
run: npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY"
env:
LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}
Pull request из feature-ветки
Когда контент сливается в feature-ветку, создается pull request из этой ветки.
name: Translate
on:
push:
branches-ignore: [main]
permissions:
contents: write
pull-requests: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Lingo.dev
run: npx lingo.dev@latest ci --pull-request --api-key "$LINGODOTDEV_API_KEY"
env:
LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}