# gt-next: General Translation Next.js SDK: Middleware
URL: https://generaltranslation.com/it/docs/next/guides/middleware.mdx
---
title: Middleware
description: Rilevamento automatico della lingua e routing degli URL in base alle preferenze dell'utente
---
Middleware rileva automaticamente le preferenze linguistiche dell'utente e lo reindirizza alla versione localizzata più adatta del tuo sito.
Usa le impostazioni del browser, la geolocalizzazione e le preferenze dell'utente per servire la lingua corretta prima del caricamento di qualsiasi contenuto.
**Percorso del file:** Posiziona `proxy.ts` nella radice del progetto, allo stesso livello della directory `app/`, non al suo interno. `proxy.ts` (Next.js 16+) o `middleware.ts` (Next.js 15 e versioni precedenti)
## Setup
### Passaggio 1: Crea una route dinamica
Crea una directory `[locale]` nella cartella `app/` e sposta al suo interno tutte le pagine:
### Passaggio 2: Aggiungi il middleware
Crea `proxy.ts` nella radice del progetto:
```ts
import { createNextMiddleware } from 'gt-next/middleware';
export default createNextMiddleware();
export const config = {
// Corrisponde a tutti i percorsi eccetto le route API, i file statici e gli elementi interni di Next.js
matcher: ['/((?!api|static|.*\\..*|_next).*)']
};
```
Questo consente il rilevamento automatico della lingua e il routing degli URL con prefissi di impostazione regionale come `/en/about`, `/es/about`.
## Rilevamento della lingua
Il middleware rileva le preferenze linguistiche dell'utente nel seguente ordine:
1. **Impostazione regionale nell'URL** - `/es/about` → spagnolo
2. **Cookie dell'utente** - Selezione della lingua precedente
3. **Intestazioni del browser** - Header `Accept-Language`
4. **Impostazione regionale predefinita** - Lingua di fallback configurata
Il middleware gestisce automaticamente il rilevamento della lingua del browser e la memorizzazione dei cookie senza configurazioni aggiuntive.
## Percorsi URL localizzati
Personalizza i percorsi URL per le diverse lingue:
```ts
export default createNextMiddleware({
pathConfig: {
// Inglese: /en/products, Cinese: /zh/产品
"/products": {
"zh": "/产品"
},
// Route dinamiche: /en/product/123, /zh/产品/123
"/product/[id]": {
"zh": "/产品/[id]"
}
}
});
```
## Struttura dell'URL
Per impostazione predefinita, alla tua impostazione regionale predefinita **non** viene anteposto un codice locale:
```
/about → /about (impostazione regionale predefinita: English)
/about → /es/about (Spanish)
/about → /fr/about (French)
```
### Aggiungi un prefisso all'impostazione regionale predefinita
Per aggiungere un prefisso a tutte le impostazioni regionali, compresa quella predefinita:
```ts
export default createNextMiddleware({
prefixDefaultLocale: true
});
```
Risultato:
```
/about → /en/about (English, with prefix)
/about → /es/about (Spanish, with prefix)
/about → /fr/about (French, with prefix)
```
## Problemi comuni
### Route dinamica mancante
Tutte le pagine devono trovarsi all'interno di `[locale]/`:
```
❌ Wrong:
app/
├── page.tsx
└── about/page.tsx
✅ Correct:
app/
└── [locale]/
├── page.tsx
└── about/page.tsx
```
### Configurazione del matcher
Escludi le route API e i file statici:
```ts
export const config = {
matcher: ['/((?!api|static|.*\\..*|_next).*)']
};
```
Verifica attentamente la configurazione del middleware: matcher errati possono causare reindirizzamenti infiniti o compromettere le risorse statiche.
## Passaggi successivi
**Guardalo in azione:** L'[app di esempio di Static Site Generation](https://github.com/gt-examples/static-site-generation) include un setup completo del middleware con routing basato sull'impostazione regionale — [anteprima live](https://static-site-generation.generaltranslation.dev).
* [Guida SSG](/docs/next/guides/ssg) - Generazione statica con routing basato sull'impostazione regionale
* [Supporto RTL](/docs/next/guides/rtl) - Lingue da destra a sinistra
* Riferimenti API: