Pourquoi un pluriel change d'une langue à l'autre
Les catégories zero, one, two, few, many et other suivent les règles CLDR de chaque langue. En anglais, one ne désigne que 1 ; en français, il couvre 0 et 1 ; en russe ou en polonais, few et many s'ajoutent ; l'arabe en utilise six ; le japonais n'en a qu'une seule, other. Un message écrit pour l'anglais avec deux branches est donc incomplet dès qu'on le traduit.
L'outil lit ces règles dans votre navigateur (Intl.PluralRules) : les catégories et les nombres d'exemple affichés sont ceux de la langue, sans table à maintenir.
Le piège de =1 avec gen-l10n
Une branche =1 devient la catégorie one dans le code généré par flutter gen-l10n. En français, cette catégorie s'applique aussi à zéro : avec count = 0, « 1 article restant » s'afficherait. Préférez la catégorie one avec le nombre dans le texte, ou ajoutez une branche =0 : l'outil le propose en une case à cocher. Les détails sont dans le guide sur les pluriels et placeholders ICU.
Comment utiliser le résultat
- Copiez la ligne
"clé": "{count, plural, …}" de chaque langue dans le fichier app_xx.arb correspondant.
- Ajoutez les métadonnées
@clé une seule fois, dans le fichier modèle.
- Lancez
flutter gen-l10n : une branche other manquante ou une accolade non fermée arrête la génération avec le nom du fichier.
Pour vérifier ensuite qu'aucune traduction n'a perdu ou renommé son placeholder, utilisez le vérificateur de clés manquantes ARB.
Limites de l'outil
L'outil génère la structure ; c'est vous qui écrivez le texte de chaque forme. Il ne gère pas les messages select ni les pluriels imbriqués, et ne double pas les apostrophes si vous avez activé use-escaping dans l10n.yaml.