Indietro

gt@2.11.3

Ernest McCarter avatarErnest McCarter
gt-clideriveobjectsarrays

Panoramica

derive() ora supporta l'accesso a oggetti e array. In precedenza, derive() poteva risolvere solo chiamate di funzione; ora può risolvere valori da oggetti, array e dizionari, rendendo più semplice lavorare con pattern di lookup.

Questo si basa sul rilascio di derive() nelle tagged template literal di gt-react@10.15.0.

Novità

Accesso alle proprietà degli oggetti

Usa derive() con l'accesso alle proprietà degli oggetti. La CLI determina staticamente tutti i valori possibili in fase di estrazione:

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 estrae una traduzione distinta per ogni valore possibile:

  • "Thanks for shopping! Your order has been placed."
  • "Thanks for shopping! Your order is being processed."
  • "Thanks for shopping! Something went wrong with your order."

Sono supportati sia l'accesso statico (statusMessages.success) sia quello dinamico (statusMessages[status]).

Accesso agli array

Gli array funzionano allo stesso modo:

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>;
}

Voci estratte:

  • "Passaggio {step + 1}: Crea il tuo account"
  • "Passaggio {step + 1}: Verifica il tuo indirizzo email"
  • "Passaggio {step + 1}: Avvia il tuo primo progetto"

Accesso nidificato

Concatena l'accesso a oggetti e array a qualsiasi livello di profondità:

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

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

Supporto per Python

Gli stessi pattern funzionano in Python con t(). Usa derive() come primo argomento o all'interno di una f-string:

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

# Derive autonomo
t(derive(badges[role]))

# derive all'interno di una f-string per il contesto circostante
t(f"Logged in as {derive(badges[role])}")

Voci estratte:

  • "Accesso effettuato come amministratore"
  • "Accesso effettuato come moderatore"
  • "Accesso effettuato come Member"