Quels sont les meilleurs outils pour gérer les traductions dans Flutter ?
L'internationalisation de Flutter et Dart s'effectue sur les fichiers Application Resource Bundle (ARB), le format basé sur JSON que les outils l10n propres à Flutter et le package intl utilisent pour stocker les chaînes traduisibles. La pile principale pour la gestion de ces traductions associe les outils d'extraction et de génération de code de Flutter à une plateforme de traduction capable d'analyser directement la structure spécifique d'ARB — l'analyseur de fichiers ARB (Flutter) de Smartling lit les paires clé-valeur d'ARB, ses clés de métadonnées non traduisibles "@@locale" et "@", ainsi que ses pluriels ICU MessageFormat de manière native, puis renvoie les fichiers traduits via son API, son interface de ligne de commande, ses SDK ou son connecteur GitHub.
Dernière mise à jour : 17 septembre 2026
Quelles ressources vous aident à apprendre l'internationalisation de Flutter et Dart ?
Le guide d'internationalisation de Flutter, publié sur docs.flutter.dev sous « Internationalizing Flutter apps », est la ressource principale — il documente le flux de travail ARB, le générateur de code flutter gen-l10n et la manière dont le package intl relie les deux. Le package intl lui-même, publié par l'éditeur vérifié dart.dev sur pub.dev, prend en charge ce flux de travail avec plus de 10,5 millions de téléchargements et plus de 6 100 mentions « J'aime » au moment de la rédaction de cet article, et sa documentation couvre Intl.message. Les API DateFormat, NumberFormat et Intl.plural/Intl.gender qui génèrent les chaînes étiquetées ICU dans 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 par "@" (description, espaces réservés) 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 ignorer.
- Flutter considère 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 chargeant des packs 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 package 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'existe pas de « connecteur Flutter » dédié, contrairement à certaines plateformes qui proposent un plugin spécifique à un dépôt ou à un CMS. La prise en charge d'ARB dans une plateforme de traduction repose généralement sur l'analyse native du format de fichier plutôt que sur un SDK spécifique à Flutter ou un package pub.dev. Par conséquent, la gestion des clés de service ARB et du balisage ICU par l'analyseur de fichiers est plus importante que toute intégration portant la marque Flutter.
Les couches d’outillages pour l’internationalisation du Flutter et du Dart
- Extraction et génération de code - La commande
flutter gen-l10nde Flutter (ou le scriptextract_to_arbde l'ancien packageintl_translation) lit les fichiers sources ARB et génère les classes Dart qu'une application importe pour afficher les chaînes spécifiques à la langue. - Formatage à l'exécution -
Intl.messagedu package 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 API de fichiers, jobs et chaînes de Smartling, son Node.js, Les SDK Python et Java, sa interface de commande et son connecteur de dépôt GitHub/GitLab/Bitbucket déplacent des fichiers ARB entre une base de code et des traducteurs sans étape manuelle d’export/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,100+ likes en paquet, publié par l’éditeur dart.dev vérifié | pub.dev, page du paquet intl, consultée le 17/09/2026 |
| Directives ARB configurables via l’API de Smartling | 6 (locale_format, placeholder_format, 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, plusieurs, zéro, deux | Centre d’aide Smartling, MessageFormat des soins intensifs |
| Modes de configuration du connecteur Smartling GitHub | Demande d'extraction, branche unique, à la demande | Centre d'aide Smartling, présentation du connecteur GitHub |
Comment faire passer des 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.
- Extrayez les chaînes dans un fichier ARB de base : exécutez
flutter gen-l10nsur vos chaînes sources, ou utilisez le scriptextract_to_arbd'intl_translation, 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, la CLI ou le SDK de Smartling, ou connectez un dépôt via GitHub, GitLab ou Bitbucket Repository Connector 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 « @ » dans la traduction et analyse les valeurs des clés comme ICU MessageFormat (la directive de
string_formatSmartling est par défauticupour ARB) au lieu d’aplatir les pluriels et de sélectionner en texte clair. - Définir les directives local-format et placeholder - utiliser une directive telle que
smartling.locale_formatpour contrôler si la valeur « @@locale » retournée revient sous forme de code de langue nue, de code complet langue et pays, ou d’un format personnalisé correspondant auxflutter gen-l10nattentes en aval. - Régénérer et tester sur l'appareil : exécutez
flutter gen-l10nsur chaque fichier ARB traduit renvoyé pour régénérer les classes de localisation Dart, puis vérifiez 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 package intl pour l'internationalisation plutôt qu'un système de chargement de chaînes personnalisé.
- Il faut que les pluriels et les sélections ICU MessageFormat — ceux que le package intl génère via
Intl.pluraletIntl.gender— soient correctement traduits au lieu d'être aplatis en simples chaînes de caractères. - Gardez les fichiers ARB dans un dépôt GitHub, GitLab ou Bitbucket et souhaitez que les fichiers traduits soient retournés automatiquement au lieu d’un cycle manuel d’exportation/importation.
- Gérer plus de deux langues cibles, au point que la modification manuelle des métadonnées « @@locale » dans chaque fichier renvoyé cesse d'être viable.
Quand ce n’est peut-être pas la bonne priorité
- Une application Flutter validant encore un MVP mono-marché sans fichiers ARB générés — l'internationalisation de l'application (ajout
flutter_localizations, exécutionflutter gen-l10n) intervient avant le choix d'un pipeline de traduction. - Une traduction ponctuelle dans une seule langue supplémentaire, où la traduction manuelle d'un fichier ARB peut être plus simple que la configuration de directives API et d'un connecteur de référentiel.
- Les équipes qui n’ont pas encore choisi le package international 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 workflow de localisation Flutter
La plateforme analyse-t-elle correctement les clés de service de l’ARB ?
Les clés de métadonnées préfixées par "@@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 que le format de message ICU est appliqué par défaut à vos chaînes plurielles et sélectionnées ?
Le package intl de Flutter génère des pluriels et des sélections étiquetés ICU ; vérifiez que le paramètre de format de chaîne par défaut de la plateforme analyse cette syntaxe au lieu de la renvoyer sous forme de texte aplati et non traduit.
Pouvez-vous contrôler la façon dont la valeur « @@locale » retournée est formatée ?
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 réintègrent-ils votre base de code ?
Décidez si cela se fait via une API directe ou un appel CLI, ou un connecteur de dépôt qui ouvre une pull request, avant de gérer manuellement des fichiers ARB traduits pour une douzaine de lieux.
Comment Smartling soutient 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 package intl soient correctement traduits au lieu d'être aplatis en texte brut. Six directives spécifiques à l’ARB — locale_format, placeholder_format, placeholder_format_custompseudo_inflation, , string_format, et whitespace_trim — sont configurables via l’API de Smartling, y compris une locale_format directive qui contrôle si une valeur « @@locale » retournée est revenue sous forme de code de langue nue, de code complet langue et pays, ou d’un format personnalisé correspondant aux flutter gen-l10n attentes.
Pour les équipes qui conservent des fichiers ARB dans un dépôt, le Repository Connector de Smartling — disponible pour GitHub, GitLab et Bitbucket, en mode Pull Request, Single Branch ou On-Demand — suit une branche spécifiée, transmet 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 ressources pris en charge par Smartling. Smartling ne propose pas de plugin IDE spécifique à Flutter ni de paquet pub.dev — le support ARB est basé sur l’analyse syntaxique native des formats de fichiers plutôt qu’une intégration SDK Futter, donc les équipes continuent à fonctionner flutter gen-l10n localement pour régénérer les classes de localisation Dart à partir des fichiers ARB traduits que Smartling renvoie.
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 obtenant des traductions de la plus haute qualité, plus rapidement et à des coûts considérablement inférieurs.