# gt-react: General Translation React SDK: Guida rapida a React URL: https://generaltranslation.com/it/docs/react.mdx --- title: Guida rapida a React description: Aggiungi più lingue alla tua app React in meno di 10 minuti --- Alla fine di questa guida, la tua app React mostrerà contenuti in più lingue, con un selettore di lingua con cui gli utenti potranno interagire. **Prerequisiti:** * Un'app React (Vite, Create React App o simili) * Node.js 18+ **Vuoi un setup automatico?** Esegui `npx gt@latest` per configurare tutto con il [Setup Wizard](/docs/cli/init). Questa guida illustra il setup manuale. *** ## Passaggio 1: Installa i pacchetti `gt-react` è la libreria che gestisce le traduzioni nella tua app. `gt` è lo strumento da riga di comando che prepara le traduzioni per l'ambiente di produzione. ```bash npm i gt-react npm i -D gt ``` ```bash yarn add gt-react yarn add --dev gt ``` ```bash bun add gt-react bun add --dev gt ``` ```bash pnpm add gt-react pnpm add --save-dev gt ``` *** ## Passaggio 2: Crea un file di configurazione per la traduzione Crea un file **`gt.config.json`** nella directory radice del progetto. In questo modo la libreria sa quali lingue supporti: ```json title="gt.config.json" { "defaultLocale": "en", "locales": ["es", "fr", "ja"], "files": { "gt": { "output": "public/_gt/[locale].json" } } } ``` * **`defaultLocale`** — la lingua in cui è scritta la tua app (la lingua di partenza). * **`locales`** — le lingue in cui vuoi tradurre. Scegline una dall'[elenco delle lingue supportate](/docs/platform/supported-locales). * **`files`** — indica alla CLI dove salvare i file di traduzione. Il percorso `output` deve corrispondere al percorso di import nella funzione `loadTranslations` (passaggio 3). **Usi Vite?** Imposta il percorso di output su `"src/_gt/[locale].json"` invece di `"public/_gt/[locale].json"`. Vite importa i file di traduzione come moduli, quindi devono trovarsi in `src/` anziché in `public/`. *** ## Passaggio 3: Crea un caricatore delle traduzioni `gt-react` viene eseguito interamente sul client, quindi richiede una funzione per caricare i file di traduzione a runtime. Crea un file `loadTranslations`: ```ts title="src/loadTranslations.ts" export default async function loadTranslations(locale: string) { try { const translations = await import(`../public/_gt/${locale}.json`); return translations.default; } catch (error) { console.warn(`No translations found for ${locale}`); return {}; } } ``` Questa funzione carica i file di traduzione JSON dalla directory `public/_gt/`. La CLI genera questi file quando esegui `npx gt translate`. Poiché i file di traduzione di Vite si trovano in `src/_gt/` (vedi Passaggio 2), aggiorna il percorso di importazione: ```ts title="src/loadTranslations.ts" export default async function loadTranslations(locale: string) { try { const translations = await import(`./_gt/${locale}.json`); return translations.default; } catch (error) { console.warn(`No translations found for ${locale}`); return {}; } } ``` La configurazione webpack di CRA blocca l'uso dinamico di `import()` al di fuori di `src/`. Usa invece `fetch()`: ```ts title="src/loadTranslations.ts" export default async function loadTranslations(locale: string) { try { const response = await fetch(`${process.env.PUBLIC_URL}/_gt/${locale}.json`); if (!response.ok) throw new Error('Not found'); return await response.json(); } catch (error) { console.warn(`No translations found for ${locale}`); return {}; } } ``` *** ## Passaggio 4: Aggiungi GTProvider alla tua app Il componente **`GTProvider`** consente all'intera app di accedere alle traduzioni. Avvolgi la tua app nel componente radice: ```tsx title="src/App.tsx" import { GTProvider } from 'gt-react'; import gtConfig from '../gt.config.json'; import loadTranslations from './loadTranslations'; export default function App() { return ( {/* Il contenuto della tua app */} ); } ``` `GTProvider` accetta la configurazione e il caricatore delle traduzioni come prop. Gestisce lo stato dell'impostazione regionale e rende le traduzioni disponibili a tutti i componenti figli. CRA limita le importazioni ai file all'interno di `src/`, quindi `import gtConfig from '../gt.config.json'` non funzionerà. Puoi copiare `gt.config.json` in `src/`, oppure inserire direttamente la configurazione nel codice: ```tsx title="src/App.tsx" import { GTProvider } from 'gt-react'; import loadTranslations from './loadTranslations'; export default function App() { return ( {/* Il contenuto della tua app */} ); } ``` *** ## Passaggio 5: Contrassegna i contenuti per la traduzione Ora, racchiudi nel componente **``** qualsiasi testo che vuoi tradurre. `` sta per "translate": ```tsx title="src/components/Welcome.tsx" import { T } from 'gt-react'; export default function Welcome() { return (

Welcome to my app

This content will be translated automatically.

); } ``` Puoi racchiudere all'interno di `` tanto o poco JSX quanto vuoi. Tutto ciò che è contenuto al suo interno — testo, elementi annidati, perfino la formattazione — viene tradotto come un'unica unità. *** ## Passaggio 6: Aggiungi un selettore della lingua Inserisci un **``** per consentire agli utenti di cambiare lingua: ```tsx title="src/components/Welcome.tsx" import { T, LocaleSelector } from 'gt-react'; export default function Welcome() { return (

Benvenuto nella mia app

Questo contenuto verrà tradotto automaticamente.

); } ``` `LocaleSelector` visualizza un menu a discesa con le lingue definite nel tuo `gt.config.json`. *** ## Passaggio 7: Configura le variabili d'ambiente (facoltativo) Per vedere le traduzioni durante lo sviluppo, ti servono le chiavi API di General Translation. Queste abilitano la **traduzione on-demand**: la tua app traduce i contenuti in tempo reale mentre sviluppi. Crea un file **`.env.local`** con il prefisso corretto per il tuo bundler: ```bash title=".env.local" VITE_GT_API_KEY="your-dev-api-key" VITE_GT_PROJECT_ID="your-project-id" ``` ```bash title=".env.local" REACT_APP_GT_API_KEY="your-dev-api-key" REACT_APP_GT_PROJECT_ID="your-project-id" ``` Ottieni gratuitamente le tue chiavi su [dash.generaltranslation.com](https://dash.generaltranslation.com/signup) oppure eseguendo: ```bash npx gt auth ``` Per lo sviluppo, usa una chiave che inizi con `gtx-dev-`. Le chiavi di produzione (`gtx-api-`) sono solo per CI/CD. I bundler lato client come Vite e CRA richiedono che le variabili d'ambiente usino prefissi specifici (`VITE_` o `REACT_APP_`) per essere esposte al browser. `GT_API_KEY` senza prefisso non sarà disponibile in fase di esecuzione. Sì. Senza chiavi API, `gt-react` funziona come una normale libreria i18n. Non avrai la traduzione on-demand durante lo sviluppo, ma puoi comunque: * Fornire manualmente i tuoi file di traduzione * Usare tutti i componenti (``, ``, `LocaleSelector`, ecc.) * Eseguire `npx gt generate` per creare modelli di file di traduzione e poi tradurli manualmente *** ## Passaggio 8: Vederlo in azione Avvia il server di sviluppo: ```bash npm run dev ``` ```bash yarn dev ``` ```bash bun dev ``` ```bash pnpm dev ``` Apri l'app e usa il menu a discesa della lingua per cambiare lingua. Dovresti vedere i contenuti tradotti. In fase di sviluppo, le traduzioni avvengono on-demand — potresti notare un breve caricamento la prima volta che passi a una nuova lingua. In produzione, le traduzioni sono pregenerate e si caricano immediatamente. *** ## Passaggio 9: Traduci le stringhe (non solo il JSX) Per le stringhe semplici — come gli attributi `placeholder`, i valori di `aria-label` o il testo `alt` — usa l'hook **`useGT`**: ```tsx title="src/components/ContactForm.tsx" import { useGT } from 'gt-react'; export default function ContactForm() { const gt = useGT(); return (
); } ``` *** ## Passaggio 10: Esegui il deployment in produzione In produzione, le traduzioni vengono generate in anticipo durante la fase di build (senza chiamate API in tempo reale). Aggiungi il comando translate allo script di build: ```json title="package.json" { "scripts": { "build": "npx gt translate && " } } ``` Imposta le variabili d'ambiente di **produzione** sul tuo provider di hosting (Vercel, Netlify, ecc.): ```bash GT_PROJECT_ID=your-project-id GT_API_KEY=gtx-api-your-production-key ``` Le chiavi di produzione iniziano con `gtx-api-` (non `gtx-dev-`). Puoi ottenerne una da [dash.generaltranslation.com](https://dash.generaltranslation.com). Non esporre mai pubblicamente la tua `GT_API_KEY`. Tutto qui: la tua app ora è multilingue. 🎉 *** ## Risoluzione dei problemi `gt-react` memorizza la preferenza della lingua dell'utente in un cookie chiamato `generaltranslation.locale`. Se in precedenza hai fatto delle prove con una lingua diversa, questo cookie potrebbe sovrascrivere la tua selezione. Elimina i cookie e riprova. * [Chrome](https://support.google.com/chrome/answer/95647) * [Firefox](https://support.mozilla.org/en-US/kb/delete-cookies-remove-info-websites-stored) * [Safari](https://support.apple.com/en-mn/guide/safari/sfri11471/16.0/mac/11.0) È normale. In sviluppo, le traduzioni avvengono on demand (i contenuti vengono tradotti in tempo reale tramite l'API). Questo ritardo **non esiste in produzione** — tutte le traduzioni vengono generate in anticipo da `npx gt translate`. Un testo ambiguo può portare a traduzioni imprecise. Ad esempio, "apple" potrebbe indicare il frutto o l'azienda. Aggiungi una prop `context` per chiarire: ```jsx Apple ``` Sia `` sia `useGT()` supportano l'opzione `context`. *** ## Passaggi successivi * [**Guida al componente ``**](/docs/react/guides/t) — Scopri variabili, plurali e pattern di traduzione avanzati * [**Guida alla traduzione delle stringhe**](/docs/react/guides/strings) — Approfondimento su `useGT` * [**Componenti variabili**](/docs/react/guides/variables) — Gestisci contenuti dinamici con ``, ``, `` e `` * [**Pluralizzazione**](/docs/react/api/components/plural) — Gestisci le forme plurali con il componente `` * [**Distribuzione in produzione**](/docs/react/tutorials/quickdeploy) — Configurazione CI/CD, caching e ottimizzazione delle prestazioni * [**Stringhe condivise**](/docs/react/guides/shared-strings) — Traduci il testo in array, oggetti di configurazione e dati condivisi con `msg()`