Comment traduire un fichier CSV

OpenL Team 1/9/2026

TABLE OF CONTENTS

CSV semble simple, mais sa traduction peut rapidement poser problème : les colonnes se décalent, les guillemets se brisent, les caractères non latins deviennent illisibles, ou les identifiants sont “traduits” en quelque chose d’inutilisable. Ce guide présente un flux de travail sûr et pratique pour traduire un fichier CSV tout en préservant sa structure, ainsi qu’une liste de contrôle QA et des solutions aux problèmes courants.

Si vous souhaitez l’option la plus simple, utilisez un traducteur compatible CSV (Méthode 1) plutôt que de copier le texte CSV dans un traducteur de texte générique.

Avant d’importer le fichier traduit, suivez la liste de contrôle QA de ce guide pour détecter rapidement les problèmes de colonnes ou d’encodage.

Ce qui rend la traduction CSV délicate

CSV est du texte brut, mais il contient des règles de structure :

  • Délimiteur : généralement la virgule (,), parfois le point-virgule (;) dans certaines régions.
  • Guillemets : les valeurs textuelles peuvent être entourées de guillemets doubles ("). Les guillemets à l’intérieur des valeurs doivent être échappés (souvent "").
  • Sauts de ligne dans les cellules : autorisés, mais uniquement si la cellule est correctement encadrée par des guillemets.
  • Encodage : votre fichier peut être en UTF‑8, UTF‑8 avec BOM, ou dans des encodages anciens.
  • Types de données mixtes : les nombres, dates, SKUs, identifiants, URLs et variables doivent souvent rester inchangés.

Les outils de traduction qui traitent le CSV comme du “simple texte” peuvent accidentellement modifier les caractères de structure (délimiteurs/guillemets/sauts de ligne) ou transformer les types de données (dates/nombres), ce qui provoque des erreurs à l’importation.

Avant de commencer

Ces étapes rapides évitent la plupart des problèmes lors de la traduction d’un CSV :

  1. Faire une copie de sauvegarde

    • Sauvegardez file.csvfile.original.csv.
    • Si le CSV contient des données clients, supprimez ou anonymisez les champs sensibles avant tout téléchargement.
  2. Identifier les champs “à ne pas traduire” Gardez-les inchangés :

    • Identifiants, clés, SKUs, numéros de commande
    • URLs, emails, chemins de fichiers
    • Variables et placeholders ({name}, {{amount}}, %s, :count)
    • Tags, valeurs d’énumération, codes de statut internes (PAID, REFUNDED)
    • Tout champ utilisé par du code (clés API, blobs JSON, extraits HTML)
    • En cas de doute, voir : /what-not-to-translate
  3. Confirmez le délimiteur, les règles de guillemets et les fins de ligne

    • Si vous ouvrez le CSV et qu’il « ressemble à une seule colonne », le délimiteur est probablement incorrect.
    • Un CSV typique utilise le délimiteur , et les guillemets ". (voir RFC 4180 : https://www.rfc-editor.org/rfc/rfc4180).
  4. Confirmez l’encodage

    • Privilégiez UTF‑8 pour le contenu multilingue.
    • Si vous ouvrez le CSV traduit dans Excel sous Windows, il peut être nécessaire d’utiliser UTF‑8 avec BOM pour éviter les caractères illisibles.
    • Informations sur le BOM : https://unicode.org/faq/utf_bom.html
  5. Optionnel mais recommandé : ajoutez un row_id stable Pour les CSV qui seront réimportés ou appariés ultérieurement, ajoutez une colonne de clé unique (par exemple, row_id) afin de pouvoir vérifier que les lignes n’ont pas été réordonnées.

Méthode 1 — Traducteurs en ligne compatibles CSV (recommandé)

Les traducteurs compatibles CSV traitent le CSV comme des données structurées, et non « juste du texte », ce qui réduit le risque de casser les délimiteurs, les guillemets ou la disposition des lignes/colonnes. Effectuez toujours la liste de contrôle QA avant d’importer.

Comparaison des options neutres

OptionPoints fortsInconvénientsIdéal pour
OpenL CSV Translator OnlineConçu pour la structure CSV ; téléchargement rapideFlux basé sur l’upload ; peu adapté aux données sensiblesBrouillons CSV rapides et fiables
DeepL / Google Cloud / AWS Translate (API)Automatisable ; bonne qualité ; adapté aux traitements par lotNécessite des compétences techniques + gestion attentive du CSVÉquipes traduisant de nombreux fichiers
CAT tools (Smartling, Lokalise, Phrase, etc.)Terminologie/QA, collaborationPlus de configuration + coûtLocalisation produit/UI à grande échelle
Formules de tableur (Sheets/Excel)Pas d’outil supplémentaireRisque élevé de formatage automatique ou de corruption du CSVPetits fichiers à faible risque uniquement

Limites et remarques

  • N’ouvrez pas de données sensibles que vous n’êtes pas autorisé à partager. Si nécessaire, exportez d’abord un CSV nettoyé.
  • Si votre système exige des noms d’en-tête spécifiques, ne traduisez pas la ligne d’en-tête.
  • Exécutez toujours la checklist QA avant d’importer le CSV traduit.
  • Si vous utilisez un outil en ligne, vérifiez ses limites de téléversement et les formats pris en charge sur la page de l’outil.

Étape par étape

  1. Ouvrir l’outil

  2. Choisir les langues

    • Sélectionnez vos langues cibles.
  3. Téléverser votre CSV

    • Téléversez ou glissez-déposez votre fichier .csv.
    • Si votre CSV contient plusieurs colonnes de texte, le traducteur traduira le contenu tout en conservant les séparateurs et les guillemets en sécurité.
  4. Télécharger le CSV traduit

    • Enregistrez-le avec un nom explicite comme products_es.csv.

Bonnes pratiques pour de meilleurs résultats

  • Traduisez uniquement les colonnes visibles par l’utilisateur : titres de produits, descriptions, chaînes d’interface, notes destinées aux clients.
  • Gardez les codes stables : ne traduisez pas status, type, sku, category_id, url, handle.

Méthode 2 — Google Sheets ou Excel

Ce flux de travail peut fonctionner, mais il est plus facile de modifier accidentellement le formatage, les délimiteurs ou les types.

Google Sheets (petits fichiers)

  1. Importer le CSV

    • Google Sheets → Fichier → Importer → Téléverser.
    • Si vos données apparaissent dans une seule colonne, choisissez le séparateur correct (virgule ou point-virgule).
  2. Protéger les colonnes “à ne pas traduire”

    • Formatez d’abord les colonnes d’ID en Texte brut (par exemple, SKU, id de commande) pour éviter 00123123.
  3. Traduire uniquement les colonnes cibles

    • Utilisez =GOOGLETRANSLATE(A2,"en","es") dans une nouvelle colonne, puis Copier → Collage spécial → Valeurs uniquement.
    • Ne lancez pas de formules de traduction sur les colonnes contenant des URLs, des espaces réservés, des codes ou des formules.
  4. Exporter

    • Fichier → Télécharger → Valeurs séparées par des virgules (.csv) (Google Sheets exporte en UTF‑8).

Excel (Windows) — comment importer et exporter correctement en UTF‑8

Excel est l’endroit où les erreurs d’encodage se produisent le plus souvent. Suivez ces étapes pour éviter les caractères illisibles et les problèmes de délimiteurs.

A) Importer un CSV sans altérer les caractères

  1. Données → À partir du texte/CSV
  2. Dans la boîte de dialogue d’importation :
    • Origine du fichier / Encodage : choisissez 65001: Unicode (UTF‑8) (la formulation varie selon la version)
    • Délimiteur : Virgule (,) ou Point-virgule (;) selon votre fichier
  3. Cliquez sur Charger (ou Transformer les données si vous devez forcer les colonnes d’ID en Texte)

B) Exporter en UTF‑8 (et quand utiliser BOM)

  1. Fichier → Enregistrer sous
  2. Pour Type d’enregistrement, choisissez :
    • CSV UTF‑8 (délimité par des virgules) (*.csv) (recommandé pour le texte multilingue)
    • Si votre système en aval rejette le BOM, exportez en UTF‑8 sans BOM à l’aide d’un script (voir “Traitement par lot”) ou réenregistrez avec un éditeur de code.

Pièges courants

  • Mise en forme automatique : les tableurs peuvent convertir des ID comme 00123 en 123.
  • Conversion de date : 2026-01-09 peut s’afficher différemment et s’exporter de manière incohérente.
  • Changement de délimiteur : les exports peuvent passer à ; selon les paramètres régionaux.

Si vous utilisez cette méthode, la section QA ci-dessous est obligatoire.

Flux de travail avancé — Table de traduction

Si votre CSV est un mélange de données à “traduire” et à “ne pas traduire”, créez une table de traduction séparée afin que la traduction n’affecte jamais les champs sensibles.

Étape 1 : Créer une table de traduction

Créez un nouveau CSV (ou une feuille) comme suit :

row_idfieldsource_textcontexttranslated_text
101product_titleWireless MouseE-commerce product titleSouris sans fil
101product_descSilent clicks, 2-year batteryShort descriptionClics silencieux, batterie de 2 ans
102product_titleUSB-C ChargerE-commerce product titleChargeur USB-C
102product_descFast charging for phones and tabletsShort descriptionCharge rapide pour téléphones et tablettes
103product_titleStainless Steel Water BottleProduct titleBouteille d’eau en acier inoxydable
103product_descBPA-free, keeps drinks cold 24hShort descriptionSans BPA, garde les boissons froides pendant 24h
104product_titleNoise-Canceling HeadphonesProduct titleCasque à réduction de bruit
104product_descOver-ear, Bluetooth 5.3Short descriptionCircum-aural, Bluetooth 5.3

Étape 2 : Traduire uniquement source_text

Traduisez la colonne source_text avec le workflow choisi et placez le résultat dans translated_text. (Un traducteur en ligne compatible CSV est généralement plus sûr que les tableurs.)

Étape 3 : Faire correspondre les traductions

Joignez par row_id + field et écrivez le texte traduit dans votre jeu de données original. Cela garantit que les ID, prix et champs système ne sont jamais traduits.

Exemple (Python + pandas)

import pandas as pd

# Données originales (conservez la stabilité des types ; traitez les ID comme des chaînes)
orig = pd.read_csv("products.csv", dtype=str, keep_default_na=False)

# Table de traduction après traduction
tt = pd.read_csv("translation_table_es.csv", dtype=str, keep_default_na=False)

# Restructurer en un format large (une ligne par row_id)
wide = (
  tt.pivot(index="row_id", columns="field", values="translated_text")
  .add_suffix("__translated")
  .reset_index()
)

merged = orig.merge(wide, on="row_id", how="left")

# Écriture (exemple de champs)
merged["product_title"] = merged["product_title__translated"].where(
  merged["product_title__translated"].ne(""), merged["product_title"]
)
merged["product_desc"] = merged["product_desc__translated"].where(
  merged["product_desc__translated"].ne(""), merged["product_desc"]
)

merged.drop(columns=[c for c in merged.columns if c.endswith(“__translated”)], inplace=True) merged.to_csv(“products_es.csv”, index=False, encoding=“utf-8-sig”)


#### Exemple (modèle de jointure/mise à jour SQL)

```sql
-- translation_table(row_id, field, translated_text)
-- products(row_id, product_title, product_desc, ...)

UPDATE products p
SET product_title = t.translated_text
FROM translation_table t
WHERE p.row_id = t.row_id
  AND t.field = 'product_title'
  AND t.translated_text IS NOT NULL
  AND t.translated_text <> '';

Traitement par lots (plusieurs fichiers CSV)

Si vous devez traduire de nombreux fichiers CSV, évitez les étapes manuelles sur tableur et utilisez un pipeline reproductible :

  1. Standardiser les entrées

    • Normalisez en UTF‑8 (ou UTF‑8 avec BOM si votre importateur l’exige).
    • Assurez-vous que chaque fichier possède une clé stable (row_id / id) pour le mapping.
  2. Générez des tables de traduction par fichier

    • Extrayez uniquement les champs traduisibles dans translation_table_<file>.csv.
    • Conservez une colonne source_file si vous préférez une table combinée pour tous les fichiers.
  3. Traduisez les tables

    • Utilisez un workflow API ou un outil compatible CSV, fichier par fichier.
  4. Rejoignez les résultats et exportez

    • Faites le mapping par row_id + field (et source_file si utilisé).
    • Exportez avec l’encodage attendu par votre système aval.

Boucle de démarrage minimale (pour traiter plusieurs fichiers de manière cohérente) :

for f in ./input/*.csv; do
  base="$(basename "$f" .csv)"
  # 1) extraire la table de traduction (implémentez selon votre schéma)
  # 2) traduire translation_table_${base}.csv -> translation_table_${base}_translated.csv
  # 3) joindre et exporter ${base}_translated.csv
  echo "Processed: $base"
done

Liste de contrôle QA post-traduction

Après avoir téléchargé le CSV traduit, effectuez ces vérifications avant l’importation :

Vérifications rapides

  • Comparer le nombre de lignes (macOS/Linux) : wc -l file.original.csv file.translated.csv
  • Vérifiez la cohérence des délimiteurs en ouvrant le fichier dans un éditeur de texte brut et en confirmant que les séparateurs sont identiques.
  • Optionnel : vérifiez la cohérence du nombre de colonnes avec Python :
python -c "import csv,sys; p=sys.argv[1]; r=list(csv.reader(open(p,newline='',encoding='utf-8'))); print('rows',len(r),'max_cols',max(len(x) for x in r))" file.translated.csv

Si vous obtenez une erreur de décodage Unicode, convertissez d’abord le CSV en UTF-8, ou essayez utf-8-sig :

python -c "import csv,sys; p=sys.argv[1]; r=list(csv.reader(open(p,newline='',encoding='utf-8-sig'))); print('rows',len(r),'max_cols',max(len(x) for x in r))" file.translated.csv

Vérifications de la structure

  • Nombre de lignes inchangé : même nombre de lignes de données que l’original.
  • Nombre de colonnes inchangé : chaque ligne possède le même nombre de colonnes.
  • Délimiteur inchangé : la virgule ou le point-virgule est cohérent avec votre importateur.
  • Guillemets valides : les champs contenant des virgules ou des sauts de ligne restent correctement entre guillemets.

Vérifications de l’intégrité des données

  • IDs et clés inchangés : comparez sku, id, row_id, handle.
  • URLs/emails inchangés : pas d’espaces ajoutés, pas de domaines traduits.
  • Nombres préservés : prix, quantités, décimales restent identiques.
  • Variables préservées : {name}, {{count}}, %s, :value restent intacts.

Vérifications de la qualité de la traduction

  • Terminologie cohérente : les termes clés des produits sont traduits de la même manière sur toutes les lignes.
  • Contraintes de longueur respectées : les libellés d’interface ne sont pas trop longs (important pour les applications).
  • Pas de restes de langue source : recherchez les mots courants de la langue source qui devraient être traduits.

Dépannage des problèmes courants de traduction CSV

1) Les colonnes sont décalées après la traduction

Symptômes

  • Votre importateur indique « mauvais nombre de colonnes »
  • Les valeurs apparaissent sous les mauvais en-têtes

Causes probables

  • Un champ traduit contient une guillemet non échappée (")
  • Un champ traduit contient une virgule ou un saut de ligne mais n’est pas correctement entre-guillemets

Correction

  • Assurez-vous que le CSV utilise les règles de guillemet correctes (guillemets doubles autour des champs ; guillemets internes échappés comme "").
  • Retraduisez avec un flux de travail compatible CSV (au lieu de traduire le texte brut du CSV).

2) Caractères illisibles (mojibake) comme ???? ou é

Causes probables

  • Mauvais encodage à l’export/import (UTF‑8 vs ancien encodage)

Correction

  • Exportez en UTF‑8.
  • Si Excel sous Windows est utilisé, essayez UTF‑8 avec BOM.
  • Évitez le copier/coller manuel qui peut modifier l’encodage.

3) Disparition des zéros initiaux (00123123)

Causes probables

  • Auto-formatage du tableur (Excel/Sheets)

Correction

  • Traitez les colonnes d’ID comme du texte avant modification/export.
  • Privilégiez la traduction avec un flux de travail compatible CSV qui ne retape pas vos données.

4) Les dates ou décimales changent de format

Exemples

  • 1,234.56 devient 1.234,56
  • 2026-01-09 devient 09/01/2026

Correction

  • Ne traduisez pas les colonnes numériques/dates.
  • Gardez les valeurs lisibles par machine ; localisez les formats d’affichage dans votre interface utilisateur, pas dans les données brutes.

5) Problème de sécurité : injection CSV (formules Excel)

Si une cellule traduite commence par =, +, - ou @, l’ouverture du fichier dans Excel peut l’évaluer comme une formule.

Correction

  • Pour les CSV qui seront ouverts dans des tableurs, échappez les cellules à risque en les préfixant d’une apostrophe (') ou assainissez-les lors de l’export.
  • Envisagez de supprimer les caractères de formule initiaux du texte fourni par l’utilisateur avant traduction/import.
  • Référence : https://owasp.org/www-community/attacks/CSV_Injection

FAQ

Comment traduire un CSV sans casser les colonnes ?

Utilisez un flux de travail compatible CSV et vérifiez la structure avant l’import :

  • Traduisez avec une méthode compatible CSV (Méthode 1)
  • Effectuez les “Vérifications rapides” + la checklist QA pour confirmer le nombre de lignes/colonnes et la validité des guillemets
  • Si votre CSV mélange des champs sensibles et du texte destiné à l’utilisateur, utilisez le “Flux de travail avancé — Table de traduction”

Puis-je traduire uniquement une colonne dans un CSV ?

Oui. L’approche la plus sûre consiste à créer une table de traduction (row_id + source_text + context), à ne traduire que celle-ci, puis à la réintégrer. Cela évite les modifications accidentelles des ID et des champs numériques.

Dois-je traduire la ligne d’en-tête ?

Cela dépend de votre cas d’utilisation :

  • Traduisez les en-têtes si le CSV sera lu par des humains (rapports, exports).
  • Ne traduisez pas les en-têtes si votre système/importateur attend des noms de champs spécifiques (imports e-commerce, bases de données, applications).

Mon CSV utilise des points-virgules (;) au lieu de virgules. Est-ce correct ?

Oui, mais assurez-vous que votre outil/importateur utilise toujours le même séparateur. De nombreux paramètres régionaux européens utilisent par défaut le point-virgule. Un décalage de séparateur est une cause fréquente d’échec d’importation CSV.

Comment gérer le texte multiligne (sauts de ligne) dans les cellules ?

Les cellules multiligne sont permises dans un CSV, mais elles doivent être correctement encadrées par des guillemets. Si votre contenu traduit inclut des sauts de ligne, il est fortement recommandé d’utiliser un traducteur compatible CSV pour éviter les ruptures de ligne.

Outils

  • OpenL CSV Translator Online (exemple d’outil compatible CSV) : https://doc.openl.io/translate/csv
  • Pour les workflows Excel : voir aussi “How to Translate Excel Online” : /how-to-translate-excel-online
  • Pour le contenu Markdown : “How to Translate Markdown” : /how-to-translate-markdown
  • Si vous avez besoin de règles sur ce qu’il ne faut pas modifier : “What Not to Translate” : /what-not-to-translate

Résumé

Pour traduire un fichier CSV en toute sécurité, préservez la structure (séparateur, guillemets, encodage) et protégez les champs “à ne pas traduire” (ID, URL, espaces réservés, nombres). Privilégiez les workflows compatibles CSV, puis vérifiez avec la liste de contrôle QA avant l’importation.