---
title: "Confier avec Excel ou CSV"
description: "Exporte les chaînes non traduites vers un classeur Excel ou des fichiers CSV pour un traducteur, puis réimporte le résultat avec les mêmes contrôles de sûreté."
type: "how-to"
---
# Confier avec Excel ou CSV

Exporte les chaînes non traduites vers un classeur Excel ou des fichiers CSV pour un traducteur, puis réimporte le résultat avec les mêmes contrôles de sûreté.

Utilise ceci quand une personne doit traduire certaines chaînes : textes marketing, textes juridiques ou langues qui comptent le plus. Tu **exportes** les chaînes à traduire, un traducteur les remplit, et tu **importes** le fichier dans tes fichiers de locale.

L'export choisit exactement les clés qu'une exécution automatisée traduirait (les nouvelles et les modifiées), et l'import applique les mêmes contrôles d'intégrité que `translate`, donc une valeur saisie à la main qui casse un placeholder est retenue et signalée au lieu d'être écrite. Aucune des deux commandes n'appelle de fournisseur ni n'a besoin de clé d'API.

Il te faut un projet verbatra avec au moins une locale cible.

## L'aller-retour [#laller-retour]

```bash
# 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
```

L'export écrit `verbatra-translations.xlsx` dans le répertoire de travail. L'import valide chaque ligne remplie, écrit les valeurs qui passent et fait avancer le [fichier de verrouillage](https://verbatra.kreitz-webdev.de/fr/docs/the-lock-file.md) exactement pour les clés acceptées, comme le ferait une exécution `translate`.

## Ce qui atterrit dans le classeur [#ce-qui-atterrit-dans-le-classeur]

Le classeur s'ouvre sur une feuille **Instructions**, puis une feuille par locale cible, nommée d'après sa locale (`de`, `fr`, ...). Chaque feuille de locale a les mêmes colonnes :

| Colonne | Modifiable | Rôle |
| --- | --- | --- |
| `Key` | non | le chemin de clé ; la seule chose qui relie une ligne à une chaîne |
| `Source` | non | la valeur de la locale source |
| `Current translation` | non | la valeur cible existante, le cas échéant |
| `Status` | non | `new`, `changed` (la source a changé depuis la traduction) ou `unchanged` (seulement avec `--include-unchanged`) |
| `Translation` | **oui** | la seule cellule que le traducteur remplit |
| `Source hash` | non | masquée ; détecte une source modifiée après l'export |
| `Context` | non | la description de la clé, quand le format source en porte une ; jamais importée |
| `Review status` | non | `ok`, ou `review` quand un [signalement de relecture](https://verbatra.kreitz-webdev.de/fr/docs/translation-safety.md#signalements-de-relecture) suggère un second regard |
| `Review reasons` | non | les [raisons de relecture](https://verbatra.kreitz-webdev.de/fr/docs/error-codes.md#review-reason-codes) derrière un statut `review` |

Chaque colonne sauf `Translation` est verrouillée par la protection de feuille, et `Translation` utilise le format texte d'Excel, donc une valeur comme `007` ou commençant par `=` reste du texte littéral. Les colonnes de relecture sont consultatives : l'import ne les lit jamais.

## La remise [#la-remise]

Donne ces règles au traducteur (la feuille Instructions les répète) :

- Remplis la colonne `Translation`, rien d'autre.
- Ne renomme, ne supprime et ne réordonne pas les onglets de langue. Chaque onglet est associé à une locale par son nom exact, donc un onglet renommé ou manquant fait échouer cette locale.
- Trier et filtrer les lignes ne pose aucun problème, car les lignes sont reliées par `Key`. Les colonnes doivent rester à leur place.
- Laisse une cellule vide pour "pas encore traduit". Un classeur à moitié rempli peut revenir maintenant et le reste plus tard.
- Pour vider volontairement une valeur existante, tape exactement `[[CLEAR]]`.

## Ce que l'import accepte [#ce-que-limport-accepte]

Chaque ligne remplie est jugée par rapport au projet tel qu'il est, avant toute écriture :

- **Dérive de la source** : si la chaîne source a changé après l'export, la ligne est retenue, donc la traduction d'une ancienne source n'atterrit jamais.
- **Intégrité** : les placeholders, le balisage inline et la structure ICU doivent correspondre à la source, comme à chaque exécution. Voir [la barrière d'intégrité](https://verbatra.kreitz-webdev.de/fr/docs/translation-safety.md#la-barrière-dintégrité).
- **Valeurs dégénérées** : une boucle de répétition, une longueur qui s'emballe ou une valeur vide pour une source non vide est retenue.
- **Clés inconnues** : une ligne remplie dont la clé n'existe ni dans la source ni dans la cible fait échouer la feuille de cette locale. Une clé qui n'existe que dans la cible n'est pas écrite.
- **Lignes inchangées** (à partir de 0.13.0) : dans un fichier CSV, TSV ou xlsx, une ligne remplie égale à la valeur d'une clé à jour est laissée telle quelle et signalée comme inchangée, une fois qu'elle passe la même barrière.

Une ligne retenue ou vide garde sa référence de verrouillage, donc la clé est exportée à nouveau jusqu'à ce qu'elle soit résolue ; une ligne vide dont la source a dérivé déclenche en plus [`BLANK_ROW_BASELINE_RETAINED`](https://verbatra.kreitz-webdev.de/fr/docs/error-codes.md#blank_row_baseline_retained). Une ligne illisible ou une clé en double est signalée sans faire échouer la feuille. Chaque feuille correspond à une locale dans le résumé de l'exécution, et l'import utilise les mêmes codes de sortie que `translate`, donc une remise s'intègre aux mêmes [contrôles CI](https://verbatra.kreitz-webdev.de/fr/docs/ci-and-exit-codes.md) qu'une exécution automatisée. [`verbatra import`](https://verbatra.kreitz-webdev.de/fr/docs/cli/import.md) donne les détails.

### D'abord en dry run [#dabord-en-dry-run]

Prévisualise ce qu'un classeur renvoyé écrirait, sans toucher à un fichier :

```bash
verbatra import verbatra-translations.xlsx --dry-run
```

## CSV et TSV plutôt qu'un classeur [#csv-et-tsv-plutôt-quun-classeur]

Si un prestataire ou un pipeline veut du texte brut, `--format csv` ou `--format tsv` écrit les mêmes colonnes sous forme d'un fichier par locale :

```bash
# 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
```

La locale vient du nom du fichier, donc garde les fichiers nommés comme à l'export. Par rapport au classeur :

- **Rien n'est protégé.** Chaque colonne est modifiable et `Source hash` est visible. Un hash modifié n'est jamais pris pour argent comptant : la ligne est comparée à la source actuelle et retenue comme dérive.
- **Il n'y a pas de feuille Instructions.** Transmets toi-même les règles ci-dessus au traducteur.
- **Les formules sont désamorcées.** Une valeur qui commence par `=`, `+`, `-`, `@`, une tabulation ou un retour chariot est écrite avec une apostrophe en tête, pour qu'un tableur la garde comme texte ; l'import retire à nouveau l'apostrophe. Traite quand même un fichier renvoyé comme une entrée non fiable.
- **Un nouvel export plus étroit met à la retraite les anciens fichiers.** Un fichier resté d'un export antérieur plus large est refusé à l'import au lieu d'être appliqué. Rien n'est supprimé.

## XLIFF pour un outil de TAO [#xliff-pour-un-outil-de-tao]

<AvailableFrom version="0.12.0" />

Si une agence travaille dans un outil de TAO comme Trados, memoQ ou OmegaT, exporte plutôt du XLIFF : voir [Confier à une agence](https://verbatra.kreitz-webdev.de/fr/docs/translation-agency.md).

## TMX, l'autre chemin [#tmx-lautre-chemin]

<AvailableFrom version="0.11.0" />

Une remise transporte les chaînes en attente de chaque locale vers une personne. [`verbatra tmx`](https://verbatra.kreitz-webdev.de/fr/docs/cli/tmx.md) déplace toute la mémoire de traduction entre outils sous forme d'un seul fichier multilingue, ce n'est donc pas une valeur de `export --format`.

## Choisir quoi exporter [#choisir-quoi-exporter]

Par défaut, l'export n'inclut que les chaînes manquantes et modifiées :

```bash
# 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
```

Utilise `--include-unchanged` quand un traducteur veut une locale entière pour le contexte. `--out` doit rester dans le projet et ne doit pas désigner un fichier dont le projet dépend. Voir [`verbatra export`](https://verbatra.kreitz-webdev.de/fr/docs/cli/export.md) pour chaque option et chaque règle.

## Les colonnes de relecture [#les-colonnes-de-relecture]

Les deux colonnes sont calculées à l'export à partir de la source et des valeurs actuelles, donc une ligne sans traduction est toujours `ok`. `Review reasons` écrit chaque raison en minuscules avec des tirets (`length-ratio-outlier`), sauf les deux que seule une exécution peut voir (`provider-degraded`, `fuzzy-cache-reuse`), qui n'apparaissent jamais. Elle ajoute `icu-arms` avec les branches manquantes ou en trop quand les branches ICU d'une valeur ne conviennent pas à la langue cible ; la barrière d'intégrité refuse cette valeur, donc corrige-la avant le retour de la ligne. Pour effacer un signalement, corrige la traduction.

## Depuis le SDK [#depuis-le-sdk]

Les deux commandes enveloppent [`exportWorkbook`](https://verbatra.kreitz-webdev.de/fr/docs/sdk/exchange.md#exportworkbook) et [`importWorkbook`](https://verbatra.kreitz-webdev.de/fr/docs/sdk/exchange.md#importworkbook) :

```ts
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` renvoie le même [`RunSummary`](https://verbatra.kreitz-webdev.de/fr/docs/sdk/run-summary.md) que `translate`.

## Voir aussi [#voir-aussi]

- [`verbatra export`](https://verbatra.kreitz-webdev.de/fr/docs/cli/export.md) et [`verbatra import`](https://verbatra.kreitz-webdev.de/fr/docs/cli/import.md) : chaque option, les chemins de sortie et les codes de sortie.
- [Sûreté de la traduction](https://verbatra.kreitz-webdev.de/fr/docs/translation-safety.md) : la barrière d'intégrité derrière chaque écriture.
- [Travailler sans traduction automatique](https://verbatra.kreitz-webdev.de/fr/docs/human-only-workflow.md) : un projet où chaque traduction vient d'une personne.
