gt-next@6.13.0
Panoramica
msg() ora accetta array.
In precedenza, per registrare un elenco di stringhe correlate era necessario racchiudere ciascuna stringa singolarmente:
const confirmations = [
msg("Yes"),
msg("Yup"),
msg("Right"),
msg("Absolutely"),
msg("Exactly"),
];Questo presenta due problemi. Primo, ogni riga richiede una chiamata a msg(). Secondo, le stringhe correlate spesso hanno bisogno degli stessi metadati — $context, $id, ecc. — e quei metadati devono essere inseriti in linea perché la CLI (interfaccia a riga di comando) li risolve in fase di build. Per stringhe come "Right" o "Exactly", che sono ambigue se considerate isolatamente, finisci per dover ripetere $context in ogni voce:
const confirmations = [
msg("Yes"),
msg("Yup"),
msg("Right", { $context: "As in a confirmation" }),
msg("Absolutely", { $context: "As in a confirmation" }),
msg("Exactly", { $context: "As in a confirmation" }),
];Ora puoi fare invece così:
const confirmations = msg([
"Yes",
"Yup",
"Right",
"Absolutely",
"Exactly",
], { $context: "Confirmation responses" });Progettazione
Generazione degli ID
Quando viene specificato $id, a ogni elemento dell'array viene assegnato un ID basato sull'indice: ${id}.0, ${id}.1, ecc.
const greetings = msg([
"Hi",
"Hello",
"Howdy",
], { $id: "greeting" });
// "Hi" → id: "greeting.0"
// "Hello" → id: "greeting.1"
// "Howdy" → id: "greeting.2"Perché non gli oggetti?
Era molto allettante estendere questo approccio anche agli oggetti, ma abbiamo deciso di non farlo. Gli oggetti in genere mescolano campi traducibili e campi non traducibili:
{
id: 'planning.v1', // non tradurre
message: 'Not yet enabled', // traduci
}Non esiste un modo davvero elegante per esprimere quali campi dovrebbero essere registrati senza introdurre altra sintassi. Gli array non hanno questo problema: ogni elemento è una stringa da tradurre.
Futuro
Il supporto degli array in gt() è il naturale passo successivo. Sia gt() che msg() sono funzioni di registrazione, quindi ha senso che ci sia parità tra loro. Questo si estende anche a m(), dato che msg() e m() sono spesso usate insieme — il fatto che m() accetti array garantisce che passare l'output di msg() a m() non provochi errori.