🎉 v1.0

Get started

  • Welcome
  • Documentation
  • Pricing
    Soon

Tools

  • I18n MCP
  • CLI
  • CI/CD Integrations
  • Compiler
    Alpha
  • Connect Your Engine

Resources

  • Languages
  • LLM Models
  • Guides

Company

  • Enterprise
  • CareersHiring!
Dashboard

Lingo.dev CLI

  • How it works
  • Setup

Configuration

  • Supported formats
  • i18n.json
  • i18n.lock

Features

  • Existing translations
  • Adding languages
  • Overrides
  • Translator Notes
  • Translation keys
    • Key renaming
    • Key locking
    • Key ignoring
    • Key preserving

Performance

  • Large projects
  • Parallel processing

Retranslation

  • Automatic Retranslation
  • Retranslation
  • Remove translations

Large Projects

Max PrilutskiyMax Prilutskiy·Updated 1 day ago·1 min read

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#

Parallel Processing
Worker architecture and concurrency control
i18n.lock
How incremental translation works
Supported Formats
All bucket types and their configuration
Connect Your Engine
Route translations through your localization engine

Was this page helpful?