Docs / Hilfe
Maschinell übersetzte Seite
Fehlerbehebung
Symptome, Ursachen und Lösungen für die Fehler, die verbatra tatsächlich erzeugt, jeweils unter ihrem Fehlercode, dazu Installationsprobleme mit Studio und MCP.
Jeder Eintrag geht von dem aus, was du siehst, und verlinkt den Code dahinter mit
Fehlercodes, wo jeder Code mit Bedeutung, Exit-Code und nächstem Schritt
steht. Such nach dem Code in verbatra: error [CODE], nie nach dem Meldungstext.
Führe verbatra doctor aus, bevor du Eintrag für Eintrag durchgehst: Es prüft
Konfiguration, Format, Provider, die Variable des API-Schlüssels und die Quelldatei in einem
Durchgang, kostet nichts und funktioniert schon, bevor die Quell-Locale-Datei existiert.
pnpm blockiert die Installationsskripte einer Abhängigkeit (ERR_PNPM_IGNORED_BUILDS)
Symptom: pnpm add -D @verbatra/cli gibt seine Installationszusammenfassung aus und beendet
sich dann mit 1:
[ERR_PNPM_IGNORED_BUILDS] Ignored build scripts: @google/genai@3.1.0, protobufjs@7.6.5
Run "pnpm approve-builds" to pick which dependencies should be allowed to run scripts.pnpm schreibt außerdem eine pnpm-workspace.yaml in dein Projekt, die eine unbeantwortete
Entscheidung enthält:
allowBuilds:
'@google/genai': set this to true or false
protobufjs: set this to true or falseSolange du sie nicht beantwortest, scheitert jeder spätere pnpm-Befehl in diesem Projekt auf
dieselbe Weise, auch pnpm exec verbatra init.
Ursache: pnpm führt die Installationsskripte einer Drittanbieter-Abhängigkeit nur aus, wenn du
es erlaubst. @google/genai und das transitive protobufjs deklarieren solche Skripte, und das
Gemini-SDK wird unabhängig vom konfigurierten Provider installiert, also trifft es jeden
pnpm-Installationsweg. verbatra selbst deklariert kein Installationsskript, und npm und yarn
installieren dasselbe Paket ohne Nachfrage. Die Installation ist tatsächlich durchgelaufen:
node_ funktioniert bereits.
Lösung: Beantworte die Entscheidung einmal. Interaktiv führst du pnpm approve-builds aus und
bestätigst keinen der beiden Einträge. Nicht-interaktiv, was du in CI willst, hinterlegst du die
Antwort vor der Installation, indem du das hier in die pnpm-workspace.yaml im Wurzelverzeichnis
des Projekts schreibst:
allowBuilds:
'@google/genai': false
protobufjs: falseverbatra braucht diese Skripte nicht, und dieses Repository lehnt beide ab. Mit der hinterlegten
Antwort beendet sich pnpm add -D @verbatra/cli mit 0 und spätere pnpm-Befehle laufen normal.
Die Paketversionen in der Meldung folgen dem Release; die Lösung bleibt dieselbe.
Die Konfiguration ist ungültig (CONFIG_INVALID)
Symptom: The verbatra configuration is invalid: ..., mit einem Problem pro Feld.
Ursache: Die Konfiguration wurde gefunden, besteht aber die Prüfung nicht, zum Beispiel ein
files.pattern ohne {locale}, ein Locale-Code, der kein BCP 47 ist (etwa en_), oder ein
unbekannter Key. Ein unbekannter Key bekommt den Hinweis API keys are read from the environment, not the config: Das Schema ist streng, damit sich kein Secret in einer committeten Datei
verstecken kann.
Lösung: Korrigiere das Feld, das die Meldung nennt; siehe Die Konfigurationsdatei.
Bei No verbatra configuration found... siehe CONFIG_.
Code: CONFIG_.
Kein Adapter für das Format (UNKNOWN_FORMAT)
Symptom: No adapter is registered for format "...", gefolgt von der Liste der unterstützten
Formate.
Ursache: Das format der Konfiguration ist keine registrierte ID. Ein custom:-Format läuft
nicht auf der Kommandozeile, denn sie lädt kein Plugin.
Lösung: Nimm eine ID aus Formate. Für ein custom:-Format arbeite über das
SDK mit einer Registry, die seinen Adapter enthält: siehe
Einen eigenen Format-Adapter schreiben. Code:
UNKNOWN_.
Die angeforderte Locale ist nicht konfiguriert (UNKNOWN_LOCALE)
Symptom: Requested locale not in the configured target locales: ...
Ursache: --locales (oder eine locales-Eingabe im SDK) nennt eine Locale, die nicht in
targetLocales steht. Ein Filter wählt aus der konfigurierten Liste aus; er ergänzt sie nie.
Lösung: Nimm die Locale in targetLocales auf, oder korrigiere den Tippfehler. Code:
UNKNOWN_.
Die Quelldatei fehlt oder lässt sich nicht parsen (SOURCE_UNREADABLE, SOURCE_INVALID)
Symptom: The source locale file was not found at <path>. oder The source locale file at <path> could not be read: ...
Ursache: files.pattern mit eingesetztem Quell-Locale zeigt auf keine Datei, oder die Datei
lässt sich nicht parsen. Der Pfad wird gegen die Projektwurzel aufgelöst, das Verzeichnis der gefundenen Konfiguration
(oder mit --config das Arbeitsverzeichnis), also ist ein falsches --cwd oder --config eine häufige Ursache, ebenso ein Platzhalter: files.pattern ist ein wörtlicher
Pfad, kein Glob (siehe Namespace-Layouts).
Lösung: Prüf den ausgegebenen Pfad. Bei einem Parse-Fehler nennt der causeCode den
Code des Format-Adapters. Codes:
SOURCE_,
SOURCE_.
Fehlender API-Schlüssel (PROVIDER_CONSTRUCTION_FAILED)
Symptom: Failed to construct provider "anthropic": The ANTHROPIC_ (oder die Variable deines Providers).
Ursache: Die Variable, die die Meldung nennt, ist nicht gesetzt oder leer. Schlüssel kommen nur aus der Umgebung, nie aus der Konfiguration oder einem Flag.
Lösung: Setz die Variable und bestätige sie mit verbatra doctor. Die CLI liest sie auch aus
.env.local und .env; das SDK nicht, also nutze in deinem
eigenen Skript node --env-file=.env. Codes:
PROVIDER_,
MISSING_.
Rate-Limits, Timeouts und Auth-Fehlschläge mitten im Lauf (RATE_LIMITED, TIMEOUT, AUTH_FAILED)
Symptom: Der Lauf wird fertig, aber einige Keys stehen unter providerFailures mit einem
Hinweis SUB_, der den Provider-Code nennt, und der Befehl endet mit 1.
Ursache: Eine Provider-Anfrage ist gescheitert, nachdem der Provider gebaut war: HTTP 429, ein Timeout oder HTTP 401/403.
Lösung: Nichts geht verloren; die Keys werden beim nächsten Lauf wieder aufgegriffen. Starte
bei RATE_ später erneut, nach der Wartezeit, die die
Meldung nennt, falls sie eine nennt (ein erschöpftes Tageskontingent), und bei einem strengen
Kontingent eine Locale nach der anderen mit --locales. Für ein langsames Modell heb gegen
TIMEOUT den Wert requestTimeoutMs
an. AUTH_ löst sich nicht durch Wiederholen: Ersetze den
Schlüssel.
Die Lock-Datei ist beschädigt (LOCK_FILE_INVALID)
Symptom: The lock-file at <path> is not valid JSON., ... has an unexpected shape.,
... has version N ... oder ... exceeds the maximum allowed size ...
Ursache: verbatra.lock.json wurde von Hand bearbeitet, abgeschnitten, bei einem Merge
beschädigt oder von einer inkompatiblen Version geschrieben. translate und import brechen
daran den ganzen Lauf ab, und Locales, die vor dem Abbruch fertig waren, behalten, was sie
geschrieben haben.
Lösung: Stell die Datei aus der Versionskontrolle wieder her. Sie zu löschen beseitigt den
Fehler auch, verliert aber die Baselines, sodass frühere Änderungen an der Quelle nicht mehr als
veraltet erkannt werden. Siehe Die Lock-Datei. Code:
LOCK_.
Eine Locale-Datei konnte nicht geschrieben werden (TARGET_UNWRITABLE)
Symptom: Eine Locale scheitert mit Could not write the locale file locales/de.json (EACCES). ...
Ursache: Die Datei oder ihr Verzeichnis ist nicht beschreibbar: Rechte, ein fehlendes Verzeichnis, ein schreibgeschützter Mount oder eine volle Platte. Geschrieben wird über eine temporäre Datei im selben Verzeichnis, also muss auch das Verzeichnis beschreibbar sein.
Lösung: Behebe, was der Dateisystem-Code nennt, und starte erneut. Nur diese Locale scheitert,
und sie behält ihre vorige Datei und Baseline. Code:
TARGET_.
Ein anderer Prozess hält die Schreibsperre (LOCK_CONTENDED)
Symptom: Could not acquire the write lock at <path>: another process is holding it. ...
Ursache: Ein anderes translate, watch, import oder ein Schreibvorgang aus Studio hält die
Sperre der Locale. Eine Sperre eines beendeten Prozesses auf diesem Rechner wird automatisch
zurückgeholt, eine verbliebene stammt also von einem anderen Rechner oder einem verbatra älter als
0.12.0.
Lösung: Warte auf den anderen Lauf, oder lösch die ausgegebene Sperrdatei, wenn nirgends ein
verbatra-Prozess läuft. --lock-timeout <seconds> bei translate,
watch und import ändert, wie lange ein Lauf wartet.
Code: LOCK_.
Gepunktete Keys oder YAML-Keys kollidieren (INVALID_STRUCTURE)
Symptom: A dotted key and a nested key path resolve to the same path. oder bei YAML
A mapping key is a map or sequence (expected scalar keys).
Ursache: Zwei Einträge einer Datei laufen auf denselben Key hinaus, etwa "a.b" neben
a: { b: ... }, oder ein YAML-Key hat keine String-Form. verbatra lehnt ab, statt einen zu
verwerfen.
Lösung: Benenne einen der Keys um, oder nimm einen skalaren YAML-Key. In der Quelldatei kommt
das in SOURCE_ eingepackt an. Code:
INVALID_.
Der Lauf hat einige Keys ausgelassen (Token-Budget)
Symptom: ein Hinweis BUDGET_; unter budgetBehavior: "stop" stehen außerdem
Keys unter budgetWithheld.
Ursache: Der Lauf hat maxTokens aus der Konfiguration oder --max-tokens für den Lauf
erreicht. "warn" meldet nur ein Budget aus der Konfiguration; "stop" und --max-tokens, egal was die Konfiguration sagt, halten jeden noch nicht versuchten Key zurück, und das
Locale endet partial oder failed.
Lösung: Das ist die Leitplanke bei der Arbeit: Was angekommen ist, ist geschrieben, und
zurückgehaltene Keys werden beim nächsten Lauf übersetzt. Heb das Budget an oder wechsle zu
"warn", wenn ein Lauf alles schaffen soll. Wie das Budget zählt, steht in
Übersetzungssicherheit. Code:
BUDGET_.
Eine Übersetzung wird wegen Inline-Markup zurückgehalten (Integritätsabweichung)
Symptom: Ein Key steht unter integrityMismatches und behält seinen vorigen Wert, oder Studio
zeigt Rejected: inline markup mismatch mit den schuldigen Tags: -<a href> für ein Tag, das der
Kandidat verloren hat, +<i> für eines, das er erfunden hat. verbatra check --qa meldet dasselbe
für Werte, die schon auf der Platte liegen.
Ursache: Der Kandidat trägt die Inline-Tags der Quelle nicht, oder er trägt sie unausgeglichen oder falsch verschachtelt, also lehnt das Integritäts-Gate ihn ab wie einen verlorenen Platzhalter.
Lösung: Lass den Key erneut laufen, oder korrigiere den Wert von Hand in Studio oder einer Arbeitsmappe; dasselbe Gate beurteilt beides. Was verglichen wird und welche Ablehnungen gewollt sind, steht unter Inline-Markup-Parität.
Studio: Der Port ist schon belegt
Symptom: port 5849 is already in use (oder dein --port-Wert).
Ursache: Ein anderer Prozess, oft ein früheres Studio, belegt den Port.
Lösung: Beende ihn, oder starte Studio auf einem anderen Port: verbatra studio --port 6000.
Studio: @verbatra/studio ist nicht installiert
Symptom: Verbatra Studio requires @verbatra/studio., gefolgt von den Installationsbefehlen.
Ursache: Studio ist ein eigenes Paket, das der Befehl studio bei Bedarf lädt.
Lösung: npm install --save-dev @verbatra/studio, oder für einen einmaligen Lauf
npx -y -p @verbatra/cli -p @verbatra/studio verbatra studio. Mit pnpm lies vorher
pnpm blockiert die Installationsskripte einer Abhängigkeit.
npx @verbatra/cli startet die CLI, die im Paket des aktuellen Ordners installiert ist, also
führe es im Projektstamm aus (oder nutze pnpm exec verbatra in einem Workspace-Unterpaket);
anderswo lädt npx die neueste CLI, die vielleicht nicht zu deinem lokalen @verbatra/studio oder
@verbatra/mcp passt.
Studio: Retranslate- und Translate-Aktionen fehlen
Symptom: Bearbeiten funktioniert, aber die Aktionen zum Neuübersetzen und zum Übersetzen offener Keys erscheinen nicht.
Ursache: Ausgaben beim Provider werden beim Start erlaubt, nach den Regeln unter Ausgaben und Agent-Tools, und ohne diese Erlaubnis werden die Ausgabe-Aktionen nicht registriert.
Lösung: Starte neu mit verbatra studio --allow-spend, außer das Projekt ist
nur mit Menschen. Siehe Review in Studio.
MCP: @verbatra/mcp ist nicht installiert
Symptom: Verbatra's MCP server requires @verbatra/mcp., gefolgt von den
Installationsbefehlen.
Ursache: Der MCP-Server ist ein eigenes Paket, das der Befehl mcp bei Bedarf lädt, also
funktioniert npx -y @verbatra/cli mcp allein nie.
Lösung: Führe npx -y @verbatra/mcp aus, oder installiere @verbatra/mcp neben der CLI und
starte verbatra mcp erneut. Mit pnpm lies vorher
pnpm blockiert die Installationsskripte einer Abhängigkeit.
MCP: tools/list eines Agenten zeigt nie translation.retranslateEntry oder translation.translatePending
Symptom: Die lokalen Tools funktionieren, aber die beiden Ausgabe-Tools fehlen, und ein Aufruf per Name scheitert als unbekanntes Tool.
Ursache: Ausgaben werden beim Start erlaubt, nach den Regeln unter Kostenpflichtige Tools, und die Tool-Liste darf sich nicht pro Verbindung ändern, also bleiben die Ausgabe-Tools ganz draußen.
Lösung: Starte neu mit verbatra mcp --allow-spend, außer das Projekt ist
nur mit Menschen.
Einen Lauf rückgängig machen (kein Fehlercode)
verbatra hat keinen Befehl zum Rückgängigmachen; die Versionskontrolle ist der Weg zurück. Setz die
Locale-Dateien, verbatra.lock.json und verbatra.provenance.json gemeinsam zurück, nie die Locale-Dateien allein. Siehe
Wiederherstellung und Rollback.