# Continuous Localization

Max Prilutskiy·Updated2 months ago·2 min read

Lingo.dev integrates directly into your CI/CD pipeline to keep translations in sync with your code. On every push, it detects what content changed, translates it using your connected [localization engine](/content/en/docs/platform/engines/index.html) - with glossary rules, brand voice, and per-locale model configuration applied consistently - and commits the results or opens a pull request. Incomplete translations never reach production.

## How it works

The CI/CD integration runs as a step in your existing pipeline. It needs two things: your [`i18n.json`](/content/en/docs/cli/configuration/index.html) configuration and an API key.

On each run, the integration:

1. **Discovers source files** - reads your [bucket configuration](/content/en/docs/cli/configuration/index.html) to find translatable content
2. **Detects changes** - compares against the [`i18n.lock`](/content/en/docs/cli/lockfile/index.html) lockfile to identify new or modified strings, so only the delta gets translated
3. **Translates** - sends changed content through your configured [localization engine](/content/en/docs/platform/engines/index.html) with all rules applied - glossary, brand voice, per-locale model settings
4. **Writes results** - updates target locale files in place
5. **Commits or opens a PR** - depending on the workflow you choose

Because only changed strings are translated, runs are fast and cost-efficient - even across dozens of locales.

## Workflow options

Four workflow patterns cover most team setups:

| Workflow                     | Trigger             | Output                                     |
|------------------------------|---------------------|--------------------------------------------|
| Commit to main               | Push to `main`      | Translations committed directly to `main`  |
| PR from main                 | Push to `main`      | Pull request with translations              |
| Commit to feature branch      | Push to feature branch | Translations committed to the branch       |
| PR from feature branch        | Push to feature branch | Pull request from the branch               |

The first option - commit to main - is the simplest. Translations appear automatically with zero developer intervention. The PR-based options add a review step before translations land.

For details on choosing between these, see [Advanced Patterns](/content/en/docs/integrations/advanced/index.html).

## Supported platforms

Lingo.dev provides first-party integrations for major CI/CD platforms:

| Platform                   | Integration                        |
|----------------------------|------------------------------------|
| [GitHub Actions](/content/en/docs/integrations/github/index.html) | Official GitHub Action             |
| [GitLab CI/CD](/content/en/docs/integrations/gitlab/index.html)  | Official Docker image              |
| [Bitbucket Pipelines](/content/en/docs/integrations/bitbucket/index.html) | Official Bitbucket Pipe             |

Each integration handles authentication, git operations, and PR creation natively for its platform. Any CI/CD environment that supports Node.js can also run the integration directly via the [Lingo.dev CLI](/content/en/docs/cli/index.html).

## Next Steps

[Setup  
 Configure CI/CD for your project](/content/en/docs/integrations/setup/index.html)  
[GitHub Actions  
 Set up the official GitHub Action](/content/en/docs/integrations/github/index.html)  
[Advanced Patterns  
 Workflow selection, translation checks, merge conflicts](/content/en/docs/integrations/advanced/index.html)  
[CLI Reference  
 The CLI that powers CI/CD integration](/content/en/docs/cli/index.html)
