Назад

gt-next@6.9.0

Ernest McCarter avatarErnest McCarter
gt-nextv6.9.0статический рендерингстатическая генерация сайтовпереводi18n

Обзор

Это поведение сейчас устарело; описание нового поведения см. в gt-next@6.10.0.

Статический рендеринг — одна из базовых возможностей фреймворка Next.js: он позволяет создавать предварительно отрендеренные страницы во время сборки для максимальной производительности и лучшего SEO. Поэтому любая библиотека для Next.js должна без проблем работать в рамках этой модели рендеринга. gt-next 6.9.0 добавляет поддержку статического рендеринга, позволяя приложениям с интернационализацией использовать все возможности статической генерации Next.js без ущерба для определения локали и функций перевода.

Что такое статический рендеринг?

При статическом рендеринге HTML генерируется во время сборки, а не при каждом запросе. Хотя такой подход обеспечивает высокую производительность, он создает сложности для библиотек i18n, которые обычно опираются на заголовки запроса, cookie или middleware для определения локали пользователя. При статическом рендеринге эти зависящие от запроса механизмы недоступны, поэтому для определения локали нужны альтернативные подходы.


Настройка статического рендеринга

Перед настройкой gt-next убедитесь, что ваше приложение Next.js настроено на статическую генерацию в соответствии с документацией по generateStaticParams.

Настройка включает три ключевых компонента:

1. Включите статический рендеринг в конфигурации

export default withGTConfig(nextConfig, {
  experimentalEnableSSG: true,
})

2. Настройте middleware

Настройте middleware для обработки динамических запросов:

// proxy.ts (Next.js 16+) или middleware.ts (Next.js 15 и ниже)
import { createNextMiddleware } from 'gt-next/middleware'

export default createNextMiddleware();

export const config = {
  matcher: [
    "/((?!api|static|.*\\..*|_next).*)",
  ],
}

3. Настройте статическое определение локали

Создайте функцию getStaticLocale, которая определяет локаль при статическом рендеринге. Эта функция выполняется только во время статической генерации — при SSR используется поведение по умолчанию: чтение заголовков, cookie и т. д.

Next.js 15.5+

// getStaticLocale.ts
import { locale } from "next/root-params";

export default async function getStaticLocale() {
  return await locale();
}

Next.js 15.1-15.4

// getStaticLocale.ts  
import { unstable_rootParams } from "next/server";

export default async function getStaticLocale() {
  return (await unstable_rootParams())?.locale;
}

getStaticRegion можно использовать для настройки определения региона при статическом рендеринге.


Преимущества

Next.js Native: Использует встроенную в Next.js систему корневых параметров, совместимую со статическим рендерингом.


Дополнительные возможности

Помимо статической генерации, в этом релизе также появилась поддержка пользовательских функций getLocale() и getRegion(), которые можно настраивать как для SSR, так и для статического рендеринга.