gt@2.11.3
Vue d’ensemble
derive() prend désormais en charge l’accès aux objets et aux tableaux. Auparavant, derive() ne pouvait résoudre que des appels de fonction ; il peut maintenant récupérer des valeurs depuis des objets, des tableaux et des dictionnaires, ce qui facilite l’utilisation des approches de recherche.
Cette amélioration s’inscrit dans la continuité du lancement de derive() in tagged templates dans gt-react@10.15.0.
Nouveautés
Accès aux propriétés d’objet
Utilisez derive() avec des accès aux propriétés d’objet. La CLI détermine statiquement toutes les valeurs possibles au moment de l’extraction :
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 extrait une traduction distincte pour chaque valeur possible :
"Merci pour votre achat ! Votre commande a bien été enregistrée.""Merci pour votre achat ! Votre commande est en cours de traitement.""Merci pour votre achat ! Un problème est survenu avec votre commande."
Les accès statiques (statusMessages.success) comme dynamiques (statusMessages[status]) sont pris en charge.
Accès aux tableaux
Les tableaux fonctionnent de la même manière :
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>;
}Entrées extraites :
"Étape {step + 1} : Créez votre compte""Étape {step + 1} : Vérifiez votre adresse e-mail""Étape {step + 1} : Démarrez votre premier projet"
Accès imbriqué
Chaînez les accès aux objets et aux tableaux à n’importe quelle profondeur :
const content = {
greetings: {
formal: "Good morning.",
casual: "Hey!",
},
} as const;
// derive(content[category][style]) fonctionneSupport Python
Les mêmes approches fonctionnent en Python avec t(). Utilisez derive() comme premier argument ou dans une f-string :
badges = {
"admin": "Administrator",
"mod": "Moderator",
"user": "Member",
}
# Dérivation autonome
t(derive(badges[role]))
# dérivation dans une f-string pour le contexte environnant
t(f"Logged in as {derive(badges[role])}")Entrées extraites :
"Connecté en tant qu’Administrateur""Connecté en tant que Modérateur""Connecté en tant que Member"