---
title: "Een JSON-bestand vertalen naar een andere taal"
description: "Vertaal een JSON-taalbestand met een werkend voorbeeld, instructies voor de teksten in je app en een Node.js-controle voor geneste sleutels, waarden en plaatsaanduidingen."
date: 2026-10-20
language: nl
canonical: https://ai-glot.com/nl/blog/how-to-translate-json-files
source: AI Glot blog
---
**Upload de brontekst, geef de doeltaal op en vertaal de tekstwaarden om een JSON-taalbestand te vertalen.** Begin met een klein bestand in de [gratis JSON-vertaler](/nl/file-formats/json-translation) en controleer het geretourneerde bestand vervolgens in je app. Je kunt het [voorbeeld downloaden](/examples/localization/en.json) dat we hier gebruiken.

Deze handleiding is bedoeld voor app-teksten, zoals `locales/en.json`. Bevat je bestand een productcatalogus of API-records, bepaal dan eerst welke velden leesbare tekst bevatten voordat je dezelfde werkwijze toepast. Een ID die als string is opgeslagen, blijft een ID.

## Probeer eerst deze zes strings

Het voorbeeld bevat een afrekenscherm en twee instellingenlabels:

```json
{
  "checkout": {
    "title": "Your order",
    "greeting": "Hello, {{name}}",
    "pay": "Pay now",
    "support": "Contact Pinecart support"
  },
  "settings": {
    "language": "Language",
    "notifications": "Email notifications"
  }
}
```

Upload het bestand naar de JSON-tool en voer het volgende in:

```text
Translate every text value into French.
Keep Pinecart in English and preserve {{name}} exactly.
```

De gratis tool accepteert bestanden tot **2 MB**, maximaal vijf per dag, en vertaalt maximaal **5.000 woorden per bestand**. Grotere bestanden worden volledig teruggestuurd, waarbij de resterende tekst ongewijzigd blijft. Je kunt de download dus als voorbeeld gebruiken, maar het is geen volledig vertaalde taalversie. Gebruik [de app](https://app.ai-glot.com/signup) voor een volledig vertaald groot bestand, een woordenlijst voor je werkruimte en herhaalde releases.

## Bepaal welke onderdelen bij je app horen

De toepassing roept `checkout.title` aan; de gebruiker ziet de bijbehorende waarde. De variabele voor de naam wordt tijdens het uitvoeren van de app ingevuld. Beide moeten behouden blijven wanneer je van taal wisselt.

*Illustration: Vertaal de waarden en controleer vervolgens de sleutels en tijdelijke aanduidingen voordat je een taalbestand commit.*

AI Glot leest JSON als een structuur en schrijft die terug met een inspringing van twee spaties. Een diff kan daardoor ook wijzigingen in witruimte bevatten. Beoordeel de waarden los van de opmaak.

**Geef aan welke conventie je voor placeholders gebruikt.** Het voorbeeld gebruikt de i18next-notatie `{{name}}`. Andere projecten gebruiken `{name}`, `%s` of ICU-berichten. Neem bij het schrijven van de instructie een echte tekenreeks uit je app over. Zet tijdens het vertalen de ene conventie niet om naar een andere.

## Controleer het plan voordat je een grote opdracht start

*Illustration: Een JSON-vertaling begint met een bronbestand en eindigt met een gecontroleerd taalbestand in de applicatie.*

Gebruik voor terugkerende releases een [woordenlijst voor je werkruimte](/nl/blog/build-translation-glossary-brand) voor producttermen en functienamen. Scope-instructies bepalen **welke waarden** worden vertaald; stijlregels bepalen **hoe elke waarde** wordt geschreven.

Een bronbestand met alleen `en.json` geeft niet aan welke Franse labels vorige maand zijn vertaald. De opdracht "vertaal alleen de ontbrekende Franse strings" bevat geen Frans bestand waarmee je kunt vergelijken. Sluit bekende sleutelprefixen uit of lever bron- en doelvelden samen aan en controleer hoe het plan de opdracht interpreteert. De [gids voor app-taalbestanden](/nl/blog/how-to-translate-app-language-files-with-ai) behandelt de bredere workflow en andere indelingen.

## Voer een structurele controle uit voordat je de wijzigingen vastlegt

Sla de download naast `en.json` op als `fr.json`. Kopieer dit naar `check-locale.mjs` en voer `node check-locale.mjs` uit met Node.js. Het script controleert geneste objectsleutels, arraylengtes, waardetypen, ongewijzigde niet-tekstwaarden en de placeholders met dubbele accolades uit het voorbeeld.

```js

const source = JSON.parse(readFileSync('en.json', 'utf8'));
const target = JSON.parse(readFileSync('fr.json', 'utf8'));
const tokens = text => [...text.matchAll(/\{\{[^{}]+\}\}/g)]
  .map(match => match[0]).sort();

function check(a, b, path = '$') {
  assert.equal(typeof b, typeof a, `${path}: value type changed`);
  if (a === null || typeof a !== 'object') {
    if (typeof a === 'string') {
      assert.ok(b.trim().length || !a.trim().length,
        `${path}: translation is empty`);
      assert.deepEqual(tokens(b), tokens(a),
        `${path}: placeholders changed`);
    } else {
      assert.deepEqual(b, a, `${path}: non-text value changed`);
    }
    return;
  }
  assert.equal(Array.isArray(b), Array.isArray(a),
    `${path}: container type changed`);
  assert.ok(b !== null, `${path}: container is null`);
  if (Array.isArray(a)) {
    assert.equal(b.length, a.length, `${path}: array length changed`);
  }
  assert.deepEqual(Object.keys(b).sort(), Object.keys(a).sort(),
    `${path}: keys changed`);
  for (const key of Object.keys(a)) check(a[key], b[key], `${path}.${key}`);
}

check(source, target);
console.log('Keys, types and {{placeholders}} match. Review the wording next.');
```

**Dit valideert een contract, niet de kwaliteit van de vertaling.** Een waarde die in het Engels is blijven staan, slaagt ook voor de controle. Hetzelfde geldt voor een vertaling met grammaticale fouten of een tekst die te lang is voor de knop. De tokenregel geldt voor `{{name}}`, niet voor alle placeholderindelingen. Pas die aan de syntaxis van je toepassing aan.

Bij [i18next JSON v4](https://www.i18next.com/misc/json-format) gebruiken meervoudsvormen taalspecifieke achtervoegsels en geven je functieaanroepen een aantal mee. Bereid de sleutels voor die je doellocale nodig heeft en test ze. Deze controle op gelijke sleutels wijst een gewijzigde sleutelset bewust af. De controle genereert of valideert geen nieuwe verzameling meervoudsvormen.

## Rond de controle af in de toepassing

Laat de bestaande loader voor de Franse locale van je app `fr.json` gebruiken. Open de checkout, vul een echte naam in en controleer de langste knop op de kleinste schermbreedte die wordt ondersteund. Als je meervoudsvormen gebruikt, test dan aantallen die elke vorm in de doeltaal activeren.

Voor een klein bestand is een zorgvuldige handmatige controle misschien voldoende. Werk je bij elke release met duizenden strings, houd dan het bronbestand, de woordenlijst, deze structurele controle en de controle in de gebruikersinterface in één workflow bij elkaar. In de oplossing voor [app-lokalisatie](/nl/solutions/app-localization-file-translation) lees je welke rol AI Glot speelt wanneer meerdere mensen dit proces beheren.