gt@2.12.0
Descripción general
derive() ahora puede resolver valores de objetos y arrays, no solo valores devueltos por funciones. Esta misma compatibilidad también se extiende a derive() de Python con diccionarios y listas. Esto significa que la CLI puede extraer estáticamente todas las posibles variantes de cadena de las estructuras de datos en tiempo de construcción, creando una entrada de traducción independiente para cada una.
Esto se basa en la compatibilidad con tagged template para derive() añadida en gt-react@10.15.0.
Acceso a objetos y arrays
Dado un objeto con variantes de cadena, derive() extrae todos los valores:
const labels = { success: "Saved", error: "Failed", pending: "Saving..." };
t`Status: ${derive(labels[status])}`;La CLI resuelve los tres valores y registra una entrada de traducción independiente 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/listas también 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 arrays deben declararse con
const(TypeScript) o a nivel de módulo (Python). - Se admite la sintaxis spread (
...base) y se aplana durante la extracción. - Las anotaciones de TypeScript (
as const,satisfies) se desenvuelven automáticamente. - Los spreads circulares se detectan y generan una advertencia en lugar de dejar el proceso colgado.