Aller au contenu
Aller au contenu

Docs / Guides

Page traduite automatiquement

Cette page a été traduite automatiquement, elle peut donc contenir des erreurs ou se lire un peu bizarrement. La version anglaise fait foi. Lire l'original en anglais.

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

# 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 exactement pour les clés acceptées, comme le ferait une exécution translate.

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 :

ColonneModifiableRôle
Keynonle chemin de clé ; la seule chose qui relie une ligne à une chaîne
Sourcenonla valeur de la locale source
Current translationnonla valeur cible existante, le cas échéant
Statusnonnew, changed (la source a changé depuis la traduction) ou unchanged (seulement avec --include-unchanged)
Translationouila seule cellule que le traducteur remplit
Source hashnonmasquée ; détecte une source modifiée après l'export
Contextnonla description de la clé, quand le format source en porte une ; jamais importée
Review statusnonok, ou review quand un signalement de relecture suggère un second regard
Review reasonsnonles raisons de relecture 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

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

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é.
  • 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. 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 qu'une exécution automatisée. verbatra import donne les détails.

D'abord en dry run

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

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

CSV et TSV plutôt qu'un 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 :

# 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

Si une agence travaille dans un outil de TAO comme Trados, memoQ ou OmegaT, exporte plutôt du XLIFF : voir Confier à une agence.

TMX, l'autre chemin

Une remise transporte les chaînes en attente de chaque locale vers une personne. verbatra tmx 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

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

# 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 pour chaque option et chaque règle.

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

Les deux commandes enveloppent exportWorkbook et 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 renvoie le même RunSummary que translate.

Voir aussi

Modifier sur GitHub

Sur cette page