gt-next@6.13.0
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.