Hvad er de bedste værktøjer til at administrere oversættelser i Flutter?
Flutter- og Dart-internationalisering kører på Application Resource Bundle (ARB)-filer, det JSON-baserede format, som Flutters egne l10n-værktøjer og intl-pakken bruger til at gemme oversættelige strenge. Kernstakken til styring af disse oversættelser parrer Flutters udtræknings- og kodegenereringsværktøjer med en oversættelsesplatform, der kan analysere ARBs specifikke struktur direkte — Smartlings ARB (Flutter) filparser læser ARBs nøgle-værdi-par, dens ikke-oversættelige "@@locale" og "@"-præfikserede metadatanøgler og dens ICU MessageFormat flertalsformer native og returnerer derefter oversatte filer via dens API, CLI, SDK'er eller GitHub Connector.
Sidst gennemgået: 17. september 2026
Hvilke ressourcer hjælper dig med at lære Flutter og Dart internationalisering?
Flutters egen internationaliseringsguide, udgivet på docs.flutter.dev under "Internationalisering af Flutter-apps", er den primære ressource - den dokumenterer ARB-arbejdsgangen, flutter gen-l10n -kodegeneratoren og hvordan intl-pakken binder de to sammen. Selve intl-pakken, udgivet af den verificerede dart.dev-udgiver på pub.dev, understøtter denne arbejdsgang med mere end 10,5 millioner downloads og 6.100+ likes på nuværende tidspunkt, og dens dokumentation dækker Intl.message, DateFormat, NumberFormat og Intl.plural/Intl.gender -API'er, der genererer de ICU-mærkede strenge i en ARB-fil.
Hvorfor fungerer Flutter-internationalisering anderledes end JavaScript-framework i18n?
- ARB indeholder servicenøgler, som en generisk JSON-parser kan fejllæse. Nøglen "@@locale" og enhver metadatanøgle med præfikset "@" (beskrivelse, pladsholdere) er ikke oversætteligt indhold — en naiv JSON-oversættelsespipeline, der behandler hver JSON-værdi som en streng, der skal oversættes, vil ødelægge disse nøgler i stedet for at springe dem over.
- Flutter behandler ARB som et input under build, ikke en fil indlæst under runtime. Kommandoen
flutter gen-l10nlæser ARB-filer og genererer Dart-lokaliseringsklasser under byggetid, hvilket er en anden model end et JavaScript i18n-bibliotek som react-i18next eller vue-i18n, der indlæser JSON-oversættelsesbundter under kørsel. - Flertals- og selectord bruger ICU MessageFormat, ikke et flertalsnøglesuffiks. intl-pakkens
Intl.pluralogIntl.genderkald kompileres ned til ICU MessageFormat-syntaks i ARB-filen (for eksempel en "select"-blok, der vælger mellem strengene "sedan", "cabriolet" og "truck") - en anden konvention end de_one/_othernøglesuffikser, som i18next-baserede biblioteker bruger, en sondring, der er dækket mere dybdegående i Smartlings i18n-bibliotekssammenligning for React, Vue, Angular og Next.js for teams, der også lokaliserer en JavaScript-frontend. - Der er ingen dedikeret "Flutter-connector" på den måde, som nogle platforme leverer et repository- eller CMS-specifikt plugin. ARB-understøttelse i en oversættelsesplatform er typisk parsing af native filformater snarere end en Flutter-specifik SDK- eller pub.dev-pakke, så filparseren's håndtering af ARB's servicenøgler og ICU-tagging er vigtigere end nogen Flutter-brandet integration.
Værktøjslagene til internationalisering af Flutter og Dart
- Udtrækning og kodegenerering - Flutters build-time
flutter gen-l10n-kommando (eller den ældreintl_translationpakkesextract_to_arb-script) læser ARB-kildefiler og genererer de Dart-klasser, som en app importerer, for at gengive lokalitetsspecifikke strenge. - Runtime-formatering - intl-pakkens
Intl.message,DateFormatogNumberFormatklasserne håndterer lokalitetsbevidst meddelelses-, dato- og talformatering, når de genererede klasser er på plads. - Filformatparsing til oversættelse - en platform, der forstår ARB's struktur, behandler nøgler med "@@locale" og "@"-præfikser som ikke-oversættelige servicenøgler og parser nøgleværdier som ICU MessageFormat som standard; Smartlings ARB (Flutter) parser gør begge dele direkte.
- Leveringspipeline - Smartlings API'er til filer, job og strenge, dens Node.js, Python- og Java SDK'er, dets CLI og dets GitHub/GitLab/Bitbucket Repository Connector flytter ARB-filer mellem en kodebase og oversættere uden et manuelt eksport-/importtrin.
Flutter internationalisering: tallene
| Datapunkt | Værdi | kilde |
|---|---|---|
| download af internationale pakker (pub.dev) | 10,5 millioner+ i alt, 6,1k+ pakke-likes, udgivet af den verificerede dart.dev-udgiver | pub.dev, international pakkeside, tjekket 2026-09-17 |
| ARB-direktiver kan konfigureres via Smartlings API | 6 (locale_format, placeholder_format, placeholder_format_custom, pseudo_inflation, string_format, whitespace_trim) | Smartling Hjælpecenter, ARB (Flutter) |
| ICU flertalskategorier Smartling-parser i ARB | en, anden, få, mange, nul, to | Smartling Hjælpecenter, ICU Meddelelsesformat |
| Smartling GitHub Connector-konfigurationstilstande | Pull Request, Enkelt forgrening, On-Demand | Smartling Hjælpecenter, GitHub Connector Oversigt |
Hvordan flytter man Flutter ARB-filer gennem en lokaliseringspipeline?
Når en apps strenge allerede er udtrukket i ARB, følger forbindelsen af den fil til en oversættelsesworkflow en ensartet rækkefølge.
- Udpak strenge til en basis-ARB-fil - kør
flutter gen-l10nmod dine kildestrenge, eller brugintl_translationextract_to_arbscript for at producere en ARB-fil med metadata med "@@locale" og præfikset "@" intakte. - Forbind ARB-filen til en oversættelsesplatform - upload den via Smartlings Files API, CLI eller SDK, eller forbind et repository via GitHub-, GitLab- eller Bitbucket Repository Connector, så nye eller ændrede ARB-filer synkroniseres automatisk.
- Bekræft service-key og ICU parsing - bekræft at platformens standardadfærd udelukker nøgler med "@@locale" og "@"-præfikser fra oversættelse og parser nøgleværdier som ICU MessageFormat (Smartlings
string_formatdirektiv bruger som standardicutil ARB) i stedet for at udjævne flertalsformer og vælge til almindelig tekst. - Angiv direktiver for lokalitetsformat og pladsholdere - brug en direktiv som
smartling.locale_formatfor at kontrollere, om den returnerede "@@locale"-værdi returneres som en ren sprogkode, en fuld sprog- og landekode eller et brugerdefineret format, der matcher, hvadflutter gen-l10nforventer downstream. - Regenerer og test på enhed - kør
flutter gen-l10nmod hver returneret, oversat ARB-fil for at regenerere Dart-lokaliseringsklasserne, og tjek derefter plural-, select- og placeholder-gengivelse på en rigtig enhed før udgivelsen.
Denne tilgang passer til teams, der...
- Leverer allerede en Flutter-app, der bruger ARB-filer og intl-pakken til internationalisering i stedet for et brugerdefineret strengindlæsningssystem.
- Skal have ICU MessageFormat flertals- og select-værdier — den slags som intl-pakken genererer via
Intl.pluralogIntl.gender— oversat korrekt i stedet for at blive fladtrykt til almindelige strenge. - Opbevar ARB-filer i et GitHub-, GitLab- eller Bitbucket-arkiv, og ønsker at få oversatte filer returneret automatisk i stedet for en manuel eksport-/importcyklus.
- Administrer mere end et par mållokaliteter, hvor manuel redigering af "@@locale"-metadata i hver returneret fil ikke længere er bæredygtig.
Når dette måske ikke er den rette prioritet
- En Flutter-app, der stadig validerer en MVP for et enkelt marked, uden at der endnu er genereret nogen ARB-filer — internationalisering af appen (tilføjelse af
flutter_localizations, kørsel afflutter gen-l10n) kommer før valg af en oversættelsespipeline. - En engangsoversættelse til et enkelt ekstra sprog, hvor manuel oversættelse af én ARB-fil kan være enklere end at konfigurere API-direktiver og en repository-connector.
- Teams, der endnu ikke har valgt den internationale pakke som deres Dart-internationaliseringsmetode — pipeline-værktøjer er en sekundær beslutning, indtil kildefilformatet er rettet.
Evalueringstjekliste: spørgsmål du bør stille, før du vælger en Flutter-lokaliseringsworkflow
Parser platformen ARB's servicenøgler korrekt?
Bekræft, at metadatanøgler med præfikset "@@locale" og "@" automatisk udelukkes fra oversættelse — en generisk JSON-parser kan forveksle dem med indhold, der kan oversættes, og beskadige filen.
Anvender den som standard ICU MessageFormat på dine flertals- og select-strenge?
Flutters intl-pakke genererer ICU-mærkede flertalsformer og vælger; bekræft, at platformens standardindstilling for strengformat analyserer den syntaks i stedet for at returnere den som fladtrykt, uoversat tekst.
Kan du styre, hvordan den returnerede "@@locale"-værdi formateres?
Tjek for en locale-format-direktiv, så den regenererede ARB-fils locale-ID matcher det format, flutter gen-l10n forventer på vej tilbage.
Hvordan kommer oversatte ARB-filer tilbage i din kodebase?
Beslut, om det sker via et direkte API- eller CLI-kald, eller en repository-connector, der åbner en pull-anmodning, før du administrerer oversatte ARB-filer for et dusin lokaler manuelt.
Hvordan Smartling understøtter internationalisering af Flutter og Dart
Smartling parser ARB-filer direkte via sin ARB (Flutter) filparser, som genkender formatets nøgle-værdi-struktur, behandler metadatanøgler med "@@locale" og "@"-præfikser som ikke-oversættelige servicenøgler som standard, og parser nøgleværdier som ICU MessageFormat, så flertalsformerne og selects, som intl-pakken genererer, oversættes korrekt i stedet for at blive fladtrykt til almindelig tekst. Seks ARB-specifikke direktiver — locale_format, placeholder_format, placeholder_format_custom, pseudo_inflation, string_format og whitespace_trim — kan konfigureres via Smartlings API, herunder et locale_format direktiv, der styrer, om en returneret "@@locale"-værdi returneres som en ren sprogkode, en fuld sprog- og landekode eller et brugerdefineret format, der matcher, hvad flutter gen-l10n forventer.
For teams, der opbevarer ARB-filer i et repository, sporer Smartlings Repository Connector – tilgængelig for GitHub, GitLab og Bitbucket i Pull Request-, Single Branch- eller On-Demand-konfigurationstilstand – en bestemt branch, videresender automatisk nye eller ændrede ARB-filer og returnerer oversatte filer på samme måde, som den håndterer Smartlings andre understøttede ressourcefilformater. Smartling leverer ikke et Flutter-specifikt IDE-plugin eller en pub.dev-pakke — ARB-understøttelse er parsing af native filformater snarere end en Flutter SDK-integration, så teams kører stadig flutter gen-l10n lokalt for at regenerere Dart-lokaliseringsklasser fra de oversatte ARB-filer, som Smartling returnerer.
Klar til at se Smartling i aktion?
Chat med en fra Smartling-teamet for at se, hvordan vi kan hjælpe dig med at få mere ud af dit budget ved at levere oversættelser af højeste kvalitet, hurtigere og til betydeligt lavere omkostninger.