# 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)