Open for new projects · sublimearts.io
← Blog
Web Design28 мая 2026·8 мин. чтения

Почему я разрабатываю нативные многоязычные Next.js-маршруты (IT/EN/ES) по умолчанию для каждого заказа.

Проработка международных SEO-маршрутов в Next.js/Astro предотвращает задержки рендеринга и устраняет недостатки, которые появляются при использовании медленных автоматических переводчиков. Это именно та архитектура, на которой прямо сейчас работает этот сайт — на 9 языках.

Нравится статья? В конце вас ждёт ❤️.

Почему многоязычность важнее, чем кажется

Местный бизнес думает на одном языке. Бизнесу, который хочет международных клиентов — туризм, гостеприимство, профессиональные услуги, электронная коммерция, — нужно, чтобы его сайт существовал нативно на тех языках, на которых ищут его реальные клиенты. Не как позднее дополнение. Каждый клиент, для которого я делаю сайт и который хочет охвата за пределами своей страны, получает многоязычную маршрутизацию с первого дня: добавлять её позже на одноязычный сайт — значит переделывать метаданные, структуру URL и зачастую стратегию контента с нуля.

Почему обе очевидные лазейки не работают

Есть две лазейки, к которым все тянутся в первую очередь, и обе не работают для настоящего SEO. Первая — плавающий виджет перевода (встроенный Google Translate или подобный): он работает на стороне клиента, когда страница уже загружена на исходном языке, поэтому поисковые системы индексируют исходный текст — испаноязычные посетители, которые ищут по-испански, никогда не найдут страницу, которая для Google выглядит испанской. Вторая — один URL с параметром запроса, например ?lang=es. Поисковые системы ненадёжно воспринимают варианты с параметрами запроса как отдельные, самостоятельно ранжируемые страницы — их часто считают дублирующим контентом того же URL, поэтому ваш испанский контент конкурирует с английским, а не ранжируется самостоятельно по испанским запросам.

Решение: настоящие маршруты, по одному на язык

Каждый язык получает собственный индексируемый путь — /it/, /en/, /es/ — с серверным рендерингом, полностью переведённым контентом, собственным атрибутом <html lang> и собственными метаданными. В Next.js именно это из коробки даёт next-intl с localePrefix, установленным в «always»: вместо одной страницы, которая подменяет текст с помощью JavaScript, вы получаете по-настоящему отдельные страницы, которые поисковые системы могут сканировать, индексировать и ранжировать независимо, — каждая из них настоящая, полная страница на своём языке, а не переведённая оболочка поверх одного и того же контента.

Как это на самом деле устроено на этом сайте

1Определите поддерживаемые локали и задайте localePrefix: «always» в конфигурации маршрутизации next-intl, чтобы каждый URL — включая язык по умолчанию — имел явный префикс /it/, /en/, /es/ и не было неоднозначного корневого маршрута
2Храните переведённые строки в одном JSON-файле на язык (messages/en.json, messages/it.json и т. д.), чтобы у каждой строки интерфейса и каждого текста страницы было своё место для каждой локали, а не разбросанное по компонентам
3В generateMetadata() задайте alternates.canonical как URL текущей локали, а alternates.languages — как полную карту эквивалентных URL каждой локали: именно это выдаёт теги hreflang, с помощью которых поисковые системы связывают языковые варианты одной страницы
4Задайте openGraph.locale и подходящий og:image для каждой страницы, чтобы расшаренные ссылки корректно отображались независимо от того, каким языковым вариантом поделились
5Никогда не переводите машинно во время запроса. Переведите один раз, сохраните и отдавайте статически для каждой локали — это сохраняет быстрое время до первого байта и означает, что в критическом пути рендеринга нет API перевода

Что это даёт на самом деле

Каждый языковой вариант ранжируется сам по себе: по итальянскому запросу выходит итальянская страница, по испанскому — испанская, и ни одна не конкурирует с другой и не размывает её в глазах Google. Не менее важно для конверсии: посетители попадают на страницу, которая читается как по-настоящему написанная на их языке, а не на страницу с заметным виджетом перевода в углу. Для ресторана, отеля или профессиональной услуги, которым нужно выглядеть убедительно для международной аудитории, эта разница часто и есть разница между уходом и клиентом.

Хотите, чтобы эта архитектура работала на вашем сайте?

Давайте поговорим →

About

Патрик Чен — независимый разработчик и веб-дизайнер, создатель Sublimearts.io. Именно эта схема маршрутизации — next-intl, localePrefix always, метаданные для каждого языка — отрисовывает страницу, которую вы читаете прямо сейчас, на том из 9 языков, на котором вы её просматриваете.

Did you find this helpful?