Atrás

gt@2.12.0

Ernest McCarter avatarErnest McCarter
gt-clideriveobjectarraydictionarypythoni18n

Resumen

derive() ahora también puede resolver valores de objetos y arrays, no solo valores devueltos por funciones. El mismo soporte se extiende a derive() de Python con diccionarios y listas. Esto significa que la CLI puede extraer estáticamente todas las variantes posibles de cadenas a partir de estructuras de datos durante la compilación, creando una entrada de traducción independiente para cada una.

Esto amplía el soporte de plantilla etiquetada para derive() añadido en gt-react@10.15.0.

Acceso a objetos y arrays

Dado un objeto con variantes de variante de cadena, derive() extrae cada valor:

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

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

La CLI resuelve los tres valores y registra entradas de traducción independientes para cada uno.

Esto funciona tanto con acceso calculado (obj[key]) como con acceso estático (obj.prop), y admite anidamiento:

const messages = {
  greeting: { formal: "Good evening", casual: "Hey" },
  farewell: { formal: "Goodbye", casual: "See ya" },
};

t`${derive(messages[category][tone])}`;

Los arrays funcionan igual:

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

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

Python

La misma resolución de objetos y array funciona en Python con diccionarios y listas:

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

t("{status}", status=derive(labels[status_key]))
ranks = ["Bronze", "Silver", "Gold", "Platinum"]

t("{rank}", rank=derive(ranks[level]))

Requisitos

  • Los objetos y los arrays deben declararse con const (TypeScript) o en el nivel del módulo (Python).
  • La sintaxis spread (...base) es compatible y se aplana en el momento de la extracción.
  • Las anotaciones de TypeScript (as const, satisfies) se eliminan automáticamente.
  • Se detectan los spreads circulares y se genera una advertencia en lugar de que el proceso se quede colgado.

Enlaces