---
title: "Zo vertaal je de taalbestanden van je app met AI"
description: "JSON, YAML, XLIFF, PO, Android, iOS, Flutter en meer. Zo vertaal je de taalbestanden van je app met AI, via de opdrachtregel, je agent of de app."
date: 2026-10-04
language: nl
canonical: https://ai-glot.com/nl/blog/how-to-translate-app-language-files-with-ai
source: AI Glot blog
---
**De taalbestanden van een app vormen één opdracht met dertien bestandsextensies.** Je hebt een JSON-bestand, een `strings.xml`, een PO-bestand of een String Catalog en wilt dezelfde tekenreeksen in vijf extra talen, zonder dat de build stukgaat.

Het formaat verandert. De opdracht blijft hetzelfde: behoud de sleutels en tijdelijke aanduidingen, vertaal de waarden en herhaal dit bij de volgende release.

## Welke optie moet je gebruiken?

| | Geschikt voor | Waar de grenzen liggen |
|---|---|---|
| **AI Glot** | Elk van de onderstaande formaten, meerdere talen in één opdracht, een woordenlijst die consistent moet worden toegepast, elke release | Niet nodig voor tien tekenreeksen |
| **Een vertaalbeheerplatform** (Crowdin, Lokalise, Phrase) | Een team met een doorlopende workflow, reviewers en een koppeling met de repository | Je moet eerst een project instellen en je repository koppelen voordat de eerste tekenreeks wordt verwerkt |
| **DeepL** | [XLIFF-bestanden tot 10 MB](https://developers.deepl.com/docs/best-practices/document-translations) | Het ondersteunt XLIFF, maar niet de andere genoemde formaten. De woordenlijst vervangt termen zonder te begrijpen waarom ze vastliggen |
| **ChatGPT, Claude of een andere assistent** | Een handvol tekenreeksen | Je schrijft zelf de prompt en voegt je woordenlijst aan elk gesprek toe. Een lang bestand wordt langzaam token voor token uitgeschreven en verbruikt je gebruikslimiet. Bij elke uitvoering bestaat het risico dat een sleutel verandert of een tijdelijke aanduiding beschadigd raakt |
| **Een freelancer of bureau** | De App Store-pagina en je onboarding | Het duurt langer, je betaalt per woord en je moet de bestanden nog steeds voorbereiden |

**Betaal iemand voor de vijf tekenreeksen die je app verkopen**: de winkelvermelding en het eerste scherm. Verwerk de duizenden tekenreeksen erachter met een engine.

## Kies je bestand

Elk formaat heeft een eigen pagina met een gratis tool en meer informatie. Dit is het belangrijkste om te weten over elk formaat.

| Bestand | Locatie | Belangrijk om te weten |
|---|---|---|
| [**JSON**](/nl/file-formats/json-translation) | `locales/en.json` | De sleutels blijven in dezelfde volgorde staan. Placeholders zoals `{count}` worden beschermd door je instructies |
| [**ARB** (Flutter)](/nl/file-formats/arb-translation) | `lib/l10n/app_en.arb` | De metadata-items met `@` worden meegekopieerd. Stel `@@locale` in op de doeltaal |
| [**YAML**](/nl/file-formats/yaml-translation) | `config/locales/en.yml` | Placeholders in Rails-stijl, zoals `%{name}`, worden herkend. Opmerkingen verdwijnen wanneer het bestand wordt weggeschreven |
| [**TOML**](/nl/file-formats/toml-translation) | `i18n/en.toml` (Hugo) | Alleen tekstwaarden worden gewijzigd. Opmerkingen blijven normaal gesproken behouden |
| [**XLIFF**](/nl/file-formats/xliff-translation) | exports uit je tools | Versies 1.2 en 2.0. Inline-tags worden opnieuw opgebouwd aan de hand van de brontekst |
| [**PO en POT**](/nl/file-formats/po-translation) | `locale/fr/LC_MESSAGES/app.po` | Meervoudsvormen worden afgestemd op de doeltaal en de header `Plural-Forms` wordt bijgewerkt |
| [**Qt Linguist**](/nl/file-formats/qt-translation) | `app_fr.ts` | Berichten met meervoudsvormen (numerus) worden nog niet vertaald. Voer daarna `lrelease` uit |
| [**String Catalog**](/nl/file-formats/xcstrings-translation) | `Localizable.xcstrings` | Alle talen staan in één bestand. Vervangingen en verschillen tussen apparaten blijven ongewijzigd |
| [**iOS .strings**](/nl/file-formats/ios-strings-translation) | `fr.lproj/Localizable.strings` | Wordt teruggeleverd als UTF-8, met behoud van commentaarblokken. Meervoudsvormen in `.stringsdict` worden ook verwerkt |
| [**Android XML**](/nl/file-formats/android-xml-translation) | `res/values-fr/strings.xml` | Meervoudsvormen en stringarrays worden verwerkt. `translatable="false"` wordt gerespecteerd |
| [**RESX en RESW**](/nl/file-formats/resx-translation) | `Resources.fr.resx` | Je krijgt één bestand per taal. Opmerkingen voor ontwikkelaars blijven in het Engels |
| [**Java .properties**](/nl/file-formats/properties-translation) | `messages_fr.properties` | Alleen UTF-8. Zet een waarde die doorloopt op de volgende regel eerst op één regel |

Niet elk formaat slaat talen op dezelfde manier op. Een **String Catalog** bevat alle talen in één bestand. De meeste andere formaten, waaronder JSON, Android en iOS, bevatten **één taal per bestand**. Elke doeltaal krijgt dus een eigen bestand.

## Zo ziet een vertaald bestand eruit

Alleen de waarden veranderen.

*Illustration: Een taalbestand voor en na vertaling. De sleutels en de plaatshouder blijven staan zoals ze zijn, en alleen de waarden worden vertaald.*

## Het traject van één bestand

*Illustration: De vijf stappen van een taalbestand-taak. Alles vóór goedkeuring is gratis, dus een foutief plan aanpassen kost niets.*

Er wordt vóór stap vier niets verbruikt. En als het plan niet klopt, kun je het kosteloos aanpassen.

## Zo doe je het, stap voor stap

**1. Probeer gratis een bestand.** Op elke [pagina over bestandsindelingen](/nl/file-formats) staat een gratis tool waarvoor je geen account nodig hebt.

**2. Upload het bestand** in [de app](https://app.ai-glot.com/signup) of verstuur het via de opdrachtregel. Daarover lees je hieronder meer.

**3. Geef in één zin aan wat je nodig hebt.**

```
Translate this file into French.
Skip every key that starts with "internal.".
```

*Illustration: Je beschrijft de opdracht in gewone taal. AI Glot maakt daar een vertaalplan van dat je kunt nalezen en bijsturen voordat er iets draait.*

De zin bepaalt wat er in het hele bestand wordt vertaald. Regels voor de formulering zelf, zoals "laat elke `{placeholder}` precies staan" of "gebruik de informele aanspreekvorm", vul je tijdens het goedkeuren in het tweede veld in. Die regels worden namelijk toegepast op elke afzonderlijke string.

**4. Voeg een woordenlijst toe** met de productnaam, functienamen en woorden die je app altijd op dezelfde manier gebruikt. [Zo stel je er een samen](/nl/blog/build-translation-glossary-brand).

*Illustration: Een woordenlijst legt termen vast die niet mogen verschuiven en past dezelfde keuze toe op elk bestand.*

**5. Kies een kwaliteitsniveau.**

*Illustration: Twee kwaliteitsniveaus, per bestand te kiezen. Met Lite vertaal je ongeveer drie keer zoveel woorden voor hetzelfde aantal credits.*

**Lite** levert ongeveer drie keer zoveel woorden per tegoed en werkt sneller. Ideaal voor de vele instellingen en helpteksten. **Standard** is bedoeld voor strings die gebruikers als eerste lezen. Eén tegoed staat bij Standard gelijk aan één woord.

**6. Keur het resultaat goed en download het.**

*Illustration: Je krijgt één bestand terug, in exact het formaat waarin je het hebt aangeleverd.*

## Eén bestand, meerdere talen

*Illustration: Één bronbestand wordt één vertaald bestand per taal, allemaal met dezelfde sleutels en dezelfde woordenlijst.*

De bestandsnamen zijn een voorbeeld. Voor een hele map met taalbestanden zet je ze in een ZIP-bestand. Maximaal 200 bestanden en 20 MB worden als één opdracht verwerkt.

## Drie manieren om het te gebruiken

*Illustration: Drie manieren om je taalbestanden te vertalen. Ze leveren allemaal dezelfde vertaalde bestanden op.*

**Vanaf de opdrachtregel** is de optie die ontwikkelaars blijven gebruiken. Het zijn dezelfde vier stappen, in een script:

```bash
# 1. Create the job. Free. Returns a plan and an id.
id=$(aiglot batches create locales/en.json \
      --instruction "Translate into French. Skip every key that starts with internal." \
      --json | jq -r '.data.id')

# 2. Read the plan for free, then commit.
aiglot batches get "$id" --json | jq '.data.plan'
aiglot batches approve "$id" --quality lite \
  --instructions "Keep every {placeholder} exactly as written."

# 3. When the status is completed, bring the file back.
aiglot batches download "$id" --output locales/fr.json
```

**Met je AI-agent:** verbind AI Glot als [MCP-server](https://ai-glot.com/docs/mcp/overview). De agent kan je repository lezen, gevonden termen voorstellen voor de woordenlijst, ze aan je werkruimte toevoegen, de taak uitvoeren en de bestanden terugzetten op de juiste plek.

**In de app:** uploaden, klikken, downloaden. Geschikt voor een eenmalige taak.

Bekijk voor een API-integratie de [API-documentatie](https://ai-glot.com/docs/api/overview).

## Controleer het resultaat

Bouw de app in één vertaalde taal en open de drie schermen met de langste teksten. Voer daarna je gebruikelijke linting of controle op ontbrekende sleutels uit, want een gewijzigde sleutel wordt als ontbrekende tekenreeks weergegeven. Vertaalde tekst is vaak langer dan het Engels, dus controleer of knoppen en labels niet buiten hun kaders vallen.

Op de pagina [Prijzen](/nl/pricing) zie je wat grotere volumes kosten. Een [gratis account](https://app.ai-glot.com/signup) bevat een gratis proefvertaling van je eerste 5,000 woorden, zodat je een echt bestand kunt vertalen.

---

*De hier vermelde limieten golden toen dit werd geschreven: 200 bestanden en 20 MB per ZIP. De limiet van DeepL komt uit de eigen documentatie. Bestandsnamen en aantallen tekenreeksen in de diagrammen zijn voorbeelden. In je abonnement zie je de werkelijke aantallen voor je eigen bestanden. Je kunt die gegevens gratis bekijken.*