Retour

gt@2.12.0

Ernest McCarter avatarErnest McCarter
gt-clideriveobjectarraydictionarypythoni18n

Vue d’ensemble

derive() peut désormais récupérer des valeurs depuis des objets et des tableaux, et plus seulement à partir de valeurs de retour de fonction. La même prise en charge s’applique aussi au derive() Python avec les dictionnaires et les listes. Cela signifie que la CLI peut extraire statiquement toutes les variantes possibles de chaîne à partir de structures de données au build, en créant une entrée de traduction distincte pour chacune d’elles.

Cela s’appuie sur la prise en charge des tagged templates pour derive(), ajoutée dans gt-react@10.15.0.

Accès aux objets et aux tableaux

À partir d’un objet de variantes de chaînes, derive() extrait chaque valeur :

const labels = { success: "Saved", error: "Failed", pending: "Saving..." };

t`Status: ${derive(labels[status])}`;

La CLI résout les trois valeurs et enregistre une entrée de traduction distincte pour chacune.

Cela fonctionne aussi bien avec l’accès calculé (obj[key]) qu’avec l’accès statique (obj.prop) et prend 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 façon :

const ranks = ["Bronze", "Silver", "Gold", "Platinum"];

t`Your rank: ${derive(ranks[level])}`;

Python

Le même mécanisme de résolution pour les objets et les tableaux fonctionne en Python avec les dictionnaires et les 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 développée lors de l'extraction.
  • Les annotations TypeScript (as const, satisfies) sont automatiquement supprimées.
  • Les propagations circulaires sont détectées et génèrent un avertissement au lieu de bloquer le processus.

Liens