Proyectos grandes

Lingo.dev CLI proporciona optimizaciones de rendimiento y estrategias de flujo de trabajo para proyectos de localización a gran escala con cientos de miles de claves de traducción, múltiples idiomas y estructuras de contenido complejas.

Para proyectos con contenido extenso, el CLI ofrece procesamiento paralelo e integración CI/CD para gestionar la traducción a escala de manera eficiente.

Procesamiento paralelo

Lingo.dev CLI procesa proyectos grandes más rápido utilizando workers paralelos que gestionan múltiples tareas de traducción simultáneamente.

Habilitar procesamiento paralelo:

npx lingo.dev@latest run

Esto distribuye las tareas de traducción entre múltiples workers, reduciendo significativamente el tiempo de procesamiento para proyectos grandes.

Controlar la concurrencia de workers:

npx lingo.dev@latest run --concurrency 16

La concurrencia predeterminada es de 10 workers. Valores más altos procesan más tareas simultáneamente, pero pueden alcanzar los límites de tasa de la API.

Cómo funciona el procesamiento paralelo

El CLI crea un pool de workers que procesa tareas de traducción de forma concurrente mientras previene la corrupción de archivos:

  1. Distribución de tareas — Divide la localización en tareas individuales por locale y archivo
  2. Asignación de workers — Asigna tareas a workers disponibles utilizando balanceo de carga
  3. Prevención de condiciones de carrera — Utiliza bloqueos del sistema de archivos para prevenir conflictos cuando múltiples workers acceden a los mismos archivos
  4. Seguimiento de progreso — Reporta el progreso en tiempo real de todos los workers

Ejemplo para proyectos grandes:

// Project with 50 files across 10 languages = 500 translation tasks
{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de", "ja", "zh", "ko", "pt", "it", "ru", "ar"]
  },
  "buckets": {
    "json": {
      "include": ["src/locales/[locale]/*.json"]
    },
    "markdown": {
      "include": ["docs/[locale]/*.md"]
    }
  }
}

Con procesamiento paralelo, estas 500 tareas se distribuyen entre workers en lugar de procesarse secuencialmente.

Procesamiento dirigido

Para proyectos grandes, puedes procesar partes específicas en lugar de todo a la vez:

Procesar idiomas específicos:

npx lingo.dev@latest run --target-locale es --target-locale fr

Procesar tipos de archivo específicos:

npx lingo.dev@latest run --bucket json

Procesar archivos específicos:

npx lingo.dev@latest run --file components/header

Este procesamiento selectivo es útil para actualizaciones incrementales durante el desarrollo.

Integración CI/CD

Los proyectos grandes se benefician de flujos de trabajo de traducción automatizados usando GitHub Actions u otros sistemas CI/CD.

Flujo de trabajo de 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 }}

Este flujo de trabajo procesa traducciones en ramas dedicadas, manteniendo el trabajo de traducción separado del desarrollo.

Flujo de trabajo basado en ramas

Para proyectos grandes, usa ramas dedicadas para el trabajo de traducción:

Crear rama de traducción:

git checkout main
git checkout -b localize/content-update
# Make content changes
git push -u origin localize/content-update

Activar traducción mediante GitHub Actions:

  1. Navega a la pestaña Actions del repositorio
  2. Selecciona el flujo de trabajo "Lingo.dev Localization"
  3. Ejecuta el flujo de trabajo en tu rama de traducción
  4. Revisa y fusiona el contenido traducido

Este enfoque proporciona una separación clara entre los cambios de contenido y el procesamiento de traducción.

Consideraciones de rendimiento

Recursos del sistema:

  • El procesamiento paralelo usa más CPU y memoria
  • Monitorea el rendimiento del sistema con configuraciones de alta concurrencia
  • Los ejecutores CI/CD en la nube manejan cargas de trabajo paralelas eficientemente

Límites de tasa de API:

  • Una mayor concurrencia puede activar limitación de tasa
  • Comienza con la configuración predeterminada y ajusta según el rendimiento
  • Lingo.dev Engine maneja la limitación de tasa automáticamente

Sistema de archivos:

  • Los proyectos grandes generan muchos archivos de traducción
  • Usa .gitignore para archivos temporales si es necesario
  • Confirma el archivo i18n.lock para el seguimiento de contenido

Organización del proyecto

Separación de buckets:

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

Los buckets separados permiten el procesamiento dirigido de diferentes áreas de contenido.

Estructura de archivos:

project/
  src/locales/           # Application content
  marketing/             # Marketing content
  docs/                  # Documentation
  i18n.json             # Configuration
  i18n.lock             # Content tracking

La estructura organizada hace que los proyectos grandes sean manejables y permite el procesamiento selectivo.

Estrategias de escalado

Procesamiento incremental:

  • Usa el archivo de bloqueo para procesar solo el contenido modificado
  • Actualiza idiomas o buckets específicos según sea necesario
  • Combina con CI/CD para actualizaciones incrementales automatizadas

Flujos de trabajo en equipo:

  • Usa traducción basada en ramas para la colaboración
  • Separa los cambios de contenido del trabajo de traducción
  • Revisa las traducciones antes de fusionarlas en producción

Optimización de recursos:

  • Ajusta la concurrencia según las capacidades del sistema
  • Usa ejecutores en la nube para cargas de trabajo de procesamiento pesado
  • Monitorea los tiempos de procesamiento y optimiza las configuraciones de buckets