Содержание

Мультиязычный сайт должен давать каждой языковой версии собственный адрес, связывать версии разметкой hreflang и не перенаправлять пользователей принудительно по языку браузера. Для большинства проектов удобнее всего структура с языковыми папками — /en/, /de/ — на одном домене: она проще в поддержке и наследует авторитет основного сайта.

Разберём, как выбрать структуру адресов, как правильно разметить hreflang, как определять язык и как организовать перевод.

Какую структуру адресов выбрать?

Структуру выбирают из трёх вариантов: папки на одном домене, поддомены или отдельные домены для стран. Папки проще всего в поддержке и SEO, отдельные домены оправданы, когда бизнес в странах действительно разный — свои цены, юрлица и ассортимент.

Структура Пример Плюсы Минусы
Папки site.ru/en/ Один домен, общий авторитет, проще поддержка Сложнее разместить версии в разных странах
Поддомены en.site.ru Можно разнести по серверам Поисковики частично воспринимают как отдельные сайты
Отдельные домены site.de, site.fr Сильный сигнал для страны Дорого: каждый домен продвигается отдельно
Параметр в адресе site.ru/?lang=en — Плохо индексируется, не рекомендуется

Основной язык обычно живёт без префикса, а остальные — в своих папках. Главное — у каждой версии страницы должен быть свой постоянный адрес.

Как правильно разметить hreflang?

Hreflang — это ссылки в коде страницы или в карте сайта, которые говорят поисковику: «у этой страницы есть версии на таких-то языках, вот их адреса». Разметка должна быть взаимной — каждая версия ссылается на все остальные и на себя — и указывать только существующие переводы.

<link rel="alternate" hreflang="ru" href="https://example.ru/blog/multiyazychnyj-sajt" />
<link rel="alternate" hreflang="en" href="https://example.ru/en/blog/multilingual-website" />
<link rel="alternate" hreflang="x-default" href="https://example.ru/blog/multiyazychnyj-sajt" />
<link rel="canonical" href="https://example.ru/en/blog/multilingual-website" />

Правила разметки:

  1. Каждая языковая версия указывает все версии, включая саму себя.
  2. x-default — версия для тех, чей язык не поддерживается.
  3. Canonical каждой версии указывает на неё саму, а не на основной язык.
  4. В hreflang не попадают страницы без перевода.

Про остальные технические требования — в статье техническое SEO перед запуском сайта.

Настольный глобус в тёплом свете Фото: Unsplash

Как определять язык пользователя?

Язык лучше не навязывать: поисковик сам показывает человеку версию на языке его запроса, а сайт может мягко предложить переключиться, если язык браузера отличается. Принудительный редирект по языку или IP мешает и пользователям, и поисковым роботам, которые после такого редиректа могут не увидеть часть версий.

Что делать:

  • открывать ту версию, по адресу которой пришёл пользователь;
  • показывать ненавязчивую плашку «Есть версия на вашем языке» вместо редиректа;
  • запоминать выбор пользователя и не переспрашивать;
  • держать переключатель языка на видном месте и вести на ту же страницу, а не на главную.

Как организовать перевод контента?

Перевод организуют так, чтобы у каждой сущности — статьи, товара, страницы — были поля на всех языках, включая адрес, заголовок и мета-теги. Переводить нужно не только текст, но и слаги, описания картинок, письма и сообщения об ошибках.

  • слаги на языке страницы: /en/blog/multilingual-website, а не транслитерация;
  • мета-теги и описания для поисковиков на каждом языке;
  • форматы — даты, валюты, единицы измерения, формат телефона;
  • интерфейс — кнопки, ошибки, письма, уведомления;
  • процесс — кто переводит, кто вычитывает и как узнать, что перевод устарел.

Если сайт работает на JavaScript-фреймворке, важно, чтобы все языковые версии отдавались с сервера уже готовыми — подробнее в статьях SEO для сайтов на JavaScript и Nuxt или Next.js.

Какие ошибки встречаются чаще всего?

Чаще всего ошибаются с hreflang и с неполными переводами: разметка ссылается на несуществующие страницы, версии не ссылаются друг на друга, а наполовину переведённые страницы смешивают языки и выглядят как дубли.

  • принудительный редирект по языку браузера или IP;
  • одна и та же страница под одним адресом меняет язык в зависимости от cookie;
  • canonical всех версий указывает на основной язык;
  • переведён только интерфейс, а контент остался на русском;
  • переключатель языка ведёт на главную вместо текущей страницы.

Коротко

  • Каждой языковой версии — свой постоянный адрес; удобнее всего папки на одном домене.
  • Hreflang взаимный, включает x-default и только существующие переводы.
  • Не перенаправляйте по языку принудительно — предлагайте переключиться.
  • Переводите слаги, мета-теги, форматы и интерфейс, а не только текст.
  • Страницы без перевода не показывайте в языковой версии.

Частые вопросы

  • Можно ли использовать автоматический перевод?

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

  • Что делать со страницами, у которых нет перевода?

    Не показывать их в языковой версии и не указывать в hreflang. Пустая страница или страница на другом языке под иностранным адресом хуже, чем её отсутствие.

  • Нужны ли отдельные карты сайта для каждого языка?

    Не обязательно. Можно указать языковые версии прямо в общей карте сайта через альтернативные ссылки или сделать отдельный файл на язык — важно, чтобы все версии были перечислены и ссылались друг на друга.