Vous m'avez trouvé sur Upwork ? Si vous m'avez trouvé via Upwork et souhaitez faire appel à mes services, merci de me contacter via Upwork. Les messages de clients Upwork envoyés en dehors d'Upwork ne recevront pas de réponse.
Notes de localisation🌏 Localisation

Localiser une app Flutter en vietnamien: ARB, pluriels et VND

Ajoutez le vietnamien à votre app Flutter en deux heures: fichier app_vi.arb, règles de pluriel CLDR, format VND sans décimales et dates en dd/MM/yyyy.

Dao Huy (Lucas)7 min de lecture8 sections
Localiser une app Flutter en vietnamien: ARB, pluriels et VND

💡 Flutter intègre le vietnamien en moins de deux heures: ajoutez flutter_localizations et intl: any, créez lib/l10n/app_vi.arb, déclarez Locale('vi') et lancez flutter gen-l10n. Les noms vietnamiens ne s'accordent jamais en nombre, donc une seule branche other{...} couvre la plupart des chaînes. Formatez le VND avec decimalDigits: 0 et les dates en dd/MM/yyyy.

À retenir

  • Ajoutez flutter_localizations (Flutter SDK) et intl: any dans pubspec.yaml; activez generate: true et créez l10n.yaml à la racine du projet.
  • Créez lib/l10n/app_vi.arb avec les mêmes clés ICU que votre modèle anglais - seules les valeurs des chaînes changent.
  • Le vietnamien a deux catégories CLDR (one pour n=0 ou n=1, other pour n≥2) mais les noms ne varient pas: =0{...} et other{...} suffisent généralement.
  • Devise VND: utilisez NumberFormat.currency(locale: 'vi_VN', symbol: '₫', decimalDigits: 0) - pas de décimales, le point sépare les milliers.
  • Format de date: jour en premier avec DateFormat('dd/MM/yyyy', 'vi_VN'). Testez sur appareil avant de soumettre aux app stores.

Comment ajouter le vietnamien au pipeline gen-l10n de Flutter?

La solution i18n officielle de Flutter utilise des fichiers ARB (Application Resource Bundle) traités par l'outil gen-l10n. La configuration comporte trois éléments: mise à jour des dépendances, création d'un fichier de configuration, et déclaration de la locale dans MaterialApp.

Dans pubspec.yaml, ajoutez flutter_localizations depuis le Flutter SDK, intl: any, et activez generate: true sous la clé flutter:. Créez ensuite l10n.yaml à la racine du projet:

arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart

Dans MaterialApp, ajoutez AppLocalizations.delegate et ...GlobalMaterialLocalizations.delegates à localizationsDelegates. Incluez Locale('vi') dans supportedLocales. Lancez flutter gen-l10n pour générer la classe Dart typée.

À quoi ressemble app_vi.arb?

Le fichier ARB est du JSON où chaque clé correspond à une chaîne de message ICU. Les clés vietnamiennes reprennent exactement le modèle anglais - seul le contenu change. Voici un exemple minimal:

{
  "appTitle": "Ứng dụng của tôi",
  "greeting": "Xin chào, {name}!",
  "@greeting": {
    "placeholders": {
      "name": { "type": "String" }
    }
  },
  "itemCount": "{count, plural, =0{Không có mục nào} other{{count} mục}}"
}

Les métadonnées @key du modèle anglais sont facultatives dans les ARB de traduction. Incluez-les seulement pour définir de nouveaux espaces réservés ou ajouter des notes spécifiques à la locale.

Stockez les fichiers ARB en UTF-8 sans BOM. Les diacritiques vietnamiens doivent être de vrais points de code Unicode, pas des séquences d'échappement. Vérifiez l'encodage si votre pipeline CI tourne sur Windows.

Comment fonctionnent les règles de pluriel en vietnamien?

Les règles de pluriel Unicode CLDR définissent deux catégories pour le vietnamien: one (quand n = 0 ou n = 1) et other (n ≥ 2). Contrairement au français, les noms vietnamiens n'ont pas de forme plurielle. « 1 cuốn sách » et « 5 cuốn sách » utilisent le même mot « sách » (livre).

Cela simplifie considérablement vos chaînes ARB. Dans la plupart des cas, une seule branche other{...} suffit avec =0{...} pour l'état vide:

"cartItems": "{count, plural, =0{Giỏ hàng trống} other{{count} sản phẩm}}"

Vous n'avez pas besoin d'une branche one{...} séparée comme en français (singulier vs pluriel). Cela réduit la charge de maintenance des ARB vietnamiens d'environ un tiers par rapport aux langues à flexion.

Formatage des nombres, devises et dates pour les utilisateurs vietnamiens

Le dong vietnamien (₫, code ISO VND) n'a pas de subdivision. Tous les prix sont des entiers. Afficher « 1.250.000,00 ₫ » est incorrect et déconcerte les acheteurs vietnamiens.

Le format numérique vietnamien hérité du français utilise le point (.) pour les milliers et la virgule (,) pour le séparateur décimal - l'inverse de l'anglais américain. Utilisez le package intl de Dart:

import 'package:intl/intl.dart';

final vndFormat = NumberFormat.currency(
  locale: 'vi_VN',
  symbol: '₫',
  decimalDigits: 0,
);
print(vndFormat.format(1250000)); // "1.250.000 ₫"

Pour les dates, l'ordre vietnamien est jour-mois-année. Le 11 octobre 2026 s'écrit 11/10/2026. Un utilisateur vietnamien qui voit 10/11 lit le 10 novembre, pas le 11 octobre. Utilisez DateFormat('dd/MM/yyyy', 'vi_VN'). Les contextes professionnels utilisent l'heure sur 24h: préférez DateFormat('HH:mm', 'vi_VN').

Pourquoi les chaînes vietnamiennes sont-elles plus longues qu'en anglais?

Le vietnamien utilise des diacritiques empilées: le caractère « ộ » (o + accent circonflexe + point en dessous) est plus large qu'une lettre ASCII ordinaire dans la plupart des polices. Les chaînes vietnamiennes nécessitent en général 20 à 30% d'espace horizontal supplémentaire par rapport à l'équivalent anglais. « Add to cart » (11 caractères) devient « Thêm vào giỏ hàng » (18 caractères avec diacritiques).

Concevez vos mises en page avec des contraintes flexibles. Utilisez Expanded, FittedBox ou des largeurs proportionnelles plutôt que des valeurs de pixels fixées pour les boutons, chips et onglets. Le rapport DataReportal 2025 sur le Vietnam recense 127 millions de connexions mobiles pour 101 millions d'habitants - une base d'utilisateurs exigeante qui remarque les détails de l'interface.

Ce que vous pouvez faire en interne vs quand un réviseur vietnamien natif est justifié

Le pipeline technique - ARB, gen-l10n, formatage des nombres et dates - est entièrement à la portée de votre équipe et ne prend que quelques heures. Les chaînes produites seront syntaxiquement correctes.

Là où la traduction non native du vietnamien pèche fréquemment:

  • Décalage de registre: les logiciels B2B utilisent le vocabulaire sino-vietnamien (Hán Việt); les applications grand public utilisent le vietnamien courant. Un tableau de bord fintech qui mélange les deux paraît incohérent aux locuteurs natifs.
  • Erreurs de classificateurs: les classificateurs nominaux vietnamiens (cái, con, chiếc, cuốn) varient selon la catégorie d'objet. La traduction automatique choisit souvent le mauvais, et les utilisateurs natifs le remarquent immédiatement.
  • Cas limites UI: les messages d'erreur, états vides et boîtes de confirmation nécessitent un vietnamien naturel. Un phrasé maladroit à ces moments clés nuit à la confiance de l'utilisateur.

Une seule passe de relecture par un spécialiste de la localisation vietnamienne après une première traduction automatique détecte la plupart de ces problèmes. Pour les applications fintech, médicales ou juridiques, établissez un glossaire terminologique avant la première passe de traduction.

FAQ

Flutter inclut-il des traductions vietnamiennes pour les widgets Material?

Oui. En ajoutant GlobalMaterialLocalizations.delegate et GlobalCupertinoLocalizations.delegate dans localizationsDelegates, vous obtenez les chaînes vietnamiennes pour le sélecteur de date, le bouton de retour, les boutons de dialogue et les autres widgets standard. Vous devez toujours fournir les traductions de vos propres chaînes via des fichiers ARB.

Puis-je omettre une clé de app_vi.arb si la chaîne est identique en anglais?

Oui. Si un nom de marque ou un terme technique est identique dans les deux langues, omettez-le de app_vi.arb et Flutter utilisera la valeur du modèle. Ajoutez une note dans la description @key anglaise pour signaler les non-traductions intentionnelles.

Quelle police fonctionne le mieux pour les diacritiques vietnamiens dans Flutter?

Noto Sans est le choix le plus fiable. Sa couverture vietnamienne inclut les 134 combinaisons de diacritiques précomposées. Ajoutez-la via le package google_fonts avec GoogleFonts.notoSans(). Si vous intégrez une police personnalisée, testez toutes les combinaisons de tons: ắ ặ ể ị ộ ụ ướ ự - ce sont les plus susceptibles d'afficher un carré avec un sous-ensemble de police incomplet.

Comment tester la locale vietnamienne dans le simulateur?

Encapsulez MaterialApp dans un Localizations.override pendant le développement: Localizations.override(context: context, locale: const Locale('vi'), child: MaterialApp(...)). Cela force le vietnamien pour le sous-arbre concerné sans changer la langue du système. Retirez le wrapper avant la mise en production.

À quel moment faut-il faire appel à un traducteur humain plutôt qu'à la traduction automatique?

Utilisez la traduction humaine quand l'application traite de l'argent, des données médicales, des conditions juridiques ou des informations sensibles. Pour les applications grand public, une première passe automatique suivie d'une relecture par un locuteur natif est un bon rapport coût-efficacité. Comptez 15 à 20 minutes par écran de chaînes UI pour un réviseur humain.

Sources officielles

Dao Huy (Lucas)
Dao Huy (Lucas)
Diplômé de l'Université des langues étrangères, Université de Da Nang. Signe une attestation d'exactitude sur chaque traduction certifiée (USCIS, IRCC).

Écrit par Đào Huy (Lucas), traducteur vietnamien et spécialiste de la localisation (anglais, chinois et français vers le vietnamien). See translation services →

DevisWhatsApp