Come tradurre un file CSV

OpenL Team 1/9/2026

TABLE OF CONTENTS

CSV sembra semplice, ma la traduzione può facilmente causare problemi: le colonne si spostano, le virgolette si rompono, i caratteri non latini diventano illeggibili o gli ID vengono “tradotti” in qualcosa di inutilizzabile. Questa guida mostra un flusso di lavoro sicuro e pratico per tradurre un file CSV preservandone la struttura, oltre a una checklist di QA e soluzioni per i problemi comuni.

Se vuoi l’opzione più semplice, utilizza un traduttore compatibile con CSV (Metodo 1) invece di copiare il testo CSV in un traduttore generico.

Prima di importare il file tradotto, esegui la checklist di QA in questa guida per individuare tempestivamente problemi di colonne/codifica.

Cosa Rende Difficile la Traduzione dei CSV

Il CSV è testo semplice, ma contiene regole strutturali:

  • Delimitatore: di solito la virgola (,), a volte il punto e virgola (;) in alcune località.
  • Virgolette: i valori di testo possono essere racchiusi tra virgolette doppie ("). Le virgolette all’interno dei valori devono essere escape (solitamente "").
  • A capo nelle celle: consentiti, ma solo se la cella è correttamente racchiusa tra virgolette.
  • Codifica: il tuo file potrebbe essere UTF‑8, UTF‑8 con BOM, o codifiche legacy.
  • Tipi di dati misti: numeri, date, SKU, ID, URL e placeholder spesso devono rimanere invariati.

Gli strumenti di traduzione che trattano il CSV come “solo testo” possono accidentalmente modificare i caratteri strutturali (delimitatori/virgolette/a capo) o trasformare i tipi di dati (date/numeri), causando importazioni fallite.

Prima di Iniziare

Questi passaggi rapidi prevengono la maggior parte dei problemi nella traduzione dei CSV:

  1. Crea una copia di backup

    • Salva file.csvfile.original.csv.
    • Se il CSV contiene dati di clienti, rimuovi o anonimizza i campi sensibili prima di caricarlo ovunque.
  2. Identifica i campi “da non tradurre” Mantieni questi invariati:

    • ID, chiavi, SKU, numeri d’ordine
    • URL, email, percorsi file
    • Segnaposto e variabili ({name}, {{amount}}, %s, :count)
    • Tag, valori enum, codici di stato interni (PAID, REFUNDED)
    • Qualsiasi campo utilizzato dal codice (API keys, JSON blobs, HTML snippets)
    • Se hai dubbi, vedi: /what-not-to-translate
  3. Conferma delimitatore, regole di citazione e terminazioni di riga

    • Se apri il CSV e “sembra una sola colonna”, probabilmente il delimitatore è errato.
    • Il CSV tipico utilizza il delimitatore , e le virgolette " (vedi RFC 4180: https://www.rfc-editor.org/rfc/rfc4180).
  4. Conferma codifica

    • Preferisci UTF‑8 per contenuti multilingue.
    • Se aprirai il CSV tradotto in Excel su Windows, potresti aver bisogno di UTF‑8 con BOM per evitare caratteri illeggibili.
    • Informazioni sul BOM: https://unicode.org/faq/utf_bom.html
  5. Opzionale ma consigliato: aggiungi una colonna stabile row_id Per i CSV che verranno reimportati o confrontati in seguito, aggiungi una colonna chiave unica (ad esempio, row_id) così puoi verificare che le righe non siano state riordinate.

Metodo 1 — Traduttori online compatibili con CSV (consigliato)

I traduttori compatibili con CSV trattano il CSV come dati strutturati, non “solo testo”, quindi è meno probabile che rompano delimitatori, virgolette o la disposizione di righe/colonne. Esegui sempre la checklist di QA prima di importare.

Confronto opzioni neutrali

OpzionePunti di forzaCompromessiMigliore per
OpenL CSV Translator OnlineProgettato per la struttura CSV; caricamento/scaricamento veloceWorkflow basato su upload; non ideale per dati sensibiliBozze CSV rapide e affidabili
DeepL / Google Cloud / AWS Translate (API)Automatizzabile; buona qualità; adatto a pipeline batchRichiede competenze tecniche + gestione attenta del CSVTeam che traducono molti file
CAT tools (Smartling, Lokalise, Phrase, ecc.)Terminologia/QA, collaborazionePiù configurazione + costiLocalizzazione di prodotto/UI su larga scala
Formule di foglio di calcolo (Sheets/Excel)Nessun strumento aggiuntivoFacile formattare automaticamente o corrompere il CSVSolo file piccoli e a basso rischio

Limiti e note

  • Non caricare dati sensibili che non sei autorizzato a condividere. Se necessario, esporta prima un CSV sanificato.
  • Se il tuo sistema richiede nomi di intestazione specifici, non tradurre la riga di intestazione.
  • Esegui sempre la checklist di QA prima di importare il CSV tradotto.
  • Se utilizzi uno strumento online, controlla i limiti di upload e i formati supportati nella pagina dello strumento.

Procedura passo-passo

  1. Apri lo strumento

  2. Scegli le lingue

    • Seleziona le lingue di destinazione.
  3. Carica il tuo CSV

    • Carica o trascina il tuo file .csv.
    • Se il tuo CSV contiene più colonne di testo, il traduttore tradurrà il contenuto mantenendo sicuri separatori e virgolette.
  4. Scarica il CSV tradotto

    • Salvalo con un nome chiaro come products_es.csv.

Best practices per risultati migliori

  • Traduci solo le colonne visibili all’utente: titoli dei prodotti, descrizioni, stringhe UI, note rivolte ai clienti.
  • Mantieni stabili i codici: non tradurre status, type, sku, category_id, url, handle.

Metodo 2 — Google Sheets o Excel

Questo workflow può funzionare, ma è più facile modificare accidentalmente formattazione, delimitatori o tipi.

Google Sheets (file piccoli)

  1. Importa il CSV

    • Google Sheets → File → Importa → Carica.
    • Se i tuoi dati appaiono in una sola colonna, scegli il delimitatore corretto (virgola vs punto e virgola).
  2. Proteggi le colonne “da non tradurre”

    • Format le colonne ID come Testo normale prima (es. SKU, order id) per evitare 00123123.
  3. Traduci solo le colonne di destinazione

    • Usa =GOOGLETRANSLATE(A2,"en","es") in una nuova colonna, poi Copia → Incolla speciale → Solo valori.
    • Non eseguire formule di traduzione su colonne che contengono URL, segnaposto, codici o formule.
  4. Esporta

    • File → Scarica → Valori separati da virgola (.csv) (Google Sheets esporta in UTF‑8).

Excel (Windows) — come importare ed esportare correttamente in UTF‑8

Excel è il luogo in cui gli errori di codifica si verificano più frequentemente. Segui questi passaggi per evitare caratteri illeggibili e problemi con i delimitatori.

A) Importa CSV senza caratteri illeggibili

  1. Dati → Da testo/CSV
  2. Nella finestra di importazione:
    • Origine file / Codifica: scegli 65001: Unicode (UTF‑8) (la dicitura può variare a seconda della versione)
    • Delimitatore: Virgola (,) o Punto e virgola (;) in base al tuo file
  3. Clicca su Carica (o Trasforma dati se hai bisogno di forzare le colonne ID come Testo)

B) Esporta come UTF‑8 (e quando usare BOM)

  1. File → Salva con nome
  2. Per Salva come tipo, scegli:
    • CSV UTF‑8 (delimitato da virgola) (*.csv) (consigliato per testo multilingue)
    • Se il tuo sistema a valle rifiuta BOM, esporta UTF‑8 senza BOM usando uno script (vedi “Batch Processing”) oppure salva nuovamente con un editor di codice.

Errori comuni

  • Formattazione automatica: i fogli di calcolo possono convertire ID come 00123 in 123.
  • Conversione delle date: 2026-01-09 può essere visualizzato in modo diverso ed esportato in modo incoerente.
  • Cambiamento del delimitatore: le esportazioni possono passare a ; a seconda delle impostazioni locali.

Se utilizzi questo metodo, la sezione QA qui sotto è obbligatoria.

Workflow avanzato — Tabella di traduzione

Se il tuo CSV è un mix di dati “da tradurre” e “da non tradurre”, crea una tabella di traduzione separata in modo che la traduzione non tocchi mai i campi sensibili.

Passo 1: Crea una tabella di traduzione

Crea un nuovo CSV (o foglio) come:

row_idfieldsource_textcontexttranslated_text
101product_titleWireless MouseE-commerce product titleMouse Wireless
101product_descSilent clicks, 2-year batteryShort descriptionClick silenziosi, batteria da 2 anni
102product_titleUSB-C ChargerE-commerce product titleCaricatore USB-C
102product_descFast charging for phones and tabletsShort descriptionRicarica rapida per telefoni e tablet
103product_titleStainless Steel Water BottleProduct titleBottiglia d’acqua in acciaio inox
103product_descBPA-free, keeps drinks cold 24hShort descriptionSenza BPA, mantiene le bevande fredde per 24 ore
104product_titleNoise-Canceling HeadphonesProduct titleCuffie con cancellazione del rumore
104product_descOver-ear, Bluetooth 5.3Short descriptionOver-ear, Bluetooth 5.3

Passo 2: Traduci solo source_text

Traduci la colonna source_text con il workflow scelto e inserisci il risultato in translated_text. (Un traduttore online compatibile con CSV è generalmente più sicuro rispetto ai fogli di calcolo.)

Passo 3: Rimappa le traduzioni nei dati originali

Unisci tramite row_id + field e scrivi il testo tradotto nel dataset originale. Questo garantisce che ID, prezzi e campi di sistema non vengano mai tradotti.

Esempio (Python + pandas)

import pandas as pd

# Dati originali (mantieni i tipi stabili; tratta gli ID come stringhe)
orig = pd.read_csv("products.csv", dtype=str, keep_default_na=False)

# Tabella di traduzione dopo la traduzione
tt = pd.read_csv("translation_table_es.csv", dtype=str, keep_default_na=False)

# Rimodella in un formato largo (una riga per 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")

# Scrivi indietro (esempi di campi)
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”)


#### Esempio (pattern di join/update 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 <> '';

Elaborazione batch (più file CSV)

Se hai bisogno di tradurre molti file CSV, evita passaggi manuali su fogli di calcolo e utilizza una pipeline ripetibile:

  1. Standardizza gli input

    • Normalizza in UTF‑8 (o UTF‑8 con BOM se il tuo importatore lo richiede).
    • Assicurati che ogni file abbia una chiave stabile (row_id / id) per il mapping.
  2. Genera tabelle di traduzione per ogni file

    • Estrai solo i campi traducibili in translation_table_<file>.csv.
    • Mantieni una colonna source_file se preferisci una tabella combinata per tutti i file.
  3. Traduci le tabelle

    • Usa un workflow API o uno strumento compatibile con CSV file per file.
  4. Unisci i risultati ed esporta

    • Mappa tramite row_id + field (e source_file se utilizzato).
    • Esporta con la codifica richiesta dal tuo sistema a valle.

Loop minimale di partenza (per processare molti file in modo coerente):

for f in ./input/*.csv; do
  base="$(basename "$f" .csv)"
  # 1) estrai la tabella di traduzione (implementa secondo il tuo schema)
  # 2) traduci translation_table_${base}.csv -> translation_table_${base}_translated.csv
  # 3) unisci e esporta ${base}_translated.csv
  echo "Processed: $base"
done

Checklist QA post-traduzione

Dopo aver scaricato il CSV tradotto, esegui questi controlli prima dell’importazione:

Controlli rapidi

  • Confronta il conteggio delle righe (macOS/Linux): wc -l file.original.csv file.translated.csv
  • Controlla la coerenza dei delimitatori aprendo il file in un editor di testo semplice e confermando che i separatori siano uguali.
  • Facoltativo: verifica la coerenza del numero di colonne con 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

Se ricevi un errore di decodifica Unicode, converti prima il CSV in UTF-8, oppure prova con 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

Controlli sulla struttura

  • Conteggio delle righe invariato: stesso numero di righe dati dell’originale.
  • Conteggio delle colonne invariato: ogni riga ha lo stesso numero di colonne.
  • Delimitatore invariato: virgola vs punto e virgola coerente con il tuo importatore.
  • Virgolette valide: i campi con virgole/a capo rimangono correttamente racchiusi tra virgolette.

Controlli sull’integrità dei dati

  • ID e chiavi invariati: confronta sku, id, row_id, handle.
  • URL/email invariati: nessuno spazio aggiunto, nessun dominio tradotto.
  • Numeri preservati: prezzi, quantità, decimali rimangono uguali.
  • Segnaposto preservati: {name}, {{count}}, %s, :value rimangono intatti.

Controlli sulla qualità della traduzione

  • Terminologia coerente: i termini chiave dei prodotti sono tradotti nello stesso modo tra le righe.
  • Vincoli di lunghezza rispettati: le etichette UI non sono troppo lunghe (importante per le app).
  • Nessun residuo di lingua mista: cerca parole comuni della lingua sorgente che dovrebbero essere tradotte.

Risoluzione dei problemi comuni nella traduzione di file CSV

1) Le colonne risultano spostate dopo la traduzione

Sintomi

  • Il tuo importatore segnala “numero di colonne errato”
  • I valori appaiono sotto le intestazioni sbagliate

Cause probabili

  • Un campo tradotto contiene una virgoletta non escapeata (")
  • Un campo tradotto contiene una virgola/nuova riga ma non è correttamente racchiuso tra virgolette

Soluzione

  • Assicurati che il CSV utilizzi le regole corrette di racchiudimento tra virgolette (virgolette doppie attorno ai campi; virgolette interne escapeate come "").
  • Traduci nuovamente utilizzando un workflow compatibile con CSV (anziché tradurre testo CSV grezzo).

2) Caratteri illeggibili (mojibake) come ???? o é

Cause probabili

  • Codifica errata in esportazione/importazione (UTF‑8 vs legacy)

Soluzione

  • Esporta come UTF‑8.
  • Se utilizzi Excel su Windows, prova UTF‑8 con BOM.
  • Evita copia/incolla manuale che può modificare la codifica.

3) Zeri iniziali scomparsi (00123123)

Cause probabili

  • Formattazione automatica del foglio di calcolo (Excel/Sheets)

Soluzione

  • Tratta le colonne ID come testo prima di modificare/esportare.
  • Preferisci tradurre con un workflow compatibile con CSV che non modifichi il tipo dei dati.

4) Date o decimali hanno cambiato formato

Esempi

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

Soluzione

  • Non tradurre colonne numeriche/data.
  • Mantieni i valori leggibili dalla macchina; localizza i formati di visualizzazione nell’interfaccia utente, non nei dati grezzi.

5) Problema di sicurezza: CSV injection (formule Excel)

Se una cella tradotta inizia con =, +, - o @, aprendo il file in Excel questa può essere valutata come formula.

Soluzione

  • Per i CSV che verranno aperti in fogli di calcolo, esegui l’escape delle celle a rischio anteponendo un apostrofo (') o sanifica durante l’esportazione.
  • Considera di rimuovere i caratteri iniziali di formula dal testo fornito dagli utenti prima della traduzione/importazione.
  • Riferimento: https://owasp.org/www-community/attacks/CSV_Injection

FAQ

Come posso tradurre un CSV senza rompere le colonne?

Utilizza un workflow compatibile con CSV e verifica la struttura prima dell’importazione:

  • Traduci con un metodo compatibile con CSV (Metodo 1)
  • Esegui i “Quick checks” + checklist QA per confermare il numero di righe/colonne e la validità delle virgolette
  • Se il tuo CSV mescola campi sensibili e testo rivolto all’utente, utilizza il “Workflow Avanzato — Translation Table”

Posso tradurre solo una colonna in un CSV?

Sì. L’approccio più sicuro è creare una tabella di traduzione (row_id + source_text + context), tradurre solo quella e poi rimappare il risultato. Questo previene modifiche accidentali agli ID e ai campi numerici.

Devo tradurre la riga di intestazione?

Dipende dal tuo caso d’uso:

  • Traduci le intestazioni se il CSV sarà letto da persone (report, esportazioni).
  • Non tradurre le intestazioni se il tuo sistema/importatore si aspetta nomi di campo specifici (importazioni e-commerce, database, app).

Il mio CSV usa i punti e virgola (;) invece delle virgole. Va bene lo stesso?

Sì, ma assicurati che il tuo strumento/importatore usi sempre lo stesso delimitatore. In molte località europee il punto e virgola è il valore predefinito. Una discordanza è una delle cause più comuni di errore nell’importazione dei CSV.

Come gestisco il testo su più righe (a capo) nelle celle?

Le celle multilinea sono consentite nei CSV, ma devono essere correttamente racchiuse tra virgolette. Se il contenuto tradotto include interruzioni di riga, si raccomanda fortemente un traduttore compatibile con CSV per evitare rotture di riga indesiderate.

Strumenti

  • OpenL CSV Translator Online (esempio di strumento compatibile con CSV): https://doc.openl.io/translate/csv
  • Per flussi di lavoro con Excel: vedi anche “How to Translate Excel Online”: /how-to-translate-excel-online
  • Per contenuti Markdown: “How to Translate Markdown”: /how-to-translate-markdown
  • Se hai bisogno di regole su cosa non modificare: “What Not to Translate”: /what-not-to-translate

Per tradurre un file CSV in modo sicuro, preserva la struttura (delimitatore, virgolette, codifica) e proteggi i campi “da non tradurre” (ID, URL, segnaposto, numeri). Preferisci flussi di lavoro compatibili con CSV, quindi verifica con la checklist di QA prima dell’importazione.