# General Translation React SDKs (gt-react, gt-next, gt-react-native): Маршрутизация по локалям в Pages Router
URL: https://generaltranslation.com/ru/docs/react/nextjs/pages-router-middleware.mdx
---
title: Маршрутизация по локалям в Pages Router
description: Как настроить интернационализированную маршрутизацию Next.js с General Translation в Pages Router.
related:
links:
- /docs/react/nextjs-pages-router-quickstart
- /docs/react/nextjs/pages-router-static-site-generation
- /docs/react/nextjs/config
---
Pages Router использует интернационализированную маршрутизацию Next.js для определения локализованных URL-адресов и передачи активной локали в `gt-next`. Маршруты остаются в своих обычных расположениях в `pages`.
## Настройте маршрутизацию по локалям [#configure-routing]
Импортируйте настройки локалей из `gt.config.json` в `next.config.ts`. Массив `locales` должен содержать `defaultLocale`:
```json title="gt.config.json"
{
"defaultLocale": "en",
"locales": ["en", "es", "fr"]
}
```
```ts title="next.config.ts"
import type { NextConfig } from 'next';
import { withGTConfig } from 'gt-next/config';
import gtConfig from './gt.config.json';
const nextConfig: NextConfig = {
i18n: {
locales: gtConfig.locales,
defaultLocale: gtConfig.defaultLocale,
},
};
export default withGTConfig(nextConfig);
```
Next.js обслуживает локаль по умолчанию без префикса, а для остальных локалей добавляет префиксы. Например, для английского используется `/about`, а для французского — `/fr/about`.
Размещайте каждую страницу в корне `pages`; не добавляйте сегмент `[locale]`:
`withGTServerSideProps` и `withGTStaticProps` получают локаль из контекста функций получения данных Next.js. Для маршрутизации по локалям в Pages Router не нужны ни middleware `gt-next`, ни `proxy.ts`, ни `middleware.ts`.
## Подключите обработку изменений локали [#locale-changes]
Передайте в [`GTProvider`](/docs/react/reference/components/gt-provider) колбэк `_reload` с учётом локали, чтобы при изменении локали использовалась навигация Pages Router и загружались пропсы страницы для выбранной локали:
```tsx title="pages/_app.tsx"
import type { AppProps } from 'next/app';
import Router from 'next/router';
import { GTProvider, type WithGTStaticProps } from 'gt-next';
export default function App({
Component,
pageProps,
}: AppProps) {
const { locale, translations } = pageProps;
return (
{
void Router.push(Router.pathname, Router.asPath, {
locale: nextLocale,
});
}}
>
);
}
```
Для страниц с серверным рендерингом вместо этого используйте `WithGTServerSideProps`. Колбэк заменяет стандартную для provider полную перезагрузку страницы на навигацию через Pages Router.
## Как работает определение локали [#locale-detection]
Next.js определяет локаль запроса до выполнения `getServerSideProps` или `getStaticProps`:
* Префикс локали, например `/fr/about`, задаёт `context.locale` значение `fr`.
* Cookie-файл `NEXT_LOCALE` хранит предпочтение пользователя и может перенаправить запрос без префикса.
* Если предпочтение не сохранено, локаль может быть выбрана на основе языковых настроек браузера.
* `defaultLocale` используется, если ни одна другая настроенная локаль не подходит.
Установите `localeDetection: false` в `nextConfig.i18n`, чтобы отключить автоматические перенаправления на основе настроек браузера и cookie-файлов. Маршруты с префиксом локали и навигация роутера с учётом локали продолжат работать.
**Изменено в v11.1.3:** Настройка Pages Router теперь использует интернационализированную маршрутизацию Next.js вместо middleware `gt-next` и сегмента `pages/[locale]`. Существующее определение локали запроса остаётся резервным вариантом для совместимости, если Next.js не предоставляет `context.locale`.
## Next steps
- /docs/react/nextjs-pages-router-quickstart
- /docs/react/nextjs/pages-router-static-site-generation
- /docs/react/nextjs/config