Skip to main content
Glama
static_rendering.md3.15 kB
--- createdAt: 2025-05-20 updatedAt: 2025-06-29 title: Статическая и динамическая отрисовка с i18n в Next.js description: Узнайте, как использовать статическую и динамическую отрисовку с i18n в Next.js. keywords: - статическая - динамическая - отрисовка - i18n - next.js - next-intl - intlayer - фреймворк - middleware - конфигурация slugs: - frequent-questions - static-rendering --- # Статическая и динамическая отрисовка с i18n в Next.js ## Проблема с **next-intl** - **Что происходит?** Когда вы используете `useTranslations`, `getTranslations` или любой помощник next-intl _внутри серверного компонента_ в приложении с i18n-маршрутизацией (`/en/…`, `/fr/…`), Next.js помечает весь маршрут как **динамический**. ([Next Intl][1]) - **Почему?** next-intl получает текущую локаль из заголовка, доступного только в запросе (`x-next-intl-locale`) через `headers()`. Поскольку `headers()` - это **динамический API**, любой компонент, который его использует, теряет статическую оптимизацию. ([Next Intl][1], [Next.js][2]) - **Официальное решение (шаблон)** 1. Экспортируйте `generateStaticParams` для каждой поддерживаемой локали. 2. Вызывайте `setRequestLocale(locale)` в **каждом** layout/странице _до_ вызова `useTranslations`. ([Next Intl][1]) Это устраняет зависимость от заголовка, но теперь у вас появляется дополнительный код для поддержки и нестабильный API в продакшене. ## Как **intlayer** обходит эту проблему **Выбор архитектуры** 1. **Только параметр маршрута** – Локаль берется из сегмента URL `[locale]`, который Next.js уже передает каждой странице. 2. **Пакеты на этапе компиляции** – Переводы импортируются как обычные ES-модули, поэтому они подвергаются tree-shaking и встраиваются на этапе сборки. 3. **Отсутствие динамических API** – `useT()` читает данные из контекста React, а не из `headers()` или `cookies()`. 4. **Никакой дополнительной настройки** – Как только ваши страницы находятся в папке `app/[locale]/`, Next.js автоматически предварительно рендерит один HTML-файл для каждой локали.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aymericzip/intlayer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server