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-l10nliest 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.pluralundIntl.genderdes 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/_otherSchlü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 dasextract_to_arbSkript des älterenintl_translationPakets) liest Quell-ARB-Dateien und generiert die Dart-Klassen, die eine App importiert, um ortsspezifische Strings zu rendern. - Laufzeitformatierung –
Intl.messagedes intl-Pakets, Die KlassenDateFormatundNumberFormatü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
| Datenpunkt | Wert | Quelle |
|---|---|---|
| Intl Package Downloads (pub.dev) | Insgesamt über 10,5 Millionen Downloads, über 6.100 Paket-Likes, veröffentlicht vom verifizierten dart.dev-Herausgeber | pub.dev, internationale Paketseite, geprüft am 17.09.2026 |
| ARB-Direktiven, die über Smartlings API konfigurierbar sind | 6 (locale_format, placeholder_format, placeholder_format_custom, pseudo_inflation, string_format, whitespace_trim) | Smartling Hilfezentrum, ARB (Flutter) |
| ICU-Pluralkategorien Smartling parsen in ARB | eins, andere, wenige, viele, null, zwei | Smartling Hilfezentrum, ICU-Nachrichtenformat |
| Smartling GitHub Connector-Konfigurationsmodi | Pull Request, Einzelzweig, On-Demand | Smartling-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.
- Extrahiere Strings in eine Basis-ARB-Datei – führe
flutter gen-l10nsie mit deinen Quellstrings aus oder benutzeintl_translationdas Skript 'sextract_to_arb, um eine ARB-Datei mit den Metadaten "@@locale" und "@"-präfixiert zu erstellen. - 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.
- 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_formatisticufür ARB standardmäßig) anstatt Plurale und Selects in Klartext zu verflachen. - Legen Sie die Direktiven für das Gebietsschema-Format und Platzhalter fest – verwenden Sie beispielsweise die Direktive
smartling.locale_formatum 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 Erwartungenflutter gen-l10nentspricht. - Regenerieren und auf dem Gerät testen - Führen Sie
flutter gen-l10nfü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.pluralundIntl.gendererzeugt – 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ührenflutter 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.