Zum Inhalt springen
Zum Inhalt springen

Docs / Anleitungen

Maschinell übersetzte Seite

Diese Seite wurde automatisch übersetzt und kann daher Fehler oder seltsame Formulierungen enthalten. Die englische Version ist die maßgebliche Quelle. Das englische Original lesen.

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.xlsx

Der 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:

SpalteBearbeitbarZweck
Keyneinder Key-Pfad; das Einzige, was eine Zeile ihrem String zuordnet
Sourceneinder Wert in der Quell-Locale
Current translationneinder vorhandene Zielwert, falls es einen gibt
Statusneinnew, changed (die Quelle hat sich seit der Übersetzung geändert) oder unchanged (nur mit --include-unchanged)
Translationjadie einzige Zelle, die die Übersetzerin ausfüllt
Source hashneinversteckt; erkennt eine Quelle, die sich nach dem Export geändert hat
Contextneindie Beschreibung des Keys, wenn das Quellformat eine trägt; wird nie importiert
Review statusneinok oder review, wenn ein Review-Flag einen zweiten Blick nahelegt
Review reasonsneindie 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 Translation aus, 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 Key zugeordnet 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_ROW_BASELINE_RETAINED 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-run

CSV 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 csv

Die 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 hash ist 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.xlsx

Nimm --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

Auf GitHub bearbeiten

Auf dieser Seite