gt@2.12.0
Panoramica
derive() ora può ricavare valori da oggetti e array, non solo dai valori restituiti dalle funzioni. Lo stesso supporto è disponibile anche per derive() in Python con dizionari e liste. Questo significa che la CLI può estrarre staticamente tutte le possibili varianti di stringa dalle strutture dati in fase di build, creando una voce di traduzione separata per ciascuna.
Questo si basa sul supporto alle tagged template literal per derive() aggiunto in gt-react@10.15.0.
Accesso a oggetti e array
Dato un oggetto contenente varianti di stringa, derive() estrae tutti i valori:
const labels = { success: "Saved", error: "Failed", pending: "Saving..." };
t`Status: ${derive(labels[status])}`;La CLI risolve tutti e tre i valori e registra voci di traduzione distinte per ciascuno.
Funziona sia con l'accesso indicizzato (obj[key]) sia con l'accesso statico (obj.prop) e supporta l'annidamento:
const messages = {
greeting: { formal: "Good evening", casual: "Hey" },
farewell: { formal: "Goodbye", casual: "See ya" },
};
t`${derive(messages[category][tone])}`;Gli array funzionano allo stesso modo:
const ranks = ["Bronze", "Silver", "Gold", "Platinum"];
t`Your rank: ${derive(ranks[level])}`;Python
Lo stesso meccanismo di risoluzione per oggetti e array funziona in Python con dizionari e liste:
labels = { "success": "Saved", "error": "Failed" }
t("{status}", status=derive(labels[status_key]))ranks = ["Bronze", "Silver", "Gold", "Platinum"]
t("{rank}", rank=derive(ranks[level]))Requisiti
- Gli oggetti e gli array devono essere dichiarati con
const(TypeScript) o a livello di modulo (Python). - La sintassi spread (
...base) è supportata e viene espansa al momento dell'estrazione. - Le annotazioni TypeScript (
as const,satisfies) vengono rimosse automaticamente. - Gli spread circolari vengono rilevati e generano un avviso invece di mandare il processo in stallo.