Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюЯкщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на 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.
- Для junior-розробників: дотримуйтесь покрокових розділів, щоб отримати працездатний мультимовний додаток.
- Для mid-level розробників: зверніть увагу на оптимізацію payload та розділення server/client.
- Для senior-розробників: зверніть увагу на static generation, middleware, інтеграцію SEO та automation hooks.
Що ми розглянемо:
- Налаштування та структура файлів
- Оптимізація завантаження повідомлень
- Використання клієнтських та серверних компонентів
- Метадані, sitemap, robots для SEO
- Middleware для маршрутизації локалі
- Додавання Intlayer поверх (CLI та автоматизація)
Налаштуйте свій додаток за допомогою next-intl
Встановіть залежності next-intl:
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Налаштування та завантаження контенту
Завантажуйте лише ті простори імен, які потрібні вашим маршрутам, і перевіряйте локалі на ранньому етапі. За можливості тримайте серверні компоненти синхронними та надсилайте на клієнт лише необхідні повідомлення.
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Використання в клієнтському компоненті
Розглянемо приклад клієнтського компонента, який відображає лічильник.
Переклади (структура збережена; завантажте їх у повідомлення next-intl на свій розсуд)
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Клієнтський компонент
Скопіюйте код у буфер обміну
Не забудьте додати повідомлення "about" у клієнтські повідомлення сторінки (включайте лише ті простори імен, які справді потрібні вашому клієнтському компоненту).
Використання в серверному компоненті
Цей UI-компонент є серверним компонентом і може рендеритися під клієнтським компонентом (page → client → server). Зберігайте його синхронним, передаючи попередньо обчислені рядки.
Скопіюйте код у буфер обміну
Примітки:
- Обчислюйте
formattedCountна сервері (наприклад,const initialFormattedCount = format.number(0)). - Уникайте передачі функцій або несеріалізованих об'єктів у server components.
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Скопіюйте код у буфер обміну
Middleware для маршрутизації локалі
Додайте middleware для виявлення локалі та маршрутизації:
Скопіюйте код у буфер обміну
Найкращі практики
- Встановіть атрибути
langтаdirдля html: Уsrc/app/[locale]/layout.tsxобчислітьdirза допомогоюgetLocaleDirection(locale)і встановіть<html lang={locale} dir={dir}>. - Розділяйте повідомлення за просторами імен: Організуйте JSON за локалями та просторами імен (наприклад,
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.