Retour

gt-next@6.13.0

Ernest McCarter avatarErnest McCarter
gt-nextgt-i18nv6.13.0msgstring-registrationarraysi18n

Vue d’ensemble

msg() accepte désormais les tableaux.

Auparavant, pour enregistrer une liste de chaînes associées, il fallait envelopper chacune d’elles individuellement :

const confirmations = [
  msg("Yes"),
  msg("Yup"),
  msg("Right"),
  msg("Absolutely"),
  msg("Exactly"),
];

Cela pose deux problèmes. D’abord, chaque ligne nécessite un appel à msg(). Ensuite, des chaînes apparentées ont souvent besoin des mêmes métadonnées — $context, $id, etc. — et ces métadonnées doivent être intégrées directement, car la CLI les résout au moment du build. Pour des chaînes comme "Droite" ou "Exactement", ambiguës prises isolément, vous finissez par répéter $context pour chaque entrée :

const confirmations = [
  msg("Yes"),
  msg("Yup"),
  msg("Right", { $context: "En guise de confirmation" }),
  msg("Absolutely", { $context: "En guise de confirmation" }),
  msg("Exactly", { $context: "En guise de confirmation" }),
];

Vous pouvez désormais faire ceci à la place :

const confirmations = msg([
  "Yes",
  "Yup",
  "Right",
  "Absolutely",
  "Exactly",
], { $context: "Confirmation responses" });

Conception

Génération des identifiants

Lorsque $id est spécifié, chaque élément du tableau reçoit un identifiant basé sur son index : ${id}.0, ${id}.1, etc.

const greetings = msg([
  "Hi",
  "Hello",
  "Howdy",
], { $id: "greeting" });
// "Hi"    → id: "greeting.0"
// "Hello" → id: "greeting.1"
// "Howdy" → id: "greeting.2"

Pourquoi pas des objets ?

Il était tentant d’étendre ce principe aux objets, mais nous avons choisi de ne pas le faire. Les objets mêlent généralement des champs traduisibles et non traduisibles :

{
  id: 'planning.v1',           // ne pas traduire
  message: 'Not yet enabled',  // traduire
}

Il n'existe pas de moyen simple d'indiquer quels champs doivent être enregistrés sans ajouter davantage de syntaxe. Les tableaux n'ont pas ce problème : chaque élément est une chaîne à traduire.

À venir

La prise en charge des tableaux dans gt() est une prochaine étape naturelle. gt() et msg() sont tous deux des fonctions d’enregistrement ; il est donc logique qu’ils soient alignés. Cela vaut aussi pour m(), puisque msg() et m() sont souvent utilisés ensemble — si m() accepte les tableaux, passer la sortie de msg() à m() ne risque pas de casser.