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 React Native en vietnamien: Expo, i18n, VND et dates

Ajoutez le vietnamien à votre app React Native: expo-localization, i18n-js ou react-i18next, VND sans décimales et dates en format jour-mois-année.

Dao Huy (Lucas)7 min de lecture8 sections
Localiser une app React Native en vietnamien: Expo, i18n, VND et dates

💡 React Native ajoute le vietnamien en un après-midi: installez expo-localization, lisez getLocales()[0].languageCode pour détecter vi, connectez i18n-js ou react-i18next pour les traductions, formatez le VND avec Intl.NumberFormat('vi-VN', { style: 'currency', currency: 'VND', maximumFractionDigits: 0 }) et affichez les dates en dd/MM/yyyy. Les noms vietnamiens ne s'accordent jamais en nombre, donc une seule clé de traduction suffit pour toutes les quantités.

À retenir

  • Installez expo-localization et appelez getLocales()[0].languageCode - renvoie vi sur les appareils en vietnamien. Stockez la locale en state et passez-la à votre librairie i18n.
  • Les noms vietnamiens ne changent pas de forme avec la quantité. Une seule clé de traduction couvre "1 article" et "5 articles" - pas de branche singulier séparée nécessaire.
  • Le VND n'a pas de sous-unités: utilisez maximumFractionDigits: 0 avec Intl.NumberFormat('vi-VN', { style: 'currency', currency: 'VND' }). Le point (.) sépare les milliers en format vietnamien.
  • L'ordre des dates vietnamiennes est jour-mois-année. Le 11 octobre s'écrit 11/10, pas 10/11. Utilisez Intl.DateTimeFormat avec la locale vi-VN.
  • Prévoyez 20 à 30% d'espace horizontal supplémentaire en Flexbox: les diacritiques vietnamiennes élargissent les chaînes par rapport à l'anglais. Évitez les conteneurs à largeur fixe pour les boutons et onglets.

Comment détecter et activer le vietnamien dans une app React Native?

Le package expo-localization est la méthode recommandée pour lire la locale de l'appareil. Installez-le avec npx expo install expo-localization, puis appelez getLocales() au démarrage:

import { getLocales } from 'expo-localization';

const deviceLang = getLocales()[0]?.languageCode ?? 'en'; // 'vi' sur appareil en vietnamien
const deviceTag  = getLocales()[0]?.languageTag  ?? 'en-US'; // 'vi-VN'

getLocales() renvoie la liste de préférences linguistiques de l'utilisateur. Le premier élément est la locale principale. Pour le vietnamien, languageCode vaut vi et languageTag vaut vi-VN. Passez deviceLang à votre librairie de traduction comme langue initiale, stocké en React state ou context pour que l'interface se mette à jour quand l'utilisateur change la langue du système.

Pour les projets bare React Native sans Expo, le package communautaire react-native-localize fournit la même API getLocales().

Quelle librairie de traduction choisir pour le vietnamien?

La documentation Expo liste quatre choix: i18n-js, react-i18next, Lingui et Intlayer. Le vietnamien fonctionne bien avec tous. Les compromis pratiques:

  • i18n-js: léger (~10 ko), fichiers JSON simples, facile à maintenir pour les non-développeurs. Idéal pour les petites et moyennes applications où les traducteurs éditent directement le JSON.
  • react-i18next: la solution la plus utilisée dans l'écosystème. Prend en charge ICU MessageFormat, les espaces de noms, le chargement paresseux et les plugins backend pour charger les traductions à distance. Meilleur choix pour les applications multi-écrans ou les workflows avec un TMS (Trados, Crowdin, Lokalise).
  • Lingui: excellente ergonomie TypeScript et extraction de chaînes à la compilation. Pour les équipes qui valorisent la sécurité de types.

Les trois exportent des fichiers de traduction en JSON. Un traducteur vietnamien peut travailler avec n'importe lequel sans toucher au code.

Comment fonctionnent les règles de pluriel en vietnamien dans les librairies i18n?

Les règles de pluriel Unicode CLDR définissent deux catégories pour le vietnamien: one (n = 0 ou 1) et other (toutes les autres valeurs). Contrairement au français, les noms vietnamiens n'ont pas de forme plurielle. « 1 sản phẩm » et « 5 sản phẩm » utilisent le même mot. En pratique, la traduction other couvre tous les cas, avec une entrée distincte pour l'état vide:

// Fichier de traduction i18n-js: vi.json
{
  "cart": {
    "items_zero": "Giỏ hàng trống",
    "items_one":  "{{count}} sản phẩm",
    "items_other":"{{count}} sản phẩm"
  }
}

items_one et items_other sont identiques - c'est intentionnel. Les classificateurs nominaux vietnamiens (cái, con, chiếc) varient selon la catégorie du nom, mais c'est un attribut fixe de chaque nom, pas une règle grammaticale variant avec la quantité. La traduction automatique choisit souvent le mauvais classificateur, ce qu'un relecteur natif repère immédiatement.

Formatage du VND et des dates en React Native

Intl.NumberFormat de JavaScript est disponible sur iOS et Android via JSC/Hermes. Pour le VND, définissez maximumFractionDigits: 0 - le dong n'a pas de sous-unités. Le vietnamien utilise le point (.) pour les milliers et la virgule (,) pour le séparateur décimal, l'inverse de l'anglais américain:

const vndFmt = new Intl.NumberFormat('vi-VN', {
  style: 'currency',
  currency: 'VND',
  maximumFractionDigits: 0,
});

vndFmt.format(1250000); // "1.250.000 ₫"

Omettre maximumFractionDigits: 0 produira un incorrect "1.250.000,00 ₫" sur certaines versions de runtime. Définissez-le toujours explicitement.

L'ordre des dates vietnamiennes 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. Utilisez Intl.DateTimeFormat avec la locale vi-VN ou date-fns avec la locale vi.

Pourquoi le texte vietnamien prend-il plus de place à l'écran?

Le vietnamien combine une lettre de base avec jusqu'à deux diacritiques empilées. Le caractère « ộ » (o + accent circonflexe + point en dessous) est visuellement plus large qu'une lettre latine ordinaire. Les chaînes vietnamiennes sont en moyenne 20 à 30% plus longues que leurs équivalents anglais. « Settings » (8 caractères) devient vietnamien plus court en nombre de caractères mais plus large visuellement.

Construisez vos layouts Flexbox avec des largeurs flexibles. Utilisez flex: 1 plutôt qu'une width fixe pour les boutons et onglets. Testez avec le vietnamien actif avant la mise en production. Le rapport DataReportal 2025 sur le Vietnam recense 127 millions de connexions mobiles pour 101 millions d'habitants - la quasi-totalité des utilisateurs vietnamiens accède à votre application via un smartphone.

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

Toute la partie technique - expo-localization, librairie i18n, formatage Intl - est à la portée de votre équipe en quelques heures. Les chaînes obtenues seront syntaxiquement correctes. Les limites fréquentes de la traduction non native du vietnamien:

  • Décalage de registre: les logiciels B2B fintech et d'entreprise utilisent le vocabulaire sino-vietnamien, les applications grand public le vietnamien courant. Mélanger les deux dans la même interface désoriente les locuteurs natifs.
  • Erreurs de classificateurs: con pour les animaux, cái pour les objets inanimés, chiếc pour les véhicules. La traduction automatique se trompe souvent et les utilisateurs natifs le remarquent immédiatement.
  • Cas limites UI: les messages d'erreur, états vides et confirmations 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

expo-localization fonctionne-t-il dans les projets bare React Native sans Expo?

Oui, avec une condition. expo-localization est un module Expo qui nécessite l'API Expo Modules dans votre projet. Pour un projet bare React Native sans dépendance Expo, utilisez react-native-localize qui fournit la même API getLocales() sans la chaîne d'outils Expo.

Comment tester la locale vietnamienne dans le simulateur iOS?

Dans Xcode, ouvrez l'éditeur de scheme (Cmd+Shift+,), sélectionnez le scheme Run, ouvrez l'onglet Options et définissez Application Language sur Vietnamese. Le simulateur redémarre avec la locale vietnamienne. Sur Android, allez dans Paramètres - Gestion générale - Langue - Ajouter une langue - Vietnamien, puis déplacez-la en tête de liste.

Faut-il inclure les traductions dans le bundle ou les charger à distance?

Incluez les traductions de l'interface principale dans le bundle - navigation, paramètres, messages d'erreur - pour que l'application fonctionne hors ligne. Utilisez le chargement distant (backend react-i18next ou Expo Updates) pour le contenu qui change fréquemment. Les chaînes vietnamiennes de l'interface principale ajoutent généralement moins de 20 ko au bundle.

Peut-on utiliser Google Traduction ou DeepL pour générer les traductions vietnamiennes?

Pour une première ébauche, oui. La traduction automatique neuronale moderne gère le vietnamien à un niveau utilisable pour les textes de navigation basiques. La limite pratique concerne le registre et les classificateurs: le vocabulaire B2B et les classificateurs nominaux sont là où la sortie MT nécessite le plus souvent une correction par un locuteur natif.

Quelle est la différence entre languageCode "vi" et languageTag "vi-VN"?

languageCode est l'identifiant de langue ISO 639-1 à deux lettres. vi désigne le vietnamien sans précision de région. languageTag est le tag BCP 47 combinant langue et région: vi-VN désigne le vietnamien tel qu'utilisé au Vietnam. Passez vi-VN à Intl.NumberFormat et Intl.DateTimeFormat pour obtenir les conventions de formatage vietnamiennes. Passez vi à votre librairie de traduction, sauf si vous avez besoin de différencier des variantes régionales.

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