Comment traduire un fichier CSV
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 :
-
Faire une copie de sauvegarde
- Sauvegardez
file.csv→file.original.csv. - Si le CSV contient des données clients, supprimez ou anonymisez les champs sensibles avant tout téléchargement.
- Sauvegardez
-
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
-
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).
-
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
-
Optionnel mais recommandé : ajoutez un
row_idstable 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
| Option | Points forts | Inconvénients | Idéal pour |
|---|---|---|---|
| OpenL CSV Translator Online | Conçu pour la structure CSV ; téléchargement rapide | Flux basé sur l’upload ; peu adapté aux données sensibles | Brouillons CSV rapides et fiables |
| DeepL / Google Cloud / AWS Translate (API) | Automatisable ; bonne qualité ; adapté aux traitements par lot | Nécessite des compétences techniques + gestion attentive du CSV | Équipes traduisant de nombreux fichiers |
| CAT tools (Smartling, Lokalise, Phrase, etc.) | Terminologie/QA, collaboration | Plus de configuration + coût | Localisation produit/UI à grande échelle |
| Formules de tableur (Sheets/Excel) | Pas d’outil supplémentaire | Risque élevé de formatage automatique ou de corruption du CSV | Petits 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
-
Ouvrir l’outil
- Exemple : https://doc.openl.io/translate/csv
-
Choisir les langues
- Sélectionnez vos langues cibles.
-
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é.
- Téléversez ou glissez-déposez votre fichier
-
Télécharger le CSV traduit
- Enregistrez-le avec un nom explicite comme
products_es.csv.
- Enregistrez-le avec un nom explicite comme
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)
-
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).
-
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
00123→123.
- Formatez d’abord les colonnes d’ID en Texte brut (par exemple, SKU, id de commande) pour éviter
-
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.
- Utilisez
-
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
- Données → À partir du texte/CSV
- 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
- 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)
- Fichier → Enregistrer sous
- 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
00123en123. - Conversion de date :
2026-01-09peut 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_id | field | source_text | context | translated_text |
|---|---|---|---|---|
| 101 | product_title | Wireless Mouse | E-commerce product title | Souris sans fil |
| 101 | product_desc | Silent clicks, 2-year battery | Short description | Clics silencieux, batterie de 2 ans |
| 102 | product_title | USB-C Charger | E-commerce product title | Chargeur USB-C |
| 102 | product_desc | Fast charging for phones and tablets | Short description | Charge rapide pour téléphones et tablettes |
| 103 | product_title | Stainless Steel Water Bottle | Product title | Bouteille d’eau en acier inoxydable |
| 103 | product_desc | BPA-free, keeps drinks cold 24h | Short description | Sans BPA, garde les boissons froides pendant 24h |
| 104 | product_title | Noise-Canceling Headphones | Product title | Casque à réduction de bruit |
| 104 | product_desc | Over-ear, Bluetooth 5.3 | Short description | Circum-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 :
-
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.
-
Générez des tables de traduction par fichier
- Extrayez uniquement les champs traduisibles dans
translation_table_<file>.csv. - Conservez une colonne
source_filesi vous préférez une table combinée pour tous les fichiers.
- Extrayez uniquement les champs traduisibles dans
-
Traduisez les tables
- Utilisez un workflow API ou un outil compatible CSV, fichier par fichier.
-
Rejoignez les résultats et exportez
- Faites le mapping par
row_id + field(etsource_filesi utilisé). - Exportez avec l’encodage attendu par votre système aval.
- Faites le mapping par
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,:valuerestent 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 (00123 → 123)
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.56devient1.234,562026-01-09devient09/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.


