|
Documentation
Book a DemoPlatform
PlatformMCPCLIAPIWorkflows
GuidesChangelog

Continuous Localization

  • How it works
  • Setup

Platforms

  • GitHub App
  • GitHub Actions
  • GitLab CI/CD
  • Bitbucket Pipelines
  • Advanced patterns

GitHub Actions

Max PrilutskiyMax Prilutskiy·Updated 5 days ago·2 min read

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:

yaml
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#

yaml
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#

yaml
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#

yaml
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#

yaml
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#

InputDefaultDescription
api-keyRequiredLingo.dev API key
pull-requestfalseCreate a pull request instead of committing directly
commit-messagefeat: update translations via @LingoDotDevCustom commit message
pull-request-titlefeat: update translations via @LingoDotDevCustom PR title
commit-author-nameLingo.devGit commit author name
commit-author-emailsupport@lingo.devGit commit author email
working-directory.Working directory for monorepos
process-own-commitsfalseProcess commits made by this action
parallelfalseRun in parallel mode
versionlatestLingo.dev CLI version

Next Steps#

GitHub App
Managed alternative - no runner, secret, or lockfile
Advanced Patterns
Translation checks, merge conflicts, workflow selection
GitLab CI/CD
Set up GitLab CI/CD integration
Bitbucket Pipelines
Set up Bitbucket Pipelines integration

Was this page helpful?