Zo vertaal je met AI alleen de ontbrekende rijen in CSV of Excel

Zo vertaal je met AI alleen de ontbrekende rijen in CSV of Excel

7 september 2026

Je hebt een bestand waarin een deel van het werk al is gedaan. Vierhonderd rijen hebben een Duitse titel. Drieduizend zeshonderd niet. Iemand heeft ooit de eerste reeks vertaald, waarna de catalogus verder is gegroeid.

De voor de hand liggende tools willen allemaal het hele bestand vertalen. De vraag is dus niet hoe je het bestand vertaalt, maar hoe je alleen het ontbrekende deel vertaalt en alleen daarvoor betaalt.

Hoe een gedeeltelijk vertaald bestand er in de praktijk uitziet

Zo ziet het probleem eruit, in een voorbeeld dat je in één oogopslag kunt overzien.

Een bestand waarin twee van de vier rijen al een Duitse titel hebben. Alleen de twee lege cellen worden meegenomen; de rest van het bestand komt byte voor byte hetzelfde terug.

Pas dit toe op vierduizend rijen (een voorbeeld ter illustratie, geen gemeten opdracht) en de twee uitkomsten lopen flink uiteen. Of je betaalt voor 4,000 rijen en controleert een diff met alle rijen, of je betaalt voor 3,600 en controleert er 3,600. Bij de tweede optie blijft ook de formulering die je collega al heeft gecontroleerd precies zoals zij die heeft achtergelaten.

De vijf bestanden waarbij dit gebeurt

Dit is geen uitzonderlijk geval. Het is de normale situatie bij elk bestand dat meer dan één keer is aangepast, en er staat veel op het spel: CSA Research stelde in juli 2020, op basis van 8,709 consumenten in 29 landen, vast dat 76% van de online shoppers het liefst producten kopen met informatie in hun eigen taal, en dat 40% nooit iets koopt op websites in andere talen.

Rijen die sinds de vorige keer zijn toegevoegd. De catalogus is met 200 producten gegroeid. De andere 3,800 zijn afgerond en beoordeeld. Dit komt veruit het vaakst voor en herhaalt zich elke maand.

Een taal toegevoegd aan een bestand dat er al drie bevat. Je spreadsheet heeft kolommen voor Frans, Duits en Spaans. Vorige week is afgesproken om Italiaans toe te voegen, maar die kolom is leeg of bestaat nog helemaal niet. Je wilt dat de Italiaanse tekst wordt geschreven en dat de andere drie ongemoeid blijven.

Een overdracht waar iemand anders al aan is begonnen. Een freelancer is tot het eerste derde deel gekomen voordat het project stilviel. Je weet niet precies waar die is gestopt en wilt daar niet achter komen door voor dubbel werk te betalen.

Een bestand waarin een eerdere tool de brontekst als tijdelijke aanduiding naar het doel heeft gekopieerd. Dit overkomt iedereen, omdat het bestand er voltooid uitziet. In een XLIFF-export kan elke vertaaleenheid een <target>-element en een state-attribuut bevatten die aangeven wat de status van het doel is (volgens de specificatie is het doel optioneel en geeft state de status ervan aan). Toch vullen veel tools het doel vooraf met een kopie van de brontekst, zodat de structuur compleet lijkt. Open zo’n bestand en elk doelveld is ingevuld, terwijl veel ervan niet vertaald zijn.

Rijen die bewust ongemoeid zijn gelaten. Interne SKU-beschrijvingen, een juridische alinea die je jurist alleen in één taal heeft goedgekeurd, drie producten die uit het assortiment verdwijnen. Dit zijn geen hiaten, maar bewuste keuzes. Een tool die ze behulpzaam invult, heeft het bestand beschadigd.

Die laatste twee zijn de reden dat ‘de lege velden vertalen’ geen selectievakje is. Alleen jij weet wat als ontbrekend telt, dus de tool moet uitgaan van een zin die jij opgeeft, niet van een instelling.

Waar het bereik eindigt en de voorwaarden beginnen

Het hele bestand opnieuw vertalen betekent dubbel betalen voor het deel dat al klaar was. Door alleen de lege plekken te vertalen, betaal en controleer je enkel de ontbrekende rijen.

Een automatische vertaler verwerkt de tekst die je aanlevert. DeepL en Google Translate nemen tekst als invoer en geven tekst terug. Je moet dus vooraf bepalen welke rijen niet vertaald mogen worden (zie ons volledige overzicht van de beperkingen van DeepL-bulkvertaling). Sommige tools kunnen wel met bereiken werken. Met de Excel-vertaler van Smartcat kun je bijvoorbeeld een kolombereik zoals A:H of een rijbereik zoals 1:50 invoeren en aangeven of dat vertaald moet worden of niet. Een bereik geeft echter een locatie aan, terwijl ‘alleen vertalen als de Duitse cel leeg is’ een voorwaarde op basis van inhoud is. Dat is precies het deel dat wij voor onze rekening nemen. Anders moet je het bestand zelf filteren voordat je het verstuurt en het resultaat achteraf weer samenvoegen. Dat spreadsheetwerk is dan jouw verantwoordelijkheid en moet je elke maand opnieuw doen. Los daarvan, en dit is gebaseerd op klantervaringen en niet op tests die wij hebben uitgevoerd: teams benaderen ons omdat machinevertalingen van hun echte content, met hun echte terminologie, niet langer voldoen aan de kwaliteitsnorm die ze hanteren voor publicatie.

Een algemene assistent kan de regel een tijdje volgen. Plak 50 rijen in ChatGPT of Claude met de instructie „vul alleen de lege Duitse cellen in” en dat lukt. Problemen ontstaan pas op grotere schaal, en ongemerkt: ergens na de eerste paar delen krijgt een rij die al een vertaling had een nieuwe. Dat ontdek je bij de controle, of helemaal niet. Wil je meer weten, lees dan de uitgebreide versie van die vergelijking. Kort gezegd: een regel waarop je moet vertrouwen, kun je niet controleren. Een regel die met code wordt toegepast wel.

Een vertaalbureau doet precies wat je vraagt. De kosten zitten niet in het tarief per woord, maar in de voorbereiding: de ontbrekende rijen eruit halen, uitleggen welke kolommen ongemoeid moeten blijven, wachten en het resultaat daarna weer samenvoegen met je eigen bestand. Dat is geen vertaalwerk. De verborgen kosten bestaan eruit dat je dit hele proces bij de volgende update opnieuw moet doorlopen.

Eerst de handmatige aanpak

Doe je het liever handmatig? Dit zijn de basisstappen:

  1. Voeg een filter toe aan de doelkolom en toon alleen de lege cellen.
  2. Kopieer de brontekst uit de zichtbare rijen.
  3. Plak de tekst in een vertaaltool en vertaal hem.
  4. Plak het resultaat terug in de gefilterde rijen van de doelkolom.
  5. Wis het filter en controleer of de rijvolgorde en de ingevulde rijen nog kloppen.

Dit werkt en is een prima keuze voor een paar honderd rijen. Wat hierna komt, is bedoeld voor als je die vijf stappen liever niet elke maand herhaalt, of als „ontbreekt” meer betekent dan een lege cel.

De instructie wordt code. Daarom werkt die ook voor rij 18,000

Dit is belangrijk om te begrijpen, want zo wordt duidelijk waarom een bereikregel hier anders werkt.

Je zin wordt niet als hint doorgegeven aan een vertaalmodel. AI Glot leest de structuur van je bestand en zet je instructie vervolgens om in een klein programma. Dat programma doorloopt het bestand en stelt een lijst samen met precies de tekstonderdelen die binnen het bereik vallen. Die lijst wordt daarna vertaald. De code toetst de regel voor elk record afzonderlijk, zodat record 18,000 aan dezelfde controle wordt onderworpen als record 1. De regel wijkt niet af, omdat er niets is dat kan afwijken.

Dat programma doorloopt eerst een aantal controles. Pas daarna worden er credits gebruikt:

  • Het mag je bestand niet wijzigen. Het document wordt vóór en na het uitvoeren van het programma vergeleken. Elke wijziging wordt direct afgewezen. Je geüploade bestand blijft altijd onaangeroerd en elke beslissing over het bereik geldt alleen voor het uitvoerbestand.
  • Het mag geen tekst verzinnen. Elk tekstonderdeel dat wordt geselecteerd, moet woord voor woord in je bestand staan. Het programma kan een cel onderweg niet parafraseren.
  • Elke bestemming moet een bestaande, beschrijfbare plek zijn. Verwijst een regel naar een kolom die niet bestaat, dan mislukt de planning meteen. Zo krijg je geen vreemd bestand als resultaat.
  • Levert je regel helemaal geen resultaten op, dan mislukt de planning en krijg je daar bericht van. Dat klinkt misschien onvriendelijk, maar het is juist nuttig: zo ontdek je gratis dat het bestand waarvan je dacht dat het half af was, al klaar is.

„Ontbreekt nog” kan vier verschillende dingen betekenen

Dit is de nuance die bepaalt of je zin werkt. Een ontbrekend gegeven ziet er niet in elk bestandsformaat hetzelfde uit, dus de voorwaarde die je instructie moet omschrijven, hangt af van het bestand dat je voor je hebt.

Één duidelijke zin over wat er ontbreekt, en de vier verschillende controles die dat oplevert afhankelijk van je bestandsformaat.

In een spreadsheet is een hiaat een lege cel. Een CSV-bestand kent geen bron en doel: RFC 4180 beschrijft alleen records, velden en een optionele kopregel. Welke kolom de bron is en welke het doel, kan dus alleen jouw instructie aangeven. Of het bestand nu is binnengekomen als een CSV-export of een Excel-werkmap, de test is hetzelfde: deze rij heeft een Engelse titel en niets in de Duitse kolom, dus deze rij valt binnen de scope. Zeg: “alleen de rijen waarvan de Duitse kolom nog leeg is”.

In een tweetalig bestand betekent een hiaat vaak dat de doeltekst nog gelijk is aan de brontekst. XLIFF koppelt elke eenheid aan een vertaalveld dat veel tools vooraf vullen met een kopie van de bron. In dat geval is leegte niet de juiste test. Je moet vergelijken: “vertaal alleen de eenheden waarvan de doeltekst nog dezelfde tekst bevat als de bron”. Met die ene zin verwerk je een bestand zoals dit, een illustratief voorbeeld en geen klantbestand: een WordPress-export van 228 eenheden, waarvan de doeltekst van 217 eenheden nog de oorspronkelijke Franse tekst bevat, is een normale opdracht en geen aanleiding om te discussiëren over de vraag of het bestand af is.

In een sleutelstructuur is een hiaat een ontbrekende sleutel. In JSON of YAML bestaat de Duitse vertaling van een tekenreeks als een nevensleutel, of ontbreekt die. Een ontbrekende sleutel kan worden aangemaakt zolang het bovenliggende object bestaat. Een lege waarde telt ook mee. Met “alleen wanneer de de-sleutel ontbreekt of leeg is” dek je dus beide gevallen af.

In een bestand met één taal staat niets om mee te vergelijken. Dat is de eerlijke beperking. Een Android-bestand strings.xml, een iOS-bestand .strings (Apple raadt in de handleiding één .strings-bestand per taal aan, elk in een taalmap zoals de.lproj), een Java-bestand .properties, een .NET RESX-bestand en een SRT-ondertitelingsbestand bevatten allemaal precies één waarde per sleutel. Er staat geen bronkolom naast. Daarom kun je niet automatisch testen of iets “al vertaald” is: dat wordt niet vastgelegd in het bestand. Wat wel werkt, is alles wat het bestand zelf laat zien: een lege waarde of een markering die je zelf hebt toegevoegd, zoals een TODO-prefix. Als je enige aanwijzing is dat een waarde “op Engels lijkt”, kun je dat niet betrouwbaar in een regel vastleggen. Je kunt het bestand dan beter opsplitsen voordat je het uploadt.

Waar de zin over de scope thuishoort, en waar die ongemerkt niets doet

Als je dit verkeerd doet, betaal je voor een vertaling van het hele bestand. Je kunt op twee plekken een instructie invoeren. Die zijn niet onderling uitwisselbaar.

De plan-instructie bepaalt welke tekst wordt vertaald. De batch-instructies bepalen hoe elke losse tekst wordt geschreven. Zet je de afbakening op de verkeerde plek, dan gebeurt er niets.

De planinstructie is de instructie die je invoert voordat je een plan ziet. Die wordt afgestemd op de structuur van je bestand en vormt de basis voor het plan. Hier bepaal je de scope.

De batchinstructies worden meegenomen in de vertaling en toegepast terwijl elke afzonderlijke tekst wordt geschreven. Op dat moment is alleen één tekst zichtbaar. Een regel kan dus alleen iets beschrijven wat in die tekst te zien is: behoud een placeholder zoals die is, laat een URL in de tekst ongemoeid, vertaal een productnaam nooit, gebruik een informele toon.

En dan gaat het mis. Zet “vertaal alleen de lege cellen” in de batchinstructies en er gebeurt niets, en je krijgt geen waarschuwing. Er zijn op dat moment geen cellen. Er is één tekst, die al is geselecteerd en wordt vertaald, omdat de scope eerder is bepaald door een instructie die de scope niet noemde. Je krijgt het bestand volledig vertaald terug en de factuur weerspiegelt dat.

In de batchinstructies gezet Waarom het niets doet Waar het thuishoort
“Vertaal alleen de lege cellen.” Er zijn geen cellen zichtbaar, maar één tekst wel. De planinstructie
“Sla de eerste kolom over.” Een kolom is onderdeel van de bestandsstructuur. De planinstructie
“Alleen de rijen die sinds maart zijn toegevoegd.” Hetzelfde. De planinstructie
“Laat de SKU-kolom ongemoeid.” Hetzelfde. Beschrijf de inhoud in plaats daarvan: “vertaal alfanumerieke productcodes niet”. Beide, mits anders geformuleerd

De eenvoudigste manier om het te onthouden: het plan bepaalt wat er wordt vertaald, de batchinstructies bepalen hoe het wordt verwoord.

De zin schrijven

Gewoon Nederlands, één of twee regels, met de bron- en doeltaal expliciet vermeld. Deze formuleringen werken allemaal zoals ze zijn:

Only the rows where the German column is still empty. Source is English.
Only translate the units where the target is identical to the source,
it is a placeholder. Leave every unit that already differs.
Fill the empty Italian column from the English one. Do not touch the
French, German or Spanish columns.
Translate the description and the SEO title into Dutch where the Dutch
version is missing. Leave the handle and the SKU alone.
Instructions for this batchOptional
Apply
Je beschrijft de opdracht in gewone taal. AI Glot maakt daar een vertaalplan van dat je kunt nalezen en bijsturen voordat er iets draait.

Twee gewoontes die zichzelf terugbetalen. Noem de brontaal in plaats van die te laten afleiden, want afleiden is juist het minst betrouwbaar wanneer er het meest op het spel staat: bij korte teksten en bestanden die al vertaalde waarden bevatten, en dat geldt voor elk bestand in dit artikel. En noem de kolommen of sleutels die je ongemoeid wilt laten, zelfs als je scope-regel ze al uitsluit. Het kost één bijzin en voorkomt een hele categorie misverstanden.

Als dezelfde termen op dezelfde manier vertaald moeten worden als in de vorige batch, voeg ze dan één keer toe aan een woordenlijst voor je werkruimte. De rijen die je nu invult, komen dan overeen met de rijen die iemand in maart heeft ingevuld. Dat is de andere helft van het correct afronden van een gedeeltelijk vertaald bestand.

Bevestig de scope voordat je ervoor betaalt

Je hoeft er nooit op te vertrouwen dat de zin goed is geïnterpreteerd, want je leest eerst het plan.

Het plan geeft gemeten aantallen: het werkelijke aantal items en woorden in je bestand, geen schatting op basis van de bestandsgrootte. Je kunt het op drie manieren controleren: met een voorbeeld van hoe je bestand er achteraf uitziet, een tabel met de exacte tekstfragmenten die worden verstuurd en een samenvatting in gewone taal van wat er is begrepen. In de tabel met items zie je meteen of de scope niet klopt, want een rij die je verwachtte uit te sluiten staat daar wel of niet in.

Klopt er iets niet, geef dat dan in één zin aan en het plan wordt opnieuw opgesteld. De batch aanmaken en plannen is gratis, en je kunt dit zo vaak herhalen als je wilt. Alleen bij goedkeuring worden credits gebruikt, en het aantal is gebaseerd op het gemeten aantal woorden binnen de scope. De kostbare fout in dit hele artikel, betalen om werk dat al gedaan was opnieuw te vertalen, kun je dus alleen maken door een plan goed te keuren waarin dat staat.

Die volgorde is belangrijker dan je misschien denkt. Bij een tool die de scope gokt, moet je vertrouwen hebben. Bij een tool waarbij je de scope in een plan kunt nalezen, kost een vergissing niets.

Nog twee dingen om te weten

Je kunt vragen om alleen de gewijzigde records terug te krijgen. Heb je een klein bestand nodig om aan een beoordelaar te geven in plaats van de hele catalogus, zeg dat dan. De uitvoer bevat dan alleen de records waarvoor een vertaling is gemaakt. Dit werkt voor CSV, Excel, JSON, YAML, PO, XLIFF, SRT en ZIP-archieven met deze bestandsformaten. Voor app-bronbestanden wordt dit bewust niet ondersteund, omdat een app elke sleutel opzoekt die de app verwacht. Een gedeeltelijk strings.xml zorgt dan voor een crash in plaats van een kleiner bestand.

Een regel die over het hele bestand moet tellen, werkt niet. Bij een groot bestand verwerkt het programma dat de scope selecteert opeenvolgende vensters met rijen, in plaats van alles tegelijk te bekijken. Regels op basis van positie werken wel, omdat het programma de berekening kan uitvoeren: elke tweede rij, de eerste 500 rijen. Een regel waarvoor een lopend totaal nodig is, zoals “de eerste 200 rijen die nog leeg zijn”, werkt niet, omdat het programma tijdens één doorgang niet weet hoeveel eerdere vensters al aan de regel voldeden. Vraag om alle lege rijen of om een vast rijbereik, dan werken beide wel. Er kunnen veel rijen zijn: Excel staat 1,048,576 rijen per werkblad toe, dus een regel die ook op rij 18,000 geldt, kan ruimschoots worden getest.

De eerlijke reikwijdte van dit alles

Gebruik AI voor het werk dat echt repetitief is: de 200 rijen die deze maand zijn toegevoegd, de vierde taal waar iemand vorige week mee instemde, de tweeduizend items die een eerdere tool achterliet met alleen de brontekst. Dat werk is handmatig een ramp en elke maand is het weer hetzelfde.

Besteed je tijd aan het controleren van de uitvoer, niet aan het filteren van het bestand. Veel teams gebruiken dit als eerste stap en laten een reviewer alles nalopen. Dat is een goede besteding van de tijd van een expert. Een middag besteden aan het maken van een spreadsheetkopie waaruit je een paar rijen hebt verwijderd, is dat niet.

Heb je zo’n proces nog niet van begin tot eind doorlopen? Begin dan met de volledige workflow, niet met de afbakening. Er is een uitleg voor een CSV-bestand vertalen en een voor een Excel-werkmap vertalen. De afbakeningszin hierboven kun je ongewijzigd in beide gebruiken.

Schakel voor je homepage een vertaler in. Betaal niet voor de 400 rijen die al vertaald zijn als er nog 3,600 leeg zijn.

Klaar om je grote bestanden te vertalen?

Gratis account aanmaken →

Prompt gekopieerd

  1. 1Open je AI-agent: Claude, ChatGPT, Gemini, Cursor of een andere.
  2. 2Plak de prompt en verstuur het bericht.Ctrl V
  3. 3Volg de stappen. De agent vraagt om je bestand en talen, zet de vertaling klaar en geeft je een link om te starten.
Prompt bekijken

Vertaal een bestand voor mij met AI Glot. Vraag me welk bestand en welke talen, en volg daarna https://ai-glot.com/agent.md

Je eerste 5.000 woorden gratis