# General Translation React SDKs (gt-react, gt-next, gt-react-native): Configura TanStack Start URL: https://generaltranslation.com/it/docs/react/tanstack-start/setup.mdx --- title: Configura TanStack Start description: Registra il middleware per le richieste di General Translation, inizializza un'app TanStack Start, determina l'impostazione regionale e idrata il provider. --- `gt-tanstack-start` usa un middleware globale per le richieste, l'inizializzazione del router a livello di modulo e un loader della route root. Il middleware crea uno stato locale per la richiesta per il codice server, mentre il loader root idrata [``](/docs/react/reference/components/gt-provider) con l'impostazione regionale e le traduzioni. Questa pagina copre la configurazione specifica di TanStack Start. Per la procedura completa, inclusi l'installazione e la CLI, segui il [Quickstart di TanStack Start](/docs/react/tanstack-start-quickstart). **Avvertenza:** `gt-tanstack-start` è sperimentale e potrebbe introdurre modifiche incompatibili. *Nota: `gt-tanstack-start` supporta solo ESM. Usa la sintassi `import` invece di CommonJS `require()`.* ## Carica le traduzioni [#load-translations] Crea una funzione [`loadTranslations`](/docs/react/reference/functions/load-translations) che importi il file di traduzione per un'impostazione regionale. Tieni i file in `src/` in modo che Vite possa importarli. ```ts title="loadTranslations.ts" export default async function loadTranslations(locale: string) { const translations = await import(`./src/_gt/${locale}.json`); return translations.default; } ``` La CLI genera questi file quando esegui [`npx gt translate`](/docs/cli/reference/commands/translate). ## Registra il middleware per le richieste [#middleware] Crea `src/start.ts` e registra [`gtMiddleware`](/docs/react/tanstack-start/reference/functions/gt-middleware) come middleware globale per le richieste. Quando definisci un'istanza `start` personalizzata, mantieni il middleware Cross-Site Request Forgery (CSRF) di TanStack Start. ```ts title="src/start.ts" import { createCsrfMiddleware, createStart } from '@tanstack/react-start'; import { gtMiddleware } from 'gt-tanstack-start'; const csrfMiddleware = createCsrfMiddleware({ filter: ({ handlerType }) => handlerType === 'serverFn', }); export const startInstance = createStart(() => ({ requestMiddleware: [csrfMiddleware, gtMiddleware], })); ``` Il middleware determina l'impostazione regionale, la regione e l'impostazione di internazionalizzazione una volta per ogni richiesta. Mantiene l'impostazione regionale determinata nel cookie dell'impostazione regionale e rende disponibile lo stato della richiesta alle [funzioni runtime isomorfe](/docs/react/tanstack-start/using-server-functions) sul server. ## Inizializza e determina l'impostazione regionale [#initialize] [`initializeGT`](/docs/react/reference/config#initialize), [`getLocale`](/docs/react/tanstack-start/reference/functions/get-locale) e [`getTranslationsSnapshot`](/docs/react/reference/functions/get-translations-snapshot) vengono importati da `gt-tanstack-start`: * **[`initializeGT`](/docs/react/reference/config#initialize)** — chiamalo una sola volta a livello di modulo in `src/router.tsx`. Usa lo spread di `gt.config.json` e passa [`loadTranslations`](/docs/react/reference/functions/load-translations). * **[`getLocale`](/docs/react/tanstack-start/reference/functions/get-locale)** — restituisce l'impostazione regionale dall'ambito middleware attivo sul server e dallo store di condizioni del browser inizializzato sul client. * **[`getTranslationsSnapshot`](/docs/react/reference/functions/get-translations-snapshot)** — carica le traduzioni di un'impostazione regionale nel formato previsto da [``](/docs/react/reference/components/gt-provider), così il contenuto viene visualizzato senza effetti flash durante il caricamento. Consulta il [riferimento](/docs/react/reference/functions/get-translations-snapshot). ## Abilita il routing delle impostazioni regionali [#locale-routing] Il routing delle impostazioni regionali è opt-in. Prima di abilitarlo, configura TanStack Router affinché corrisponda sia all'URL dell'impostazione regionale predefinita senza prefisso, ad esempio `/about`, sia agli URL con prefisso dell'impostazione regionale, ad esempio `/es/about`. Puoi aggiungere un [segmento facoltativo `/{-$locale}`](https://tanstack.com/router/v1/docs/guide/internationalization-i18n#i18n-with-optional-path-parameters) alle tue route basate su file o su codice, oppure usare l'[opzione `rewrite` di TanStack Router](https://tanstack.com/router/v1/docs/guide/internationalization-i18n#url-localization-via-router-rewrite) per mappare gli URL pubblici con prefisso dell'impostazione regionale al tuo albero delle route esistente. Ad esempio, il percorso facoltativo della route `/{-$locale}/about` corrisponde a `/about`, `/es/about` e `/ja/about`. Dopo che il router accetta entrambe le forme di URL, imposta `localeRouting` su `true` in `gt.config.json`: ```json title="gt.config.json" { "defaultLocale": "en", "locales": ["es", "ja"], "localeRouting": true } ``` `gt-tanstack-start` non crea né ristruttura le route dell'applicazione. L'opzione fa sì che determini l'impostazione regionale da un prefisso di percorso supportato e aggiorni il pathname quando l'impostazione regionale cambia. L'impostazione regionale predefinita rimane senza prefisso, ad esempio `/about`, mentre le altre impostazioni regionali usano un prefisso, ad esempio `/es/about`. Sul server, [`gtMiddleware`](/docs/react/tanstack-start/reference/functions/gt-middleware) determina l'impostazione regionale dal percorso, poi dal cookie dell'impostazione regionale, dall'header `Accept-Language` e da `defaultLocale`. Sul client, le modifiche dell'impostazione regionale ricaricano il pathname corrispondente e ne preservano la query string e l'hash. Il percorso di base di TanStack Router viene rispettato tramite `TSS_ROUTER_BASEPATH`. ## Inizializza il router e configura la route root [#root-route] Aggiungi le importazioni e l'inizializzatore di [`initializeGT`](/docs/react/reference/config#initialize) al file `src/router.tsx` esistente: ```tsx title="src/router.tsx" import { initializeGT } from 'gt-tanstack-start'; import gtConfig from '../gt.config.json'; import loadTranslations from '../loadTranslations'; initializeGT({ ...gtConfig, loadTranslations }); ``` Quindi determina l'impostazione regionale e carica lo snapshot nel loader `src/routes/__root.tsx`. Passa `locale` e `translations` a [``](/docs/react/reference/components/gt-provider) nel componente shell. ```tsx title="src/routes/__root.tsx" import { HeadContent, Scripts, createRootRoute, } from '@tanstack/react-router'; import { GTProvider, getLocale, getTranslationsSnapshot, LocaleSelector, } from 'gt-tanstack-start'; export const Route = createRootRoute({ loader: async () => { const locale = getLocale(); return { locale, translations: await getTranslationsSnapshot(locale), }; }, shellComponent: RootDocument, }); function RootDocument({ children }: { children: React.ReactNode }) { const { locale, translations } = Route.useLoaderData(); return ( {children} ); } ``` [``](/docs/react/reference/components/gt-provider) qui richiede sia `locale` sia `translations`, a differenza di Next.js, dove è il server a risolverli, o di React Native, dove il provider li carica autonomamente. [`initializeGT`](/docs/react/reference/config#initialize) deve essere eseguito prima che [`gtMiddleware`](/docs/react/tanstack-start/reference/functions/gt-middleware) gestisca una richiesta. Completa la configurazione del router e della route root prima di avviare il server di sviluppo. ## Contrassegna il contenuto per la traduzione [#content] Nei componenti della route, avvolgi il JSX in [``](/docs/react/reference/components/t) e traduci le stringhe con [`useGT`](/docs/react/reference/hooks/use-gt). Importali da `gt-react` in modo che la CLI li rilevi durante la scansione del codice sorgente. ```tsx title="src/routes/index.tsx" import { createFileRoute } from '@tanstack/react-router'; import { T, useGT } from 'gt-react'; export const Route = createFileRoute('/')({ component: Home }); function Home() { const gt = useGT(); return (

Welcome to my app

This content is translated automatically.

); } ```