Volver

gt@2.11.3

Ernest McCarter avatarErnest McCarter
gt-clideriveobjectsarrays

Descripción general

derive() ahora admite acceso a objetos y arrays. Antes, derive() solo podía resolver llamadas a funciones; ahora también puede resolver valores de objetos, arrays y diccionarios, lo que facilita trabajar con patrones de búsqueda.

Esto se basa en el lanzamiento de derive() en tagged templates de gt-react@10.15.0.

Novedades

Acceso a objetos

Usa derive() al acceder a propiedades de objetos. La CLI resuelve estáticamente todos los valores posibles en el momento de la extracción:

const statusMessages = {
  success: "Your order has been placed.",
  pending: "Your order is being processed.",
  error: "Something went wrong with your order.",
} as const;

export default function OrderBanner({ status }: { status: string }) {
  return <p>{t`Thanks for shopping! ${derive(statusMessages[status])}`}</p>;
}

La CLI extrae una traducción independiente para cada valor posible:

  • "¡Gracias por tu compra! Tu pedido se ha realizado."
  • "¡Gracias por tu compra! Tu pedido se está procesando."
  • "¡Gracias por tu compra! Se produjo un error con tu pedido."

Se admite tanto el acceso estático (statusMessages.success) como el dinámico (statusMessages[status]).

Acceso a arrays

Los arrays funcionan igual:

const steps = [
  "Create your account",
  "Verify your email",
  "Start your first project",
] as const;

export default function Onboarding({ step }: { step: number }) {
  return <h2>{t`Step ${step + 1}: ${derive(steps[step])}`}</h2>;
}

Extracted entries:

  • "Paso {step + 1}: Crea tu cuenta"
  • "Paso {step + 1}: Verifica tu correo electrónico"
  • "Paso {step + 1}: Inicia tu primer proyecto"

Acceso anidado

Encadena el acceso a objetos y arrays a cualquier nivel de profundidad:

const content = {
  greetings: {
    formal: "Good morning.",
    casual: "Hey!",
  },
} as const;

// derive(content[category][style]) funciona

Soporte para Python

Los mismos patrones funcionan en Python con t(). Usa derive() como primer argumento o dentro de una f-string:

badges = {
    "admin": "Administrator",
    "mod": "Moderator",
    "user": "Member",
}

# Derivación autónoma
t(derive(badges[role]))

# derivar dentro de f-string para contexto circundante
t(f"Logged in as {derive(badges[role])}")

Entradas extraídas:

  • "Conectado como Administrador"
  • "Conectado como Moderador"
  • "Conectado como Miembro"

Enlaces