Retour
gt-clideriveobjectarraydictionarypythoni18n
BlogJournal des modifications

gt 2.12.0: Dérivation d'Object et de dictionnaires

Ernest McCarter

Vue d’ensemble

derive() peut désormais résoudre des valeurs depuis des Objects 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

La même résolution Object/tableau fonctionne en Python avec les dictionnaires et les listes :

from gt_flask import t, derive

labels = { "success": "Saved", "error": "Failed" }

t(derive(labels[status_key]))
from gt_flask import t, derive

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

t(derive(ranks[level]))

Passez l'expression dérivée comme premier argument, ou placez-la dans une f-string transmise comme argument. La placer dans une valeur d'interpolation par mot-clé n'extrait pas les entrées du dictionnaire ou de la liste.

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