# 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