# python: Usare derive URL: https://generaltranslation.com/it/docs/python/tutorials/derive.mdx --- title: Usare derive description: Come usare derive per la concordanza, i contenuti riutilizzabili e l'analisi statica --- ## Che cos'è `derive`? [`derive`](/docs/python/api/derive) è una funzione identità che serve a contrassegnare il contenuto per l'analisi statica del CLI di GT. Quando il CLI analizza il tuo codice, riconosce le chiamate a `derive(...)` e determina tutti i possibili valori restituiti, creando una voce di traduzione separata per ciascuno. Questo è utile per: * Preservare la **concordanza** tra le diverse lingue (genere, numero, caso) * **Contenuti riutilizzabili** con chiamate di funzione all'interno delle stringhe tradotte * **Frasi frammentate** in cui una parte della stringa ha un insieme noto di possibili esiti *** ## Mantenere la concordanza Le lingue hanno regole grammaticali (genere, numero, caso) che influiscono sulle parole circostanti. Senza `derive`, una singola voce di traduzione non può gestire la concordanza: ```python # Senza derive — una sola traduzione, nessuna concordanza possibile message = t(f"The {get_subject(gender)} is playing.") # "The boy is playing." e "The girl is playing." condividono una sola traduzione ``` Con `derive`, la CLI genera voci separate per ogni esito: ```python from gt_flask import derive, t def get_subject(gender: str) -> str: return "boy" if gender == "male" else "girl" message = t(f"The {derive(get_subject(gender))} is playing.") ``` Questo genera due voci di traduzione: * `"The boy is playing."` → `"El niño está jugando."` * `"The girl is playing."` → `"La niña está jugando."` Nota che in spagnolo si usa "El" o "La" a seconda del soggetto: la concordanza viene gestita automaticamente. *** ## Come funziona 1. **Nella fase di build**, la CLI di GT analizza le espressioni racchiuse in `derive` 2. Determina tutti i possibili valori restituiti (che devono essere analizzabili staticamente) 3. Crea voci di traduzione separate per ogni risultato distinto 4. **A runtime**, `derive` è semplicemente una funzione identità: restituisce il proprio argomento senza modificarlo *** ## Esempi ### Espressioni inline Puoi incorporare la logica direttamente in `derive`: ```python from gt_flask import derive, t message = t(f"The {derive('boy' if gender == 'male' else 'girl')} is playing.") ``` ### Chiamate di funzione Racchiudi tra tag le chiamate di funzione che hanno un insieme noto di valori restituiti: ```python from gt_flask import derive, t def get_status_label(status: str) -> str: if status == "complete": return "completed" elif status == "pending": return "pending" return "unknown" message = t(f"Task is {derive(get_status_label(status))}.") ``` ### Contenuti riutilizzabili ```python from gt_flask import derive, t def get_subject() -> str: return "boy" translation1 = t(f"The {derive(get_subject())} is playing.") translation2 = t(f"The {derive(get_subject())} is having fun.") ``` ### Con `declare_var` Combina `derive` con [`declare_var`](/docs/python/api/declare-var) quando ti serve contenuto dinamico all'interno di un'espressione statica: ```python from gt_flask import derive, declare_var, t def get_greeting(name: str | None) -> str: if name: return f"Hello, {declare_var(name, name='user')}" return "Hello, stranger" message = t(f"{derive(get_greeting(name))}! How are you?") ``` *** ## Considerazioni sulle prestazioni `derive` moltiplica le voci di traduzione. Ogni chiamata con N possibili esiti crea N voci e più chiamate a `derive` nella stessa catena le moltiplicano in modo esponenziale. Usalo con criterio.