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, la CLI ofrece procesamiento paralelo e integración CI/CD para gestionar traducciones a escala de manera eficiente.
Procesamiento paralelo
Lingo.dev CLI procesa proyectos grandes más rápidamente utilizando trabajadores paralelos que manejan 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 trabajadores, reduciendo significativamente el tiempo de procesamiento para proyectos grandes.
Controlar la concurrencia de trabajadores:
npx lingo.dev@latest run --concurrency 16
La concurrencia predeterminada es de 10 trabajadores. Valores más altos procesan más tareas simultáneamente pero pueden alcanzar límites de tasa de la API.
Cómo funciona el procesamiento paralelo
La CLI crea un grupo de trabajadores que procesa tareas de traducción concurrentemente mientras previene la corrupción de archivos:
- Distribución de tareas — Divide la localización en tareas individuales por locale y archivo
- Asignación de trabajadores — Asigna tareas a trabajadores disponibles utilizando balanceo de carga
- Prevención de condiciones de carrera — Utiliza bloqueos del sistema de archivos para prevenir conflictos cuando múltiples trabajadores acceden a los mismos archivos
- Seguimiento de progreso — Informa del progreso en tiempo real a través de todos los trabajadores
Ejemplo para proyectos grandes:
// Proyecto con 50 archivos en 10 idiomas = 500 tareas de traducción
{
"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 trabajadores 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 --locale es --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 con CI/CD
Los proyectos grandes se benefician de flujos de trabajo de traducción automatizados utilizando 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, utiliza ramas dedicadas para el trabajo de traducción:
Crear rama de traducción:
git checkout main
git checkout -b localize/content-update
# Realizar cambios de contenido
git push -u origin localize/content-update
Activar traducción mediante GitHub Actions:
- Navega a la pestaña Actions del repositorio
- Selecciona el flujo de trabajo "Lingo.dev Localization"
- Ejecuta el flujo de trabajo en tu rama de traducción
- Revisa y fusiona el contenido traducido
Este enfoque proporciona una clara separación entre los cambios de contenido y el procesamiento de traducción.
Consideraciones de rendimiento
Recursos del sistema:
- El procesamiento paralelo utiliza más CPU y memoria
- Monitoriza el rendimiento del sistema con configuraciones de alta concurrencia
- Los ejecutores de CI/CD en la nube manejan eficientemente cargas de trabajo paralelas
Límites de tasa de API:
- Una mayor concurrencia puede activar limitaciones de tasa
- Comienza con la configuración predeterminada y ajusta según el rendimiento
- El motor de Lingo.dev maneja automáticamente las limitaciones de tasa
Sistema de archivos:
- Los proyectos grandes generan muchos archivos de traducción
- Utiliza .gitignore para archivos temporales si es necesario
- Haz commit del archivo
i18n.lock
para el seguimiento del 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 específico de diferentes áreas de contenido.
Estructura de archivos:
project/
src/locales/ # Contenido de la aplicación
marketing/ # Contenido de marketing
docs/ # Documentación
i18n.json # Configuración
i18n.lock # Seguimiento de contenido
Una estructura organizada hace que los proyectos grandes sean manejables y permite el procesamiento selectivo.
Estrategias de escalabilidad
Procesamiento incremental:
- Utilizar archivo de bloqueo para procesar solo el contenido modificado
- Actualizar idiomas o buckets específicos según sea necesario
- Combinar con CI/CD para actualizaciones incrementales automatizadas
Flujos de trabajo en equipo:
- Utilizar traducción basada en ramas para la colaboración
- Separar los cambios de contenido del trabajo de traducción
- Revisar las traducciones antes de fusionarlas con producción
Optimización de recursos:
- Ajustar la concurrencia según las capacidades del sistema
- Utilizar ejecutores en la nube para cargas de trabajo de procesamiento intensivo
- Monitorizar los tiempos de procesamiento y optimizar las configuraciones de buckets