gt@2.11.3
Panoramica
derive() ora supporta l'accesso a oggetti e array. In precedenza, derive() poteva risolvere solo chiamate di funzione; ora può risolvere valori da oggetti, array e dizionari, rendendo più semplice lavorare con pattern di lookup.
Questo si basa sul rilascio di derive() nelle tagged template literal di gt-react@10.15.0.
Novità
Accesso alle proprietà degli oggetti
Usa derive() con l'accesso alle proprietà degli oggetti. La CLI determina staticamente tutti i valori possibili in fase di estrazione:
const statusMessages = {
success: "Your order has been placed.",
pending: "Your order is being processed.",
error: "Something went wrong with your order.",
} as const;
export default function OrderBanner({ status }: { status: string }) {
return <p>{t`Thanks for shopping! ${derive(statusMessages[status])}`}</p>;
}La CLI estrae una traduzione distinta per ogni valore possibile:
"Thanks for shopping! Your order has been placed.""Thanks for shopping! Your order is being processed.""Thanks for shopping! Something went wrong with your order."
Sono supportati sia l'accesso statico (statusMessages.success) sia quello dinamico (statusMessages[status]).
Accesso agli array
Gli array funzionano allo stesso modo:
const steps = [
"Create your account",
"Verify your email",
"Start your first project",
] as const;
export default function Onboarding({ step }: { step: number }) {
return <h2>{t`Step ${step + 1}: ${derive(steps[step])}`}</h2>;
}Voci estratte:
"Passaggio {step + 1}: Crea il tuo account""Passaggio {step + 1}: Verifica il tuo indirizzo email""Passaggio {step + 1}: Avvia il tuo primo progetto"
Accesso nidificato
Concatena l'accesso a oggetti e array a qualsiasi livello di profondità:
const content = {
greetings: {
formal: "Good morning.",
casual: "Hey!",
},
} as const;
// derive(content[category][style]) funzionaSupporto per Python
Gli stessi pattern funzionano in Python con t(). Usa derive() come primo argomento o all'interno di una f-string:
badges = {
"admin": "Administrator",
"mod": "Moderator",
"user": "Member",
}
# Derive autonomo
t(derive(badges[role]))
# derive all'interno di una f-string per il contesto circostante
t(f"Logged in as {derive(badges[role])}")Voci estratte:
"Accesso effettuato come amministratore""Accesso effettuato come moderatore""Accesso effettuato come Member"