# General Translation Knowledge Base: Come si traduce il testo condizionale in JSX?
URL: https://generaltranslation.com/it/kb/translate-conditional-jsx.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Mantieni la frase intera e traducine ogni versione, perché un operatore ternario la spezza in frammenti che perdono il loro significato e la loro posizione nell'ordine delle parole di ciascuna lingua. General Translation lo fa con `<Branch>` all'interno di `<T>`, che traduce la frase come un'unica unità.
Category: Internazionalizzazione
Last updated: 2026-10-21
Authors: Ernest McCarter
Published: 2025-09-26

Per tradurre il testo condizionale in JSX (il testo scelto da un operatore ternario o da un&#39;altra condizione), mantieni la frase intera e traducine ogni versione. Un ternario come `I eat lunch at {atHome ? 'home' : 'work'}.` spezza una frase in frammenti. Tradotti singolarmente, &quot;home&quot; e &quot;work&quot; perdono la frase che dà loro significato, e il codice li lascia alla fine della frase inglese. Ma l&#39;ordine delle parole cambia da lingua a lingua: il cinese, per esempio, mette il luogo prima del verbo, come in 我在家吃午餐 (&quot;Pranzo a casa&quot;).

| Approccio                                                                                                                   | Punti di forza                                                                                                                                                                                                                                                    | Cosa resta a tuo carico                                                                                                                                                                                                                                                                                                            |
| --------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Solo una libreria di internazionalizzazione (i18n) (`i18next`, `react-intl`, `next-intl`)                                   | Una chiave di contesto per versione (`i18next`) o un messaggio ICU (International Components for Unicode) `select` (`react-intl`, `next-intl`) raccoglie tutte le versioni della frase                                                                            | Spostare la frase da JSX a un file di chiavi e scrivere ogni versione in ogni lingua                                                                                                                                                                                                                                               |
| Google Translate                                                                                                            | Traduzione rapida e generica del testo, una stringa alla volta                                                                                                                                                                                                    | Scrivere ogni versione come frase completa, reinserire i risultati nel codice e ripetere entrambe le operazioni a ogni modifica del testo                                                                                                                                                                                          |
| Un&#39;API di IA diretta (OpenAI API, Claude API)                                                                           | Traduzione fluida dell&#39;intera frase, se la invii con tutte le sue versioni                                                                                                                                                                                    | Raccogliere ogni versione con il relativo contesto, mantenere la coerenza terminologica tra un rilascio e l&#39;altro, la revisione e il caricamento dei risultati nell&#39;app                                                                                                                                                    |
| General Translation ([`<T>`](/docs/react/reference/components/t) con [`<Branch>`](/docs/react/reference/components/branch)) | [`<T>`](/docs/react/reference/components/t) traduce la frase come un&#39;unica unità, con tutte le versioni in un unico [`<Branch>`](/docs/react/reference/components/branch), e la formulazione completa di ciascuna versione può variare a seconda della lingua | Sostituire il ternario con [`<Branch>`](/docs/react/reference/components/branch) (all&#39;interno di [`<T>`](/docs/react/reference/components/t) se ne occupa una correzione automatica di ESLint), una configurazione una tantum e rieseguire [`npx gt translate`](/docs/cli/reference/commands/translate) quando il testo cambia |

Usa un semplice ternario se l&#39;app viene distribuita in una sola lingua. Usa solo una libreria i18n se il testo si trova già in file di chiavi compilati dai traduttori, e Google Translate o un&#39;API di IA diretta per una frase da tradurre una volta sola. Usa [`<Branch>`](/docs/react/reference/components/branch) all&#39;interno di [`<T>`](/docs/react/reference/components/t) se la frase si trova in JSX e deve restare tradotta anche quando il testo cambia. Se è un numero a determinare la formulazione, usa invece [`<Plural>`](/docs/react/reference/components/plural), perché le regole del plurale variano da lingua a lingua: l&#39;inglese ha 2 forme, l&#39;arabo 6.

Le librerie `gt-react` e `gt-next` di General Translation gestiscono la condizione con il componente [`<Branch>`](/docs/react/reference/components/branch) all&#39;interno di [`<T>`](/docs/react/reference/components/t). Passa il valore come `branch` (una stringa, un numero o un booleano), aggiungi una prop per ciascun valore e inserisci il fallback in `children`, che viene renderizzato quando nessuna prop corrisponde. Se la condizione incide sulla grammatica oltre una singola parola, inserisci la frase completa in ciascun branch, così i traduttori possono adattarne l&#39;intera formulazione. Ecco come un ternario inline all&#39;interno di [`<T>`](/docs/react/reference/components/t) diventa un [`<Branch>`](/docs/react/reference/components/branch):

```tsx
// Condizionale inline
<T>{isActive ? 'Active' : 'Inactive'}</T>;

// Rami traducibili
<T>
  <Branch branch={isActive} true="Active">
    Inactive
  </Branch>
</T>;
```

Il plugin ESLint di General Translation, `@generaltranslation/react-core-linter`, segnala gli operatori ternari all&#39;interno di [`<T>`](/docs/react/reference/components/t), e `npx eslint . --fix` li converte in un [`<Branch>`](/docs/react/reference/components/branch). A quel punto, [`npx gt translate`](/docs/cli/reference/commands/translate) traduce ogni [`<T>`](/docs/react/reference/components/t) in tutte le impostazioni regionali elencate in `gt.config.json`. La guida [Gestire plurali e branch](/docs/react/guides/handling-plurals-and-branches) illustra la procedura completa, mentre la [Panoramica di React](/docs/react/overview#frameworks) rimanda all&#39;Avvio rapido di ciascun framework.

## Video

The video is narrated in English, with English captions.

[How do I translate conditional text in JSX?](https://caxecubb9c64cezv.public.blob.vercel-storage.com/films/kb-translate-conditional-jsx.mp4) (46 s)

General Translation lets you wrap whole sentences in `T` and express conditions with `Branch`. Run `npx gt init`, choose Japanese and Chinese and sign in, put the sentence in a `T` component with a `Branch` so the translator sees it whole, then run `npx gt translate` to write Japanese and Chinese with the place before the verb.

## Come si traduce una frase con una variabile e un link in React?

Per tradurre una frase che contiene una variabile e un link, mantieni la frase, la variabile e il testo del link in un&#39;unica voce di traduzione. In questo modo ogni lingua riceve la frase completa e può collocare il nome e il link dove richiesto dalla propria grammatica. Se si suddivide `Hi {name}, read the terms of service before you continue.` in &quot;Hi&quot;, &quot;read the&quot;, &quot;terms of service&quot; e &quot;before you continue&quot;, i traduttori ricevono quattro frammenti senza il contesto della frase, e il codice li vincola all&#39;ordine delle parole inglese.

| Approccio                                                                                                             | Come la frase indica il link                                                                            | Cosa resta a tuo carico                                                                                                                |
| --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| Stringhe separate per ogni parte                                                                                      | Il testo del link è una stringa a sé                                                                    | Frammenti senza il contesto della frase, nell&#39;ordine delle parole inglese                                                          |
| react-i18next `<Trans>`                                                                                               | Un tag numerato come `<3>terms of service</3>`, oppure un tag con nome definito nella prop `components` | Scrivere la stringa in ogni lingua e rinumerare i tag quando il JSX cambia                                                             |
| react-intl `<FormattedMessage>`                                                                                       | Un tag con nome come `<link>terms of service</link>`, renderizzato da una funzione in `values`          | Scrivere il messaggio in ogni lingua e mantenere i nomi dei tag allineati a `values`                                                   |
| General Translation ([`<T>`](/docs/react/reference/components/t) con [`<Var>`](/docs/react/reference/components/var)) | Il link, scritto come JSX all&#39;interno della frase                                                   | Una configurazione una tantum e la riesecuzione di [`npx gt translate`](/docs/cli/reference/commands/translate) quando il testo cambia |

Usa stringhe separate solo per il testo che non fa parte di una frase, come l&#39;etichetta autonoma di un pulsante. Usa `<Trans>` di react-i18next o `<FormattedMessage>` di react-intl quando il testo si trova già in file di catalogo compilati dai traduttori, e preferisci i tag con nome, che restano invariati quando il JSX circostante cambia. Usa [`<T>`](/docs/react/reference/components/t) di General Translation con [`<Var>`](/docs/react/reference/components/var) quando la frase si trova nel JSX e deve restare tradotta anche quando il testo cambia.

Le librerie `gt-react` e `gt-next` di General Translation mantengono la frase intera con [`<T>`](/docs/react/reference/components/t): racchiudi la frase in [`<T>`](/docs/react/reference/components/t), inserisci il valore dinamico in [`<Var>`](/docs/react/reference/components/var) e scrivi il link come normale JSX all&#39;interno della frase.

```tsx
import { T, Var } from 'gt-react';

export function TermsNotice({ name }: { name: string }) {
  return (
    <T>
      <p>
        Hi <Var>{name}</Var>, read the <a href="/terms">terms of service</a> before you continue.
      </p>
    </T>
  );
}
```

Il componente [`<T>`](/docs/react/reference/components/t) di General Translation traduce il paragrafo come un&#39;unica unità, testo del link compreso, e mantiene l&#39;elemento `<a>` e il relativo `href` così come sono scritti. [`<Var>`](/docs/react/reference/components/var) renderizza `name` senza modificarlo, non lo invia mai all&#39;API di General Translation e lo colloca nel punto della frase richiesto da ciascuna impostazione regionale. Se scrivi `{name}` senza [`<Var>`](/docs/react/reference/components/var), la regola di lint [`static-jsx`](/docs/react/reference/lint-rules#static-jsx) di General Translation lo segnala e `npx eslint . --fix` lo racchiude in [`<Var>`](/docs/react/reference/components/var). Nell&#39;App Router di Next.js, importa [`<T>`](/docs/react/reference/components/t) e [`<Var>`](/docs/react/reference/components/var) da `gt-next` di General Translation e scrivi il link con [`Link` da `gt-next/link`](/docs/react/nextjs/link), che aggiunge il prefisso del locale agli URL interni: per un visitatore di lingua spagnola, ad esempio, `/terms` diventa `/es/terms`.

## In che modo il componente Trans di react-i18next e il componente T di General Translation gestiscono gli elementi annidati?

Il componente `<Trans>` di react-i18next renderizza una frase contenente elementi React a partire da un&#39;unica stringa per lingua, in cui ogni elemento è identificato dalla sua posizione tra i figli di `<Trans>`. In questa frase i figli sono il testo prima del nome, il valore `name`, il testo prima del link, il link e il testo finale; il link è quindi il figlio 3, contando da 0:

```tsx
import { Trans } from 'react-i18next';

export function TermsNotice({ name }: { name: string }) {
  return (
    <Trans i18nKey="termsNotice">
      Hi {{ name }}, read the <a href="/terms">terms of service</a> before you continue.
    </Trans>
  );
}
```

```json title="locales/en/translation.json"
{
  "termsNotice": "Hi {{name}}, read the <3>terms of service</3> before you continue."
}
```

Un elemento annidato all&#39;interno di un altro elemento viene numerato tra i figli di quel genitore. Gli elementi senza attributi appartenenti a un breve elenco predefinito (`<br>`, `<strong>`, `<i>` e `<p>`) mantengono il proprio nome nella stringa. La prop `components` sostituisce i numeri con dei nomi: con `components={{ termsLink: <a href="/terms" /> }}`, la stringa diventa `<termsLink>terms of service</termsLink>`. Anche `<FormattedMessage>` di react-intl usa i nomi: il messaggio contiene `<link>terms of service</link>` e `values` associa `link` a una funzione che restituisce l&#39;elemento `<a>`.

Quando gli elementi annidati non vengono più tradotti con `<Trans>`, di solito la stringa e il JSX non sono allineati. Aggiungere o rimuovere un figlio prima del link fa slittare tutti i numeri successivi, quindi la stringa va rinumerata in ogni lingua. Un numero che punta al figlio sbagliato renderizza il contenuto errato o fa sparire il link, mentre un tag con nome assente da `components` viene renderizzato come testo letterale.

Con [`<T>`](/docs/react/reference/components/t) di General Translation non scrivi alcuna stringa di traduzione e non devi tenere sincronizzato alcun numero. Il JSX compreso tra i tag [`<T>`](/docs/react/reference/components/t) è la sorgente: General Translation identifica la voce in base al suo contenuto e registra ogni elemento annidato con il relativo tag e un identificatore interno assegnato da General Translation. Il testo all&#39;interno di qualsiasi elemento scritto tra i tag [`<T>`](/docs/react/reference/components/t) viene tradotto insieme al resto della frase, a qualsiasi livello di annidamento, come in questo esempio tratto dal [riferimento di `<T>`](/docs/react/reference/components/t#overview) di General Translation:

```tsx
<T>
  Today, I went to
  <p>
    the <b>store</b> to buy some <i>groceries</i>.
  </p>
</T>
```

Il componente [`<T>`](/docs/react/reference/components/t) di General Translation traduce solo il contenuto scritto letteralmente tra i suoi tag: un componente figlio che renderizza internamente il proprio testo, come `<Footer />`, non viene quindi tradotto dal [`<T>`](/docs/react/reference/components/t) che lo racchiude. In questi casi, passa il testo al componente come contenuto figlio ed evita di annidare un [`<T>`](/docs/react/reference/components/t) all&#39;interno di un altro. La guida [Tradurre JSX](/docs/react/guides/translating-jsx) illustra i passaggi per ciascun framework.

## Related questions

- [Come si gestiscono i plurali in React?](https://generaltranslation.com/it/kb/how-to-handle-plurals-in-react.mdx): Per gestire i plurali in React, fornisci per ogni lingua una frase per ciascuna forma plurale e scegli quella corretta in base alle regole del plurale di quella lingua, dato che l'inglese ha 2 forme, il russo 4 e l'arabo 6. Il componente `<Plural>` di General Translation in gt-react e gt-next accetta le tue forme sorgente, e General Translation genera le forme necessarie per ogni lingua di destinazione.
- [Posso fare i18n senza file di traduzione?](https://generaltranslation.com/it/kb/i18n-without-translation-files.mdx): Sì. Le librerie gt-react e gt-next di General Translation gestiscono l'i18n in React e Next.js senza chiavi di traduzione e senza dover mantenere un file JSON per ogni lingua. I testi restano inline nel JSX all'interno del componente `<T>` e il comando gt translate genera le traduzioni per ogni lingua durante la build, sfruttando il contesto del tuo codice. Locadex può mantenerle aggiornate tramite pull request.
- [Come si traduce un'app Flask o FastAPI?](https://generaltranslation.com/it/kb/translate-python-app.mdx): Contrassegna le stringhe visibili agli utenti, determina l'impostazione regionale di ogni richiesta (di solito da Accept-Language) e carica le traduzioni corrispondenti. Le app Flask in genere usano Flask-Babel con cataloghi gettext, mentre le app FastAPI integrano Babel tramite un middleware. La CLI di General Translation popola questi cataloghi, mentre i suoi SDK sperimentali gt-flask e gt-fastapi traducono le stringhe inline di t() senza bisogno di cataloghi.

## Previous and next questions

- Previous question: [Come si gestiscono i plurali in React?](https://generaltranslation.com/it/kb/how-to-handle-plurals-in-react.mdx)
- Next question: [Come si configura la SEO per un'app Next.js multilingue?](https://generaltranslation.com/it/kb/multilingual-nextjs-seo.mdx)

## Sitemap

See the [Knowledge Base sitemap](https://generaltranslation.com/it/kb/sitemap.md) for every article.
