Proyectos de gran escala

Max PrilutskiyCEO y cofundadorActualizado el hace 3 meses · 2 min de lectura

Obsoleto

Esta documentación cubre el CLI heredado (v0). La versión actual del CLI es la v1. Ver la documentación actual de CLI

El CLI de Lingo.dev escala en proyectos con miles de claves de traducción y decenas de idiomas de destino gracias al procesamiento en paralelo, la traducción incremental mediante el lockfile y las opciones de procesamiento selectivo.

Procesamiento en paralelo#

El CLI distribuye las tareas de traducción entre workers concurrentes. La concurrencia predeterminada es de 10 workers:

bash
npx lingo.dev@latest run

Aumenta la concurrencia en proyectos grandes:

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

En un proyecto con 50 archivos en 10 idiomas (500 tareas de traducción), el procesamiento en paralelo las resuelve de forma concurrente en lugar de secuencial. Consulta Parallel Processing para conocer más sobre la arquitectura de workers.

Procesamiento selectivo#

Procesa subconjuntos específicos en lugar de todo el proyecto:

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

Estas opciones se pueden combinar: --force --bucket json --target-locale es vuelve a traducir todo el contenido JSON solo al español.

Integración con CI/CD#

Automatiza la traducción en cada push con 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 }}

El lockfile garantiza que solo se traduzca el contenido modificado, lo que mantiene rápidas las ejecuciones de CI incluso en proyectos grandes.

Organización por buckets#

Separa los tipos de contenido en buckets distintos para habilitar un procesamiento selectivo:

json
{
  "buckets": {
    "json": {
      "include": ["src/locales/[locale].json"]
    },
    "markdown": {
      "include": ["docs/[locale]/*.md"]
    }
  }
}

Esto te permite procesar la documentación y el contenido de la app por separado: --bucket markdown traduce solo la documentación.

Siguientes pasos#