# GitHub Actions

Max Prilutskiy·Updated2 months 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.

## Prerequisites

Complete the [CI/CD Setup](/content/en/docs/integrations/setup/index.html) 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

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

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

## Next Steps

[Advanced Patterns\
\
Translation checks, merge conflicts, workflow selection](/content/en/docs/integrations/advanced/index.html) [GitLab CI/CD\
\
Set up GitLab CI/CD integration](/content/en/docs/integrations/gitlab/index.html) [Bitbucket Pipelines\
\
Set up Bitbucket Pipelines integration](/content/en/docs/integrations/bitbucket/index.html) [Connect Your Engine\
\
Route CI/CD translations through your engine](/content/en/docs/platform/connect-your-engine/index.html)
