Traitement parallèle
Lingo.dev CLI fournit un traitement parallèle via la commande run, qui traite plusieurs tâches de localisation simultanément pour réduire considérablement le temps de traduction des grands projets.
La commande run remplace la commande obsolète i18n, offrant les mêmes fonctionnalités avec des améliorations significatives de performance grâce au traitement concurrent.
Utilisation de base
Traiter toutes les traductions avec traitement parallèle :
npx lingo.dev@latest run
Contrôler le niveau de concurrence :
npx lingo.dev@latest run --concurrency 20
La commande run utilise la même configuration i18n.json et les mêmes fichiers i18n.lock que la commande i18n.
Fonctionnement du traitement parallèle
Lingo.dev CLI distribue les tâches de localisation sur plusieurs workers concurrents, traitant simultanément différentes paires de langues et modèles de fichiers.
Vue d'ensemble de l'architecture :
- Création de tâches — Le CLI analyse votre configuration et crée des tâches individuelles pour chaque combinaison locale/fichier
- Distribution des workers — Les tâches sont distribuées sur plusieurs processus workers
- Traitement concurrent — Les workers traitent les traductions simultanément tout en évitant les conflits de fichiers
- Agrégation des résultats — Les traductions terminées sont écrites en toute sécurité dans les fichiers cibles
Contrôle de la concurrence
Définir le nombre de workers :
npx lingo.dev@latest run --concurrency 15
La concurrence par défaut est de 10 workers. Des valeurs plus élevées traitent les traductions plus rapidement mais consomment plus de ressources système et peuvent atteindre les limites de débit de l'API.
La concurrence optimale dépend des capacités de votre système et des limites du fournisseur de traduction. Commencez avec la valeur par défaut et ajustez en fonction des performances.
Traitement ciblé
Traiter des langues spécifiques :
npx lingo.dev@latest run --target-locale es --target-locale fr
Traiter des types de fichiers spécifiques :
npx lingo.dev@latest run --bucket json
Traiter des fichiers spécifiques :
npx lingo.dev@latest run --file components/header
Traiter des clés spécifiques :
npx lingo.dev@latest run --key welcome.title
Accepte les motifs glob tels que définis par la bibliothèque minimatch.
Forcer la retraduction :
npx lingo.dev@latest run --force
Astuce : pour de meilleurs résultats lors de la retraduction, commencez par supprimer les traductions à l'aide de la commande purge, puis exécutez la commande run sans --force. Cette approche exploite le mécanisme de mise en cache intégré pour une retraduction plus efficace.
Ces options de ciblage fonctionnent de manière identique à la commande i18n mais traitent les tâches en parallèle.
Prévention des conditions de concurrence
Lingo.dev CLI empêche la corruption des fichiers lors du traitement parallèle grâce à plusieurs mécanismes de protection :
Synchronisation des E/S — les opérations du système de fichiers sont synchronisées pour empêcher plusieurs workers d'écrire simultanément dans le même fichier.
Protection par fichier de verrouillage — le fichier i18n.lock utilise des opérations atomiques pour éviter toute corruption lors de mises à jour simultanées.
Traitement transactionnel — chaque tâche se termine complètement ou échoue proprement, garantissant des états de fichiers cohérents.
Optimisation des performances
Surveillez les ressources système lors de l'utilisation de valeurs de concurrence élevées. Le CLI est conçu pour l'efficacité, mais les très grands projets peuvent bénéficier d'une surveillance des ressources.
Commencez avec les valeurs par défaut :
npx lingo.dev@latest run
# Uses optimized concurrency settings
Augmentez progressivement :
npx lingo.dev@latest run --concurrency 20
# Increase if system handles load well
Ciblez du contenu spécifique pour l'itération :
npx lingo.dev@latest run --file src/components
# Process only changed components
Compatibilité
La commande run maintient une compatibilité totale avec les configurations existantes :
- Même format
i18n.json— aucune modification de configuration requise - Même comportement
i18n.lock— le suivi incrémental de traduction fonctionne de manière identique - Mêmes formats de fichiers — tous les types de buckets sont pris en charge
- Mêmes options de ciblage — les indicateurs
--bucket,--key,--file,--forcefonctionnent de manière identique - Spécification des locales avec les options :
--target-localepour remplacerlocale.targetsde la configurationi18n.json(Remarque : remplace l'option--localepour la commandei18n.)--source-localepour remplacerlocale.sourcede la configurationi18n.json
Migration depuis la commande i18n :
# Current command
npx lingo.dev@latest i18n
# Parallel equivalent
npx lingo.dev@latest run
Toutes les fonctionnalités sont transférées directement avec des performances considérablement améliorées.
L'option --locale est remplacée par des options distinctes --target-locale et --source-locale.
Architecture du pool de workers
Lingo.dev CLI utilise un système sophistiqué de pool de workers :
Allocation dynamique — Les workers sont créés en fonction des ressources système et des paramètres de concurrence.
Distribution des tâches — Les tâches sont réparties uniformément entre les workers à l'aide d'algorithmes optimisés.
Suivi de la progression — Surveillance de la progression en temps réel sur toutes les opérations parallèles.
Gestion des ressources — Nettoyage automatique et désallocation des ressources lorsque le traitement est terminé.
Mise en cache automatique — Lors de l'utilisation de l'API Lingo.dev pour les traductions, les fichiers de locale volumineux sont divisés en morceaux. Les fichiers de locale cible sont progressivement remplis avec les traductions au fur et à mesure que chaque morceau est reçu de l'API. Si le processus est interrompu, vous pouvez reprendre la traduction là où elle s'est arrêtée.