Parallele Verarbeitung

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

Der Befehl run wird in zukünftigen Versionen schrittweise den Befehl i18n ersetzen und bietet die gleiche Funktionalität mit erheblichen Leistungsverbesserungen durch gleichzeitige Verarbeitung.

Grundlegende Verwendung

Alle Übersetzungen mit paralleler Verarbeitung ausführen:

npx lingo.dev@latest run

Grad der Parallelität steuern:

npx lingo.dev@latest run --concurrency 20

Der Befehl run verwendet dieselben Konfigurationsdateien i18n.json und i18n.lock wie der Standard-Befehl i18n.

Funktionsweise der parallelen Verarbeitung

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

Architekturübersicht:

  1. Aufgabenerstellung — Die CLI analysiert Ihre Konfiguration und erstellt einzelne 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

Steuerung der Parallelität

Worker-Anzahl festlegen:

npx lingo.dev@latest run --concurrency 15

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

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

Gezielte Verarbeitung

Bestimmte Sprachen verarbeiten:

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

Bestimmte Dateitypen verarbeiten:

npx lingo.dev@latest run --bucket json

Bestimmte Dateien verarbeiten:

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

Bestimmte Schlüssel verarbeiten:

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

Neuübersetzung erzwingen:

npx lingo.dev@latest run --force

Diese Zieloptionen funktionieren identisch zum Befehl i18n, verarbeiten die Aufgaben jedoch parallel.

Verhinderung von Race Conditions

Lingo.dev CLI verhindert Dateibeschädigungen während der parallelen Verarbeitung durch mehrere Schutzmaßnahmen:

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

Lockfile-Schutz — Die Datei i18n.lock verwendet atomare Operationen, um Beschädigungen während gleichzeitiger Aktualisierungen zu verhindern.

Transaktionsverarbeitung — Jede Aufgabe wird vollständig abgeschlossen oder sauber beendet, um konsistente Dateizustände zu gewährleisten.

Leistungsoptimierung

Überwachen Sie die Systemressourcen bei Verwendung hoher Parallelitätswerte. Die CLI ist auf Effizienz ausgelegt, aber sehr große Projekte können von einer Ressourcenüberwachung profitieren.

Beginnen Sie mit den Standardeinstellungen:

npx lingo.dev@latest run

# Verwendet optimierte Parallelitätseinstellungen

Skalieren Sie schrittweise nach oben:

npx lingo.dev@latest run --concurrency 20

# Erhöhen Sie den Wert, wenn das System die Last gut bewältigt

Zielen Sie auf spezifische Inhalte für Iterationen:

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

# Verarbeitet nur geänderte Komponenten

Kompatibilität

Der Befehl run behält die volle Kompatibilität mit bestehenden Konfigurationen bei:

  • Gleiches i18n.json-Format — Keine Konfigurationsänderungen erforderlich
  • Gleiches i18n.lock-Verhalten — Inkrementelle Übersetzungsverfolgung funktioniert identisch
  • Gleiche Dateiformate — Alle Bucket-Typen werden unterstützt
  • Gleiche Targeting-Optionen — Flags --locale, --bucket, --key, --file, --force funktionieren identisch

Migration vom Befehl i18n:


# Aktueller Befehl

npx lingo.dev@latest i18n

# Paralleles Äquivalent

npx lingo.dev@latest run

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

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 gleichmäßig auf Worker verteilt, unter Verwendung optimierter Algorithmen.

Fortschrittsverfolgung — Echtzeit-Fortschrittsüberwachung über alle parallelen Operationen.

Ressourcenverwaltung — Automatische Bereinigung und Ressourcenfreigabe nach Abschluss der Verarbeitung.