intermediate

Маршрутизация по локали

Проектируйте префиксы локали, домены, redirects, hreflang, persistence и fallback без ловушек для пользователей и краулеров.

Маршрутизация по локали определяет, как язык и регион появляются в URL, cookies или заголовках — и как пользователи и краулеры переключаются без тупиков. Паттерны: subdomain (`de.example.com`), префикс пути (`/de/docs`) или домен на рынок. В паре с `hreflang`, разумными redirects и документированной default locale.

					<link rel="alternate" hreflang="en" href="https://example.com/docs" />
<link rel="alternate" hreflang="de" href="https://example.com/de/docs" />
<link rel="alternate" hreflang="x-default" href="https://example.com/docs" />
				

| Решение | Компромисс | |---------|------------| | Префикс пути | Один deploy; понятные URL; дисциплина routing | | Subdomain | CDN/geo; сложнее DNS/cookies | | Только cookie | Плохие шарируемые URL и crawl | | Auto-redirect по IP | Часто неверный язык; плохо для SEO |

Сохраняйте выбор пользователя после ручного переключения; не загоняйте краулеров в redirect loops между локалями.

На интервью: сегменты `[locale]` в Next.js; middleware для locale; canonical + hreflang вместе; fallback при отсутствии перевода.

Типовые ошибки: цепочки 302; нет `x-default`; перевод slug без redirects; смешанный язык в chrome.

Компромисс — маркетинговые URL против сложности одного codebase на много локалей.

Чеклист:

  • Стабильный URL на локализованную версию страницы.
  • hreflang взаимен между alternates.
  • Выбор пользователя важнее geo guess.
  • Документированный fallback для непереведённых строк.