# gt-next: General Translation Next.js SDK: Componenti di branching URL: https://generaltranslation.com/it/docs/next/guides/branches.mdx --- title: Componenti di branching description: Come usare i componenti di branching per gestire contenuti condizionali nelle traduzioni --- {/* GENERATO AUTOMATICAMENTE: non modificare direttamente. Modifica invece il template in content/docs-templates/. */} I componenti di branching consentono il rendering condizionale dei contenuti all'interno dei componenti [``](/docs/next/api/components/t). Gestiscono logiche dinamiche come le istruzioni if/else e le regole di pluralizzazione, assicurando al contempo che tutte le possibili varianti del contenuto possano essere tradotte correttamente. ## Componenti disponibili * [``](/docs/next/api/components/branch): Contenuti condizionali in base a valori o stati * [``](/docs/next/api/components/plural): Pluralizzazione automatica tramite regole specifiche dell'impostazione regionale ## Guida rapida I componenti di branching funzionano all'interno di [``](/docs/next/api/components/t) per gestire la logica condizionale: ```jsx import { T, Branch, Plural, Num, Var } from 'gt-next'; function NotificationPanel({ user, messageCount }) { return ( {user.name} is currently online

} away={

{user.name} is away

} >

{user.name} status unknown

You have {messageCount} message

} other={

You have {messageCount} messages

} />
); } ``` ## Come funzionano i componenti di branching I componenti di branching gestiscono il rendering condizionale all'interno delle traduzioni: 1. **Sostituendo gli operatori ternari** e la logica condizionale all'interno di [``](/docs/next/api/components/t) 2. **Fornendo contenuto di fallback** quando le condizioni non corrispondono ai valori previsti 3. **Consentendo la traduzione** di tutte le possibili varianti di contenuto 4. **Applicando automaticamente le regole di pluralizzazione dell'impostazione regionale** ```jsx // ❌ Questo non funziona - logica condizionale in

{isActive ? 'User is active' : 'User is inactive'}

// ✅ Questo funziona - logica condizionale con branching User is active

} false={

User is inactive

} />
``` ## Guida ai componenti ### Branch - Contenuto condizionale Usa [``](/docs/next/api/components/branch) per qualsiasi rendering condizionale in base a valori o stati: ```jsx // Visualizzazione stato utente Dashboard amministratore

} user={

Dashboard utente

} guest={

Accesso ospite

} >

Livello di accesso sconosciuto

// Condizioni booleane Bentornato!

} false={

Effettua il login

} />
// Livelli di abbonamento Esegui l'upgrade per sbloccare le funzionalità premium

} premium={

Goditi la tua esperienza premium

} enterprise={

Contatta il supporto per soluzioni enterprise

} >

Stato abbonamento non disponibile

``` ### Plurale - Gestione intelligente del plurale Usa [``](/docs/next/api/components/plural) per i contenuti che cambiano in base alla quantità: ```jsx // Pluralizzazione di base {itemCount} item in cart

} other={

{itemCount} items in cart

} />
// Gestione dello zero No new notifications

} one={

{notifications} notification

} other={

{notifications} notifications

} />
// Pluralizzazione complessa (segue le regole Unicode CLDR) Due today

} one={

Due in {days} day

} few={

Due in {days} days

} many={

Due in {days} days

} other={

Due in {days} days

} />
``` ### In combinazione con i componenti variabili Il branching e i componenti variabili funzionano perfettamente insieme: ```jsx Order {order.id} is pending. Total: {order.total}

} shipped={

Order {order.id} shipped on {order.shippedDate}

} delivered={

Order {order.id} was delivered successfully

} >

Order status unknown

``` ## Quando usare i componenti di branching ### Sostituisci gli operatori ternari Adatta la logica condizionale per usarla all'interno di [``](/docs/next/api/components/t): ```jsx // ❌ Non è possibile usare l'operatore ternario in {isActive ?

Active user

:

Inactive user

}
// ✅ Usa Branch al suo posto Active user

} false={

Inactive user

} />
``` ### Gestire più condizioni Sostituisci le istruzioni switch o le catene di condizioni if/else: ```jsx // ❌ Logica condizionale complessa {status === 'loading' ?

Loading...

: status === 'error' ?

Error occurred

: status === 'success' ?

Success!

:

Unknown status

}
// ✅ Logica di branching pulita Loading...

} error={

Error occurred

} success={

Success!

} >

Unknown status

``` ### Regole di pluralizzazione Sostituisci la gestione manuale dei plurali: ```jsx // ❌ Pluralizzazione manuale {count === 1 ?

1 item

:

{count} items

}
// ✅ Pluralizzazione automatica {count} item

} other={

{count} items

} />
``` ## Utilizzo autonomo I componenti di branching possono essere usati al di fuori di [``](/docs/next/api/components/t) per gestire esclusivamente la logica, senza traduzione: ```jsx // Rendering condizionale puro } light={} > // Pluralizzazione pura } other={} /> ``` ## Problemi comuni ### Chiavi branch mancanti Fornisci sempre contenuto di fallback per i valori senza corrispondenza: ```jsx // ❌ Nessun fallback per valori imprevisti } user={} // E se userRole fosse "moderator"? /> // ✅ Includi sempre un fallback } user={} > {/* Fallback per qualsiasi altro valore */} ``` ### Forme del plurale incomplete Fornisci le forme del plurale necessarie per la tua impostazione regionale predefinita: ```jsx // ❌ Forma "other" mancante 1 item

} // E per 0, 2, 3, ecc.? /> // ✅ Includi le forme necessarie No items

} one={

1 item

} other={

{count} items

} /> ``` ### Logica nidificata complessa Sebbene funzioni, consigliamo di mantenere semplice la logica condizionale ed evitare nidificazioni profonde: ```jsx // ❌ Branch annidato complesso {/* Difficile da leggere e mantenere */} // ✅ Semplificare la logica o usare più componenti } active-offline={} inactive-online={} > ``` Per saperne di più sulle regole di pluralizzazione, consulta la [documentazione Unicode CLDR](https://cldr.unicode.org/index/cldr-spec/plural-rules). ## Passaggi successivi * [Guida alla traduzione delle stringhe](/docs/next/guides/strings) - Traduci testo semplice senza JSX * [Guida ai contenuti dinamici](/docs/key-concepts/dynamic-content) - Gestisci la traduzione runtime * Riferimenti API: * [Componente ``](/docs/next/api/components/branch)