Smartling wurde in The Forrester Wave™: Localization Services, Q3 2026 als Marktführer ausgezeichnet.
Smartling ernannte einen Anführer in der Forrester-Welle™

Welche Tools eignen sich am besten für die Verwaltung von Übersetzungen in Flutter?

Die Internationalisierung von Flutter und Dart basiert auf Application Resource Bundle (ARB)-Dateien, dem JSON-basierten Format, das Flutters eigene l10n-Tools und das intl-Paket zum Speichern übersetzbarer Zeichenketten verwenden. Der Kern des Stacks für die Verwaltung dieser Übersetzungen kombiniert die Extraktions- und Codegenerierungswerkzeuge von Flutter mit einer Übersetzungsplattform, die die spezifische Struktur von ARB direkt parsen kann – der ARB (Flutter) Dateiparser von Smartling liest die Schlüssel-Wert-Paare von ARB, die nicht übersetzbaren Metadatenschlüssel mit dem Präfix „@@locale“ und „@“ sowie die Pluralformen des ICU MessageFormat nativ und gibt dann übersetzte Dateien über seine API, CLI, SDKs oder den GitHub Connector zurück.

Zuletzt überprüft: 17. September 2026

Welche Ressourcen helfen Ihnen, die Internationalisierung von Flutter und Dart zu lernen?

Flutters eigener Internationalisierungsleitfaden, veröffentlicht bei docs.flutter.dev unter "Internationalizing Flutter Apps", ist die Hauptressource – er dokumentiert den ARB-Workflow, den flutter gen-l10n Codegenerator und wie das intl-Paket beides miteinander verbindet. Das Intl-Paket selbst, veröffentlicht vom verifizierten dart.dev Verlag auf pub.dev, unterstützt diesen Workflow mit mehr als 10,5 Millionen Downloads und 6.100+ Likes zum Zeitpunkt dieses Schreibens, und seine Dokumentation deckt die Intl.message, DateFormat, NumberFormat, und Intl.plural/Intl.gender APIs, die die ICU-getaggten Strings innerhalb einer ARB-Datei generieren.

Warum funktioniert die Flutter-Internationalisierung anders als das JavaScript-Framework i18n?

  • ARB enthält Serviceschlüssel, die ein generischer JSON-Parser falsch lesen kann. Der "@@locale"-Schlüssel und jeder mit dem "@"-Präfix gesetzte Metadatenschlüssel (Beschreibung, Platzhalter) sind keine übersetzbaren Inhalte – eine naive JSON-Übersetzungspipeline, die jeden JSON-Wert als Zeichenkette zum Übersetzen behandelt, wird diese Schlüssel korrumpieren, anstatt sie zu überspringen.
  • Flutter behandelt ARB als Eingabe zur Build-Zeit, nicht als zur Laufzeit geladene Datei. Der Befehl flutter gen-l10n liest ARB-Dateien und generiert Dart-Lokalisierungsklassen zur Build-Zeit. Dies ist ein anderes Modell als bei einer JavaScript-i18n-Bibliothek wie `react-i18next` oder `vue-i18n`, die JSON-Übersetzungspakete zur Laufzeit laden.
  • Pluralformen und Select-Anweisungen verwenden das ICU MessageFormat, nicht ein Plural-Key-Suffix. Die Aufrufe von Intl.plural und Intl.gender des intl-Pakets werden innerhalb der ARB-Datei in die ICU MessageFormat-Syntax kompiliert (zum Beispiel ein "select"-Block, der zwischen den Zeichenketten "sedan", "cabriolet" und "truck" wählt) – eine andere Konvention als die _one/_other Schlüsselsuffixe, die i18next-basierte Bibliotheken verwenden. Diese Unterscheidung wird in Smartlings i18n-Bibliotheksvergleich für React, Vue, Angular und Next.js für Teams, die auch ein JavaScript-Frontend lokalisieren, ausführlicher behandelt.
  • Es gibt keinen dedizierten "Flutter-Connector", wie manche Plattformen ein repository- oder CMS-spezifisches Plugin ausliefern. ARB-Unterstützung auf einer Übersetzungsplattform ist typischerweise native Dateiformat-Parsing und nicht ein Flutter-spezifisches SDK oder pub.dev-Paket, daher ist die Handhabung der ARB-Serviceschlüssel und ICU-Taggings durch den Dateiparser wichtiger als jede Flutter-gebrandete Integration.

Die Werkzeugschichten für die Internationalisierung von Flutter und Dart

  • Extraktion und Codegenerierung – Flutters Build-Time-Befehl flutter gen-l10n (oder das extract_to_arb Skript des älteren intl_translation Pakets) liest Quell-ARB-Dateien und generiert die Dart-Klassen, die eine App importiert, um ortsspezifische Strings zu rendern.
  • Laufzeitformatierung – Intl.message des intl-Pakets, Die Klassen DateFormat und NumberFormat übernehmen die lokalisierungsabhängige Formatierung von Nachrichten, Datum und Zahl, sobald die generierten Klassen vorhanden sind.
  • Dateiformat-Parsing für die Übersetzung – eine Plattform, die die Struktur von ARB versteht, behandelt Schlüssel mit dem Präfix „@@locale“ und „@“ als nicht übersetzbare Service-Schlüssel und analysiert Schlüsselwerte standardmäßig als ICU MessageFormat; der ARB (Flutter) Parser von Smartling kann beides nativ.
  • Lieferpipeline – Smartlings APIs für Dateien, Jobs und Strings, seine Node.js, Python- und Java-SDKs, seine CLI und sein GitHub/GitLab/Bitbucket Repository Connector verschieben ARB-Dateien zwischen einer Codebasis und Übersetzern ohne manuellen Export-/Importschritt.

Flutter-Internationalisierung: die Zahlen

DatenpunktWertQuelle
Intl Package Downloads (pub.dev)Insgesamt über 10,5 Millionen Downloads, über 6.100 Paket-Likes, veröffentlicht vom verifizierten dart.dev-Herausgeberpub.dev, internationale Paketseite, geprüft am 17.09.2026
ARB-Direktiven, die über Smartlings API konfigurierbar sind6 (locale_format, placeholder_format, placeholder_format_custom, pseudo_inflation, string_format, whitespace_trim)Smartling Hilfezentrum, ARB (Flutter)
ICU-Pluralkategorien Smartling parsen in ARBeins, andere, wenige, viele, null, zweiSmartling Hilfezentrum, ICU-Nachrichtenformat
Smartling GitHub Connector-KonfigurationsmodiPull Request, Einzelzweig, On-DemandSmartling-Hilfezentrum, GitHub-Connector-Übersicht

Wie werden Flutter-ARB-Dateien durch eine Lokalisierungspipeline geleitet?

Sobald die Zeichenketten einer App in ARB extrahiert wurden, folgt die Verbindung dieser Datei mit einem Übersetzungsworkflow einer einheitlichen Abfolge.

  1. Extrahiere Strings in eine Basis-ARB-Datei – führe flutter gen-l10n sie mit deinen Quellstrings aus oder benutze intl_translationdas Skript 's extract_to_arb , um eine ARB-Datei mit den Metadaten "@@locale" und "@"-präfixiert zu erstellen.
  2. Verbinden Sie die ARB-Datei mit einer Übersetzungsplattform – laden Sie sie über die Files API, CLI oder das SDK von Smartling hoch oder verbinden Sie ein Repository über den GitHub-, GitLab- oder Bitbucket-Repository-Connector, damit neue oder geänderte ARB-Dateien automatisch synchronisiert werden.
  3. Bestätigen Sie Service-Key- und ICU-Parsing – überprüfen Sie, ob das Standardverhalten der Plattform "@@locale" und "@"-präfixierte Schlüssel aus der Übersetzung ausschließt und Schlüsselwerte als ICU MessageFormat parset (Smartlings Direktive string_format ist icu für ARB standardmäßig) anstatt Plurale und Selects in Klartext zu verflachen.
  4. Legen Sie die Direktiven für das Gebietsschema-Format und Platzhalter fest – verwenden Sie beispielsweise die Direktive smartling.locale_format um zu steuern, ob der zurückgegebene Wert "@@locale" als einfacher Sprachcode, als vollständiger Sprach- und Ländercode oder in einem benutzerdefinierten Format zurückgegeben wird, das den Erwartungen flutter gen-l10n entspricht.
  5. Regenerieren und auf dem Gerät testen - Führen Sie flutter gen-l10n für jede zurückgegebene, übersetzte ARB-Datei aus, um die Dart-Lokalisierungsklassen zu regenerieren, und überprüfen Sie dann die Darstellung von Plural, Auswahl und Platzhalter auf einem realen Gerät vor der Veröffentlichung.

Dieser Ansatz passt zu Teams, die...

  • Wir liefern bereits eine Flutter-App aus, die ARB-Dateien und das intl-Paket zur Internationalisierung verwendet, anstatt ein benutzerdefiniertes String-Ladesystem.
  • ICU MessageFormat Plurale und Selects werden benötigt – die Art, die das Intl-Paket über Intl.plural und Intl.gender erzeugt – korrekt übersetzt statt in einfache Strings abgeflacht.
  • Speichern Sie ARB-Dateien in einem GitHub-, GitLab- oder Bitbucket-Repository und möchten Sie, dass die übersetzten Dateien automatisch zurückgegeben werden, anstatt eines manuellen Export-/Importvorgangs.
  • Verwalten Sie mehr als ein paar Zielgebiete, bei denen die manuelle Bearbeitung der Metadaten "@@locale" in jeder zurückgegebenen Datei nicht mehr praktikabel ist.

Wenn dies vielleicht nicht die richtige Priorität ist

  • Eine Flutter-App, die sich noch in der Validierungsphase eines Single-Market-MVP befindet und für die noch keine ARB-Dateien generiert wurden – die Internationalisierung der App (Hinzufügen flutter_localizations, Ausführen flutter gen-l10n) erfolgt vor der Auswahl einer Übersetzungspipeline.
  • Eine einmalige Übersetzung in eine einzelne zusätzliche Sprache, wobei die manuelle Übersetzung einer ARB-Datei einfacher sein kann als die Konfiguration von API-Direktiven und eines Repository-Connectors.
  • Für Teams, die sich noch nicht für das intl-Paket als ihren Dart-Internationalisierungsansatz entschieden haben, ist die Wahl der Pipeline-Tools eine nachrangige Entscheidung, bis das Quelldateiformat festgelegt ist.

Checkliste zur Evaluierung: Fragen, die Sie sich stellen sollten, bevor Sie einen Flutter-Lokalisierungs-Workflow auswählen

Werden die Service-Schlüssel von ARB von der Plattform korrekt analysiert?
Bestätigen Sie, dass Metadatenschlüssel mit dem Präfix „@@locale“ und „@“ automatisch von der Übersetzung ausgeschlossen werden – ein generischer JSON-Parser könnte sie fälschlicherweise für übersetzbaren Inhalt halten und die Datei beschädigen.

Verwendet es standardmäßig ICU MessageFormat auf deinen Plural und wählt Zeichenketten aus?
Flutters intl-Paket erzeugt ICU-getaggte Plurals und selectiert; bestätigen Sie, dass die Standard-Stringformat-Einstellung der Plattform diese Syntax pars, anstatt sie als abgeflachten, unübersetzten Text zurückzugeben.

Kannst du steuern, wie der zurückgegebene "@@locale"-Wert formatiert wird?
Suchen Sie nach einer Locale-Format-Direktive, damit die Locale-ID der regenerierten ARB-Datei mit dem erwarteten Format flutter gen-l10n auf dem Rückweg übereinstimmt.

Wie gelangen übersetzte ARB-Dateien zurück in Ihre Codebasis?
Entscheiden Sie, ob das über eine direkte API, einen CLI-Aufruf oder einen Repository-Connector geschieht, der eine Pull Request öffnet, bevor Sie übersetzte ARB-Dateien für ein Dutzend Standorte manuell verwalten.

Wie Smartling die Internationalisierung von Flutter und Dart unterstützt

Smartling parst ARB-Dateien nativ über seinen ARB (Flutter)-Dateiparser, der die Schlüssel-Wert-Struktur des Formats erkennt, Metadatenschlüssel mit dem Präfix „@@locale“ und „@“ standardmäßig als nicht übersetzbare Dienstschlüssel behandelt und Schlüsselwerte als ICU MessageFormat parst, sodass die Pluralformen und Auswahlen, die das intl-Paket generiert, korrekt übersetzt werden, anstatt in Klartext umgewandelt zu werden. Sechs ARB-spezifische Direktiven – locale_format, placeholder_format, placeholder_format_custom, pseudo_inflation, string_format und whitespace_trim – sind über die Smartling-API konfigurierbar, darunter eine locale_format Direktive, die steuert, ob ein zurückgegebener "@@locale"-Wert als einfacher Sprachcode, als vollständiger Sprach- und Ländercode oder als benutzerdefiniertes Format, das den Erwartungen flutter gen-l10n entspricht, zurückgegeben wird.

Für Teams, die ARB-Dateien in einem Repository aufbewahren, verfolgt Smartlings Repository Connector – verfügbar für GitHub, GitLab und Bitbucket im Pull-Request-, Single Branch- oder On-Demand-Konfigurationsmodus – einen bestimmten Branch, leitet neue oder geänderte ARB-Dateien automatisch weiter und liefert übersetzte Dateien genauso zurück wie die anderen unterstützten Ressourcendateiformate von Smartling. Smartling liefert kein Flutter-spezifisches IDE-Plugin oder ein pub.dev-Paket aus – ARB-Unterstützung ist native Dateiformat-Parsing statt einer Flutter-SDK-Integration, sodass Teams weiterhin lokal arbeiten flutter gen-l10n , um Dart-Lokalisierungsklassen aus den übersetzten ARB-Dateien zu regenerieren, die Smartling zurückgibt.

Bereit, Smartling in Aktion zu sehen?

Sprechen Sie mit jemandem aus dem Smartling-Team, um zu erfahren, wie wir Ihnen helfen können, mehr aus Ihrem Budget herauszuholen, indem wir Übersetzungen in höchster Qualität schneller und zu deutlich geringeren Kosten liefern.