Docs / Anleitungen
Maschinell übersetzte Seite
Mit Excel oder CSV übergeben
Exportiere unübersetzte Strings in eine Excel-Arbeitsmappe oder CSV-Dateien für Übersetzer und importiere das Ergebnis mit denselben Sicherheitsprüfungen.
Das brauchst du, wenn ein Mensch bestimmte Strings übersetzen soll: Marketingtexte, juristische Texte oder die Sprachen, auf die es am meisten ankommt. Du exportierst die zu übersetzenden Strings, eine Übersetzerin füllt sie aus, und du importierst die Datei zurück in deine Locale-Dateien.
Der Export wählt genau die Keys, die ein automatischer Lauf übersetzen würde (die neuen und geänderten), und der Import führt dieselben Integritätsprüfungen aus wie translate. Ein von Hand getippter Wert, der einen Platzhalter kaputt macht, wird also zurückgehalten und gemeldet statt geschrieben. Keiner der beiden Befehle ruft einen Provider auf oder braucht einen API-Key.
Du brauchst ein verbatra-Projekt mit mindestens einer Ziel-Locale.
Der Roundtrip
# 1. Export the strings that need translating
verbatra export
# 2. A translator fills the Translation column and sends the file back
# 3. Import the filled workbook
verbatra import verbatra-translations.xlsxDer Export schreibt verbatra-translations.xlsx ins Arbeitsverzeichnis. Der Import prüft jede ausgefüllte Zeile, schreibt die Werte, die bestehen, und schreibt die Lock-Datei für genau die angenommenen Keys fort, so wie es ein translate-Lauf tun würde.
Was in der Arbeitsmappe landet
Die Arbeitsmappe beginnt mit einem Blatt Instructions, danach folgt ein Blatt pro Ziel-Locale, benannt nach der Locale (de, fr, ...). Jedes Locale-Blatt hat dieselben Spalten:
| Spalte | Bearbeitbar | Zweck |
|---|---|---|
Key | nein | der Key-Pfad; das Einzige, was eine Zeile ihrem String zuordnet |
Source | nein | der Wert in der Quell-Locale |
Current translation | nein | der vorhandene Zielwert, falls es einen gibt |
Status | nein | new, changed (die Quelle hat sich seit der Übersetzung geändert) oder unchanged (nur mit --include-unchanged) |
Translation | ja | die einzige Zelle, die die Übersetzerin ausfüllt |
Source hash | nein | versteckt; erkennt eine Quelle, die sich nach dem Export geändert hat |
Context | nein | die Beschreibung des Keys, wenn das Quellformat eine trägt; wird nie importiert |
Review status | nein | ok oder review, wenn ein Review-Flag einen zweiten Blick nahelegt |
Review reasons | nein | die Review-Gründe hinter einem review-Status |
Jede Spalte außer Translation ist per Blattschutz gesperrt, und Translation nutzt das Textformat von Excel, sodass ein Wert wie 007 oder einer, der mit = beginnt, wörtlicher Text bleibt. Die Review-Spalten sind nur Hinweise: Der Import liest sie nie.
Die Übergabe
Gib der Übersetzerin diese Regeln mit (das Blatt Instructions wiederholt sie):
- Füll die Spalte
Translationaus, sonst nichts. - Benenne die Sprach-Tabs nicht um, lösche sie nicht und ändere ihre Reihenfolge nicht. Jeder Tab wird über seinen exakten Namen einer Locale zugeordnet, ein umbenannter oder fehlender Tab lässt diese Locale also scheitern.
- Zeilen sortieren und filtern ist in Ordnung, weil Zeilen über
Keyzugeordnet werden. Die Spalten müssen bleiben, wo sie sind. - Lass eine Zelle leer für "noch nicht übersetzt". Eine halb ausgefüllte Arbeitsmappe kann jetzt zurückkommen und der Rest später.
- Um einen vorhandenen Wert absichtlich zu leeren, tipp genau
[[CLEAR]].
Was der Import akzeptiert
Jede ausgefüllte Zeile wird am aktuellen Projekt gemessen, bevor irgendetwas geschrieben wird:
- Quell-Drift: Hat sich der Quellstring nach dem Export geändert, wird die Zeile zurückgehalten, sodass nie die Übersetzung einer alten Quelle landet.
- Integrität: Platzhalter, Inline-Markup und ICU-Struktur müssen zur Quelle passen, wie bei jedem Lauf. Siehe das Integritäts-Gate.
- Entartete Werte: eine Wiederholungsschleife, eine ausufernde Länge oder ein leerer Wert für eine nicht leere Quelle wird zurückgehalten.
- Unbekannte Keys: Eine ausgefüllte Zeile, deren Key weder in der Quelle noch im Ziel existiert, lässt das Blatt dieser Locale scheitern. Ein Key, der nur im Ziel existiert, wird nicht geschrieben.
- Unveränderte Zeilen (ab 0.13.0): In einer CSV-, TSV- oder xlsx-Übergabe bleibt eine ausgefüllte Zeile, die dem Wert eines aktuellen Keys entspricht, unberührt und wird als unverändert gemeldet, sobald sie dasselbe Gate besteht.
Eine zurückgehaltene oder leere Zeile behält ihre Lock-Baseline, sodass der Key wieder exportiert wird, bis er erledigt ist; eine leere Zeile, deren Quelle gedriftet ist, löst zusätzlich BLANK_ aus. Eine unlesbare Zeile oder ein doppelter Key wird gemeldet, ohne das Blatt scheitern zu lassen. Jedes Blatt ist eine Locale in der Laufzusammenfassung, und der Import nutzt dieselben Exit-Codes wie translate. Eine Übergabe passt also in dieselben CI-Prüfungen wie ein automatischer Lauf. Die Details stehen unter verbatra import.
Erst der Dry Run
Schau dir an, was eine zurückgekommene Arbeitsmappe schreiben würde, ohne eine Datei anzufassen:
verbatra import verbatra-translations.xlsx --dry-runCSV und TSV statt einer Arbeitsmappe
Will ein Dienstleister oder eine Pipeline reinen Text, schreibt --format csv oder --format tsv dieselben Spalten als eine Datei pro Locale:
# write handoff/de.csv and handoff/fr.csv
verbatra export --format csv --out handoff
# import every locale file in the directory back
verbatra import handoff --format csvDie Locale kommt aus dem Dateinamen, also lass die Dateien so benannt, wie sie exportiert wurden. Im Vergleich zur Arbeitsmappe:
- Nichts ist geschützt. Jede Spalte ist bearbeitbar, und
Source hashist sichtbar. Einem bearbeiteten Hash wird nie vertraut: Die Zeile wird mit der aktuellen Quelle verglichen und als Drift zurückgehalten. - Es gibt kein Blatt Instructions. Gib die Regeln oben selbst an die Übersetzerin weiter.
- Formeln werden entschärft. Ein Wert, der mit
=,+,-,@, einem Tab oder einem Wagenrücklauf beginnt, wird mit einem führenden Apostroph geschrieben, damit eine Tabellenkalkulation ihn als Text behält; der Import entfernt den Apostroph wieder. Behandle eine zurückgekommene Datei trotzdem als nicht vertrauenswürdige Eingabe. - Ein engerer erneuter Export legt ältere Dateien still. Eine Datei, die von einem früheren, breiteren Export übrig ist, wird beim Import abgelehnt statt angewendet. Gelöscht wird nichts.
XLIFF für ein CAT-Tool
Arbeitet eine Agentur in einem CAT-Tool wie Trados, memoQ oder OmegaT, exportiere stattdessen XLIFF: siehe An eine Agentur übergeben.
TMX ist ein anderer Weg
Eine Übergabe bringt die offenen Strings jeder Locale zu einem Menschen. verbatra tmx bewegt den ganzen Übersetzungsspeicher als eine mehrsprachige Datei zwischen Tools, deshalb ist es kein Wert für export --format.
Auswählen, was exportiert wird
Standardmäßig enthält der Export nur die fehlenden und geänderten Strings:
# Only the German and French sheets
verbatra export --locales de,fr
# Also include strings that are already up to date
verbatra export --include-unchanged
# Write to a specific path
verbatra export --out handoff/round-2.xlsxNimm --include-unchanged, wenn eine Übersetzerin eine ganze Locale als Kontext haben möchte. --out muss im Projekt bleiben und darf keine Datei benennen, von der das Projekt abhängt. Jedes Flag und jede Regel findest du unter verbatra export.
Die Review-Spalten
Beide Spalten werden beim Export aus der Quelle und dem aktuellen Wert berechnet, eine Zeile ohne Übersetzung ist also immer ok. Review reasons schreibt jeden Grund klein mit Bindestrichen (length-ratio-outlier), außer den beiden, die nur ein Lauf sehen kann (provider-degraded, fuzzy-cache-reuse) und die nie erscheinen. Dazu kommt icu-arms mit den fehlenden oder überzähligen Zweigen, wenn die ICU-Zweige eines Werts nicht zur Zielsprache passen; das Integritäts-Gate lehnt diesen Wert ab, also korrigier ihn, bevor die Zeile zurückkommt. Um ein Flag loszuwerden, korrigier die Übersetzung.
Aus dem SDK
Die beiden Befehle umhüllen exportWorkbook und importWorkbook:
import { exportWorkbook, importWorkbook, loadConfig } from "@verbatra/sdk";
const config = await loadConfig();
await exportWorkbook({ config, format: "csv", out: "handoff" });
const summary = await importWorkbook({ config, workbook: "handoff", format: "csv" });importWorkbook gibt dieselbe RunSummary zurück wie translate.
Siehe auch
verbatra exportundverbatra import: jedes Flag, die Ausgabepfade und die Exit-Codes.- Übersetzungssicherheit: das Integritäts-Gate hinter jedem Schreibvorgang.
- Ohne maschinelle Übersetzung arbeiten: ein Projekt, in dem jede Übersetzung von einem Menschen kommt.