Hoe een CSV-bestand te vertalen

OpenL Team 1/9/2026

TABLE OF CONTENTS

CSV lijkt eenvoudig, maar het vertalen ervan kan snel misgaan: kolommen verschuiven, aanhalingstekens breken, niet‑Latijnse tekens worden onleesbaar, of ID’s worden “vertaald” naar iets onbruikbaars. Deze gids toont een veilige, praktische workflow om een CSV-bestand te vertalen met behoud van de structuur, plus een QA-checklist en oplossingen voor veelvoorkomende problemen.

Als je de eenvoudigste optie wilt, gebruik dan een CSV‑bewuste vertaler (Methode 1) in plaats van CSV-tekst te kopiëren naar een generieke tekstvertaler.

Voordat je het vertaalde bestand importeert, voer je de QA-checklist uit in deze gids om kolom-/coderingsproblemen vroegtijdig te ontdekken.

Waarom CSV-vertaling lastig is

CSV is platte tekst, maar bevat structuuregels:

  • Scheidingsteken: meestal een komma (,), soms een puntkomma (;) in sommige regio’s.
  • Aanhalingstekens: tekstwaarden kunnen worden omgeven door dubbele aanhalingstekens ("). Aanhalingstekens binnen waarden moeten worden geëscaped (vaak "").
  • Nieuwe regels binnen cellen: toegestaan, maar alleen als de cel correct is gequote.
  • Codering: je bestand kan UTF‑8, UTF‑8 met BOM, of een oudere codering zijn.
  • Gemengde gegevenstypen: nummers, datums, SKU’s, ID’s, URL’s en placeholders moeten vaak ongewijzigd blijven.

Vertaaltools die CSV behandelen als “gewone tekst” kunnen per ongeluk structuurtekens (scheidingstekens/aanhalingstekens/nieuwe regels) wijzigen of gegevenstypen transformeren (datums/nummers), wat leidt tot mislukte import.

Voor je begint

Deze snelle stappen voorkomen de meeste CSV-vertaalfouten:

  1. Maak een back-up

    • Sla file.csv op als file.original.csv.
    • Als de CSV klantgegevens bevat, verwijder of anonimiseer gevoelige velden voordat je deze ergens uploadt.
  2. Identificeer velden die niet vertaald mogen worden Laat deze ongewijzigd:

    • ID’s, sleutels, SKU’s, ordernummers
    • URL’s, e-mails, bestandslocaties
    • Placeholders en variabelen ({name}, {{amount}}, %s, :count)
    • Tags, enumwaarden, interne statuscodes (PAID, REFUNDED)
    • Elk veld dat door code wordt gebruikt (API-sleutels, JSON-blobs, HTML-snippets)
    • Twijfel je? Zie: /what-not-to-translate
  3. Bevestig scheidingsteken, aanhalingstekens en regeleinden

    • Als je het CSV-bestand opent en het “lijkt op één kolom”, is het scheidingsteken waarschijnlijk verkeerd.
    • Typische CSV gebruikt , als scheidingsteken en " als aanhalingstekens (zie RFC 4180: https://www.rfc-editor.org/rfc/rfc4180).
  4. Bevestig codering

    • Geef de voorkeur aan UTF‑8 voor meertalige inhoud.
    • Als je het vertaalde CSV-bestand in Excel op Windows opent, heb je mogelijk UTF‑8 met BOM nodig om onleesbare tekens te voorkomen.
    • BOM achtergrond: https://unicode.org/faq/utf_bom.html
  5. Optioneel maar aanbevolen: voeg een stabiele row_id toe Voor CSV-bestanden die later opnieuw geïmporteerd of gematcht worden, voeg een unieke sleutelkolom toe (bijv. row_id) zodat je kunt controleren of rijen niet zijn herschikt.

Methode 1 — CSV-bewuste online vertalers (aanbevolen)

CSV-bewuste vertalers behandelen CSV als gestructureerde data, niet “gewoon tekst”, waardoor ze minder snel scheidingstekens, aanhalingstekens of rij/kolomindeling breken. Voer altijd de QA-checklist uit voordat je importeert.

Neutrale optie vergelijking

OptieSterktesCompromissenBeste voor
OpenL CSV Translator OnlineOntworpen voor CSV-structuur; snelle upload/downloadUpload-gebaseerde workflow; niet ideaal voor gevoelige dataSnelle, betrouwbare CSV-schetsen
DeepL / Google Cloud / AWS Translate (API)Automatisch; goede kwaliteit; geschikt voor batchverwerkingVereist technische kennis + zorgvuldige CSV-verwerkingTeams die veel bestanden vertalen
CAT tools (Smartling, Lokalise, Phrase, etc.)Terminologie/QA, samenwerkingMeer installatie + kostenProduct/UI-lokalisatie op grote schaal
Spreadsheetformules (Sheets/Excel)Geen extra tools nodigMakkelijk om CSV automatisch te formatteren of te corrumperenAlleen kleine, laag-risico bestanden

Limieten en opmerkingen

  • Upload geen gevoelige gegevens die je niet mag delen. Exporteer indien nodig eerst een geschoonde CSV.
  • Als je systeem specifieke kolomkoppen vereist, vertaal dan de koprij niet.
  • Voer altijd de QA-checklist uit voordat je de vertaalde CSV importeert.
  • Controleer bij gebruik van een online tool de uploadlimieten en ondersteunde formaten op de toolpagina.

Stapsgewijs

  1. Open de tool

  2. Kies talen

    • Selecteer je doeltalen.
  3. Upload je CSV

    • Upload of sleep je .csv-bestand.
    • Als je CSV meerdere tekstkolommen bevat, vertaalt de vertaler de inhoud terwijl scheidingstekens en aanhalingstekens behouden blijven.
  4. Download de vertaalde CSV

    • Sla het bestand op met een duidelijke naam zoals products_es.csv.

Best practices voor betere resultaten

  • Vertaal alleen kolommen die zichtbaar zijn voor gebruikers: producttitels, beschrijvingen, UI-strings, klantgerichte notities.
  • Houd codes stabiel: vertaal status, type, sku, category_id, url, handle niet.

Methode 2 — Google Sheets of Excel

Deze workflow kan werken, maar het is makkelijker om per ongeluk opmaak, scheidingstekens of types te wijzigen.

Google Sheets (kleine bestanden)

  1. Importeer de CSV

    • Google Sheets → Bestand → Importeren → Uploaden.
    • Als je data in één kolom verschijnt, kies dan de juiste scheidingsteken (komma of puntkomma).
  2. Bescherm “niet vertalen”-kolommen

    • Formatteer ID-kolommen eerst als Platte tekst (bijv. SKU, order id) om te voorkomen dat 00123123 wordt.
  3. Vertaal alleen de doelkolommen

    • Gebruik =GOOGLETRANSLATE(A2,"en","es") in een nieuwe kolom, daarna Kopiëren → Plakken speciaal → Alleen waarden.
    • Voer geen vertaalformules uit op kolommen met URL’s, placeholders, codes of formules.
  4. Exporteer

    • Bestand → Downloaden → Door komma’s gescheiden waarden (.csv) (Google Sheets exporteert in UTF‑8).

Excel (Windows) — hoe je UTF‑8 correct importeert en exporteert

Excel is waar coderingsfouten het vaakst voorkomen. Gebruik deze stappen om verminkte tekens en scheidingstekenproblemen te voorkomen.

A) Importeer CSV zonder verminkte tekens

  1. Gegevens → Uit Tekst/CSV
  2. In het importvenster:
    • Bestandsoorsprong / Codering: kies 65001: Unicode (UTF‑8) (de benaming kan per versie verschillen)
    • Scheidingsteken: Komma (,) of Puntkomma (;) om overeen te komen met je bestand
  3. Klik op Laden (of Gegevens transformeren als je ID-kolommen als Tekst wilt forceren)

B) Exporteer als UTF‑8 (en wanneer BOM te gebruiken)

  1. Bestand → Opslaan als
  2. Voor Opslaan als type, kies:
    • CSV UTF‑8 (komma gescheiden) (*.csv) (aanbevolen voor meertalige tekst)
    • Als je downstream-systeem BOM afwijst, exporteer dan UTF‑8 zonder BOM via een script (zie “Batchverwerking”) of sla opnieuw op met een code-editor.

Veelvoorkomende valkuilen

  • Automatische opmaak: spreadsheets kunnen ID’s zoals 00123 omzetten naar 123.
  • Datumconversie: 2026-01-09 kan anders weergegeven worden en inconsistent geëxporteerd worden.
  • Scheidingstekenwijzigingen: export kan overschakelen naar ; afhankelijk van de lokale instellingen.

Als je deze methode gebruikt, is de QA-sectie hieronder verplicht.

Geavanceerde workflow — Vertalingstabel

Als je CSV een mix is van “vertalen” en “niet vertalen” gegevens, maak dan een aparte vertalingstabel zodat vertaling nooit gevoelige velden raakt.

Stap 1: Maak een vertalingstabel

Maak een nieuw CSV-bestand (of werkblad) zoals:

row_idfieldsource_textcontexttranslated_text
101product_titleWireless MouseE-commerce product titleDraadloze Muis
101product_descSilent clicks, 2-year batteryShort descriptionStille klikken, 2 jaar batterijduur
102product_titleUSB-C ChargerE-commerce product titleUSB-C Oplader
102product_descFast charging for phones and tabletsShort descriptionSnelladen voor telefoons en tablets
103product_titleStainless Steel Water BottleProduct titleRoestvrijstalen Waterfles
103product_descBPA-free, keeps drinks cold 24hShort descriptionBPA-vrij, houdt drankjes 24u koud
104product_titleNoise-Canceling HeadphonesProduct titleNoise-Canceling Koptelefoon
104product_descOver-ear, Bluetooth 5.3Short descriptionOver-ear, Bluetooth 5.3

Stap 2: Vertaal alleen source_text

Vertaal de kolom source_text met je gekozen workflow en zet het resultaat in translated_text. (Een CSV-bewuste online vertaler is meestal veiliger dan spreadsheets.)

Stap 3: Zet vertalingen terug

Koppel op row_id + field en schrijf de vertaalde tekst terug naar je originele dataset. Dit zorgt ervoor dat ID’s, prijzen en systeemvelden nooit vertaald worden.

Voorbeeld (Python + pandas)

import pandas as pd

# Originele data (houd types stabiel; behandel ID's als strings)
orig = pd.read_csv("products.csv", dtype=str, keep_default_na=False)

# Vertalingstabel na vertaling
tt = pd.read_csv("translation_table_es.csv", dtype=str, keep_default_na=False)

# Omvormen naar één rij per row_id (breed formaat)
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")

# Terugschrijven (voorbeeldvelden)
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”)


#### Voorbeeld (SQL join/update patroon)

```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 <> '';

Batchverwerking (meerdere CSV-bestanden)

Als je veel CSV-bestanden moet vertalen, vermijd dan handmatige spreadsheetstappen en gebruik een herhaalbare pipeline:

  1. Standaardiseer invoer

    • Normaliseer naar UTF‑8 (of UTF‑8 met BOM als je importeur dit vereist).
    • Zorg ervoor dat elk bestand een stabiele sleutel (row_id / id) heeft voor mapping.
  2. Genereer vertalingstabellen per bestand

    • Extraheer alleen vertaalbare velden in translation_table_<file>.csv.
    • Houd een source_file kolom bij als je liever één gecombineerde tabel voor alle bestanden hebt.
  3. Vertaal tabellen

    • Gebruik een API-workflow of een CSV-bewuste tool per bestand.
  4. Voeg resultaten samen + exporteer

    • Map op row_id + field (en source_file indien gebruikt).
    • Exporteer met de codering die je downstream systeem verwacht.

Minimale starter-loop (verwerk veel bestanden consistent):

for f in ./input/*.csv; do
  base="$(basename "$f" .csv)"
  # 1) extraheer vertalingstabel (implementeer volgens je schema)
  # 2) vertaal translation_table_${base}.csv -> translation_table_${base}_translated.csv
  # 3) voeg samen en exporteer ${base}_translated.csv
  echo "Verwerkt: $base"
done

Post-vertaling QA Checklist

Nadat je de vertaalde CSV hebt gedownload, voer deze controles uit voordat je importeert:

Snelle controles

  • Vergelijk het aantal rijen (macOS/Linux): wc -l file.original.csv file.translated.csv
  • Controleer de consistentie van de scheidingstekens door het bestand te openen in een platte-tekst editor en te bevestigen dat de scheidingstekens er hetzelfde uitzien.
  • Optioneel: controleer consistente kolomaantallen met 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

Als je een Unicode decodeerfout krijgt, converteer het CSV-bestand dan eerst naar UTF-8, of probeer 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

Structuurcontroles

  • Aantal rijen onveranderd: hetzelfde aantal gegevensrijen als het origineel.
  • Aantal kolommen onveranderd: elke rij heeft hetzelfde aantal kolommen.
  • Scheidingsteken onveranderd: komma versus puntkomma is consistent met je importeur.
  • Aanhalingstekens geldig: velden met komma’s/nieuwe regels blijven correct geciteerd.

Gegevensintegriteitscontroles

  • ID’s en sleutels onveranderd: vergelijk sku, id, row_id, handle.
  • URL’s/e-mails onveranderd: geen toegevoegde spaties, geen vertaalde domeinen.
  • Getallen behouden: prijzen, aantallen, decimalen blijven hetzelfde.
  • Plaatsaanduidingen behouden: {name}, {{count}}, %s, :value blijven intact.

Controle van de vertaalkwaliteit

  • Terminologie consistent: belangrijke producttermen zijn op dezelfde manier vertaald in alle rijen.
  • Lengtebeperkingen gerespecteerd: UI-labels zijn niet te lang (belangrijk voor apps).
  • Geen gemengde taalresten: scan op veelvoorkomende bronwoorden die vertaald hadden moeten worden.

Problemen oplossen bij veelvoorkomende CSV-vertaalproblemen

1) Kolommen zijn verschoven na vertaling

Symptomen

  • Je importeur meldt “verkeerd aantal kolommen”
  • Waarden verschijnen onder de verkeerde kopteksten

Waarschijnlijke oorzaken

  • Een vertaald veld bevat een niet-geëscapede aanhalingsteken (")
  • Een vertaald veld bevat een komma/nieuwe regel maar is niet correct geciteerd

Oplossing

  • Zorg ervoor dat de CSV de juiste aanhalingstekens gebruikt (dubbele aanhalingstekens rond velden; interne aanhalingstekens geëscaped als "").
  • Vertaal opnieuw met een CSV-bewuste workflow (in plaats van het vertalen van ruwe CSV-tekst).

2) Onleesbare tekens (mojibake) zoals ???? of é

Waarschijnlijke oorzaken

  • Verkeerde codering bij export/import (UTF‑8 vs legacy)

Oplossing

  • Exporteer als UTF‑8.
  • Als Excel op Windows wordt gebruikt, probeer UTF‑8 met BOM.
  • Vermijd handmatig kopiëren/plakken dat de codering kan veranderen.

3) Voorloopnullen verdwenen (00123123)

Waarschijnlijke oorzaken

  • Automatische opmaak van spreadsheets (Excel/Sheets)

Oplossing

  • Behandel ID-kolommen als tekst vóór het bewerken/exporteren.
  • Geef de voorkeur aan vertalen met een CSV-bewuste workflow die je gegevens niet opnieuw typeert.

4) Datums of decimalen veranderd van formaat

Voorbeelden

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

Oplossing

  • Vertaal geen numerieke/datumkolommen.
  • Houd waarden machine-leesbaar; lokaliseer weergaveformaten in je UI-laag, niet in ruwe data.

5) Beveiligingsprobleem: CSV-injectie (Excel-formules)

Als een vertaald cel begint met =, +, -, of @, kan het openen van het bestand in Excel het als een formule evalueren.

Oplossing

  • Voor CSV’s die in spreadsheets worden geopend, escape risicovolle cellen door te beginnen met een enkele aanhalingsteken (') of saneer tijdens export.
  • Overweeg het verwijderen van leidende formulekarakters uit door gebruikers aangeleverde tekst vóór vertaling/import.
  • Referentie: https://owasp.org/www-community/attacks/CSV_Injection

FAQ

Hoe vertaal ik een CSV zonder kolommen te breken?

Gebruik een CSV-bewuste workflow en controleer de structuur vóór import:

  • Vertaal met een CSV-bewuste methode (Methode 1)
  • Voer de “Snelle controles” + QA-checklist uit om rijen/kolomtellingen en geldige aanhalingstekens te bevestigen
  • Als je CSV gevoelige velden en gebruikersgerichte tekst combineert, gebruik dan de “Geavanceerde workflow — Translation Table”

Kan ik slechts één kolom in een CSV vertalen?

Ja. De veiligste aanpak is om een vertaaltabel te maken (row_id + source_text + context), alleen dat te vertalen en het daarna terug te koppelen. Dit voorkomt per ongeluk wijzigingen aan ID’s en numerieke velden.

Moet ik de header-rij vertalen?

Dit hangt af van je gebruikssituatie:

  • Vertaal headers als de CSV door mensen gelezen zal worden (rapporten, exports).
  • Vertaal headers niet als jouw systeem/importeur specifieke veldnamen verwacht (e-commerce imports, databases, apps).

Mijn CSV gebruikt puntkomma’s (;) in plaats van komma’s. Is dat goed?

Ja, maar zorg ervoor dat jouw tool/importeur consequent dezelfde scheidingsteken gebruikt. Veel Europese regio’s gebruiken standaard puntkomma’s. Een verschil hierin is een veelvoorkomende reden waarom CSV-imports mislukken.

Hoe ga ik om met tekst op meerdere regels (regeleinden) in cellen?

Meerdere regels in cellen zijn toegestaan in CSV, maar ze moeten correct geciteerd worden. Als je vertaalde inhoud regeleinden bevat, wordt een CSV-bewuste vertaaltool sterk aanbevolen om rijbreuken te voorkomen.

Tools

  • OpenL CSV Translator Online (voorbeeld van een CSV-bewuste tool): https://doc.openl.io/translate/csv
  • Voor Excel-workflows: zie ook “How to Translate Excel Online”: /how-to-translate-excel-online
  • Voor Markdown-inhoud: “How to Translate Markdown”: /how-to-translate-markdown
  • Als je regels nodig hebt over wat onveranderd moet blijven: “What Not to Translate”: /what-not-to-translate

Samenvatting

Om een CSV-bestand veilig te vertalen, behoud de structuur (scheidingsteken, aanhalingstekens, codering) en bescherm “niet vertalen”-velden (ID’s, URL’s, placeholders, nummers). Geef de voorkeur aan CSV-bewuste workflows en controleer daarna met de QA-checklist vóór importeren.