Retour

gt@2.11.3

Ernest McCarter avatarErnest McCarter
gt-clidérivationobjetstableau

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]) fonctionne

Support 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"

Liens