Aller au contenu

Variantes régionales

Une variante régionale est une sous-locale (fr-CA, en-GB, pt-BR...) posée en surcouche d'une langue de base (fr, en, pt) selon BCP-47. Elle ne redéfinit pas toute la langue : elle ne porte que les chaînes qui diffèrent du parent.

Le principe clé est le repli parent : une clé absente dans la variante retombe sur la langue parente, puis sur la source.

fr-CA -> fr -> source

Exemple : en fr-CA, vous surchargez email par « courriel » ; toutes les autres clés héritent de fr sans duplication. Le CDN sert un bundle fusionné (la base fr plus les surcharges fr-CA).

C'est une dimension de langue, distincte des surfaces (accessibilité et appareil). Les surfaces sont des couches de contenu sur une clé ; les variantes régionales sont des langues à part entière reliées par un parent.

  • Déclarer la variante : ajoutez le tag BCP-47 (fr-CA) au catalogue de langues. Le parent est déduit du tag (fr-CA a pour parent fr), il n'y a pas de champ parent à renseigner. Le catalogue porte les métadonnées is_variant et parent_code (via GET /v1/languages), dont héritent automatiquement le script et le sens d'écriture (RTL).
  • Modèle de surcouche : ne traduisez que ce qui diffère du parent. Tout le reste hérite, il n'y a rien à dupliquer.
  • Chaîne de repli BCP-47 : la résolution suit variante -> parent -> source (fr-CA -> fr -> source).
  • Noms de langues : i18n.nativeName(lng?) renvoie l'endonyme (le nom natif de la langue, issu du catalogue, sans dépendre d'Intl.DisplayNames). Pour un nom traduit dans la langue de l'interface, utilisez Intl.DisplayNames(localeUI, { type: 'language' }).

Ajoutez le tag BCP-47 à vos locales (avec @sonenta/astro : locales + defaultLocale ; en react-i18next, la variante vient du manifeste CDN de la version). La résolution fr-CA -> fr -> source est automatique, sur deux niveaux : le CDN sert la variante en bundle fusionné (fr-CA inclut déjà la base fr), et la chaîne fallbackLng du SDK résout fr-CA -> fr -> fallbackLng. Pointez fallbackLng vers votre locale source pour la fin de chaîne. Aucun code par clé n'est nécessaire.