Parallele Verarbeitung

Lingo.dev CLI bietet parallele Verarbeitung über den Befehl run, der mehrere Lokalisierungsaufgaben gleichzeitig verarbeitet, um die Übersetzungszeit für große Projekte drastisch zu reduzieren.

Der run-Befehl ersetzt den veralteten i18n-Befehl und bietet die gleiche Funktionalität mit erheblichen Leistungsverbesserungen durch gleichzeitige Verarbeitung.

Grundlegende Verwendung

Verarbeiten Sie alle Übersetzungen mit paralleler Verarbeitung:

npx lingo.dev@latest run

Steuern Sie die Parallelitätsstufe:

npx lingo.dev@latest run --concurrency 20

Der run-Befehl verwendet die gleiche i18n.json-Konfiguration und i18n.lock-Dateien wie der i18n-Befehl.

Funktionsweise der parallelen Verarbeitung

Lingo.dev CLI verteilt Lokalisierungsaufgaben auf mehrere gleichzeitige Worker und verarbeitet verschiedene Sprachpaare und Dateimuster simultan.

Architekturübersicht:

  1. Aufgabenerstellung — CLI analysiert Ihre Konfiguration und erstellt individuelle Aufgaben für jede Locale/Datei-Kombination
  2. Worker-Verteilung — Aufgaben werden auf mehrere Worker-Prozesse verteilt
  3. Gleichzeitige Verarbeitung — Worker verarbeiten Übersetzungen simultan und verhindern dabei Dateikonflikte
  4. Ergebnisaggregation — Abgeschlossene Übersetzungen werden sicher in Zieldateien geschrieben

Parallelitätssteuerung

Legen Sie die Worker-Anzahl fest:

npx lingo.dev@latest run --concurrency 15

Standard-Parallelität beträgt 10 Worker. Höhere Werte verarbeiten Übersetzungen schneller, verbrauchen jedoch mehr Systemressourcen und können API-Ratenlimits erreichen.

Optimale Parallelität hängt von Ihren Systemkapazitäten und den Limits Ihres Übersetzungsanbieters ab. Beginnen Sie mit dem Standardwert und passen Sie ihn basierend auf der Leistung an.

Gezielte Verarbeitung

Verarbeiten Sie spezifische Sprachen:

npx lingo.dev@latest run --target-locale es --target-locale fr

Verarbeiten Sie spezifische Dateitypen:

npx lingo.dev@latest run --bucket json

Verarbeiten Sie spezifische Dateien:

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

Bestimmte Schlüssel verarbeiten:

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

Akzeptiert Glob-Muster wie von der minimatch-Bibliothek definiert.

Neuübersetzung erzwingen:

npx lingo.dev@latest run --force

Tipp: Für beste Ergebnisse bei der Neuübersetzung entfernen Sie zunächst Übersetzungen mit dem purgeBefehl und führen Sie dann den runBefehl ohne --force aus. Dieser Ansatz nutzt den integrierten Caching-Mechanismus für eine effizientere Neuübersetzung.

Diese Targeting-Optionen funktionieren identisch zum i18nBefehl, verarbeiten Aufgaben jedoch parallel.

Vermeidung von Race Conditions

Die Lingo.dev CLI verhindert Dateibeschädigungen während der Parallelverarbeitung durch mehrere Schutzmechanismen:

I/O-Synchronisation — Dateisystemoperationen werden synchronisiert, um zu verhindern, dass mehrere Worker gleichzeitig in dieselbe Datei schreiben.

Lockfile-Schutz — Die i18n.lockDatei verwendet atomare Operationen, um Beschädigungen bei gleichzeitigen Updates zu verhindern.

Transaktionale Verarbeitung — Jede Aufgabe wird entweder vollständig abgeschlossen oder schlägt sauber fehl, wodurch konsistente Dateizustände gewährleistet werden.

Performance-Optimierung

Überwachen Sie Systemressourcen bei Verwendung hoher Concurrency-Werte. Die CLI ist auf Effizienz ausgelegt, aber sehr große Projekte können von Ressourcenüberwachung profitieren.

Beginnen Sie mit Standardwerten:

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

Skalieren Sie schrittweise:

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

Zielen Sie auf spezifische Inhalte für Iteration:

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

Kompatibilität

Der runBefehl behält vollständige Kompatibilität mit bestehenden Konfigurationen:

  • Gleiches i18n.jsonFormat — Keine Konfigurationsänderungen erforderlich
  • Gleiches i18n.lockVerhalten — Inkrementelles Übersetzungs-Tracking funktioniert identisch
  • Gleiche Dateiformate — Alle Bucket-Typen werden unterstützt
  • Gleiche Targeting-Optionen — Die Flags --bucket, --key, --file und --force funktionieren identisch
  • Angabe von Locales mit Optionen:
    • --target-locale zum Überschreiben von locale.targets aus der i18n.jsonKonfiguration (Hinweis: Ersetzt die Option --locale für den i18nBefehl.)
    • --source-locale zum Überschreiben von locale.source aus der i18n.jsonKonfiguration

Migration vom i18nBefehl:

# Current command
npx lingo.dev@latest i18n

# Parallel equivalent
npx lingo.dev@latest run

Alle Funktionalitäten werden direkt mit erheblich verbesserter Leistung übertragen.

Die Option --locale wird durch die separaten Optionen --target-locale und --source-locale ersetzt.

Worker-Pool-Architektur

Lingo.dev CLI verwendet ein ausgeklügeltes Worker-Pool-System:

Dynamische Zuweisung — Worker werden basierend auf Systemressourcen und Parallelitätseinstellungen erstellt.

Aufgabenverteilung — Aufgaben werden mithilfe optimierter Algorithmen gleichmäßig auf Worker verteilt.

Fortschrittsverfolgung — Echtzeit-Fortschrittsüberwachung über alle parallelen Vorgänge hinweg.

Ressourcenverwaltung — Automatische Bereinigung und Freigabe von Ressourcen nach Abschluss der Verarbeitung.

Automatisches Caching — Bei Verwendung der Lingo.dev-API für Übersetzungen werden große Locale-Dateien in Chunks aufgeteilt. Ziel-Locale-Dateien werden inkrementell mit Übersetzungen gefüllt, sobald jeder Chunk von der API empfangen wird. Wenn der Prozess unterbrochen wird, können Sie die Übersetzung an der Stelle fortsetzen, an der sie unterbrochen wurde.