# gt-next: General Translation Next.js SDK: Migrazione
URL: https://generaltranslation.com/it/docs/next/guides/migration.mdx
---
title: Migrazione
description: Scopri come migrare un progetto a gt-next
---
## Panoramica
Questa guida illustra i passaggi necessari per migrare a gt-next un progetto che utilizza già una libreria i18n.
Forniremo anche consigli e suggerimenti per rendere la migrazione il più semplice possibile.
## Prerequisiti
* Un progetto che utilizza già un'altra libreria di i18n.
* Una conoscenza di base della libreria `gt-next`.
## Perché migrare?
Ci sono molti motivi per cui potresti voler migrare il tuo progetto a gt-next.
Eccone solo alcuni:
* **Niente più file JSON:** Non dovrai mai più gestire le traduzioni in file JSON.
Tutti i tuoi contenuti restano inline nel codice, dove devono stare.
* **Traduzioni automatiche:** Genera traduzioni di alta qualità, consapevoli del contesto, con il nostro strumento CLI.
Non dovrai mai più aspettare le traduzioni.
* **Sperimenta in dev:** Prova facilmente le traduzioni in fase di sviluppo grazie all'hot reloading delle traduzioni.
## Setup
Installa `gt-next` e lo strumento CLI `gt`.
```bash
npm i gt-next 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
```
Crea un file `gt.config.json` nella radice del progetto con una proprietà `defaultLocale` e un array `locales`.
```json title="gt.config.json" copy
{
"defaultLocale": "en",
"locales": ["en", "fr", "es"]
}
```
Quindi, aggiungi il componente `` al layout principale della tua app.
```tsx title="app/layout.tsx" copy
import { GTProvider } from 'gt-next'
export default function RootLayout({ children }) {
return (
{children}
)
}
```
Poi, aggiungi `withGTConfig` al file `next.config.js`.
```js title="next.config.ts" copy
import { withGTConfig } from 'gt-next/config'
const nextConfig = {
// Opzioni di next.config.ts
}
export default withGTConfig(nextConfig, {
// Configurazione GT
})
```
Per istruzioni più dettagliate, consulta la [guida rapida](/docs/next).
A questo punto hai 3 opzioni:
1. Migrare completamente l'intero progetto a `gt-next` e rimuovere la vecchia libreria i18n.
2. Migrare completamente il progetto, ma continuare a usare i dizionari della vecchia libreria i18n.
3. Continuare per il momento a usare la vecchia libreria i18n e migrare solo una parte del progetto a `gt-next`.
Per maggiori dettagli su ciascuna opzione, consulta la sezione [strategie di migrazione](#strategies).
## Strategie di migrazione [#strategies]
### Opzione 1: Migra completamente il progetto
Questa opzione è la più semplice, ma richiederà anche il maggior numero di modifiche al codice tutte insieme.
Dopo aver configurato il progetto, dovrai cercare tutte le occorrenze della tua vecchia libreria i18n e sostituirle con `gt-next`.
Se la tua app usa hook di React come `useTranslations`, cerca tutte le occorrenze di `useTranslations` nella base di codice e sostituiscile con `useGT`.
Poi dovrai sostituire tutte le chiavi di stringa con i relativi valori di stringa effettivi.
Ad esempio, se il tuo vecchio codice è così:
```json title="dictionary.json"
{
"hello": {
"description": "Hello, world!"
}
}
```
```tsx
export default function MyComponent() {
const { t } = useTranslation()
return
{t('hello.description')}
}
```
Dovrai sostituirlo con:
```tsx
export default function MyComponent() {
const gt = useGT()
return {gt('Hello, world!')}
}
// OR
export default function MyComponent() {
return Hello, world!
}
```
Fallo per tutte le occorrenze della tua vecchia libreria i18n.
### Opzione 2: Migra completamente il progetto, ma continua a usare i dizionari della vecchia libreria i18n
Supponiamo che tu voglia migrare il tuo progetto a `gt-next`, ma continuare a usare i dizionari della vecchia libreria i18n
e utilizzare le funzionalità inline di GT solo per i nuovi contenuti.
In questo caso, puoi fare qualcosa di simile all'Opzione 1:
Trova tutte le occorrenze della tua vecchia libreria i18n, come gli hook `useTranslations`, e sostituiscile con gli hook `useTranslations` di `gt-next`.
L'hook `useTranslations` si comporta in modo molto simile agli hook `useTranslations` di altre librerie i18n e puoi usarlo allo stesso modo.
```tsx
import { useTranslation } from 'react-i18next'
export default function MyComponent() {
const { t } = useTranslation()
return {t('hello.description')}
}
```
```tsx
import { useTranslations } from 'gt-next'
export default function MyComponent() {
const t = useTranslations()
return {t('hello.description')}
}
```
Per quanto riguarda la configurazione, dovrai creare un file `dictionary.[js|ts|json]` nella radice del progetto o nella directory `src`.
Copia il contenuto del vecchio file di dizionario in questo nuovo file.
La funzione di inizializzazione `withGTConfig` in `next.config.js` rileverà automaticamente il file di dizionario nella radice del progetto o nella directory `src`.
Per maggiori dettagli, consulta la guida [dictionaries](/docs/next/guides/dictionaries).
### Opzione 3: continua a usare per ora la vecchia libreria i18n e migra solo una parte del progetto a `gt-next`
Questa opzione è la più flessibile e richiede il minor numero di modifiche al codice tutte insieme.
In questo caso, puoi fare qualcosa di simile all'Opzione 2, ma migrare solo una parte del progetto a `gt-next`.
Ad esempio, puoi continuare a usare la vecchia libreria i18n per alcuni componenti e usare `gt-next` solo per altri e per i nuovi contenuti.
Questa opzione non è consigliata, perché dovrai gestire due librerie i18n diverse nel progetto, il che può risultare complesso e causare bug.
## Suggerimenti per la migrazione
### 1. Usa l'hook `useGT` o il componente `` il più possibile
Ove possibile, consigliamo di usare l'hook `useGT` o il componente ``.
In questo modo, modificare i contenuti in futuro sarà molto più semplice e il codebase risulterà molto più leggibile.
### 2. Usa l'hook `useTranslations` per i contenuti esistenti
L'hook `useTranslations` è un ottimo modo per continuare a usare i dizionari esistenti.
Lo mettiamo a disposizione per semplificare la migrazione, ma non ne consigliamo l'uso per i nuovi contenuti.
### 3. Uso dell'IA
Se usi l'IA per migrare il tuo progetto, mettiamo a disposizione `LLMs.txt` e `LLMs-full.txt` ai seguenti link:
* [LLMs.txt](/llms.txt)
* [LLMs-full.txt](/llms-full.txt)