Quels sont les meilleurs outils pour gérer les traductions dans Flutter?
L’internationalisation de Flutter et Dart fonctionne sur des fichiers Application Resource Bundle (ARB), le format basé sur JSON utilisé par les propres outils l10n de Fluter et le paquet intl pour stocker des chaînes tradusibles. La pile de base pour gérer ces traductions jumelle les outils d’extraction et de génération de code de Flutter avec une plateforme de traduction capable d’analyser directement la structure spécifique de l’ARB — l’analyseur de fichiers ARB (Flutter) de Smartling lit les paires clé-valeur de l’ARB, ses clés de métadonnées non traduisibles « @@locale » et « @ », ainsi que ses pluriels ICU MessageFormat nativement, puis retourne les fichiers traduits via son API, son interface CLI, ses SDK ou son connecteur GitHub.
Dernière révision : 17 septembre 2026
Quelles ressources vous aident à apprendre l'internationalisation de Flutter et Dart ?
Le propre guide d’internationalisation de Flutter, publié à docs.flutter.dev sous la rubrique « Internationalisation des applications Flutter », est la principale ressource — il documente le flux de travail ARB, le flutter gen-l10n générateur de code, et la façon dont le paquet intl relie les deux. Le paquet intl lui-même, publié par l’éditeur dart.dev vérifié sur pub.dev, soutient ce flux de travail avec plus de 10,5 millions de téléchargements et 6 100+ mentions J’aime au moment d’écrire ces lignes, et sa documentation couvre le Intl.message, DateFormat, NumberFormat, et Intl.plural/Intl.gender qui génèrent les chaînes taguées aux soins intensifs à l’intérieur d’un fichier ARB.
Pourquoi l’internationalisation de Flutter fonctionne-t-elle différemment du cadre JavaScript i18n?
- L’ARB contient des clés de service qu’un analyseur JSON générique peut mal lire. La clé « @@locale » et toute clé de métadonnées préfixée « @ » (description, placeholders) ne sont pas du contenu traduisible — un pipeline de traduction JSON naïf qui traite chaque valeur JSON comme une chaîne à traduire corrompra ces clés au lieu de les sauter.
- Flutter considère l’ARB comme une entrée au moment de la compilation, et non comme un fichier chargé à l’exécution. La
flutter gen-l10ncommande lit les fichiers ARB et génère des classes de localisation Dart au moment de la compilation, ce qui est un modèle différent d’une bibliothèque JavaScript i18n comme react-i18next ou vue-i18n qui charge des paquets de traduction JSON à l’exécution. - Les pluriels et les sélections utilisent le format de message ICU, et non un suffixe de clé plurielle. Les appels
Intl.pluraletIntl.genderdu paquet intl sont compilés en syntaxe ICU MessageFormat dans le fichier ARB (par exemple, un bloc « select » permettant de choisir entre les chaînes « sedan », « cabriolet » et « truck ») — une convention différente des suffixes de clé_one/_otherutilisés par les bibliothèques basées sur i18next, une distinction abordée plus en détail dans la comparaison des bibliothèques i18n de Smartling pour React, Vue, Angular et Next.js pour les équipes localisant également une interface JavaScript. - Il n’y a pas de « connecteur Flutter » dédié comme certaines plateformes livrent un plugin spécifique à un dépôt ou CMS. Le support ARB dans une plateforme de traduction est généralement basé sur l’analyse syntaxique native des formats de fichiers plutôt qu’un SDK spécifique à Flutter ou un paquet pub.dev, donc la gestion des clés de service et du balisage des ICU par le parseur de fichiers importe plus que toute intégration sous la marque Flutter.
Les couches d’outillages pour l’internationalisation de Flutter et Dart
- Extraction et génération de code – La commande de compilation
flutter gen-l10nde Fluter (ou le script deextract_to_arbl’ancienintl_translationpaquet) lit les fichiers ARB sources et génère les classes Dart qu’une application importe pour rendre des chaînes spécifiques à la localité. - Formatage à l'exécution -
Intl.messagedu paquet intl, Les classesDateFormatetNumberFormatgèrent la mise en forme des messages, des dates et des nombres en fonction des paramètres régionaux une fois les classes générées en place. - Analyse du format de fichier pour la traduction - une plateforme qui comprend la structure ARB traite les clés préfixées « @@locale » et « @ » comme des clés de service non traduisibles et analyse les valeurs des clés comme ICU MessageFormat par défaut ; l'analyseur ARB (Flutter) de Smartling fait les deux nativement.
- Pipeline de livraison - Les fichiers de Smartling, les tâches et les API de chaînes, son Node.js, Les SDK Python et Java, sa interface de code et son connecteur de dépôt GitHub/GitLab/Bitbucket déplacent les fichiers ARB entre une base de code et des traducteurs sans étape manuelle d’exportation/importation.
Internationalisation du Flutter : les chiffres
| Point de données | Valeur | source |
|---|---|---|
| Téléchargements de paquets intl (pub.dev) | 10,5 M+ au total, 6,1 000+ mentions J’aime, publié par l’éditeur dart.dev vérifié | pub.dev, page du paquet international, vérifié le 17-09-2026 |
| Directives ARB configurables via l’API de Smartling | 6 (format_local, format_de_place,_placeholder_format_custom, pseudo_inflation, string_format, whitespace_trim) | Centre d'assistance Smartling, ARB (Flutter) |
| Les catégories plurielles des unités de soins intensifs (USI) sont analysées par Smartling dans ARB. | un, autre, peu, beaucoup, zéro, deux | Centre d'aide Smartling, Format des messages des soins intensifs |
| Modes de configuration du connecteur GitHub Smartling | Demande d'extraction, branche unique, sur demande | Centre d'aide Smartling, présentation du connecteur GitHub |
Comment déplacez-vous les fichiers ARB Flutter à travers un pipeline de localisation?
Une fois les chaînes de caractères d'une application extraites au format ARB, la connexion de ce fichier à un flux de travail de traduction suit une séquence cohérente.
- Extraire des chaînes dans un fichier ARB de base – exécuter
flutter gen-l10nsur vos chaînes sources, ou utiliserintl_translationle script deextract_to_arb, pour produire un fichier ARB avec les métadonnées préfixées « @@locale » et « @ » intactes. - Connectez le fichier ARB à une plateforme de traduction : téléchargez-le via l’API Files, l’interface de ligne de commande ou le kit de développement logiciel de Smartling, ou connectez un dépôt via le connecteur de dépôt GitHub, GitLab ou Bitbucket afin que les fichiers ARB nouveaux ou modifiés se synchronisent automatiquement.
- Confirmez l’analyse des clés de service et de l’ICU – vérifiez que le comportement par défaut de la plateforme exclut les clés préfixées « @@locale » et « @ » de la traduction et analyse les valeurs des clés comme ICU MessageFormat (la directive de
string_formatSmartling est par défauticupour ARB) plutôt que d’aplatir les pluriels et de sélectionner en texte clair. - Définissez les directives de format de langue et d'espace réservé ; utilisez une directive telle que
smartling.locale_formatpour contrôler si la valeur « @@locale » retournée est un simple code de langue, un code complet de langue et de pays, ou un format personnalisé correspondant à ce queflutter gen-l10nattend en aval. - Régénérer et tester sur l'appareil : exécuter
flutter gen-l10nsur chaque fichier ARB traduit renvoyé pour régénérer les classes de localisation Dart, puis vérifier le rendu du pluriel, de la sélection et de l'espace réservé sur un appareil réel avant la publication.
Cette approche convient aux équipes qui...
- Déployez déjà une application Flutter qui utilise les fichiers ARB et le paquet intl pour l'internationalisation plutôt qu'un système de chargement de chaînes personnalisé.
- Besoin des formats de messageMessage ICU pluriels et sélection — ceux générés par le paquet intl via
Intl.pluraletIntl.gender— traduits correctement au lieu d’aplatis en chaînes simples. - Gardez les fichiers ARB dans un dépôt GitHub, GitLab ou Bitbucket et voulez que les fichiers traduits soient retournés automatiquement au lieu d’un cycle manuel d’exportation/importation.
- Gérez plus d’un site cible, où l’édition manuelle des métadonnées « @@locale » dans chaque fichier retourné cesse d’être durable.
Quand ce n’est peut-être pas la bonne priorité
- Une application Flutter validant encore un MVP d’un seul marché sans encore générer de fichiers ARB — l’internationalisation de l’application (ajouter
flutter_localizations, exécuterflutter gen-l10n) passe avant le choix d’un pipeline de traduction. - Une traduction unique dans un seul langage additionnel, où traduire manuellement un fichier ARB peut être plus simple que de configurer des directives API et un connecteur de dépôt.
- Les équipes qui n’ont pas encore choisi le package intl comme approche d’internationalisation Dart — l’outil pipeline est une décision secondaire jusqu’à ce que le format du fichier source soit fixé.
Liste de contrôle d'évaluation : questions à se poser avant de choisir un flux de travail de localisation Flutter
La plateforme analyse-t-elle correctement les clés de service de l’ARB?
Confirmez que les clés de métadonnées préfixées « @@locale » et « @ » sont automatiquement exclues de la traduction — un analyseur JSON générique peut les confondre avec du contenu traduisible et corrompre le fichier.
Est-ce qu’il applique ICU MessageFormat au pluriel et sélectionne les chaînes par défaut?
Le paquet international de Flutter génère des pluriels tagués aux soins intensifs et sélectionne; confirme que le paramètre par défaut du format de chaîne de la plateforme analyse cette syntaxe au lieu de la retourner sous forme de texte aplati et non traduit.
Pouvez-vous contrôler le formatage de la valeur retournée par "@@locale"
Vérifiez la présence d'une directive locale-format afin que l'ID de locale du fichier ARB régénéré corresponde au format attendu flutter gen-l10n lors du retour.
Comment les fichiers ARB traduits sont-ils réintégrés dans votre base de code ?
Avant de gérer manuellement des fichiers ARB traduits pour une douzaine de langues, décidez si cela se fait via un appel API ou CLI direct, ou via un connecteur de dépôt qui ouvre une demande d'extraction.
Comment Smartling prend en charge l'internationalisation de Flutter et Dart
Smartling analyse nativement les fichiers ARB via son analyseur de fichiers ARB (Flutter), qui reconnaît la structure clé-valeur du format, traite par défaut les clés de métadonnées préfixées par "@locale" et « @ » comme des clés de service non traduisibles, et analyse les valeurs clés au format ICU MessageFormat afin que les pluriels et les sélections générés par le paquet intl soient correctement traduits au lieu d'être aplatis en texte brut. Six directives spécifiques à ARB — locale_format, placeholder_format, placeholder_format_custom, pseudo_inflation, string_format et whitespace_trim — sont configurables via l'API de Smartling, notamment une directive locale_format qui contrôle si une valeur « @@locale » renvoyée est un simple code de langue, un code complet de langue et de pays, ou un format personnalisé correspondant à ce que flutter gen-l10n attend.
Pour les équipes qui conservent des fichiers ARB dans un référentiel, le connecteur de dépôt Smartling — disponible pour GitHub, GitLab et Bitbucket, en mode de configuration Pull Request, Single Branch ou On-Demand — suit une branche spécifiée, transfère automatiquement les fichiers ARB nouveaux ou modifiés et renvoie les fichiers traduits de la même manière qu'il gère les autres formats de fichiers de ressources pris en charge par Smartling. Smartling ne fournit pas de plugiciel IDE spécifique à Flutter ni de package pub.dev — la prise en charge d'ARB repose sur l'analyse native du format de fichier plutôt que sur une intégration du SDK Flutter. Les équipes exécutent donc toujours flutter gen-l10n localement pour régénérer les classes de localisation Dart à partir des fichiers ARB traduits renvoyés par Smartling.
Prêt à voir Smartling en action?
Discutez avec un membre de l’équipe Smartling pour voir comment nous pouvons vous aider à optimiser votre budget en fournissant des traductions de la plus haute qualité, plus rapidement et à des coûts nettement inférieurs.