Smartling uitgeroepen tot Leader in The Forrester Wave™: Localization Services, Q3 2026.
Smartling uitgeroepen tot leider in The Forrester Wave ™

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-l10n commando 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 aanroepen Intl.plural worden 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/_other key 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-l10n command (of het extract_to_arb script van het oudere intl_translation pakket) leest bron-ARB-bestanden en genereert de Dart-klassen die een app importeert om locatie-specifieke strings te renderen.
  • Runtime-opmaak - Intl.message van het intl-pakket, De klassen DateFormat en NumberFormat zorgen 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

DatapuntWaardebron
internationale pakketdownloads (pub.dev)10,5 miljoen + in totaal, 6,1 k+ pakketlikes, uitgegeven door de geverifieerde dart.dev uitgeverpub.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 ARBeén, ander, weinig, veel, nul, tweeSmartling Helpcentrum, ICU-berichtformaat
Smartling GitHub Connector-configuratiemodiPull Request, Single Branch, On-DemandSmartling 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.

  1. Pak strings uit in een basis ARB-bestand - draai flutter gen-l10n het tegen je bronstrings, of gebruik intl_translation's extract_to_arb script, om een ARB-bestand te maken met metadata met "@@locale" en "@"-voorvoegsel intact.
  2. 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.
  3. 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_format Smartling-richtlijn standaard voor icu ARB) in plaats van meervouden en selects af te vlakken tot platte tekst.
  4. Stel richtlijnen voor de landinstelling en plaatsaanduiding in - gebruik een richtlijn zoals smartling.locale_format om te bepalen of de geretourneerde "@@locale"-waarde een kale taalcode, een volledige taal- en landcode of een aangepast formaat is dat overeenkomt met wat flutter gen-l10n verderop in de keten verwacht.
  5. Genereer en test op het apparaat - voer flutter gen-l10n uit 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.plural en Intl.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 van flutter 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.