gt@2.12.0
Aperçu
derive() peut désormais déterminer des valeurs à partir d’objets et de tableaux — et pas seulement des valeurs de retour de fonctions. Cette prise en charge s’étend également à derive() en Python avec les dictionnaires et les listes. Cela signifie que la CLI peut extraire statiquement toutes les variantes de chaînes possibles à partir de structures de données à la compilation, en créant une entrée de traduction distincte pour chacune.
Cela s’appuie sur la prise en charge des littéraux de gabarit tagués pour derive() ajoutée dans gt-react@10.15.0.
Accès aux objets et aux tableaux
À partir d’un objet contenant des variantes de chaînes, derive() extrait chaque valeur :
const labels = { success: "Saved", error: "Failed", pending: "Saving..." };
t`Status: ${derive(labels[status])}`;La CLI détermine les trois valeurs et enregistre des entrées de traduction distinctes pour chacune.
Cela fonctionne à la fois avec l’accès calculé (obj[key]) et l’accès statique (obj.prop), et prend également en charge l’imbrication :
const messages = {
greeting: { formal: "Good evening", casual: "Hey" },
farewell: { formal: "Goodbye", casual: "See ya" },
};
t`${derive(messages[category][tone])}`;Les tableaux fonctionnent de la même manière :
const ranks = ["Bronze", "Silver", "Gold", "Platinum"];
t`Your rank: ${derive(ranks[level])}`;Python
Le même mécanisme de résolution des objets/tableaux fonctionne en Python avec des dictionnaires et des listes :
labels = { "success": "Saved", "error": "Failed" }
t("{status}", status=derive(labels[status_key]))ranks = ["Bronze", "Silver", "Gold", "Platinum"]
t("{rank}", rank=derive(ranks[level]))Exigences
- Les objets et les tableaux doivent être déclarés avec
const(TypeScript) ou au niveau du module (Python). - La syntaxe de propagation (
...base) est prise en charge et aplatie au moment de l’extraction. - Les annotations TypeScript (
as const,satisfies) sont automatiquement déroulées. - Les propagations circulaires sont détectées et génèrent un avertissement au lieu de bloquer.