Referenz / SDK
Maschinell übersetzte Seite
Bearbeiten und prüfen
Einen Key lesen, bearbeiten, freigeben, ablehnen oder neu übersetzen, Werte gesammelt oder seitenweise lesen, oder viele Keys auf einmal prüfen.
Operationen auf einzelnen Keys
Das sind die Nahtstellen, an denen Verbatra Studio ansetzt; nutze sie, um dein eigenes
Review-Tooling zu bauen. Die Funktionen, die locale und key nehmen, lösen beide bei jedem Aufruf frisch auf und werfen
UNKNOWN_ oder UNKNOWN_, wenn eines von beiden nicht existiert.
keyValue Verfügbar ab 0.5.0
Liest den aktuellen Quellwert eines Keys und, falls vorhanden, seinen aktuellen Zielwert für eine Locale. Nur lesend.
function keyValue(
input: KeyValueInput,
deps?: KeyValueDeps,
): Promise<KeyValueResult>;Eigenschaft
Typ
Rückgabe: KeyValueResult
Wirft: UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_
Beispiel: Einen einzelnen Key bearbeiten und neu übersetzen
Gibt { source, target? } zurück; target fehlt genau dann, wenn der Key in dieser Locale noch
nicht existiert, und kommt, wenn vorhanden, mit provenance, der ausgewerteten KeyProvenance des
Keys: { origin, provider?, model?, reviewState, reviewer? }.
Das Ergebnis trägt außerdem description, wenn die Quelldatei dem Key eine gibt: eine
ARB-@key.description, eine XLIFF-Notiz oder einen Kommentar in gettext, Apples .strings oder
.NET-.resx.
keyContext Verfügbar ab 0.12.0
Liest, was eine Übersetzerin braucht, um einen Key in einer Ziel-Locale zu schreiben: alles, was keyValue liefert, dazu die Glossarbegriffe, die auf den Quelltext zutreffen, und das maxLength des Keys. Gib einen draft mit, um ihn gegen diese Begriffe zu prüfen. Nur lesend. Um ein dateibasiertes Glossar neu von der Platte zu lesen, nimmt er loaded aus loadConfigWithMeta, keine bloße Konfiguration.
function keyContext(
input: KeyContextInput,
deps?: KeyContextDeps,
): Promise<KeyContext>;Eigenschaft
Typ
Rückgabe: KeyContext
Wirft: UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_
Ein nicht lesbares Glossar wirft nicht: glossary ist leer und glossaryNotice trägt den Code und die geschwärzte Meldung des Fehlers. draftCheck sagt pro zutreffendem Begriff, ob der Entwurf die geforderte Übersetzung nutzt und welche verbotenen Varianten er verwendet.
localeHistory Verfügbar ab 0.12.0
Listet die letzten Git-Commits, die die Quell- oder eine Ziel-Locale-Datei geändert haben, neueste zuerst. Nur lesend; es führt git log über das injizierbare execFile aus.
function localeHistory(
input: LocaleHistoryInput,
deps?: LocaleHistoryDeps,
): Promise<LocaleHistoryResult>;Eigenschaft
Typ
Rückgabe: LocaleHistoryResult
Wirft: LOCALE_, LOCALE_
Jeder Commit trägt hash, author (der Name nach .mailmap, nie die E-Mail), authorDate, subject und touchedPaths. limit ist standardmäßig LOCALE_ (50), höchstens LOCALE_ (200), abgerundet und mindestens 1. Steuer- und bidirektionale Formatierungszeichen fliegen aus author und subject; ein Commit mit unlesbaren Metadaten fehlt. Ohne Git oder Repository, oder wenn git log LOCALE_ oder LOCALE_ überschreitet, ist das Ergebnis { available: false, reason }, ein Grund aus LOCALE_. Siehe Studio und MCP.
editEntry Verfügbar ab 0.5.0
Schreibt eine von Hand getippte Korrektur für einen Key und eine Locale. Der Kandidatenwert durchläuft dasselbe Integritäts-Gate wie eine Provider-Übersetzung, bevor irgendetwas die Platte erreicht; bei Annahme werden die Locale-Datei und der Lock-Eintrag für diesen Key innerhalb der Schreibsperre dieser Locale aktualisiert. Ruft nie einen Provider auf.
function editEntry(
input: EditEntryInput,
deps?: EditEntryDeps,
): Promise<EditEntryResult>;Eigenschaft
Typ
Rückgabe: EditEntryResult
Wirft: UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_, KEY_, LOCK_, RUN_, TARGET_, LOCALE_, LOCK_, LOCK_, PROVENANCE_
Beispiel: Einen einzelnen Key bearbeiten und neu übersetzen
Gibt { accepted: true, value } zurück oder
{ accepted: false, reason: "placeholder" | "markup" | "icu" | "degenerate" | "empty", value },
wobei nichts geschrieben wird (das Integritäts-Gate).
Baue jedes Schema über die Gründe aus dem exportierten Tupel INTEGRITY_. "empty"
lehnt einen leeren Wert für eine Quelle mit Text ab; leere einen Key stattdessen mit dem
[[CLEAR]]-Sentinel der Arbeitsmappe. Eine placeholder- oder markup-Ablehnung trägt zusätzlich
details: jeden betroffenen Platzhalter oder Tag, mit -, wenn der Kandidat ihn weggelassen, oder
+, wenn er ihn erfunden hat.
Der Wert wird in verbatra.provenance.json mit der Herkunft human festgehalten; übergib
actor: "agent", wenn ein KI-Agent ihn geschrieben hat, damit der Eintrag das sagt (der Aufrufer
behauptet es, geprüft wird es nicht). Eine beschädigte Herkunftsdatei wirft
PROVENANCE_, bevor der Wert das Gate durchläuft, und nichts wird geschrieben; eine von
einem neueren verbatra, oder eine, die der Eintrag über die Größe wachsen ließe, die verbatra
zurückliest, bleibt unangetastet und der Wert wird ohne Eintrag geschrieben.
Mit actor: "agent" wirft ein Key, der auf die pinnedKeys der Konfiguration passt, KEY_, bevor etwas geschrieben wird. Die Bearbeitung eines gepinnten Keys durch einen Menschen wird angenommen.
lockAcquireTimeoutMs begrenzt die Wartezeit auf die Schreibsperre der Locale, bevor der Aufruf mit LOCK_ scheitert (standardmäßig zehn Minuten), onLockWait meldet diese Wartezeit, und eine ungültige Grenze scheitert mit LOCK_, bevor etwas gelesen wird.
retranslateEntry Verfügbar ab 0.5.0
Lässt den Provider für genau einen Key und eine Locale über denselben Provider-Pfad und dasselbe
Integritäts-Gate wie translate neu laufen und schreibt bei Annahme die Locale-Datei und den
Lock-Eintrag nur für diesen Key.
function retranslateEntry(
input: RetranslateEntryInput,
deps?: RetranslateEntryDeps,
): Promise<RetranslateEntryResult>;Eigenschaft
Typ
Rückgabe: RetranslateEntryResult
Wirft: MACHINE_, LOCK_, UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_, KEY_, KEY_, PROVIDER_, NETWORK_, CONFIG_, LOCK_, RUN_, TARGET_, LOCALE_, LOCK_, PROVENANCE_, SENSITIVE_
Beispiel: Einen einzelnen Key bearbeiten und neu übersetzen
Gibt { accepted: true, value, reviewReasons } zurück (die Review-Grund-Codes des neuen Werts)
oder die Ablehnung, die editEntry liefert. Anders als bei translate wirft ein Provider-Fehlschlag hier: ein ProviderError, exportiert aus
@verbatra/sdk, mit einem stabilen code wie RATE_ oder AUTH_. Unter provider: { id: "none" } wirft es zuerst MACHINE_, bevor es irgendetwas liest oder sperrt.
Der neue Wert wird in verbatra.provenance.json als machine festgehalten, mit der id des
Providers, der geantwortet hat, und dem konfigurierten Modell. Ein Provider aus deinem eigenen
createProvider wird unter seiner eigenen id festgehalten, und ohne Modell, wenn diese id von der
konfigurierten abweicht. Eine beschädigte Herkunftsdatei wirft PROVENANCE_, bevor der
Provider aufgerufen wird.
Ein Key, dessen Wert ein Mensch geschrieben, importiert oder außerhalb von verbatra geändert hat, wirft KEY_ innerhalb der Schreibsperre, bevor der Provider aufgerufen wird, außer du übergibst includeHuman: true oder die Konfiguration setzt humanEdits: "overwrite"; bei einer Provenienz-Datei von einem neueren verbatra zählt jeder vorhandene Wert als geschützt. Ein Key, der auf pinnedKeys passt, wirft KEY_, bevor der Provider gebaut wird, auch mit includeHuman.
approveEntry Verfügbar ab 0.12.0
Hält fest, dass eine Person den aktuellen Wert eines Keys in einer Locale geprüft hat und ihn
übernimmt. Schreibt nur verbatra.provenance.json, nie eine Locale-Datei oder die Lock-Datei, und
ruft keinen Provider auf. Die Freigabe speichert zusätzlich den Quell-Hash des Keys aus der
Lock-Datei, sodass sie wieder als ungeprüft gilt, sobald sich die Quelle ändert; jeder spätere
Schreibvorgang, der den Wert ändert, beginnt einen frischen, ungeprüften Eintrag.
function approveEntry(
input: ReviewDecisionInput,
deps?: ReviewDecisionDeps,
): Promise<ReviewDecisionResult>;Eigenschaft
Typ
Rückgabe: ReviewDecisionResult
Wirft: REVIEWER_, LOCK_, UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_, LOCK_, RUN_, REVIEW_, LOCALE_, REVIEW_, LOCK_, PROVENANCE_, PROVENANCE_
Beispiel: Die Review-Warteschlange abarbeiten
expectedValue ist der Text,
den die prüfende Person gesehen hat, oder du übergibst expectedValueHash mit dem valueMarker, der ihn erzeugt hat: Der Aufruf wirft REVIEW_, wenn der Key keinen
oder einen anderen Wert hat, und REVIEW_, wenn sich die Quelle geändert hat, seit
der Wert geschrieben wurde. reviewer ist optionaler Freitext mit 1 bis 64 Zeichen ohne
Steuerzeichen (sonst REVIEWER_), landet in der committeten Datei und wird nie von verbatra
ausgefüllt. Gibt { locale, key, provenance } zurück. Ein Wert ohne bisherigen Eintrag, oder einer,
der außerhalb von verbatra geändert wurde, wird mit der Herkunft unknown festgehalten.
rejectEntry Verfügbar ab 0.12.0
Hält fest, dass eine Person den aktuellen Wert eines Keys in einer Locale geprüft hat und ihn
ablehnt, und entfernt ihn aus der Locale-Datei und der Lock-Datei, sodass check und diff ihn als
fehlend melden und der nächste translate-Lauf ihn wieder füllt (unter provider: { id: "none" }
bleibt er fehlend, bis jemand einen schreibt). Der Herkunftseintrag bleibt als rejected mit einem
Hash des entfernten Texts, und der passende Memory-Eintrag auf diesem Rechner wird gelöscht; ein
späteres translate überspringt jeden exakten oder unscharfen Memory-Treffer für den Key, der zu
diesem Hash passt, sodass kein Memory eines Rechners den Text zurückbringt. Ruft keinen Provider auf.
function rejectEntry(
input: ReviewDecisionInput,
deps?: ReviewDecisionDeps,
): Promise<ReviewDecisionResult>;Eigenschaft
Typ
Rückgabe: ReviewDecisionResult
Wirft: REVIEWER_, LOCK_, UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_, LOCK_, RUN_, REVIEW_, LOCALE_, TARGET_, REVIEW_, REVIEW_, LOCK_, PROVENANCE_, PROVENANCE_
Beispiel: Die Review-Warteschlange abarbeiten
Die Eingabe wird wie bei approveEntry geprüft,
nur dass eine veraltete Quelle eine Ablehnung nicht verhindert. Gibt { locale, key, provenance }
zurück. Ein Format, das einen Key behält, den es nicht übergeben bekommt, XLIFF, wirft
REVIEW_, nachdem es die Datei wiederhergestellt hat.
Beide Aufrufe nehmen die Schreibsperre der Locale mit lockAcquireTimeoutMs und onLockWait wie
bei editEntry; LOCK_ heißt, die Grenze ist keine ganze Zahl von mindestens 0
Millisekunden. Die Wartezeit begrenzt nicht die Sperre der Lock-Datei, die zum Festhalten der
Entscheidung genommen wird: Die erlaubt immer die zehn Minuten des Standards.
Keiner meldet eine Entscheidung, die er nicht speichern konnte: Eine Herkunftsdatei aus einem
neueren verbatra, oder eine, die durch die Entscheidung über die Größe wachsen würde, die verbatra
wieder einliest, wirft PROVENANCE_, bevor etwas geschrieben wird.
createValueMarker Verfügbar ab 0.12.0
Erzeugt die Markierung, mit der eine Oberfläche einen Wert ohne seinen Text zeigt: mark(value)
liefert [redacted length=<n> hash=<h>], und hash(value) liefert h, einen 16-stelligen
Hex-HMAC mit zufälligem Salt (oder dem übergebenen salt), sodass ein Hash nur unter derselben
Markierung passt. Übergib sie als valueMarker an approveEntry oder rejectEntry, damit
expectedValueHash statt expectedValue gilt. verbatra mcp --redact-values erzeugt eine pro
Serverstart.
function createValueMarker(salt?: Uint8Array): ValueMarker;Rückgabe: ValueMarker
Inhalte in großen Mengen lesen Verfügbar ab 0.10.0
localeValues
Liest den aktuellen Quell- und Zielwert jedes Keys über die angefragten Ziel-Locales in einem
Durchgang über die Dateien auf der Platte, etwa um Werte statt Key-Namen zu durchsuchen: das
Gegenstück zu keyValue für große Mengen. Nur lesend.
function localeValues(
input: LocaleValuesInput,
deps?: LocaleValuesDeps,
): Promise<readonly LocaleValues[]>;Eigenschaft
Typ
Rückgabe: readonly LocaleValues[]
Wirft: UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_
Beispiel: Alle Werte auf einmal lesen
Ein weggelassenes locales deckt jedes konfigurierte
Ziel-Locale ab. Gibt ein { locale, keys, values } pro Locale zurück: keys listet jeden Key in
Quellreihenfolge, danach die nur im Ziel vorhandenen, und values bildet jeden Key auf
{ source?, target? } ab. Ohne target ist er dort noch nicht übersetzt; ohne source ist er
verwaist (aus der Quelle verschwunden). values hat keinen Prototyp: Jeder Key, auch _
oder constructor, ist eine eigene Eigenschaft, und ein fehlender Key ergibt undefined.
Jedes Paar mit einem target trägt außerdem provenance, dieselbe KeyProvenance, die keyValue
meldet.
localeValuesPage Verfügbar ab 0.12.0
Liest eine Seite von localeValues, optional eingegrenzt auf exakte keys oder auf eine query, die ohne Rücksicht auf Groß- und Kleinschreibung gegen Key, Quell- und Zieltext geprüft wird, und gibt einen Cursor für die nächste Seite zurück. Der MCP-Server und das Agent-Tool verbatra_ in Studio blättern damit. Nur lesend.
function localeValuesPage(
input: LocaleValuesPageInput,
deps?: LocaleValuesDeps,
): Promise<LocaleValuesPage>;Eigenschaft
Typ
Rückgabe: LocaleValuesPage
Wirft: UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, UNKNOWN_, PAGE_, PAGE_
Gibt { locales, nextCursor? } zurück: Jede Locale mit einem Eintrag auf der Seite trägt entries, jeweils { key, source?, target?, provenance? } wie bei localeValues, sortiert nach Locale und dann nach Key. Eine Seite hält höchstens limit Einträge: standardmäßig PAGE_ (200), höchstens PAGE_ (1000). Gib nextCursor mit denselben Filtern als cursor zurück, bis er fehlt. Jeder Aufruf liest die Dateien neu, deshalb wird ein Cursor, dessen Key verschoben wurde oder fehlt, abgelehnt, statt Einträge zu überspringen oder zu wiederholen.
Ein cursor ist höchstens PAGE_ (512) Zeichen lang. Der MCP-Server und Studio nehmen eine query mit höchstens LOCALE_ (500) Zeichen an.
Review und Neuübersetzung im Stapel Verfügbar ab 0.12.0
Jeder dieser Aufrufe führt den passenden Einzel-Key-Aufruf einmal pro Eintrag in Reihenfolge aus
und gibt { results } mit einem Ergebnis pro Eintrag zurück. Ein gescheiterter Eintrag hält den
Stapel nicht an: Sein Ergebnis ist { locale, key, ok: false, code, message } mit dem Code des
SdkError, Adapter-Fehlers oder ProviderError und einer geschwärzten Nachricht. Jeder andere
Fehler stoppt den Stapel mit einem BatchInterruptedError. Eine leere entries-Liste ergibt leere
results.
approveEntries
Führt approveEntry pro Eintrag mit denselben Prüfungen aus; reviewer gilt für jeden Eintrag. Ein
erfolgreiches Ergebnis ist { ok: true, locale, key, provenance }. lockAcquireTimeoutMs begrenzt
das Warten jedes Eintrags auf die Schreibsperre seiner Locale, und onLockWait meldet dieses
Warten. Ein Eintrag, dessen Sperre über das Timeout hinaus belegt bleibt, scheitert mit
LOCK_, und jeder spätere Eintrag, der dieselbe Sperre braucht, bekommt
{ locale, key, ok: false, skipped: true, code: "LOCK_, statt erneut zu
warten; Einträge anderer Locales werden weiter entschieden.
function approveEntries(
input: ReviewEntriesInput,
deps?: ReviewDecisionDeps,
): Promise<ReviewEntriesResult>;Eigenschaft
Typ
Rückgabe: ReviewEntriesResult
Wirft: LOCK_
rejectEntries
Führt rejectEntry pro Eintrag aus und entfernt jeden
abgelehnten Wert. Ein erfolgreiches Ergebnis ist { ok: true, locale, key, provenance }. Ein
Sperr-Timeout überspringt die späteren Einträge, die diese Sperre brauchen, wie bei
approveEntries.
function rejectEntries(
input: ReviewEntriesInput,
deps?: ReviewDecisionDeps,
): Promise<ReviewEntriesResult>;Eigenschaft
Typ
Rückgabe: ReviewEntriesResult
Wirft: LOCK_
approveLocale Verfügbar ab 0.12.0
Gibt die ganze Review-Warteschlange einer Locale frei, oder nur ihre Werte mit einer der origins,
in einem Schreibvorgang von verbatra.provenance.json unter der Schreibsperre der Locale, jede so
festgehalten, wie approveEntry eine festhält. Sie nimmt keinen erwarteten Wert und gibt frei, was
beim Aufruf in der Warteschlange steht, zeig der prüfenden Person die Warteschlange also vorher.
Gibt { locale, approved, sourceChanged } zurück: die freigegebenen Keys und die Keys aus der
Warteschlange, die ungeprüft bleiben, weil sich ihr Quelltext seit dem Schreiben geändert hat. Ruft
keinen Provider auf und scheitert mit PROVENANCE_, statt Freigaben zu melden, die
sie nicht speichern konnte.
function approveLocale(
input: ApproveLocaleInput,
deps?: ApproveLocaleDeps,
): Promise<ApproveLocaleResult>;Eigenschaft
Typ
Rückgabe: ApproveLocaleResult
Wirft: REVIEWER_, LOCK_, UNKNOWN_, UNKNOWN_, LOCALE_, LOCALE_, SOURCE_, SOURCE_, LOCK_, RUN_, LOCALE_, LOCK_, PROVENANCE_, PROVENANCE_
retranslateEntries
Führt retranslateEntry pro Eintrag aus und macht damit bis zu einen Provider-Aufruf pro Eintrag.
Es ist kein translate-Lauf: maxTokens und budgetBehavior gelten nicht, und die Zahl der
Einträge ist die einzige Grenze für die Kosten. Ein abgeschlossenes Ergebnis ist
{ ok: true, locale, key, result }, wobei result das ist, was retranslateEntry zurückgegeben
hat, auch ein Wert, den das Integritäts-Gate abgelehnt hat. Ein Wert, den ein Mensch geschrieben
hat, scheitert mit KEY_, außer du übergibst includeHuman: true. Die Sperroptionen
wirken wie bei approveEntries, und das Warten endet vor dem Provider-Aufruf.
function retranslateEntries(
input: RetranslateEntriesInput,
deps?: RetranslateEntryDeps,
): Promise<RetranslateEntriesResult>;Eigenschaft
Typ
Rückgabe: RetranslateEntriesResult
Wirft: LOCK_
Ein Fehler, an dem jeder Eintrag gleich scheitern würde, beendet die Provider-Aufrufe:
MISSING_, AUTH_, RATE_ (auch ein erschöpftes Kontingent),
NETWORK_, PROVIDER_, CONFIG_ oder
MACHINE_. Der Eintrag, der ihn ausgelöst hat, scheitert wie gewohnt, und jeder
Eintrag danach bekommt { locale, key, ok: false, skipped: true, code, message } mit diesem Code,
ohne weiteren Provider-Aufruf.
Ein Sperr-Timeout überspringt die späteren Einträge, die diese Sperre brauchen, mit
LOCK_, wie bei approveEntries; bei einem Format, das alle Locales in einer Datei hält,
ist das jeder spätere Eintrag.
BatchInterruptedError Verfügbar ab 0.12.0
Wird von approveEntries, rejectEntries und retranslateEntries geworfen, wenn ein Fehler, der
kein Ergebnis eines einzelnen Eintrags ist, etwa ein unerwarteter Dateisystemfehler, einen Stapel
mittendrin stoppt. results enthält die Ergebnisse der vorher abgeschlossenen Einträge in ihrer
Reihenfolge, deren Schreibvorgänge auf der Platte bleiben; entry nennt das laufende
{ locale, key }, und cause ist der ursprüngliche Fehler.
Einträge nach entry sind nicht gelaufen.
class BatchInterruptedError<R = ReviewBatchOutcome | RetranslateBatchOutcome> extends ErrorEigenschaft
Typ