Migrazione
Scopri come migrare un progetto a gt-react
Panoramica
Questa guida illustra i passaggi necessari per migrare a gt-react un progetto che utilizza già una libreria i18n.
Forniremo anche suggerimenti e consigli per rendere la migrazione il più fluida possibile.
Prerequisiti
- Un progetto che utilizza un'altra libreria i18n.
- Conoscenze di base sulla libreria
gt-react.
Perché migrare?
Ci sono molti motivi per cui potresti voler migrare il tuo progetto a gt-react.
Eccone alcuni:
- Addio ai file JSON: Non dovrai più gestire le traduzioni in file JSON. Tutti i contenuti vivono accanto al tuo codice, dove è più naturale.
- Traduzioni automatiche: Genera traduzioni di alta qualità e sensibili al contesto con il nostro CLI. Non dovrai più attendere le traduzioni.
- Sperimenta in locale: Sperimenta facilmente le traduzioni in sviluppo grazie all’hot-reloading.
Configurazione
Installa gt-react e la CLI gtx-cli.
npm i gt-react
npm i gtx-cliyarn add gt-react
yarn add --dev gtx-clibun add gt-react
bun add --dev gtx-clipnpm add gt-react
pnpm add --save-dev gtx-cliCrea un file gt.config.json nella root del progetto con una proprietà defaultLocale e un array locales.
{
"defaultLocale": "en",
"locales": ["en", "fr", "es"]
}Aggiungi il componente <GTProvider> alla root dell’app e passa l’oggetto config come props usando lo spread.
import { GTProvider } from 'gt-react'
import config from './gt.config.json'
<GTProvider {...config}>
<App />
</GTProvider>Per istruzioni più dettagliate, consulta la guida avvio rapido del progetto.
A questo punto hai 3 opzioni:
- Migrare completamente l’intero progetto a
gt-reacte rimuovere la vecchia libreria i18n. - Migrare completamente il progetto, ma continuare a utilizzare i dizionari della vecchia libreria i18n.
- Continuare a utilizzare per ora la vecchia libreria i18n e migrare solo una parte del progetto a
gt-react.
Per maggiori dettagli su ciascuna opzione, vedi la sezione strategie di migrazione.
Strategie di migrazione
Opzione 1: Migrare completamente l’intero progetto
Questa opzione è la più semplice, ma richiederà anche il maggior numero di modifiche al codice in un’unica soluzione.
Dopo aver configurato il progetto, dovrai cercare tutte le occorrenze della vecchia libreria i18n e sostituirle con gt-react.
Se la tua app utilizza hook di React come useTranslation, cerca tutte le occorrenze di useTranslation nel codice e sostituiscile con useGT.
Poi dovrai sostituire tutte le chiavi delle stringhe con i rispettivi valori testuali.
Ad esempio, se il tuo vecchio codice è simile a questo:
{
"hello": {
"description": "Ciao, mondo!"
}
}export default function MyComponent() {
const { t } = useTranslation()
return <div>{t('hello.description')}</div>
}Dovrai sostituirlo con:
export default function MyComponent() {
const { t } = useGT()
return <div>{t('Ciao, mondo!')}</div>
}
// Oppure
export default function MyComponent() {
return <T>Ciao, mondo!</T>
}Esegui questa operazione per tutte le istanze della tua vecchia libreria i18n.
Opzione 2: migra completamente il progetto, ma continua a usare i dizionari della vecchia libreria i18n
Mettiamo che tu voglia migrare il progetto a gt-react, ma desideri continuare a usare i dizionari della vecchia libreria i18n
e usare le funzionalità inline di GT solo per i nuovi contenuti.
In questo caso, puoi fare qualcosa di simile all’opzione 1:
Individua tutte le istanze della vecchia libreria i18n, come gli hook useTranslation, e sostituiscile con gli hook useTranslations.
L’hook useTranslations si comporta in modo molto simile a useTranslation e lo puoi usare allo stesso modo.
import { useTranslation } from 'react-i18next'
export default function MyComponent() {
const { t } = useTranslation()
return <div>{t('hello.description')}</div>
}import { useTranslations } from 'gt-react'
export default function MyComponent() {
const t = useTranslations()
return <div>{t('hello.description')}</div>
}Per la configurazione, dovrai creare un file dictionary.[js|ts|json] nella root del progetto o nella directory src.
Copia il contenuto del vecchio file di dizionario in questo nuovo file, quindi passalo al componente GTProvider.
import { GTProvider } from 'gt-react'
import dictionary from './dictionary.json'
import config from './gt.config.json'
<GTProvider {...config} dictionary={dictionary}>
<App />
</GTProvider>Consulta la guida dictionaries per ulteriori dettagli.
Opzione 3: Continua a usare per ora la vecchia libreria i18n e migra solo una parte del progetto a gt-react
Questa è l’opzione più flessibile e richiede il minor numero di modifiche al codice in un’unica tornata.
In questo caso, puoi fare qualcosa di simile all’Opzione 2, ma migrare solo una parte del progetto a gt-react.
Per esempio, puoi continuare a utilizzare la vecchia libreria i18n per alcuni componenti e usare gt-react solo per altri e per i nuovi contenuti.
Questa opzione non è consigliata, perché dovrai gestire due librerie i18n diverse nello stesso progetto, cosa che può risultare complessa e causare bug.
Consigli per la migrazione
1. Usa l’hook useGT o il componente <T> il più possibile
Quando possibile, consigliamo di usare l’hook useGT o il componente <T>.
Questo renderà l’editing dei contenuti molto più semplice in futuro e il tuo codebase molto più leggibile.
2. Usa l’hook useTranslations per i contenuti esistenti
L’hook useTranslations è un ottimo modo per continuare a utilizzare i dizionari che già hai.
Lo mettiamo a disposizione per semplificare la migrazione, ma non ne consigliamo l’uso per i nuovi contenuti.
3. Uso dell’IA
Se stai usando l’IA per migrare il tuo progetto, mettiamo a disposizione i file LLMs.txt e LLMs-full.txt ai seguenti indirizzi:
Questi file contengono l’intero contenuto di questa documentazione, così il tuo strumento di IA avrà accesso a tutte le informazioni necessarie per aiutarti a migrare il progetto.
Come valuti questa guida?