Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Перевод вашего сайта на Next.js 15 с использованием next-intl и Intlayer | Интернационализация (i18n)
Это руководство проведет вас через лучшие практики использования next-intl в приложении Next.js 15 (App Router) и покажет, как наложить Intlayer сверху для надежного управления переводами и автоматизации.
Смотрите сравнение в next-i18next vs next-intl vs Intlayer.
- Для начинающих: следуйте пошаговым разделам, чтобы получить рабочее многоязычное приложение.
- Для разработчиков среднего уровня: обратите внимание на оптимизацию payload и разделение серверной/клиентской части.
- Для опытных разработчиков: обратите внимание на статическую генерацию, middleware, интеграцию SEO и хуки автоматизации.
Что мы рассмотрим:
- Настройка и структура файлов
- Оптимизация загрузки сообщений
- Использование клиентских и серверных компонентов
- Метаданные, sitemap, robots для SEO
- Middleware для маршрутизации по локали
- Добавление Intlayer сверху (CLI и автоматизация)
Настройка вашего приложения с использованием next-intl
Установите зависимости next-intl -
Копировать код в буфер обмена
Копировать код в буфер обмена
Настройка и загрузка контента
Загружайте только те пространства имён, которые нужны вашим маршрутам, и проверяйте локали на раннем этапе. По возможности держите серверные компоненты синхронными и отправляйте на клиент только необходимые сообщения.
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Использование в клиентском компоненте
Рассмотрим пример клиентского компонента, который отображает счетчик.
Переводы (структура повторяется; загружайте их в сообщения next-intl по вашему усмотрению)
Копировать код в буфер обмена
Копировать код в буфер обмена
Клиентский компонент
Копировать код в буфер обмена
Не забудьте добавить сообщение "about" в клиентские сообщения страницы (включайте только те пространства имён, которые действительно нужны вашему клиенту).
Использование в серверном компоненте
Этот UI-компонент является серверным компонентом и может быть отрендерен внутри клиентского компонента (страница → клиент → сервер). Поддерживайте его синхронным, передавая заранее вычисленные строки.
Копировать код в буфер обмена
Примечания:
- Вычисляйте
formattedCountна стороне сервера (например,const initialFormattedCount = format.number(0)). - Избегайте передачи функций или несериализуемых объектов в серверные компоненты.
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Middleware для маршрутизации локалей
Добавьте middleware для обработки определения локали и маршрутизации:
Копировать код в буфер обмена
Лучшие практики
- Установите html атрибуты
langиdir: Вsrc/app/[locale]/layout.tsxвычисляйтеdirс помощьюgetLocaleDirection(locale)и задавайте<html lang={locale} dir={dir}>. - Разделяйте сообщения по namespace: Организуйте JSON по локалям и namespace (например,
common.json,about.json). - Минимизируйте нагрузку на клиент: На страницах отправляйте в
NextIntlClientProviderтолько необходимые пространства имён (например,pick(messages, ['common', 'about'])). - Предпочитайте статические страницы: Экспортируйте
export const dynamic = 'force-static'и генерируйте статические параметры для всехlocales. - Синхронные серверные компоненты: Передавайте заранее вычисленные строки (переведённые метки, отформатированные числа), а не асинхронные вызовы или несериализуемые функции.
Реализация Intlayer поверх next-intl
Установите зависимости intlayer:
Копировать код в буфер обмена
Создайте файл конфигурации intlayer:
Копировать код в буфер обмена
Добавьте скрипты в package.json:
Копировать код в буфер обмена
Примечания:
intlayer fill: использует вашего AI-провайдера для заполнения отсутствующих переводов на основе настроенных локалей.intlayer test: проверяет отсутствующие/недействительные переводы (используйте в CI).
Вы можете настроить аргументы и провайдеров; смотрите Intlayer CLI.