gt-next@6.13.0
Panoramica
msg() ora accetta gli array.
In precedenza, per registrare un elenco di stringhe correlate, bisognava racchiudere ciascuna stringa singolarmente:
const confirmations = [
msg("Yes"),
msg("Yup"),
msg("Right"),
msg("Absolutely"),
msg("Exactly"),
];Questo comporta due problemi. Primo, ogni riga richiede una chiamata a msg(). Secondo, le stringhe correlate spesso richiedono gli stessi metadati — $context, $id, ecc. — e tali metadati devono essere specificati inline, perché la CLI li risolve in fase di build. Per stringhe come "Right" o "Exactly", che prese singolarmente sono ambigue, finisci per ripetere $context in ogni voce:
const confirmations = [
msg("Yes"),
msg("Yup"),
msg("Right", { $context: "Come in una conferma" }),
msg("Absolutely", { $context: "Come in una conferma" }),
msg("Exactly", { $context: "Come in una conferma" }),
];Ora puoi fare così:
const confirmations = msg([
"Yes",
"Yup",
"Right",
"Absolutely",
"Exactly",
], { $context: "Confirmation responses" });Architettura
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 usare gli oggetti?
Eravamo tentati di estendere questo approccio agli oggetti, ma abbiamo deciso di non farlo. In genere, gli oggetti combinano campi traducibili e non traducibili:
{
id: 'planning.v1', // non tradurre
message: 'Not yet enabled', // traduci
}Non c'è un modo semplice e pulito per indicare quali campi vadano registrati senza introdurre ulteriore sintassi. Gli array non hanno questo problema: ogni elemento è una stringa da tradurre.
Futuro
Il supporto agli array in gt() è un naturale passo successivo. Sia gt() sia msg() sono funzioni di registrazione, quindi è logico mantenere la parità tra le due. Questo vale anche per m(), dato che msg() e m() vengono spesso usati insieme: il fatto che m() accetti array garantisce che il passaggio dell'output di msg() a m() non causi problemi.