# gt-next: General Translation Next.js SDK: Guida rapida di Next.js
URL: https://generaltranslation.com/it/docs/next.mdx
---
title: Guida rapida di Next.js
description: Aggiungi più lingue alla tua app Next.js in meno di 10 minuti
---
Al termine di questa guida, la tua app Next.js mostrerà contenuti in più lingue, con un selettore di lingua con cui gli utenti potranno interagire.
**Prerequisiti:**
* Un'app Next.js che usa l'**App Router** (Next.js 13+)
* Node.js 18+
**Vuoi una configurazione automatica?** Esegui `npx gt@latest` per configurare tutto con la [procedura guidata di setup](/docs/cli/init). Questa guida illustra il setup manuale.
***
## Passaggio 1: Installa i pacchetti
`gt-next` è la libreria che gestisce le traduzioni nella tua app. `gt` è lo strumento CLI che prepara le traduzioni per l’ambiente di produzione.
```bash
npm i gt-next
npm i -D gt
```
```bash
yarn add gt-next
yarn add --dev gt
```
```bash
bun add gt-next
bun add --dev gt
```
```bash
pnpm add gt-next
pnpm add --save-dev gt
```
***
## Passaggio 2: Configura la configurazione di Next.js
`gt-next` usa un plugin di Next.js chiamato **`withGTConfig`** per configurare l'internazionalizzazione in fase di build. Avvolgi la configurazione Next.js esistente con questo plugin:
```ts title="next.config.ts"
import { withGTConfig } from 'gt-next/config';
const nextConfig = {};
export default withGTConfig(nextConfig);
```
Questo plugin legge le impostazioni di traduzione e configura tutto automaticamente dietro le quinte. Non sono necessarie altre modifiche alla configurazione di Next.js.
***
## Passaggio 3: Crea un file di configurazione delle traduzioni
Crea un file **`gt.config.json`** nella cartella principale del progetto. Questo indica alla libreria quali lingue sono supportate:
```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 origine).
* **`locales`** — le lingue in cui vuoi tradurre. Scegli quelle che ti servono dall'[elenco delle impostazioni regionali supportate](/docs/platform/supported-locales).
* **`files.gt.output`** — dove la CLI salva i file di traduzione. `[locale]` viene sostituito con ciascun codice lingua (ad esempio, `public/_gt/es.json`).
Aggiungi `public/_gt/` al tuo **`.gitignore`** — questi file vengono generati, non scritti manualmente:
```txt title=".gitignore"
public/_gt/
```
***
## Passaggio 4: Aggiungi GTProvider al layout
Il componente **`GTProvider`** rende le traduzioni accessibili a tutta l'app. Deve avvolgere l'app a livello del layout radice:
```tsx title="app/layout.tsx"
import { GTProvider } from 'gt-next';
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
{children}
);
}
```
`GTProvider` è un **componente server**: carica le traduzioni sul server e le passa ai componenti client.
***
## Passaggio 5: Contrassegna il contenuto da tradurre
Ora racchiudi nel componente **``** qualsiasi testo che vuoi tradurre. `` sta per "translate":
```tsx title="app/page.tsx"
import { T } from 'gt-next';
export default function Home() {
return (
Welcome to my app
This content will be translated automatically.
);
}
```
Puoi racchiudere in `` tutto il JSX che vuoi, poco o tanto. Tutto ciò che c'è al suo interno — testo, elementi annidati, persino la formattazione — viene tradotto come un'unica unità.
***
## Passaggio 6: Aggiungi un selettore di lingua
Inserisci un **``** così gli utenti possono cambiare lingua:
```tsx title="app/page.tsx"
import { T, LocaleSelector } from 'gt-next';
export default function Home() {
return (
Welcome to my app
This content will be translated automatically.
);
}
```
`LocaleSelector` mostra un menu a discesa popolato con le lingue presenti nel tuo `gt.config.json`.
***
## Passaggio 7: Configura le variabili d'ambiente (facoltativo)
Per vedere le traduzioni durante lo sviluppo, ti servono le API key di General Translation. Queste abilitano la **traduzione on-demand**: l'app traduce i contenuti in tempo reale mentre sviluppi.
Crea un file **`.env.local`**:
```bash title=".env.local"
GT_API_KEY="your-api-key"
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.
Non esporre mai `GT_API_KEY` nel browser né inserirla nel controllo versione.
Sì. Senza API key, `gt-next` funziona come una normale libreria i18n. Non avrai la traduzione on-demand in 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 tu stesso
***
## Passaggio 8: Verificalo in azione
Avvia il server di sviluppo:
```bash
npm run dev
```
```bash
yarn dev
```
```bash
bun dev
```
```bash
pnpm dev
```
Apri [http://localhost:3000](http://localhost:3000) e usa il menu a discesa della lingua per passare da una lingua all'altra. Dovresti vedere i contenuti tradotti.
In fase di sviluppo, le traduzioni avvengono on-demand: la prima volta che passi a una nuova lingua potresti vedere brevemente uno stato di caricamento. In produzione, le traduzioni vengono pre-generate e caricate istantaneamente.
***
## Passaggio 9: Traduci le stringhe (non solo JSX)
Per le stringhe semplici — come gli attributi `placeholder`, i valori `aria-label` o il testo `alt` — usa l'hook **`useGT`**. Funziona sia nei componenti server che in quelli client:
```tsx title="app/contact/page.tsx"
import { useGT } from 'gt-next';
export default function ContactPage() {
const gt = useGT();
return (
);
}
```
Se preferisci usare `async/await` nei componenti server, importa `getGT` da `gt-next/server`:
```tsx
import { getGT } from 'gt-next/server';
export default async function Page() {
const gt = await getGT();
return {gt('Hello')}
;
}
```
***
## Passaggio 10: Distribuisci 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 && next build"
}
}
```
Imposta le variabili d'ambiente di **produzione** presso il 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 anteporre mai `NEXT_PUBLIC_`.
Ecco fatto: la tua app ora è multilingue. 🎉
***
## Risoluzione dei problemi
`gt-next` memorizza la preferenza linguistica dell'utente in un cookie chiamato `generaltranslation.locale`. Se in precedenza hai eseguito un test con una lingua diversa, questo cookie potrebbe sovrascrivere la selezione. Cancella 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 fase di sviluppo, le traduzioni avvengono on-demand (i contenuti vengono tradotti in tempo reale tramite l'API). Questo ritardo **non si verifica in produzione**: tutte le traduzioni vengono pre-generate da `npx gt translate`.
Un testo ambiguo può portare a traduzioni imprecise. Ad esempio, "apple" potrebbe riferirsi al frutto o all'azienda. Aggiungi la prop `context` per aiutare:
```jsx
Apple
```
Sia `` che `useGT()` e `getGT()` supportano l'opzione `context`.
***
## Prossimi passi
**Vedilo in azione:** Esplora le [app di esempio funzionanti](/docs/next/tutorials/examples) per vedere i pattern di `gt-next` in progetti reali, oppure vai direttamente al [catalogo delle app](https://app-catalog.generaltranslation.dev).
* [**Guida al componente ``**](/docs/next/guides/t) — Scopri variabili, plurali e pattern di traduzione avanzati
* [**Guida alla traduzione delle stringhe**](/docs/next/guides/strings) — Approfondisci `useGT` e `getGT`
* [**Componenti variabili**](/docs/next/guides/variables) — Gestisci contenuti dinamici con ``, ``, `` e ``
* [**Pluralizzazione**](/docs/next/api/components/plural) — Gestisci le forme plurali con il componente ``
* [**Tradurre i metadati della pagina**](/docs/next/api/strings/get-gt#metadata) — Traduci titoli, descrizioni e tag OG con `getGT`
* [**Deployment in produzione**](/docs/next/tutorials/quickdeploy) — Configurazione CI/CD, caching e ottimizzazione delle prestazioni
* [**Stringhe condivise**](/docs/next/guides/shared-strings) — Traduci il testo in array, oggetti di configurazione e dati condivisi con `msg()`