Traitement parallèle

Lingo.dev CLI offre 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 projets volumineux.

La commande run remplacera progressivement la commande i18n dans les versions futures, fournissant 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 un 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 les mêmes fichiers de configuration i18n.json et i18n.lock que la commande standard i18n.

Fonctionnement du traitement parallèle

Lingo.dev CLI distribue les tâches de localisation entre plusieurs workers concurrents, traitant simultanément différentes paires de langues et modèles de fichiers.

Aperçu de l'architecture :

  1. Création de tâches — L'interface CLI analyse votre configuration et crée des tâches individuelles pour chaque combinaison locale/fichier
  2. Distribution des workers — Les tâches sont distribuées entre plusieurs processus workers
  3. Traitement concurrent — Les workers traitent les traductions simultanément tout en évitant les conflits de fichiers
  4. Agrégation des résultats — Les traductions terminées sont écrites en toute sécurité dans les fichiers cibles

Contrôle de 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 taux d'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 --locale es --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

Forcer la retraduction :

npx lingo.dev@latest run --force

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 sur le système de fichiers sont synchronisées pour éviter que plusieurs workers n'écrivent simultanément dans le même fichier.

Protection par fichier de verrouillage — Le fichier i18n.lock utilise des opérations atomiques pour prévenir la corruption lors des mises à jour concurrentes.

Traitement transactionnel — Chaque tâche s'exécute entièrement ou échoue proprement, garantissant ainsi 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 être efficace, mais les projets très volumineux peuvent bénéficier d'une surveillance des ressources.

Commencez avec les paramètres par défaut :

npx lingo.dev@latest run

# Utilise des paramètres de concurrence optimisés

Augmentez progressivement :

npx lingo.dev@latest run --concurrency 20

# Augmentez si le système gère bien la charge

Ciblez du contenu spécifique pour l'itération :

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

# Traite uniquement les composants modifiés

Compatibilité

La commande run maintient une compatibilité totale avec les configurations existantes :

  • Même format i18n.json — Aucun changement de configuration requis
  • Même comportement i18n.lock — Le suivi incrémental des traductions 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 flags --locale, --bucket, --key, --file, --force fonctionnent de manière identique

Migration depuis la commande i18n :


# Commande actuelle

npx lingo.dev@latest i18n

# Équivalent parallèle

npx lingo.dev@latest run

Toutes les fonctionnalités sont transférées directement avec des performances significativement améliorées.

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 progression — Surveillance en temps réel de la progression de toutes les opérations parallèles.

Gestion des ressources — Nettoyage automatique et libération des ressources à la fin du traitement.