The official Lingo.dev GitHub Action runs the localization pipeline on every push, committing translations directly or opening a pull request depending on your workflow.
Prefer a managed setup?
The GitHub App is the easiest way to run continuous localization on GitHub - install it once and it reacts to pushes and pull requests with no runner, no API key secret, and no lockfile. Use the GitHub Action (below) when you want translation to run inside your own pipeline alongside other CI steps.
Prerequisites
Complete the CI/CD Setup first. You need a working i18n.json and LINGODOTDEV_API_KEY stored as a repository secret.
Minimal setup#
Create .github/workflows/translate.yml:
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}This commits translations directly to main on every push.
Workflow examples#
Commit to main#
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}Pull request from 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: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
pull-request: true
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}Enable Settings > Actions > General > Allow GitHub Actions to create and approve pull requests for PR-based workflows.
Commit to feature branch#
name: Translate
on:
push:
branches-ignore: [main]
permissions:
contents: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}Pull request from feature branch#
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: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
pull-request: true
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}Available inputs#
| Input | Default | Description |
|---|---|---|
api-key | Required | Lingo.dev API key |
pull-request | false | Create a pull request instead of committing directly |
commit-message | feat: update translations via @LingoDotDev | Custom commit message |
pull-request-title | feat: update translations via @LingoDotDev | Custom PR title |
commit-author-name | Lingo.dev | Git commit author name |
commit-author-email | support@lingo.dev | Git commit author email |
working-directory | . | Working directory for monorepos |
process-own-commits | false | Process commits made by this action |
parallel | false | Run in parallel mode |
version | latest | Lingo.dev CLI version |
