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
reemplazará gradualmente al comando i18n
en futuras versiones, 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 los mismos archivos de configuración i18n.json
y i18n.lock
que el comando estándar 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.
Visión general de la arquitectura:
- Creación de tareas — CLI analiza tu configuración y crea tareas individuales para cada combinación de localización/archivo
- Distribución de trabajadores — Las tareas se distribuyen entre múltiples procesos trabajadores
- Procesamiento concurrente — Los trabajadores procesan traducciones simultáneamente mientras previenen conflictos de archivos
- Agregación de resultados — Las traducciones completadas se escriben de forma segura en los archivos de destino
Control de concurrencia
Establecer cantidad 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 límites de tasa de 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 elimine las traducciones utilizando el comando purge
, luego ejecute el comando run
sin --force
. Este enfoque aprovecha el mecanismo de caché integrado para una retraducción más eficiente.
Estas opciones de selecció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 están sincronizadas para evitar que múltiples trabajadores escriban en el mismo archivo simultáneamente.
Protección mediante 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 limpiamente, asegurando estados de archivo consistentes.
Optimización del rendimiento
Monitoriza los recursos del sistema cuando utilices valores altos de concurrencia. La CLI está diseñada para ser eficiente, pero proyectos muy grandes pueden beneficiarse del monitoreo de recursos.
Comienza con los valores predeterminados:
npx lingo.dev@latest run
# Utiliza configuración de concurrencia optimizada
Aumenta gradualmente:
npx lingo.dev@latest run --concurrency 20
# Aumenta si el sistema gestiona bien la carga
Enfoca contenido específico para iteración:
npx lingo.dev@latest run --file src/components
# Procesa solo los componentes modificados
Compatibilidad
El comando run
mantiene total compatibilidad con las configuraciones existentes:
- Mismo formato
i18n.json
— No se requieren cambios de configuración - Mismo comportamiento de
i18n.lock
— El seguimiento incremental de traducciones funciona de manera idéntica - Mismos formatos de archivo — Todos los tipos de bucket son compatibles
- Mismas opciones de selección — Las banderas
--bucket
,--key
,--file
,--force
funcionan de manera idéntica - Especificación de locales con opciones:
--target-locale
para sobrescribirlocale.targets
desde la configuracióni18n.json
(Nota: Reemplaza la opción--locale
del comandoi18n
.)--source-locale
para sobrescribirlocale.source
desde la configuracióni18n.json
Migración desde el comando i18n
:
# Comando actual
npx lingo.dev@latest i18n
# Equivalente paralelo
npx lingo.dev@latest run
Toda la funcionalidad se transfiere directamente con un rendimiento significativamente mejorado.
La opción --locale
es reemplazada 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 según 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 de progreso — Monitoreo de progreso en tiempo real en todas las operaciones paralelas.
Gestión de recursos — Limpieza automática y liberación de recursos cuando finaliza el procesamiento.
Caché automático — Al utilizar la API de Lingo.dev para traducciones, los archivos de idioma grandes se dividen en fragmentos. Los archivos de idioma de destino se van poblando incrementalmente con traducciones a medida que se recibe cada fragmento de la API. Si el proceso se interrumpe, puede reanudar la traducción desde donde se quedó.