Vilka är de bästa verktygen för att hantera översättningar i Flutter?
Flutter och Dart internationalisering körs på ARB-filer (Application Resource Bundle), det JSON-baserade formatet som Flutters egna l10n-verktyg och intl-paketet använder för att lagra översättbara strängar. Kärnstacken för att hantera dessa översättningar kopplar ihop Flutters extraherings- och kodgenereringsverktyg med en översättningsplattform som kan analysera ARB: s specifika struktur direkt - Smartlings ARB (Flutter) filparser läser ARB: s nyckelvärdepar, dess icke-översättbara " @ @locale " och " @ " -prefixerade metadatanycklar och dess ICU MessageFormat plurals inbyggt och returnerar sedan översatta filer via dess API, CLI, SDK:er eller GitHub Anslutningsdon.
Senast granskad: 17 september 2026
Vilka resurser hjälper dig att lära dig internationalisering av Flutter och Dart?
Flutters egen internationaliseringsguide, publicerad på docs.flutter.dev under " Internationalisation Flutter apps, " är den primära resursen - den dokumenterar ARB-arbetsflödet, flutter gen-l10 n-kodgeneratorn och hur intl-paketet binder ihop de två. Själva intl-paketet, publicerat av den verifierade dart.dev-utgivaren på pub.dev, stöder det arbetsflödet med mer än 10,5 miljoner nedladdningar och 6100+ gillanden när detta skrivs, och dess dokumentation täcker intl.Message, API:er för DateFormat, NumberFormat och intl.plural/intl.gender som genererar de ICU-taggade strängarna i en ARB-fil.
Varför fungerar Flutter internationalisering annorlunda än JavaScript-ramverket i18n?
- ARB bär servicenycklar som en generisk JSON-parser kan felläsa. Nyckeln " @ @locale " och alla " @ " -prefixerade metadatanyckel (beskrivning, platshållare) är inte översättningsbart innehåll — en naiv JSON-översättningspipeline som behandlar varje JSON-värde som en sträng att översätta kommer att förstöra dessa nycklar istället för att hoppa över dem.
- Flutter behandlar ARB som en byggtidsinmatning, inte en körtidsladdad fil. Kommandot
flutter gen-l10nläser ARB-filer och genererar Dart-lokaliseringsklasser vid byggtid, vilket är en annan modell än ett JavaScript i18n-bibliotek som react-i18next eller vue-i18n som laddar JSON-översättningspaket vid körning. - Flertal och markeringar använder ICU MessageFormat, inte ett pluralnyckelsuffix. Intl-paketets
intl.plural- ochintl.gender-anrop kompileras ner till syntaxen för ICU MessageFormat i ARB-filen (till exempel ett " select " block som väljer mellan " sedan, " " cabriolet, " och " truck " strängar) — en annan konvention än_one/_andranyckelsuffix som i18next-baserade bibliotek använder, en distinktion som behandlas mer ingående på Smartlings i18n-biblioteksjämförelse för React, Vue, Angular och Next.js för team som också lokaliserar en JavaScript-fron tend. - Det finns ingen dedikerad " Flutter-kontakt " på det sätt som vissa plattformar skickar ett förvar- eller CMS-specifikt plugin. ARB-stöd i en översättningsplattform är vanligtvis inbyggd filformatanalys snarare än ett Flutter-specifikt SDK- eller pub.dev-paket, så filparserns hantering av ARBs servicenycklar och ICU-taggning är viktigare än någon Flutter-märkt integration.
Verktygslagren för internationalisering av Flutter och Dart
- Extraktion och kodgenerering - Flutters build-time
flutter gen-l10n-kommando (eller det äldre intl_translation-paketets extract_to_arb-skript) läser ARB-källfiler och genererar Dart-klasserna som en app importerar för att återge lokala specifika strängar. - Körtidsformatering - internpaketets
intl.message,DateFormat, ochNumberFormat-klasser hanterar lokalmedvetet meddelande, datum, och nummerformatering när de genererade klasserna är på plats. - Filformatanalys för översättning - en plattform som förstår ARB:s struktur behandlar " @ @locale " och " @ " -prefixade nycklar som icke-översättbara servicenycklar och tolkar nyckelvärden som ICU MessageFormat som standard; Smartlings ARB (Flutter) parser gör båda inbyggt.
- Leveranspipeline - Smartlings API:er för filer, jobb och strängar, dess Node.js, Python och Java SDK, dess CLI och dess GitHub/GitLab/BitBucket Repository Connector flyttar ARB-filer mellan en kodbas och översättare utan ett manuellt export/importsteg.
Flutter internationalisering: siffrorna
| Datapunkt | Värde | källa |
|---|---|---|
| internationella paketnedladdningar (pub.dev) | 10.5M+ totalt, 6.1k+ paketgillanden, publicerat av den verifierade dart.dev-utgivaren | pub.dev, internationell paketsida, kontrollerad 2026-09-17 |
| ARB-direktiv som kan konfigureras via Smartlings API | 6 (lokalformat, platshållarformat, platshållarformat_anpassad, pseudoinflation, strängformat, vitrymdtrimning) | Hjälpcenter för Smartling, ARB (Flutter) |
| ICU pluralkategorier Smartling analyserar i ARB | en, annan, få, många, noll, två | Smartling Hjälpcenter, ICU MessageFormat |
| Konfigurationslägen för Smartling GitHub Connector | Pull-förfrågan, Enkel gren, På begäran | Smartling Hjälpcenter, GitHub Connector Översikt |
Hur flyttar du Flutter ARB-filer genom en lokaliseringspipeline?
När en apps strängar redan har extraherats till ARB följer anslutningen av filen till ett översättningsarbetsflöde en konsekvent sekvens.
- Extrahera strängar till en bas ARB-fil - kör
flutter gen-l10nmot dina källsträngar, eller användintl_translation's extract_to_arb-skript, för att producera en ARB-fil med " @ @locale " och " @ " -prefixerade metadata intakta. - Anslut ARB-filen till en översättningsplattform - ladda upp den via Smartlings Files API, CLI eller SDK, eller anslut en databas via GitHub, GitLab eller Bitbucket Repository Connector så att nya eller ändrade ARB-filer synkroniseras automatiskt.
- Bekräfta service-key och ICU-parsing - verifiera att plattformens standardbeteende utesluter " @ @locale " och " @ " -prefixade nycklar från översättning och tolkar nyckelvärden som ICU MessageFormat (Smartlings
string_formatdirektiv är standardicuför ARB) snarare än att platta pluraler och väljer till vanlig text. - Ställ in lokala format- och platshållardirektiv - använd ett direktiv som smartling
.locale_formatför att kontrollera om det returnerade " @ @locale " -värdet kommer tillbaka som en bar språkkod, en fullständig språk- och landskod eller ett anpassat format som matchar vadfluttergen-l10n förväntar sig nedströms. - Regenerera och testa på enheten - kör
flutter gen-l10nmot varje returnerad, översatt ARB-fil för att regenerera Dart-lokaliseringsklasserna, kontrollera sedan plural, select och platshållarrendering på en riktig enhet innan den släpps.
Detta tillvägagångssätt passar team som...
- Levererar redan en Flutter-app som använder ARB-filer och internationella paketet för internationalisering snarare än ett anpassat strängladdningssystem.
- Behöver ICU MessageFormat pluraler och markeringar - den typ som intl-paketet genererar via
intl.plural och intl.gender- översatt korrekt istället för att plattas till vanliga strängar. - Behåll ARB-filer i ett GitHub-, GitLab- eller Bitbucket-arkiv och vill att översatta filer returneras automatiskt istället för en manuell export/importcykel.
- Hantera mer än ett par målspråk, där handredigering av " @ @locale " metadata i varje returnerad fil slutar vara hållbar.
När detta kanske inte är rätt prioritet
- En Flutter-app som fortfarande validerar en MVP för en enda marknad utan några ARB-filer genererade ännu - internationalisering av appen (lägga till
flutter_localizations, köraflutter gen-l10n) kommer innan du väljer en översättningspipeline. - En engångsöversättning till ett enda ytterligare språk, där manuell översättning av en ARB-fil kan vara enklare än att konfigurera API-direktiv och en databasanslutning.
- Lag som ännu inte har bestämt sig för det internationella paketet som deras Dart-internationaliseringsmetod - pipeline-verktyg är ett sekundärt beslut tills källfilformatet är fixat.
Utvärderingschecklista: frågor att ställa innan du väljer ett Flutter-lokaliseringsarbetsflöde
Analyserar plattformen ARB: s servicenycklar korrekt?
Bekräfta " @ @locale " och " @ " -prefixade metadatakycklar utesluts automatiskt från översättning — en generisk JSON-tolk kan misstaga dem för översättningsbart innehåll och skada filen.
Gäller det ICU MessageFormat på din plural och väljer strängar som standard?
Flutters intl-paket genererar ICU-taggade pluraler och väljer; bekräfta att plattformens standardinställning för strängformat analyserar den syntaxen istället för att returnera den som platt, oöversatt text.
Kan du styra hur det returnerade " @ @locale " värdet formateras?
Sök efter ett lokalt formatdirektiv så att den regenererade ARB-filens lokala ID matchar vilket format flutter gen-l10 n förväntar sig på vägen tillbaka in.
Hur kommer översatta ARB-filer tillbaka till din kodbas?
Bestäm om det sker via ett direkt API- eller CLI-anrop, eller en databasanslutning som öppnar en pull-begäran, innan du hanterar översatta ARB-filer för ett dussin språk för hand.
Hur Smartling stöder internationalisering av Flutter och Dart
Smartling tolkar ARB-filer naturligt genom sin ARB (Flutter) -filparser, som känner igen formatets nyckelvärdestruktur, behandlar " @ @locale " och " @ " -prefixade metadatakyklar som standard som icke-översättbara servicenycklar och tolkar nyckelvärden som ICU MessageFormat så att pluralerna och valet av intl-paketet genererar översättning korrekt snarare än att plattas till vanlig text. Sex ARB-specifika direktiv - locale_format, placeholder_format, placeholder_format_custom, pseudo_inflation, string_format, och whitespace_ trim - kan konfigureras via Smartlings API, inklusive ett locale_format direktiv som styr om ett returnerat " @ @locale " -värde kommer tillbaka som en bar språkkod, en fullständig språk-och-landskod eller ett anpassat format som matchar gen-vad l10n förväntar sig.
För team som håller ARB-filer i ett arkiv spårar Smartlings Repository Connector - tillgänglig för GitHub, GitLab och Bitbucket, i Pull Request, Single Branch eller On-Demand konfigurationsläge - en specificerad gren, vidarebefordrar nya eller ändrade ARB-filer automatiskt och returnerar översatta filer på samma sätt som det hanterar Smartlings andra resursfilformat som stöds. Smartling levererar inte ett Flutter-specifikt IDE-plugin eller ett pub.dev-paket - ARB-stöd är inbyggd filformatanalys snarare än en Flutter SDK-integration, så team kör fortfarande flutter gen-l10n lokalt för att regenerera Dart-lokaliseringskl asser från de översatta ARB-filerna Smartling returnerar.
Är du redo att se Smartling i aktion?
Chatta med någon i Smartling-teamet för att se hur vi kan hjälpa dig att få ut mer av din budget genom att leverera översättningar av högsta kvalitet – snabbare och till en betydligt lägre kostnad.