Hoe een CSV-bestand te vertalen
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:
-
Maak een back-up
- Sla
file.csvop alsfile.original.csv. - Als de CSV klantgegevens bevat, verwijder of anonimiseer gevoelige velden voordat je deze ergens uploadt.
- Sla
-
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
-
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).
-
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
-
Optioneel maar aanbevolen: voeg een stabiele
row_idtoe 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
| Optie | Sterktes | Compromissen | Beste voor |
|---|---|---|---|
| OpenL CSV Translator Online | Ontworpen voor CSV-structuur; snelle upload/download | Upload-gebaseerde workflow; niet ideaal voor gevoelige data | Snelle, betrouwbare CSV-schetsen |
| DeepL / Google Cloud / AWS Translate (API) | Automatisch; goede kwaliteit; geschikt voor batchverwerking | Vereist technische kennis + zorgvuldige CSV-verwerking | Teams die veel bestanden vertalen |
| CAT tools (Smartling, Lokalise, Phrase, etc.) | Terminologie/QA, samenwerking | Meer installatie + kosten | Product/UI-lokalisatie op grote schaal |
| Spreadsheetformules (Sheets/Excel) | Geen extra tools nodig | Makkelijk om CSV automatisch te formatteren of te corrumperen | Alleen 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
-
Open de tool
- Voorbeeld: https://doc.openl.io/translate/csv
-
Kies talen
- Selecteer je doeltalen.
-
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.
- Upload of sleep je
-
Download de vertaalde CSV
- Sla het bestand op met een duidelijke naam zoals
products_es.csv.
- Sla het bestand op met een duidelijke naam zoals
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,handleniet.
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)
-
Importeer de CSV
- Google Sheets → Bestand → Importeren → Uploaden.
- Als je data in één kolom verschijnt, kies dan de juiste scheidingsteken (komma of puntkomma).
-
Bescherm “niet vertalen”-kolommen
- Formatteer ID-kolommen eerst als Platte tekst (bijv. SKU, order id) om te voorkomen dat
00123→123wordt.
- Formatteer ID-kolommen eerst als Platte tekst (bijv. SKU, order id) om te voorkomen dat
-
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.
- Gebruik
-
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
- Gegevens → Uit Tekst/CSV
- 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
- Klik op Laden (of Gegevens transformeren als je ID-kolommen als Tekst wilt forceren)
B) Exporteer als UTF‑8 (en wanneer BOM te gebruiken)
- Bestand → Opslaan als
- 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
00123omzetten naar123. - Datumconversie:
2026-01-09kan 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_id | field | source_text | context | translated_text |
|---|---|---|---|---|
| 101 | product_title | Wireless Mouse | E-commerce product title | Draadloze Muis |
| 101 | product_desc | Silent clicks, 2-year battery | Short description | Stille klikken, 2 jaar batterijduur |
| 102 | product_title | USB-C Charger | E-commerce product title | USB-C Oplader |
| 102 | product_desc | Fast charging for phones and tablets | Short description | Snelladen voor telefoons en tablets |
| 103 | product_title | Stainless Steel Water Bottle | Product title | Roestvrijstalen Waterfles |
| 103 | product_desc | BPA-free, keeps drinks cold 24h | Short description | BPA-vrij, houdt drankjes 24u koud |
| 104 | product_title | Noise-Canceling Headphones | Product title | Noise-Canceling Koptelefoon |
| 104 | product_desc | Over-ear, Bluetooth 5.3 | Short description | Over-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:
-
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.
-
Genereer vertalingstabellen per bestand
- Extraheer alleen vertaalbare velden in
translation_table_<file>.csv. - Houd een
source_filekolom bij als je liever één gecombineerde tabel voor alle bestanden hebt.
- Extraheer alleen vertaalbare velden in
-
Vertaal tabellen
- Gebruik een API-workflow of een CSV-bewuste tool per bestand.
-
Voeg resultaten samen + exporteer
- Map op
row_id + field(ensource_fileindien gebruikt). - Exporteer met de codering die je downstream systeem verwacht.
- Map op
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,:valueblijven 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 (00123 → 123)
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.56wordt1.234,562026-01-09wordt09/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.


