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:
- Aufgabenerstellung — CLI analysiert Ihre Konfiguration und erstellt individuelle Aufgaben für jede Locale/Datei-Kombination
- Worker-Verteilung — Aufgaben werden auf mehrere Worker-Prozesse verteilt
- Gleichzeitige Verarbeitung — Worker verarbeiten Übersetzungen simultan und verhindern dabei Dateikonflikte
- 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,--fileund--forcefunktionieren identisch - Angabe von Locales mit Optionen:
--target-localezum Überschreiben vonlocale.targetsaus deri18n.jsonKonfiguration (Hinweis: Ersetzt die Option--localefür deni18nBefehl.)--source-localezum Überschreiben vonlocale.sourceaus deri18n.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.