# General Translation React SDKs (gt-react, gt-next): createNextMiddleware URL: https://generaltranslation.com/ru/docs/react/nextjs/reference/functions/create-next-middleware.mdx --- title: createNextMiddleware description: Добавляет маршрутизацию по локалям и определение локали в приложение Next.js с General Translation. Справочник API для createNextMiddleware. --- Функция `createNextMiddleware` из `gt-next/middleware` добавляет в приложение Next.js маршрутизацию по локалям и определение локали. Она определяет локаль каждого посетителя, сохраняет её в cookie-файле и перенаправляет его на локализованную версию страницы. Для настройки под конкретный роутер используйте [руководство по middleware для App Router](/docs/react/nextjs/app-router-middleware) или [руководство по middleware для Pages Router](/docs/react/nextjs/pages-router-middleware). ## Обзор [#overview] Создайте `middleware` и экспортируйте его вместе с сопоставителем путей из файла `middleware`. Разместите этот файл в корневом каталоге проекта: `proxy.ts` в Next.js 16+ или `middleware.ts` в Next.js 15 и ниже, а не внутри `app/` или `pages/`. ```ts title="proxy.ts" import { createNextMiddleware } from 'gt-next/middleware'; export default createNextMiddleware(); export const config = { // Совпадение со всеми путями, кроме API-маршрутов, статических файлов и внутренних путей Next.js matcher: ['/((?!api|static|.*\\..*|_next).*)'], }; ``` ## Как это работает [#how-it-works] `middleware` определяет локаль каждого запроса из следующих источников в таком порядке: 1. **Локаль в URL** — префикс локали в пути, например `/es/about`. 2. **Cookie-файл** — локаль, которую посетитель выбрал ранее. 3. **Заголовки браузера** — заголовок `Accept-Language`. 4. **Локаль по умолчанию** — настроенный вами `defaultLocale` как резервный вариант. Затем `middleware` устанавливает cookie-файл локали и, если включён `localeRouting`, перенаправляет запрос или переписывает его на правильный локализованный путь. По умолчанию `defaultLocale` не получает префикс (`/about` остаётся `/about`), а остальные локали получают (`/es/about`). Когда включены сервисы General Translation, коды локалей приводятся к канонической форме, а для неподдерживаемых локалей выводится предупреждение на этапе сборки. ## Параметры [#options] `createNextMiddleware` принимает один объект параметров. Все поля необязательны. | Параметр | Описание | Тип | Необязательный | По умолчанию | | ----------------------------------------------- | ------------------------------------------------------ | --------- | -------------- | ------------ | | [`localeRouting`](#locale-routing) | Включает маршрутизацию по локалям. | `boolean` | Да | `true` | | [`prefixDefaultLocale`](#prefix-default-locale) | Также добавляет в URL префикс для локали по умолчанию. | `boolean` | Да | `false` | | [`ignoreSourceMaps`](#ignore-source-maps) | Пропускает запросы Next.js к source maps. | `boolean` | Да | `true` | | [`pathConfig`](#path-config) | Переопределения локализованных путей. | `object` | Да | `{}` | *Примечание: чтобы ограничить пути, на которых выполняется middleware, задайте [`pathRegex`](/docs/react/nextjs/config#path-regex) в `withGTConfig` — это не параметр middleware. `matcher` в вашем экспортируемом `config` — это механизм, который Next.js использует, чтобы вообще определить, когда нужно запускать middleware.* ### `localeRouting` [#locale-routing] **Тип** `boolean` · **Необязательно** · **По умолчанию** `true` Включает маршрутизацию по локалям и перенаправления. Если `false`, middleware по-прежнему определяет и сохраняет локаль, но не добавляет префиксы локали и не переписывает пути. ### `prefixDefaultLocale` [#prefix-default-locale] **Тип** `boolean` · **Необязательно** · **По умолчанию** `false` Если `false` (по умолчанию), локаль по умолчанию обслуживается без префикса (`/about`), а для других локалей добавляется префикс (`/es/about`). Если `true`, префикс добавляется ко всем локалям, включая локаль по умолчанию (`/en/about`). ### `ignoreSourceMaps` [#ignore-source-maps] **Тип** `boolean` · **Необязательный** · **По умолчанию** `true` Если `true`, запросы к source maps Next.js передаются без изменений. ### `pathConfig` [#path-config] **Тип** `object` · **Необязательно** · **По умолчанию** `{}` Сопоставляет общие пути с локализованными, чтобы у маршрута был свой URL для каждой локали. Каждый ключ — это общий путь; каждое значение — либо один локализованный путь, либо сопоставление по локалям. Динамические сегменты, такие как `[id]`, сохраняются. ```ts title="proxy.ts" export default createNextMiddleware({ pathConfig: { // Английский: /products, Китайский: /zh/产品 '/products': { zh: '/产品', }, // Динамические маршруты: /product/123, /zh/产品/123 '/product/[id]': { zh: '/产品/[id]', }, }, }); ``` ## Пример [#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).*)'], }; ``` *Предупреждение: тщательно проверьте свой matcher. Слишком широкий matcher может вызвать циклические перенаправления или нарушить работу статических ресурсов.*