Om een taal toe te voegen aan een Flutter-app, vertaal je één bestand: je template-ARB. Al het andere, ook de Dart-klassen, wordt daaruit gegenereerd.
Deze gids gaat over dat ene bestand, app_en.arb, en over de drie dingen die daarin mis kunnen gaan: de @-metadata, de placeholders en de meervoudsvormen. Bekijk voor andere app-indelingen hoe je de taalbestanden van je app vertaalt.
Wat is een ARB-bestand?
Een ARB-bestand is JSON met een vaste conventie erbovenop. Flutter’s lokalisatietool leest ARB-bestanden standaard uit lib/l10n, gebruikt app_en.arb als template en genereert de Dart-klassen wanneer je flutter gen-l10n uitvoert. Elk bestand bevat één taal.
Vermeldingen bestaan uit paren: een sleutel met de bijbehorende tekst en een @-vermelding die de tekst beschrijft. Alleen de tekst wordt vertaald.
Welke optie moet je gebruiken?
| Geschikt voor | Beperking | |
|---|---|---|
| AI Glot | Een nieuwe locale of vijf, een glossary die altijd moet worden gevolgd, elke release | Niet nodig voor tien strings |
| Een platform voor vertaalbeheer (Crowdin, Lokalise, Phrase, Localizely) | Een team met reviewers en een koppeling met een repository | Je moet eerst een project instellen en je repository koppelen |
| DeepL | XLIFF-bestanden, die op de lijst staan | ARB staat niet op die lijst, dus je moet eerst converteren |
| ChatGPT, Claude of een andere assistent | Een handvol strings | Je schrijft zelf de prompt en voegt je glossary aan elk gesprek toe. Bij elke poging kan een sleutel veranderen, een {placeholder} kapotgaan of een ICU-meervoudsvorm verminkt raken, dus vergelijk elk bestand |
| Een freelancer of bureau | De tekst voor je App Store- en Play Store-vermelding | Het duurt lang, je betaalt per woord en je moet het bestand nog steeds voorbereiden |
Betaal iemand voor de winkelvermelding en het eerste scherm. Laat de lange reeks labels en berichten door een engine vertalen.
Waarom AI Glot geschikt is voor een ARB-bestand
- Sleutels en
@-metadata vormen de structuur. Je kunt ze ongewijzigd laten. - Placeholders en ICU-syntaxis blijven behouden.
{name}en{count, plural, ...}blijven in het bericht staan, terwijl de woorden in elke vertakking worden vertaald. - Meerdere talen in één opdracht, in plaats van vijf keer dezelfde strings.
- Eén glossary voor elke locale en voor bestanden die je later toevoegt.
- Eerst een kostenoverzicht, daarna pas uitgaven, met een voorbeeld dat je kunt controleren.
Het traject van één bestand
- 1Uploadenapp_en.arb zoals het isMaximaal 8 MB
- 2Geef aan wat je nodig hebtTalen en wat je ongewijzigd laatGratis
- 3Bekijk het planStrings, talen en kostenGratis
- 4GoedkeurenDe enige stap die iets kostVerbruikt credits
- 5DownloadenEén ARB-bestand per taalZet het erin
Zo ziet een vertaalde vermelding eruit
{ "@@locale": "en", "@@locale": "fr", "welcome": "Welcome back, {name}", "welcome": "Bon retour, {name}", "@welcome": { "description": "Greeting on the home screen" }, "cartItems": "{count, plural, one{1 item} other{{count} items}}" "cartItems": "{count, plural, one{1 article} other{{count} articles}}"}Wat je achteraf controleert
Meervoudsvormen in talen met meer vormen. In het Engels zijn twee vormen nodig. Het Russisch en Arabisch hebben er meer, en het vertaalde bericht kan vormen nodig hebben die niet in de Engelse brontekst voorkomen. Lees die berichten een keer na.
@@locale. Als je niet hebt gevraagd om deze waarde bij te werken, blijft die zoals hij was. Stel de waarde daarom in op de doellocale voordat je de bestanden publiceert.
Lengte. Controleer de schermen met de langste teksten op tekst die over een knop of kaart heen valt.
Zo doe je het, stap voor stap
1. Probeer gratis een bestand uit. De ARB-vertaler werkt zonder account en verwerkt bestanden tot 2 MB en 5,000 woorden.
2. Upload app_en.arb in de app, of verstuur het hieronder via de opdrachtregel.
3. Geef in één zin aan wat je nodig hebt.
Translate this file into French, German and Spanish.
Leave the @ metadata entries alone. Set @@locale to the target language.
De zin bepaalt wat er in het hele bestand wordt vertaald. Een regel over de formulering, zoals “behoud elke {placeholder} en de ICU-meervoudssyntaxis exact zoals die is” of “gebruik de informele aanspreekvorm”, zet je in het tweede vak bij het goedkeuren. Die regel wordt namelijk toegepast op elk bericht terwijl het wordt geschreven.
4. Voeg een woordenlijst toe met de appnaam, functienamen en woorden die je app altijd op dezelfde manier gebruikt. Zo stel je er een samen.
5. Bekijk het abonnement en kies een kwaliteitsniveau.
Lite levert ongeveer drie keer zoveel woorden per credit en is sneller. Ideaal voor een eerste versie in een nieuwe taal. Standard is bedoeld voor teksten die gebruikers als eerste lezen. Eén credit staat in Standard gelijk aan één woord.
6. Keur het resultaat goed en download het.
7. Plaats de bestanden in lib/l10n naast app_en.arb en voer vervolgens het volgende uit:
flutter gen-l10n
Eén bestand, meerdere talen
De bestandsnamen en aantallen zijn voorbeelden. Een ARB-bestand bevat één taal, dus elke taalregio heeft een eigen bestand.
Drie manieren om het te gebruiken
Via de opdrachtregel is de aanpak die Flutter-ontwikkelaars blijven gebruiken, omdat je die bij elke release opnieuw kunt uitvoeren:
id=$(aiglot batches create lib/l10n/app_en.arb \
--instruction "Translate into French. Leave the @ metadata entries alone. Set @@locale to the target language." \
--json | jq -r '.data.id')
aiglot batches get "$id" --json | jq '.data.plan'
aiglot batches approve "$id" --quality lite \
--instructions "Keep every {placeholder} and ICU plural syntax exactly as written."
aiglot batches download "$id" --output lib/l10n/app_fr.arb
Met je AI-agent: koppel AI Glot als MCP-server. De agent kan je project uitlezen, woordenlijsttermen voorstellen, de vertaaltaak uitvoeren, de bestanden opslaan in lib/l10n en flutter gen-l10n voor je uitvoeren.
In de app: uploaden, klikken, downloaden. Geschikt voor een eenmalige taak.
Bekijk voor een API-integratie de API-documentatie.
Op de pagina Prijzen zie je wat grotere volumes kosten. Een gratis account bevat credits waarmee je een echt bestand kunt vertalen.
De hier genoemde limieten golden op het moment dat dit werd geschreven: 8 MB per ARB-bestand en 2 MB en 5,000 woorden in de gratis tool. De standaardinstellingen van Flutter komen uit de documentatie van Flutter en kunnen veranderen. De lijst van DeepL komt uit de eigen documentatie. Bestandsnamen en aantallen tekenreeksen in de diagrammen zijn voorbeelden. Je abonnement toont de werkelijke waarden voor je eigen bestand en is gratis in te zien.
