Retour

gt-next@6.13.0

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

Aperçu

msg() accepte désormais les tableaux.

Auparavant, pour enregistrer une liste de chaînes liées, il fallait encapsuler chacune séparément :

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

Cela pose deux problèmes. Premièrement, chaque ligne doit appeler msg(). Deuxièmement, les chaînes liées ont souvent besoin des mêmes métadonnées — $context, $id, etc. — et ces métadonnées doivent être intégrées en ligne parce que la CLI les résout au moment de la compilation. Pour des chaînes comme "Right" ou "Exactly", qui sont ambiguës prises isolément, vous finissez par répéter $context sur 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 d’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 les objets ?

Il était tentant d’étendre ce mécanisme aux objets, mais nous avons choisi de ne pas le faire. Les objets contiennent généralement un mélange de champs traduisibles et non traduisibles :

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

Il n’existe pas de manière propre d’indiquer quels champs doivent être enregistrés sans introduire davantage de syntaxe. Les tableaux n’ont pas ce problème — chaque élément est une chaîne de caractères à traduire.

À venir

La prise en charge des tableaux pour gt() est une prochaine étape naturelle. gt() et msg() sont tous deux des fonctions d’enregistrement, il est donc logique qu’elles offrent des fonctionnalités équivalentes. Cela s’étend aussi à m(), puisque msg() et m() sont souvent utilisés ensemble — le fait que m() accepte des tableaux garantit que transmettre le résultat de msg() à m() ne provoquera pas d’erreur.