verbatra watch
Übersetze bei jeder Quelländerung neu, bis unterbrochen wird.
Maschinell übersetzte Seite
Beobachte die Quell-Locale-Datei und führe bei jeder entprellten Änderung eine neue Übersetzung aus, bis du unterbrichst. watch startet mit einer initialen Übersetzung und hält deine Ziel-Locales dann aktuell, während du speicherst. Vor dem Lauf lädt es .env.local und dann .env aus dem Arbeitsverzeichnis; eine bereits in der echten Umgebung gesetzte Variable gewinnt.
Synopsis
verbatra watch [flags]Flags
| Flag | Argument | Standard | Wirkung |
|---|---|---|---|
--cwd | <path> | aktuelles Verzeichnis | Konfiguration und Locale-Dateien von diesem Verzeichnis aus auflösen |
--config | <path> | wird gesucht | diese Konfigurationsdatei laden, statt eine zu suchen |
--locales | <list> | jede konfigurierte Ziel-Locale | nur diese kommagetrennte Teilmenge beobachten und übersetzen; ein nicht konfiguriertes Locale wird beim Start mit UNKNOWN_LOCALE abgelehnt, bevor die Beobachtung überhaupt beginnt, und eine leere Liste ist ein Verwendungsfehler, Exit 2 |
--debounce | <ms> | 300 | so viele Millisekunden nach der letzten Änderung warten, bevor übersetzt wird; muss eine nackte positive Ganzzahl sein (ein Wert wie 250ms, 0 oder -1 ist ein Verwendungsfehler, Exit 2) |
--lock-timeout | <seconds> | 600 | wie lange auf eine gehaltene Schreibsperre eines Locales gewartet wird, bevor der Lauf scheitert; muss eine nackte positive Ganzzahl von Sekunden sein (ein Wert wie 60s, 0 oder -1 ist ein Verwendungsfehler, Exit 2) |
--concurrency | <n> | 1 | pro Lauf bis zu n Ziel-Locales gleichzeitig übersetzen; muss eine positive Ganzzahl sein |
--no-cache | keins | aus (Cache an) | bei jedem Lauf den lokalen Translation-Memory-Cache (verbatra.cache.json) umgehen |
--json | keins | aus | jeden Lauf als einen JSON-Envelope auf stdout ausgeben, im NDJSON-Stil (ein Objekt pro Zeile) |
Mit --json erzeugt jeder Lauf einen Envelope-Datensatz mit command: "watch": einen ok: true-Datensatz, der das RunSummary dieses Laufs unter result trägt, oder einen ok: false-Datensatz mit Fehlercode und Meldung. Die Startzeile, der Stopp-Hinweis und der Fortschritt jedes Laufs gehen auf stderr, der stdout-Strom bleibt also sauberes NDJSON. Ein fehlgeschlagener Lauf ist nur ein Datensatz im Strom: er stoppt weder den Watcher noch ändert er den Exit-Code.
--locales de,fr grenzt jeden Zyklus der Sitzung auf eine Teilmenge der konfigurierten Ziele ein, was eine Entwicklungsschleife günstig hält, wenn dich nur eine Sprache interessiert. Die Teilmenge wird einmal beim Start validiert, nicht bei jedem Lauf.
--lock-timeout gilt für jeden Zyklus: Es stellt ein, wie lange ein Locale auf eine umkämpfte Schreibsperre wartet, bevor dieser Lauf mit LOCK_CONTENDED scheitert. Ein fehlgeschlagener Lauf ist nur ein Datensatz im Strom, der Watcher läuft also so oder so weiter.
--concurrency gilt für den Lauf jedes Zyklus. Da das Token-Budget jedes Laufs frisch ist, lässt sich ein --concurrency über 1 nicht einhalten, wenn die Konfiguration ein maxTokens-Budget setzt: watch lehnt diese Kombination beim Start ab und beendet sich vor dem initialen Lauf mit Exit 2, statt eine Sitzung zu starten, die in jedem Zyklus fehlschlägt. --no-cache umgeht den Translation-Memory-Cache bei jedem Zyklus.
Stoppen
Der erste Interrupt (Ctrl-C oder SIGTERM) lässt den laufenden Lauf zu Ende gehen, stoppt den Watcher sauber und endet mit 0. Ein zweiter Interrupt, während dieses Herunterfahren noch läuft, erzwingt den Stopp mit Exit 130.
Beispiele
# watch and re-translate on each change
verbatra watch
# calmer in a busy editor: wait 1s after the last change, stream NDJSON
verbatra watch --debounce 1000 --json
# keep only German current while you work
verbatra watch --locales deExit-Codes
| Code | Bedeutung |
|---|---|
0 | sauber gestoppt durch einen einzelnen Interrupt |
2 | konnte nicht starten oder stoppen: ein Konfigurationsfehler, ein Start- oder Stoppfehler oder ein Verwendungsfehler (einschließlich eines ungültigen --debounce) |
130 | zwangsbeendet durch einen zweiten Interrupt |
Siehe auch
verbatra translateist der Einmal-Lauf, denwatchwiederholt.- Der Cache erklärt, was
--no-cachebei jedem Lauf umgeht. - Wie es funktioniert erklärt, was jeder Lauf tut.
- Die SDK-Referenz dokumentiert die Formen
WatchRunResultundRunSummary.