# General Translation React SDKs (gt-react, gt-next): createNextMiddleware URL: https://generaltranslation.com/it/docs/react/nextjs/reference/functions/create-next-middleware.mdx --- title: createNextMiddleware description: Aggiungi il routing e il rilevamento delle impostazioni regionali a un'app Next.js con General Translation. Riferimento API per createNextMiddleware. --- La funzione `createNextMiddleware` di `gt-next/middleware` aggiunge a un'app Next.js il routing basato sulle impostazioni regionali e il rilevamento. Rileva l'impostazione regionale di ogni visitatore, la memorizza in un cookie e lo reindirizza alla versione localizzata di una pagina. Per una configurazione specifica del router, usa la [guida al middleware di App Router](/docs/react/nextjs/app-router-middleware) o la [guida al middleware di Pages Router](/docs/react/nextjs/pages-router-middleware). ## Panoramica [#overview] Crea il middleware ed esportalo, insieme a un path matcher, dal file `middleware`. Inseriscilo nella radice del progetto — `proxy.ts` in Next.js 16+, oppure `middleware.ts` in Next.js 15 e versioni precedenti — non all'interno di `app/` o `pages/`. ```ts title="proxy.ts" import { createNextMiddleware } from 'gt-next/middleware'; export default createNextMiddleware(); export const config = { // Corrisponde a tutti i percorsi eccetto le API route, i file statici e i componenti interni di Next.js matcher: ['/((?!api|static|.*\\..*|_next).*)'], }; ``` ## Come funziona [#how-it-works] Il middleware determina l'impostazione regionale di ogni richiesta a partire da queste fonti, in questo ordine: 1. **Impostazione regionale nell'URL** — un prefisso dell'impostazione regionale nel pathname, ad esempio `/es/about`. 2. **Cookie** — l'impostazione regionale selezionata in precedenza dal visitatore. 3. **Header del browser** — l'header `Accept-Language`. 4. **Impostazione regionale predefinita** — il `defaultLocale` configurato come fallback. Quindi imposta un cookie per l'impostazione regionale e, quando `localeRouting` è abilitato, reindirizza o riscrive il percorso localizzato corretto. Per impostazione predefinita, `defaultLocale` non ha prefisso (`/about` rimane `/about`), mentre le altre impostazioni regionali sì (`/es/about`). I codici locale vengono standardizzati nella forma canonica quando i servizi General Translation sono abilitati e le impostazioni regionali non supportate generano un avviso in fase di build. ## Opzioni [#options] `createNextMiddleware` accetta un unico oggetto options. Tutti i campi sono facoltativi. | Opzione | Descrizione | Tipo | Facoltativo | Predefinito | | ----------------------------------------------- | ----------------------------------------------------------------------------------- | --------- | ----------- | ----------- | | [`localeRouting`](#locale-routing) | Abilita il routing basato sulle impostazioni regionali. | `boolean` | Sì | `true` | | [`prefixDefaultLocale`](#prefix-default-locale) | Aggiunge un prefisso anche all'impostazione regionale predefinita nell'URL. | `boolean` | Sì | `false` | | [`ignoreSourceMaps`](#ignore-source-maps) | Ignora le richieste di source map di Next.js. | `boolean` | Sì | `true` | | [`pathConfig`](#path-config) | Override localizzati dei percorsi. | `object` | Sì | `{}` | *Nota: per limitare i pathname su cui il middleware viene eseguito, imposta [`pathRegex`](/docs/react/nextjs/config#path-regex) in `withGTConfig` — non è un'opzione del middleware. Il `matcher` nel `config` esportato è ciò che Next.js usa per decidere se il middleware debba essere eseguito o meno.* ### `localeRouting` [#locale-routing] **Tipo** `boolean` · **Facoltativo** · **Predefinito** `true` Abilita il routing basato sulle impostazioni regionali e i reindirizzamenti. Quando è `false`, il middleware continua a rilevare e memorizzare l'impostazione regionale, ma non aggiunge prefissi dell'impostazione regionale né riscrive i percorsi. ### `prefixDefaultLocale` [#prefix-default-locale] **Tipo** `boolean` · **Facoltativo** · **Predefinito** `false` Quando è `false` (impostazione predefinita), l'impostazione regionale predefinita viene servita senza prefisso (`/about`), mentre le altre impostazioni regionali sono precedute da un prefisso (`/es/about`). Quando è `true`, tutte le impostazioni regionali sono precedute da un prefisso, inclusa quella predefinita (`/en/about`). ### `ignoreSourceMaps` [#ignore-source-maps] **Type** `boolean` · **Facoltativo** · **Predefinito** `true` Quando è `true`, le richieste delle source map di Next.js vengono inoltrate inalterate. ### `pathConfig` [#path-config] **Tipo** `object` · **Facoltativo** · **Predefinito** `{}` Associa i percorsi condivisi ai percorsi localizzati, così una route può avere un URL diverso per ogni impostazione regionale. Ogni chiave è il percorso condiviso; ogni valore è un singolo percorso localizzato oppure una mappa per impostazione regionale. I segmenti dinamici come `[id]` vengono preservati. ```ts title="proxy.ts" export default createNextMiddleware({ pathConfig: { // Inglese: /products, Cinese: /zh/产品 '/products': { zh: '/产品', }, // Route dinamiche: /product/123, /zh/产品/123 '/product/[id]': { zh: '/产品/[id]', }, }, }); ``` ## Esempio [#example] ```ts title="proxy.ts" import { createNextMiddleware } from 'gt-next/middleware'; export default createNextMiddleware({ prefixDefaultLocale: true, pathConfig: { '/about': { fr: '/a-propos', }, }, }); export const config = { matcher: ['/((?!api|static|.*\\..*|_next).*)'], }; ``` *Avviso: verifica attentamente il tuo matcher. Un matcher troppo generico può causare loop di reindirizzamento o compromettere le risorse statiche.*