Procesamiento paralelo

Lingo.dev CLI proporciona procesamiento paralelo a través del comando run, que procesa múltiples tareas de localización simultáneamente para reducir drásticamente el tiempo de traducción en proyectos grandes.

El comando run reemplaza al comando obsoleto i18n, proporcionando la misma funcionalidad con mejoras significativas de rendimiento mediante procesamiento concurrente.

Uso básico

Procesar todas las traducciones con procesamiento paralelo:

npx lingo.dev@latest run

Controlar el nivel de concurrencia:

npx lingo.dev@latest run --concurrency 20

El comando run utiliza la misma configuración i18n.json y archivos i18n.lock que el comando i18n.

Cómo funciona el procesamiento paralelo

Lingo.dev CLI distribuye las tareas de localización entre múltiples trabajadores concurrentes, procesando diferentes pares de idiomas y patrones de archivos simultáneamente.

Descripción general de la arquitectura:

  1. Creación de tareas — CLI analiza tu configuración y crea tareas individuales para cada combinación de locale/archivo
  2. Distribución de trabajadores — Las tareas se distribuyen entre múltiples procesos de trabajadores
  3. Procesamiento concurrente — Los trabajadores procesan traducciones simultáneamente mientras previenen conflictos de archivos
  4. Agregación de resultados — Las traducciones completadas se escriben de forma segura en los archivos de destino

Control de concurrencia

Establecer el número de trabajadores:

npx lingo.dev@latest run --concurrency 15

La concurrencia predeterminada es de 10 trabajadores. Valores más altos procesan traducciones más rápido pero consumen más recursos del sistema y pueden alcanzar los límites de tasa de la API.

La concurrencia óptima depende de las capacidades de tu sistema y los límites del proveedor de traducción. Comienza con el valor predeterminado y ajusta según el rendimiento.

Procesamiento dirigido

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

Procesar claves específicas:

npx lingo.dev@latest run --key welcome.title

Acepta patrones glob según lo definido por la biblioteca minimatch.

Forzar retraducción:

npx lingo.dev@latest run --force

Consejo: Para obtener mejores resultados al retraducir, primero elimina las traducciones usando el comando purge, luego ejecuta el comando run sin --force. Este enfoque aprovecha el mecanismo de caché integrado para una retraducción más eficiente.

Estas opciones de segmentación funcionan de manera idéntica al comando i18n pero procesan las tareas en paralelo.

Prevención de condiciones de carrera

Lingo.dev CLI previene la corrupción de archivos durante el procesamiento paralelo mediante múltiples salvaguardas:

Sincronización de E/S — Las operaciones del sistema de archivos se sincronizan para evitar que múltiples workers escriban en el mismo archivo simultáneamente.

Protección de archivo de bloqueo — El archivo i18n.lock utiliza operaciones atómicas para prevenir la corrupción durante actualizaciones concurrentes.

Procesamiento transaccional — Cada tarea se completa totalmente o falla de manera limpia, asegurando estados de archivo consistentes.

Optimización del rendimiento

Monitorea los recursos del sistema al usar valores altos de concurrencia. El CLI está diseñado para la eficiencia, pero proyectos muy grandes pueden beneficiarse del monitoreo de recursos.

Comienza con los valores predeterminados:

npx lingo.dev@latest run
# Uses optimized concurrency settings

Escala gradualmente:

npx lingo.dev@latest run --concurrency 20
# Increase if system handles load well

Segmenta contenido específico para iteración:

npx lingo.dev@latest run --file src/components
# Process only changed components

Compatibilidad

El comando run mantiene compatibilidad total con las configuraciones existentes:

  • Mismo formato de i18n.json — No se requieren cambios de configuración
  • Mismo comportamiento de i18n.lock — El seguimiento de traducción incremental funciona de manera idéntica
  • Mismos formatos de archivo — Todos los tipos de bucket son compatibles
  • Mismas opciones de segmentación — Los flags --bucket, --key, --file, --force funcionan de manera idéntica
  • Especificar locales con opciones:
    • --target-locale para sobrescribir locale.targets de la configuración i18n.json (Nota: Reemplaza la opción --locale para el comando i18n.)
    • --source-locale para sobrescribir locale.source de la configuración i18n.json

Migración desde el comando i18n:

# Current command
npx lingo.dev@latest i18n

# Parallel equivalent
npx lingo.dev@latest run

Toda la funcionalidad se transfiere directamente con un rendimiento significativamente mejorado.

La opción --locale se reemplaza por las opciones distintas --target-locale y --source-locale.

Arquitectura de pool de trabajadores

Lingo.dev CLI utiliza un sofisticado sistema de pool de trabajadores:

Asignación dinámica — Los trabajadores se crean en función de los recursos del sistema y la configuración de concurrencia.

Distribución de tareas — Las tareas se distribuyen uniformemente entre los trabajadores utilizando algoritmos optimizados.

Seguimiento del progreso — Monitorización del progreso en tiempo real en todas las operaciones paralelas.

Gestión de recursos — Limpieza automática y liberación de recursos cuando se completa el procesamiento.

Almacenamiento en caché automático — Al utilizar la API de Lingo.dev para traducciones, los archivos de configuración regional grandes se dividen en fragmentos. Los archivos de configuración regional de destino se rellenan incrementalmente con traducciones a medida que se recibe cada fragmento de la API. Si el proceso se interrumpe, puedes reanudar la traducción desde donde se quedó.