---
title: "verbatra import"
description: "Importiere eine ausgefüllte Übergabe als Arbeitsmappe, CSV, TSV oder XLIFF zurück in die Locale-Dateien, mit denselben Sicherheitsprüfungen."
type: "reference"
---
# verbatra import

Importiere eine ausgefüllte Übergabe als Arbeitsmappe, CSV, TSV oder XLIFF zurück in die Locale-Dateien, mit denselben Sicherheitsprüfungen.

Lies eine von einer Übersetzerin ausgefüllte Übergabe zurück in deine Locale-Dateien. Jeder Wert läuft durch dieselben Integritätsprüfungen wie ein automatischer Lauf: Werte, die bestehen, werden geschrieben, und die [Lock-Datei](https://verbatra.kreitz-webdev.de/de/docs/the-lock-file.md) wird aktualisiert; Werte, die durchfallen, werden zurückgehalten und gemeldet. Eine kaputte Zelle landet also nie in einer Locale-Datei. Ein echter Lauf ergänzt außerdem fehlende Einträge in einer vorhandenen `.gitignore`, siehe [.gitignore-Einträge](https://verbatra.kreitz-webdev.de/de/docs/cli.md#gitignore-einträge).

## Synopsis [#synopsis]

```bash
verbatra import <workbook> [flags]
```

- `<workbook>`: die Übergabe, die [`verbatra export`](https://verbatra.kreitz-webdev.de/de/docs/cli/export.md) geschrieben und die Übersetzerin ausgefüllt hat. Bei `xlsx` ist das die Arbeitsmappen-Datei; bei `csv`, `tsv`, `xliff2` und `xliff12` eine einzelne `<locale>.csv`-, `<locale>.tsv`- oder `<locale>.xlf`-Datei oder das Verzeichnis mit einer Datei pro Locale.

## Beispiele [#beispiele]

```bash
# import the filled workbook
verbatra import verbatra-translations.xlsx

# validate and report, write nothing
verbatra import verbatra-translations.xlsx --dry-run

# import every locale file in a CSV handoff directory
verbatra import handoff --format csv

# import one XLIFF file back from a CAT tool, naming the reviewer
verbatra import handoff/de.xlf --reviewer "Agency GmbH"
```

## Flags [#flags]

| Flag | Argument | Standard | Wirkung |
| --- | --- | --- | --- |
| `--dry-run` | keins | aus | validieren und melden, ohne Locale-Dateien zu schreiben oder das Lock zu aktualisieren |
| `--format` | `<format>` | aus der Endung des Pfads: `csv`, `tsv`, `xliff2` bei `.xlf` oder `.xliff`, sonst `xlsx`; bei einem Verzeichnis aus dem Export-Manifest oder den Locale-Dateien darin | `xlsx`, `csv`, `tsv`, `xliff2` oder `xliff12`; jedes der beiden XLIFF-Formate liest beide Versionen |
| `--reviewer` | `<name>` | keiner | Name, der bei jeder als reviewed oder final markierten XLIFF-Unit festgehalten wird; höchstens 64 Zeichen, gespeichert in der eingecheckten Herkunftsdatei |
| `--lock-timeout` | `<seconds>` | `600` | wie lange auf eine gehaltene Schreibsperre einer Locale gewartet wird; eine ganze Zahl von `1` bis `3600`, sonst ein Verwendungsfehler, Exit `2` |

Außerdem nimmt der Befehl die [globalen Flags](https://verbatra.kreitz-webdev.de/de/docs/cli.md#globale-flags) `--cwd`, `--config` und `--json`.

## Verhalten [#verhalten]

<Callout type="warn">
Jeder ausgefüllte Wert, der die Prüfungen besteht, ersetzt den Wert in der Locale-Datei, auch einen, den eine Person geschrieben hat. Führe zuerst `--dry-run` aus, um zu sehen, was sich ändern würde.
</Callout>

### Locale-Dateien und Überbleibsel [#locale-dateien-und-überbleibsel]

Bei `csv` und `tsv` kommt die Locale aus dem Dateinamen. Lass also jede Datei genau so heißen, wie sie exportiert wurde. Eine konfigurierte Ziel-Locale ohne Datei (oder, in einer Arbeitsmappe, ohne Blatt) scheitert mit `WORKBOOK_SHEET_MISSING`; sie wird nie stillschweigend übersprungen.

Eine Datei aus einem früheren Export mit breiterer `--locales`-Auswahl wird nie angewendet. Der Import gleicht das Verzeichnis mit dem Manifest des jüngsten Exports ab und lässt eine solche Locale mit `HANDOFF_FILE_STALE` scheitern. Exportiere die Locale neu oder lösche die Datei. Ein Verzeichnis ohne lesbares Manifest (von Hand zusammengestellt oder von einem Archiv beschnitten) wird so gelesen, wie es ist, ebenso eine Einzeldatei, die du direkt angibst.

### Schreibsperren [#schreibsperren]

<AvailableFrom version="0.12.0" />

`--lock-timeout` legt fest, wie lange eine Locale auf eine belegte [Schreibsperre](https://verbatra.kreitz-webdev.de/de/docs/the-lock-file.md#die-schreibsperre) wartet, bevor sie mit `LOCK_CONTENDED` scheitert, genau wie bei [`verbatra translate`](https://verbatra.kreitz-webdev.de/de/docs/cli/translate.md). Das Warten passiert, bevor die Datei der Locale geschrieben wird: Eine Locale, die ins Zeitlimit läuft, bleibt unberührt, die anderen werden trotzdem importiert, und der Befehl endet mit `1`. Ist eine Datei einmal geschrieben, wartet das Eintragen in die Lock-Datei bis zum Standard von zehn Minuten, egal was `--lock-timeout` sagt. Ein Warten über eine Sekunde meldet eine Zeile mit der Sperre und ihrem Halter (unter `--json` ein `lock-wait`-Eintrag). `--dry-run` nimmt keine Sperre und wartet daher nie.

### XLIFF [#xliff]

<AvailableFrom version="0.12.0" />

Eine XLIFF-Datei wird in der Version gelesen, die sie angibt, und eine einzelne Datei, deren Name keine konfigurierte Locale ist, wird über ihre angegebene Zielsprache zugeordnet. Eine Unit, deren Ziel dem aktuellen Wert entspricht, ändert nichts; jedes andere Ziel durchläuft das Integritäts-Gate wie eine Arbeitsmappen-Zeile. Eine als `reviewed` oder `final` markierte Unit (in 1.2 auch `signed-off` oder `approved="yes"`) wird als freigegeben festgehalten, mit `--reviewer` als Namen, und mit dem Hinweis `HANDOFF_REVIEWS_RECORDED` gemeldet. Eine Unit, deren ID keinen Quell-Key nennt, wird als fehlerhafte Zeile gemeldet. Siehe [An eine Übersetzungsagentur übergeben](https://verbatra.kreitz-webdev.de/de/docs/translation-agency.md).

### Leere und kaputte Zeilen [#leere-und-kaputte-zeilen]

Eine leere `Translation`-Zelle lässt eine Locale nie scheitern: Die Zeile wird übersprungen, ihre Lock-Baseline bleibt erhalten, und der Key wird als `unfilled` gemeldet, solange er noch eine Übersetzung braucht. Der Import einer Übergabe, die noch niemand ausgefüllt hat, gelingt also und listet jeden ausstehenden Key.

Eine einzelne unlesbare Zeile wird als fehlerhafte Zeile gemeldet, und der Rest der Locale wird trotzdem importiert. Eine Übergabe, die zu groß ist oder sich gar nicht parsen lässt (etwa kein lesbarer xlsx-Container), ist ein `SOURCE_INVALID`-Fehler des gesamten Laufs, dessen Meldung sagt, was nicht stimmte.

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, nicht als übersetzt, sobald sie das Integritäts-Gate passiert <AvailableFrom version="0.13.0" />. Siehe [Manuelle Übersetzung](https://verbatra.kreitz-webdev.de/de/docs/manual-translation.md#was-der-import-akzeptiert).

### Rückmeldung im Terminal [#rückmeldung-im-terminal]

<AvailableFrom version="0.12.0" />

`import` zeigt eine Zeile, während es die Datei liest und anwendet. Nach einem sauberen Import schlägt es `verbatra check` vor, nach `--dry-run` denselben Import ohne das Flag. Scheitert eine Locale oder bleibt sie partiell, schlägt es denselben Import vor, sobald du die abgelehnten Zeilen korrigiert hast, oder, wenn eine Locale mit einem Fehler scheiterte, der einen nächsten Schritt hat, genau diesen Schritt:

```text output
verbatra: importing verbatra-translations.xlsx... done (0.4s)
next: verbatra check (confirm every locale is in sync)
```

Diese Zeilen gehen auf stderr, und `--quiet` lässt sie weg. Siehe [Terminalausgabe](https://verbatra.kreitz-webdev.de/de/docs/cli/output.md#terminalausgabe).

### JSON-Ausgabe [#json-ausgabe]

Schema: [`import-envelope.json`](https://verbatra.kreitz-webdev.de/schema/v1/import-envelope.json) validiert den ganzen Envelope; [Schemas](https://verbatra.kreitz-webdev.de/de/docs/cli/output.md#schemas) listet die übrigen auf.

Mit `--json` trägt der [Envelope](https://verbatra.kreitz-webdev.de/de/docs/cli/output.md#json-ausgabe) eine `RunSummary`, dieselbe Form, die [`verbatra translate`](https://verbatra.kreitz-webdev.de/de/docs/cli/translate.md) ausgibt; [RunSummary](https://verbatra.kreitz-webdev.de/de/docs/sdk/run-summary.md) listet jedes Feld auf.

## Exit-Codes [#exit-codes]

| Code | Bedeutung |
| --- | --- |
| `0` | jede Ziel-Locale kam vollständig durch |
| `1` | der Lauf lief durch, aber eine oder mehrere Locales schlugen fehl oder blieben unvollständig |
| `2` | konnte nicht laufen: ein Fehler des gesamten Laufs (Konfiguration, Übergabe, Format oder eine kaputte Lock-Datei) oder ein Verwendungsfehler |
| `130` | mit Ctrl-C (SIGINT) abgebrochen, nachdem die Schreibsperren des Laufs freigegeben wurden |
| `143` | mit SIGTERM beendet, nachdem die Schreibsperren des Laufs freigegeben wurden |

<AvailableFrom version="0.9.0" />

Der Vertrag entspricht [`verbatra translate`](https://verbatra.kreitz-webdev.de/de/docs/cli/translate.md), eine manuelle Übergabe verzweigt in CI also genauso: Eine unvollständige Locale endet mit `1`, und eine Lock-Datei, die kaputt ist oder kaputtgeht, stoppt den gesamten Lauf mit `2` und lässt die übrigen Locales unberührt (bereits angewendete bleiben geschrieben). Den Vertrag, dem jeder Befehl folgt, findest du unter [Exit-Codes](https://verbatra.kreitz-webdev.de/de/docs/cli/output.md#exit-codes).

## Siehe auch [#siehe-auch]

- [Menschliche Übersetzung](https://verbatra.kreitz-webdev.de/de/docs/manual-translation.md) behandelt den vollständigen Roundtrip aus Export, Ausfüllen und Import und was eine Übersetzerin bearbeiten darf.
- [Übersetzungssicherheit](https://verbatra.kreitz-webdev.de/de/docs/translation-safety.md) erklärt die Prüfungen, die einen Wert zurückhalten können.
- [An eine Übersetzungsagentur übergeben](https://verbatra.kreitz-webdev.de/de/docs/translation-agency.md) behandelt den XLIFF-Roundtrip durch ein CAT-Tool.
- [`verbatra export`](https://verbatra.kreitz-webdev.de/de/docs/cli/export.md) erzeugt die Übergabe, die dieser Befehl liest.
