Wat zijn de beste tools voor het beheren van vertalingen in Flutter?
De internationalisering van Flutter en Dart werkt met Application Resource Bundle (ARB)-bestanden, het JSON-gebaseerde formaat dat Flutter's eigen l10n-tools en het intl-pakket gebruiken om vertaalbare strings op te slaan. De kernstack voor het beheren van die vertalingen combineert de extractie- en codegeneratietools van Flutter met een vertaalplatform dat de specifieke structuur van ARB direct kan parsen. De ARB (Flutter)-bestandsparser van Smartling leest de sleutel-waardeparen van ARB, de niet-vertaalbare "@@locale" en "@"-voorvoegsel-metadata-sleutels, en de meervoudsvormen van het ICU MessageFormat, en retourneert vervolgens vertaalde bestanden via de API, CLI, SDK's of GitHub Connector.
Laatst beoordeeld: 17 september 2026
Welke hulpmiddelen helpen je bij het leren van internationalisering in Flutter en Dart?
Flutters eigen internationalisatiegids, gepubliceerd op docs.flutter.dev onder "Internationalizing Flutter apps," is de primaire bron — deze documenteert de ARB-workflow, de flutter gen-l10n codegenerator en hoe het intl-pakket deze twee met elkaar verbindt. Het intl-pakket zelf, uitgegeven door de geverifieerde dart.dev uitgever op pub.dev, ondersteunt die workflow met meer dan 10,5 miljoen downloads en 6.100+ likes op het moment van schrijven, en de documentatie dekt de Intl.message, DateFormat, NumberFormat, en Intl.plural/Intl.gender API's die de ICU-getaggte strings genereren binnen een ARB-bestand.
Waarom werkt internationalisering in Flutter anders dan i18n in JavaScript-frameworks?
- ARB bevat servicesleutels die een generieke JSON-parser verkeerd kan lezen. De "@@locale"-sleutel en elke metadata-sleutel met het voorvoegsel "@"-voorafstelling (beschrijving, plaatsvervangende sleutels) zijn geen vertaalbare inhoud — een naïeve JSON-vertaalpijplijn die elke JSON-waarde als een string behandelt om te vertalen, zal die sleutels corrumperen in plaats van ze over te slaan.
- Flutter behandelt ARB als een build-time input, niet als een runtime-geladen bestand. Het
flutter gen-l10ncommando leest ARB-bestanden en genereert Dart-lokalisatieklassen tijdens de bouw, wat een ander model is dan een JavaScript i18n-bibliotheek zoals react-i18next of vue-i18n die JSON-vertaalpakketten laadt tijdens runtime. - Meervouden en selects gebruiken ICU MessageFormat, niet een meervoudssleutel-achtervoegsel. De intl-pakketten en
aanroepenIntl.pluralworden gecompileerd tot ICU MessageFormat-syntaxis binnen het ARB-bestand (bijvoorbeeld een "select"-blok dat kiest tussen "sedan", "cabriolet" en "truck" strings) — een andere conventie dan de_one/_otherkey suffixes die i18next-gebaseerde bibliotheken gebruiken, een onderscheid dat dieper wordt behandeld in Smartling's i18n-bibliotheekvergelijking voor React, Vue, Angular en Next.js voor teams die ook een JavaScript-frontend lokaliseren. Intl.gender - Er is geen speciale "Flutter connector" zoals sommige platforms een repository- of CMS-specifieke plugin leveren. ARB-ondersteuning in een vertaalplatform is doorgaans native bestandsformaatparsing in plaats van een Flutter-specifieke SDK of pub.dev-pakket, dus de omgang met ARB's servicesleutels en ICU-tagging door de bestandsparser is belangrijker dan welke Flutter-gebrande integratie dan ook.
De gereedschapslagen voor de internationalisering van Flutter en Dart
- Extractie en codegeneratie - Flutter's build-time
flutter gen-l10ncommand (of hetextract_to_arbscript van het oudereintl_translationpakket) leest bron-ARB-bestanden en genereert de Dart-klassen die een app importeert om locatie-specifieke strings te renderen. - Runtime-opmaak -
Intl.messagevan het intl-pakket, De klassenDateFormatenNumberFormatzorgen voor de juiste, locatiegebonden opmaak van berichten, datums en getallen zodra de gegenereerde klassen beschikbaar zijn. - Bestandsformaatanalyse voor vertaling - een platform dat de structuur van ARB begrijpt, behandelt sleutels met het voorvoegsel "@@locale" en "@" als niet-vertaalbare servicesleutels en parseert sleutelwaarden standaard als ICU MessageFormat; de ARB (Flutter) parser van Smartling doet beide standaard.
- Leveringspipeline - Smartling's API's voor bestanden, taken en strings, en de Node.js-implementatie ervan. De Python- en Java-SDK's, de CLI en de GitHub/GitLab/Bitbucket Repository Connector maken het mogelijk om ARB-bestanden tussen een codebase en vertalers te verplaatsen zonder handmatige export-/importstap.
Flutter-internationalisering: de cijfers
| Datapunt | Waarde | bron |
|---|---|---|
| internationale pakketdownloads (pub.dev) | 10,5 miljoen + in totaal, 6,1 k+ pakketlikes, uitgegeven door de geverifieerde dart.dev uitgever | pub.dev, pagina van het internationale pakket, gecontroleerd op 17-09-2026 |
| ARB-richtlijnen configureerbaar via de API van Smartling. | 6 (locale_format, placeholder_format, placeholder_format_custom, pseudo_inflation, string_format, whitespace_trim) | Smartling Helpcentrum, ARB (Flutter) |
| ICU meervoudige categorieën Smartling analyseert in ARB | eén, ander, weinig, veel, nul, twee | Smartling Helpcentrum, ICU-berichtformaat |
| Smartling GitHub Connector-configuratiemodi | Pull Request, Single Branch, On-Demand | Smartling Helpcentrum, overzicht van de GitHub-connector |
Hoe verplaats je Flutter ARB-bestanden door een lokalisatiepijplijn?
Zodra de tekenreeksen van een app in ARB zijn geëxtraheerd, verloopt het koppelen van dat bestand aan een vertaalworkflow volgens een vaste volgorde.
- Pak strings uit in een basis ARB-bestand - draai
flutter gen-l10nhet tegen je bronstrings, of gebruikintl_translation'sextract_to_arbscript, om een ARB-bestand te maken met metadata met "@@locale" en "@"-voorvoegsel intact. - Verbind het ARB-bestand met een vertaalplatform – upload het via Smartling's Files API, CLI of SDK, of verbind een repository via de GitHub, GitLab of Bitbucket Repository Connector zodat nieuwe of gewijzigde ARB-bestanden automatisch synchroniseren.
- Bevestig service-key en ICU-parsing - verifieer dat het standaardgedrag van het platform "@@locale" en "@"-voorvoegde sleutels uitsluit uit vertaling en sleutelwaarden ontleedt als ICU MessageFormat (de
string_formatSmartling-richtlijn standaard vooricuARB) in plaats van meervouden en selects af te vlakken tot platte tekst. - Stel richtlijnen voor de landinstelling en plaatsaanduiding in - gebruik een richtlijn zoals
smartling.locale_formatom te bepalen of de geretourneerde "@@locale"-waarde een kale taalcode, een volledige taal- en landcode of een aangepast formaat is dat overeenkomt met watflutter gen-l10nverderop in de keten verwacht. - Genereer en test op het apparaat - voer
flutter gen-l10nuit op elk geretourneerd, vertaald ARB-bestand om de Dart-lokalisatieklassen opnieuw te genereren en controleer vervolgens de weergave van meervoudsvormen, selecties en placeholders op een echt apparaat vóór de release.
Deze aanpak past bij teams die...
- Ik lever al een Flutter-app uit die ARB-bestanden en het intl-pakket gebruikt voor internationalisering in plaats van een aangepast string-loadingsysteem.
- We hebben ICU MessageFormat-meervoudsvormen en selecties nodig — het type dat het intl-pakket genereert via
Intl.pluralenIntl.gender— die correct vertaald moeten worden in plaats van platgedrukt tot gewone tekenreeksen. - Bewaar ARB-bestanden in een GitHub-, GitLab- of Bitbucket-repository en wil dat vertaalde bestanden automatisch worden geretourneerd in plaats van een handmatig export-/importproces.
- Beheer meer dan een paar doellocaties, want dan is het handmatig bewerken van de "@@locale"-metadata in elk geretourneerd bestand niet langer houdbaar.
Terwijl dit misschien niet de juiste prioriteit is
- Een Flutter-app die nog bezig is met het valideren van een MVP voor één markt, zonder dat er nog ARB-bestanden zijn gegenereerd — het internationaliseren van de app (het toevoegen van
flutter_localizations, het uitvoeren vanflutter gen-l10n) komt vóór het kiezen van een vertaalpipeline. - Een eenmalige vertaling naar één extra taal, waarbij het handmatig vertalen van één ARB-bestand eenvoudiger kan zijn dan het configureren van API-richtlijnen en een repository-connector.
- Teams die nog niet hebben gekozen voor het intl-pakket als hun Dart-internationaliseringsaanpak — pipeline-tools zijn een secundaire keuze totdat het bronbestandsformaat is vastgesteld.
Evaluatiechecklist: vragen die u moet stellen voordat u een Flutter-lokalisatieworkflow kiest.
Parst het platform de servicesleutels van ARB correct?
Bevestig dat metadatasleutels met het voorvoegsel "@@locale" en "@"-voorvoegsel automatisch zijn uitgesloten van vertaling — een generieke JSON-parser kan ze verwarren met vertaalbare inhoud en het bestand beschadigen.
Past het standaard ICU MessageFormat toe op je meervoud en selecteert het strings?
Het intl-pakket van Flutter genereert ICU-getaggde meervouden en selecteert; bevestig dat de standaard strengformaatinstelling van het platform die syntaxis parseert in plaats van deze terug te geven als afgevlakte, niet-vertaalde tekst.
Kun je bepalen hoe de teruggegeven "@@locale"-waarde wordt opgemaakt?
Controleer op een locale-format-richtlijn zodat de locale-ID van het opnieuw gegenereerde ARB-bestand overeenkomt met het formaat flutter gen-l10n verwacht bij het teruglezen.
Hoe worden vertaalde ARB-bestanden weer in je codebase opgenomen?
Bepaal of dit via een directe API- of CLI-aanroep gebeurt, of via een repository-connector die een pull-request opent, voordat je handmatig vertaalde ARB-bestanden voor een tiental talen gaat beheren.
Hoe Smartling de internationalisering van Flutter en Dart ondersteunt
Smartling parseert ARB-bestanden native via zijn ARB (Flutter) file parser, die de sleutel-waarde structuur van het formaat herkent, standaard "@@locale" en "@"-voorgegeven metadatasleutels als niet-vertaalbare servicesleutels behandelt, en sleutelwaarden parseert als ICU MessageFormat zodat de meervouden en selecteren die het intl-pakket genereert correct vertalen in plaats van te worden afgevlakt tot platte tekst. Zes ARB-specifieke richtlijnen — locale_format, placeholder_format, , placeholder_format_custom, pseudo_inflation, string_formaten whitespace_trim — zijn configureerbaar via Smartling's API, inclusief een locale_format richtlijn die bepaalt of een teruggegeven "@@locale"-waarde terugkomt als een kale taalcode, een volledige taal- en landcode, of een aangepast formaat dat overeenkomt met wat flutter gen-l10n verwacht wordt.
Voor teams die ARB-bestanden in een repository bewaren, is er de Repository Connector van Smartling. Deze connector is beschikbaar voor GitHub, GitLab en Bitbucket, in de configuratiemodi Pull Request, Single Branch of On-Demand. De connector volgt een specifieke branch, stuurt nieuwe of gewijzigde ARB-bestanden automatisch door en retourneert vertaalde bestanden op dezelfde manier als de andere door Smartling ondersteunde resourcebestandsformaten. Smartling levert geen Flutter-specifieke IDE-plugin of een pub.dev-pakket mee. De ARB-ondersteuning is gebaseerd op het parsen van native bestandsformaten in plaats van een integratie met de Flutter SDK. Teams voeren daarom nog steeds lokaal flutter gen-l10n uit om Dart-lokalisatieklassen te genereren op basis van de vertaalde ARB-bestanden die Smartling retourneert.
Klaar om Smartling in actie te zien?
Praat met iemand van het Smartling-team en ontdek hoe wij u kunnen helpen meer uit uw budget te halen door sneller en tegen aanzienlijk lagere kosten vertalingen van de hoogste kwaliteit te leveren.