Large Projects

Updated: last quarter · 1 min read

Deprecated

These docs cover the legacy CLI (v0). The current CLI is v1. See the current CLI docs

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:

bash
npx lingo.dev@latest run

Increase concurrency for large projects:

bash
npx lingo.dev@latest run --concurrency 20

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

bash
# 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.title

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

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

json
{
  "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.

Next Steps#