Docs / Anleitungen
Maschinell übersetzte Seite
Keys aus dem Quellcode extrahieren
Übernimm die Übersetzungs-Keys, die dein Code schon aufruft, in die Quell-Locale-Datei, füll ihren Text aus und gib sie an translate weiter.
Nutze das, wenn dein Code deinem Katalog voraus ist: Du schreibst t("cart.empty", "Your cart is empty") in eine Komponente und willst den Key in der Quell-Locale-Datei, ohne ihn von Hand zu kopieren. Außerdem bringt es ein Projekt, das nie internationalisiert wurde, von seinem Code aus an den Start statt von einer leeren JSON-Datei.
verbatra extract liest deinen Quellcode und schreibt nur die Quell-Locale-Datei. Es ruft keinen Provider auf, braucht keinen API-Key und stellt keine Netzwerkanfrage.
Du brauchst:
- eine verbatra-Konfiguration (führ
verbatra initaus, wenn du keine hast); - Code, der
t(...),$t(...)oderi18n.t(...)von i18next aufruft, das einzige Framework, dasextractheute liest; - einen Namespace pro Katalogdatei. Ein Key mit Namespace wie
t("common:nav.home")wird gemeldet und nie geschrieben, weil eine Konfiguration genau eine Datei adressiert.
Zeig verbatra deinen Quellcode
Füg einen extract-Block mit den Verzeichnissen hinzu, die durchsucht werden sollen:
export default defineConfig({
// ...
extract: {
framework: "i18next",
roots: ["src"],
},
});Außerhalb von roots wird nichts gelesen, und Build-Ausgaben wie node_ und dist werden immer übersprungen. Liegt generierter Code unter einer Root, trag den Namen seines Verzeichnisses in exclude ein. Jedes Feld steht unter extract.
Sieh dir an, was hinzukäme
verbatra extract --dry-runDie Zusammenfassung listet die neuen Keys mit Datei und Zeile, die sie genannt haben, und schreibt nichts. Lies drei Teile davon, bevor du weitermachst:
- new keys: was ein echter Lauf der Quelldatei hinzufügen würde.
- dynamic keys: Aufrufstellen, deren Key kein vollständiger String ist, etwa
t("user." + id)odert(`nav.${page}`). Sie werden nie geschrieben. Trag diese Keys von Hand in den Katalog ein oder schreib den Aufruf mit einem literalen Key. - conflicts: ein Key mit zwei verschiedenen Standardwerten an zwei Aufrufstellen. Keiner der Werte wird geschrieben, also wähl einen Text und bring die Aufrufstellen in Einklang.
Füg die Keys hinzu
verbatra extractverbatra extract
42 files scanned, 18 keys already present
added 3 keys to locales/en.json
new keys (3):
nav.home src/components/Nav.tsx:14
nav.away src/components/Nav.tsx:15
cart.empty src/routes/cart.tsx:31
next: verbatra translate (translate the new keys)Ein Standardwert aus der Aufrufstelle wird zum Quelltext des Keys. Ein Key, der schon im Katalog steht, behält seinen Wert, sodass ein erneutes extract deine Änderungen nie überschreibt, und ein Lauf, der nichts Neues findet, lässt die Datei byteidentisch.
Ein Key, dessen Aufrufstelle keinen Standardwert hatte, wird mit leerem Wert hinzugefügt und im --json-Ergebnis unter withoutDefault aufgeführt. Schreib seinen Quelltext in die Quell-Locale-Datei, bevor du übersetzt.
Wenn dein Format xliff oder apple-xcstrings ist, leg den Quellkatalog zuerst an (den .xcstrings-Katalog in Xcode): extract hängt an ihn an, legt ihn aber nie an.
Übersetze die neuen Keys
verbatra translateDie neuen Keys fehlen in jeder Ziel-Locale, also übersetzt der Lauf genau sie und sonst nichts. Wenn der Stapel groß ist, schau dir die Kosten vorher mit --estimate an.
Wenn du TypeScript nutzt, erzeug deine Key-Deklarationen mit verbatra types neu, damit ein Tippfehler in einem neuen Key die Kompilierung scheitern lässt.
Halte Code und Katalog im Gleichschritt
extract fügt nur hinzu. Zwei Prüfungen, die nur lesen, decken die anderen Richtungen ab:
verbatra diff --unusedlistet Quell-Keys, die keine Aufrufstelle mehr nennt. Es nutzt dieextract-Roots und löscht nichts; ob du einen Key entfernst, entscheidest du. Unter Ungenutzte Quell-Keys steht, wann die Liste vollständig genug ist, um ihr zu trauen.verbatra doctor --literalslistet für Nutzer sichtbare Strings, die nie durcht(...)gegangen sind, etwa JSX-Text oder einaria-label. Unter Nicht übersetzte Literale steht, was zählt und wie du eines zurückhältst.
Führ verbatra extract erneut aus, wann immer du Aufrufstellen hinzufügst. Das lässt sich gefahrlos wiederholen, und es endet mit 0, egal was es findet. Ein CI-Schritt, der bei neuen Keys scheitern soll, liest deshalb die Liste added aus --json statt den Exit-Code.
Siehe auch
verbatra extract: die Aufrufformen, die es liest, der vollständige Bericht und das JSON-Ergebnis.- Die Konfigurationsdatei: der
extract-Block. verbatra translate: füllt die Ziel-Locales.- Fehlercodes:
EXTRACT_, wenn der Block fehlt.NOT_ CONFIGURED