The Lingo.dev CLI scales to projects with thousands of translation keys and dozens of target languages through parallel processing, incremental translation via the lockfile, and targeted processing options.
Parallel processing#
The CLI distributes translation tasks across concurrent workers. The default concurrency is 10 workers:
npx lingo.dev@latest runIncrease concurrency for large projects:
npx lingo.dev@latest run --concurrency 20For a project with 50 files across 10 languages (500 translation tasks), parallel processing handles them concurrently instead of sequentially. See Parallel Processing for details on the worker architecture.
Targeted processing#
Process specific subsets instead of the entire project:
# Specific languages
npx lingo.dev@latest run --target-locale es --target-locale fr
# Specific file format
npx lingo.dev@latest run --bucket json
# Specific files
npx lingo.dev@latest run --file components/header
# Specific keys
npx lingo.dev@latest run --key welcome.titleThese options combine - --force --bucket json --target-locale es retranslates all JSON content for Spanish only.
CI/CD integration#
Automate translation on every push using GitHub Actions:
name: Lingo.dev Localization
on:
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
localize:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}The lockfile ensures only changed content is translated, keeping CI runs fast even for large projects.
Bucket organization#
Separate content types into distinct buckets for targeted processing:
{
"buckets": {
"json": {
"include": ["src/locales/[locale].json"]
},
"markdown": {
"include": ["docs/[locale]/*.md"]
}
}
}This lets you process documentation and app content independently: --bucket markdown translates only documentation.
