Files
veilix.app/docs/decisions/D-024-locale-redirect.md
andreypr207andClaude Opus 5.5 7e331c2c9d Этап 1a: фундамент
- Next 16.4 и Payload 3.91 в одном приложении, PostgreSQL с UUID,
  TypeScript 6, ESLint 9, Prettier, Vitest
- Payload: администраторы с ролями, multi-tenant по сайтам, локализация
  en/ru/de/fr/es, интерфейс админки ru/en, языки сайта (sites.locales)
- Коллекции sites, domains, currencies, countries, locations, tags,
  tariffs, payment-systems (manual), media и начальные данные (pnpm seed)
- Proxy: хост → домен, язык и валюта, внутренние маршруты по хосту;
  /admin и /api закрыты на доменах брендов
- Токены и темы брендов, оболочки сайта и кабинета, переключатели языка,
  валюты и темы, заглушки страниц
- /svc/health, юнит systemd veilix-dev.service
- Документация: решения D-022…D-024, команды в CLAUDE.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 05:08:05 +02:00

1.7 KiB

D-024. Перенаправление на выбранный язык

Статус: принято, 21.10.2026. Уточняет D-007, пункт 2.

Контекст

По D-007 перенаправление шло только при первом заходе без cookie. Тогда выбравший русский при следующем заходе на veilix.app/ видел бы английский.

Решение

  1. Без префикса открывается язык домена по умолчанию (domains.defaultLocale, сейчас везде en). Адрес с его префиксом (/en/…) перенаправляется на адрес без префикса.
  2. Адрес без префикса и cookie NEXT_LOCALE с языком, включённым на домене, — перенаправление на этот язык, если он не язык по умолчанию.
  3. Cookie нет — язык браузера среди включённых на домене, затем страна из X-Geo-Country, затем язык по умолчанию; перенаправление, если вышел не язык по умолчанию.
  4. Cookie ставит только переключатель языка. Поисковых ботов (isbot) не перенаправляем никогда; перенаправляются только запросы GET и HEAD.

Последствия

Так же по умолчанию работает next-intl. Выбор английского в переключателе тоже запоминается и отключает перенаправление по языку браузера.