# General Translation React SDKs (gt-react, gt-next): createNextMiddleware URL: https://generaltranslation.com/fr/docs/react/nextjs/reference/functions/create-next-middleware.mdx --- title: createNextMiddleware description: Ajoutez le routage et la détection par paramètre régional à une application Next.js avec General Translation. Référence API pour createNextMiddleware. --- La fonction `createNextMiddleware` de `gt-next/middleware` ajoute le routage basé sur le paramètre régional et la détection basés sur le paramètre régional à une application Next.js. Elle détecte le paramètre régional de chaque visiteur, l'enregistre dans un cookie et le redirige vers la version localisée d'une page. Utilisez le [guide du middleware App Router](/docs/react/nextjs/app-router-middleware) ou le [guide du middleware Pages Router](/docs/react/nextjs/pages-router-middleware) pour une configuration spécifique au routeur. ## Vue d’ensemble [#overview] Créez le middleware et exportez-le, ainsi qu’un path matcher, dans votre fichier middleware. Placez-le à la racine de votre projet — `proxy.ts` sur Next.js 16+, ou `middleware.ts` sur Next.js 15 et versions antérieures — et non dans `app/` ou `pages/`. ```ts title="proxy.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).*)'], }; ``` ## Fonctionnement [#how-it-works] Le middleware détermine le paramètre régional de chaque requête à partir des sources suivantes, dans cet ordre : 1. **Paramètre régional de l'URL** — un préfixe du paramètre régional dans le chemin, par exemple `/es/about`. 2. **Cookie** — le paramètre régional précédemment choisi par le visiteur. 3. **En-têtes du navigateur** — l'en-tête `Accept-Language`. 4. **Paramètre régional par défaut** — votre `defaultLocale` configuré comme contenu de secours. Il définit ensuite un cookie de paramètre régional et, lorsque `localeRouting` est activé, redirige ou réécrit vers le chemin localisé approprié. Par défaut, `defaultLocale` n'est pas préfixé (`/about` reste `/about`), contrairement aux autres paramètres régionaux (`/es/about`). Les codes de langue sont normalisés dans leur forme canonique lorsque les services General Translation sont activés, et les paramètres régionaux non pris en charge génèrent un avertissement à la compilation. ## Options [#options] `createNextMiddleware` prend un seul objet d’options. Tous les champs sont facultatifs. | Option | Description | Type | Facultatif | Par défaut | | ----------------------------------------------- | --------------------------------------------------------------------------- | --------- | ---------- | ---------- | | [`localeRouting`](#locale-routing) | Active le routage basé sur les paramètres régionaux. | `boolean` | Oui | `true` | | [`prefixDefaultLocale`](#prefix-default-locale) | Ajoute également le paramètre régional par défaut comme préfixe dans l’URL. | `boolean` | Oui | `false` | | [`ignoreSourceMaps`](#ignore-source-maps) | Ignore les requêtes de source maps de Next.js. | `boolean` | Oui | `true` | | [`pathConfig`](#path-config) | Remplacements de chemins localisés. | `object` | Oui | `{}` | *Remarque : pour restreindre les chemins d’URL auxquels le middleware s’applique, définissez [`pathRegex`](/docs/react/nextjs/config#path-regex) dans `withGTConfig` — ce n’est pas une option du middleware. Le `matcher` de votre `config` exportée est ce que Next.js utilise pour déterminer si le middleware s’exécute.* ### `localeRouting` [#locale-routing] **Type** `boolean` · **Facultatif** · **Par défaut** `true` Active le routage basé sur le paramètre régional et les redirections en fonction du paramètre régional. Lorsque la valeur est `false`, le middleware détecte et enregistre toujours le paramètre régional, mais n’ajoute pas de préfixe du paramètre régional et ne réécrit pas les chemins. ### `prefixDefaultLocale` [#prefix-default-locale] **Type** `boolean` · **Facultatif** · **Par défaut** `false` Lorsque la valeur est `false` (par défaut), le paramètre régional par défaut est accessible sans préfixe (`/about`), tandis que les autres paramètres régionaux utilisent un préfixe (`/es/about`). Lorsque la valeur est `true`, chaque paramètre régional utilise un préfixe, y compris celui par défaut (`/en/about`). ### `ignoreSourceMaps` [#ignore-source-maps] **Type** `boolean` · **Facultatif** · **Par défaut** `true` Lorsque la valeur est `true`, les requêtes de source maps Next.js sont relayées sans modification. ### `pathConfig` [#path-config] **Type** `object` · **Facultatif** · **Par défaut** `{}` Associe des chemins partagés à des chemins localisés, afin qu’une route puisse avoir une URL différente selon le paramètre régional. Chaque clé correspond au chemin partagé ; chaque valeur est soit un seul chemin localisé, soit une table de correspondance par paramètre régional. Les segments dynamiques tels que `[id]` sont conservés. ```ts title="proxy.ts" export default createNextMiddleware({ pathConfig: { // Anglais : /products, Chinois : /zh/产品 '/products': { zh: '/产品', }, // Routes dynamiques : /product/123, /zh/产品/123 '/product/[id]': { zh: '/产品/[id]', }, }, }); ``` ## Exemple [#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).*)'], }; ``` *Avertissement : testez soigneusement votre matcher. Un matcher trop large peut entraîner des boucles de redirection ou perturber les ressources statiques.*