# gt-next: General Translation Next.js SDK: Middleware
URL: https://generaltranslation.com/fr/docs/next/guides/middleware.mdx
---
title: Middleware
description: Détection automatique de la langue et routage des URL en fonction des préférences de l’utilisateur
---
Middleware détecte automatiquement les préférences linguistiques des utilisateurs et les redirige vers la version localisée appropriée de votre site.
Il s’appuie sur les paramètres du navigateur, la géolocalisation et les préférences utilisateur pour proposer la langue appropriée avant le chargement du moindre contenu.
**Emplacement du fichier :** Placez `proxy.ts` à la racine de votre projet, au même niveau que votre répertoire `app/` — et non à l’intérieur. `proxy.ts` (Next.js 16+) ou `middleware.ts` (Next.js 15 et versions antérieures)
## Configuration
### Étape 1 : Créez une route dynamique
Créez un répertoire `[locale]` dans votre dossier `app/`, puis déplacez-y toutes les pages :
### Étape 2 : Ajouter le middleware
Créez `proxy.ts` à la racine du projet :
```ts
import { createNextMiddleware } from 'gt-next/middleware';
export default createNextMiddleware();
export const config = {
// Correspond à tous les chemins sauf les routes d’API, les fichiers statiques et les éléments internes de Next.js
matcher: ['/((?!api|static|.*\\..*|_next).*)']
};
```
Cela active la détection automatique de la langue et le routage des URL avec des préfixes de paramètre régional tels que `/en/about`, `/es/about`.
## Détection de la langue
Le middleware détecte les préférences linguistiques de l’utilisateur dans l’ordre suivant :
1. **Paramètre régional dans l’URL** - `/es/about` → espagnol
2. **Cookie de l’utilisateur** - Sélection de langue précédente
3. **En-têtes du navigateur** - En-tête `Accept-Language`
4. **Paramètre régional par défaut** - Langue de secours configurée
Le middleware gère automatiquement la détection de la langue du navigateur et la persistance du cookie, sans configuration supplémentaire.
## Chemins d’URL localisés
Personnalisez les chemins d’URL selon la langue :
```ts
export default createNextMiddleware({
pathConfig: {
// Anglais : /en/products, Chinois : /zh/产品
"/products": {
"zh": "/产品"
},
// Routes dynamiques : /en/product/123, /zh/产品/123
"/product/[id]": {
"zh": "/产品/[id]"
}
}
});
```
## Structure des URL
Par défaut, votre paramètre régional par défaut **n’est pas** précédé d’un code de langue :
```
/about → /about (paramètre régional par défaut : anglais)
/about → /es/about (espagnol)
/about → /fr/about (français)
```
### Ajouter un préfixe au paramètre régional par défaut
Pour ajouter un préfixe à tous les paramètres régionaux, y compris celui par défaut :
```ts
export default createNextMiddleware({
prefixDefaultLocale: true
});
```
Résultat :
```
/about → /en/about (English, with prefix)
/about → /es/about (Spanish, with prefix)
/about → /fr/about (French, with prefix)
```
## Problèmes courants
### Route dynamique manquante
Toutes les pages doivent se trouver sous `[locale]/` :
```
❌ Wrong:
app/
├── page.tsx
└── about/page.tsx
✅ Correct:
app/
└── [locale]/
├── page.tsx
└── about/page.tsx
```
### Configuration du matcher
Excluez les routes d’API et les fichiers statiques :
```ts
export const config = {
matcher: ['/((?!api|static|.*\\..*|_next).*)']
};
```
Testez soigneusement la configuration de votre middleware : des matchers incorrects peuvent provoquer des boucles de redirection infinies ou empêcher le chargement des ressources statiques.
## Étapes suivantes
**Voyez-le en action :** L’[application d’exemple de génération de site statique](https://github.com/gt-examples/static-site-generation) inclut une configuration complète du middleware avec routage par paramètre régional — [aperçu en direct](https://static-site-generation.generaltranslation.dev).
* [Guide SSG](/docs/next/guides/ssg) - Génération statique avec routage par paramètre régional
* [Prise en charge RTL](/docs/next/guides/rtl) - Langues s’écrivant de droite à gauche
* Références d’API :