Descripción general
derive() ahora puede resolver valores de objetos y listas, 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 listas
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])}`;Las listas funcionan igual:
const ranks = ["Bronze", "Silver", "Gold", "Platinum"];
t`Your rank: ${derive(ranks[level])}`;Python
La misma resolución de objeto/lista funciona en Python con diccionarios y listas:
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]))Pasa la expresión derivada como primer argumento o colócala dentro de una f-string que se pase como ese argumento. Si la colocas en el valor de una interpolación con clave, no se extraerán las entradas del diccionario ni de la lista.
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.