gt@2.12.0
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.