
Английская версия готова, переводчику заплачено, плагин установлен — а по англоязычным запросам находится русская страница. Или наоборот: клиент из Москвы открывает ссылку из выдачи и попадает на английский текст. Причина почти всегда не в переводе, а в разметке. Мультиязычный сайт WordPress ломается на трёх вещах: неудачной структуре адресов, кривом hreflang и автоматическом редиректе по IP, который заодно перекидывает поискового робота.
Ниже — как выбрать между поддоменом, папкой и отдельным доменом, что делает hreflang и почему он молча не работает, какие классы плагинов существуют и чем отличаются по последствиям, и когда вторая языковая версия не нужна вообще.
Три способа организовать языки
Структуру адресов потом почти не меняют: смена схемы означает массовую перестановку редиректов и просадку на месяцы. Поэтому решают до запуска.
| Схема | Как выглядит | Плюсы | Минусы |
|---|---|---|---|
| Подпапка | site.ru/en/ | Весь ссылочный вес на одном домене, один сертификат | Нельзя задать разную региональность в Вебмастере; одна база на все языки |
| Поддомен | en.site.ru | Свой регион для каждого поддомена, языки технически независимы | Вес домена делится, отдельные сертификаты, настройка сложнее |
| Отдельный домен | site.com и site.ru | Максимум доверия в целевой стране, особенно с национальным доменом | Два сайта, два бюджета, вес с нуля |
Правило, которым я пользуюсь: языки нужны для разных языков, а не для разных стран — берите подпапку. Разные страны с разными ценами, доставкой и юрлицами — поддомен или отдельный домен. Подпапка выигрывает тем, что накопленный вес домена работает на обе версии, и новая ветка стартует не с нуля. Отдельный домен оправдан в одном сценарии: вы всерьёз выходите на зарубежный рынок, там будет свой контент, своя реклама и свои ссылки. В остальных случаях это способ получить два слабых сайта вместо одного нормального — а продвигать сайт на WordPress и так небыстро.
Что делает hreflang и чего он не делает
Атрибут hreflang сообщает поиску: у этой страницы есть версии на других языках, вот их адреса. Он не переводит, не влияет на позиции и не склеивает страницы. Его работа — помочь показать посетителю ту версию, которая соответствует его языку и региону.
Разметка выглядит так и ставится в <head> каждой страницы:
<link rel="alternate" hreflang="ru" href="https://site.ru/stranica/">
<link rel="alternate" hreflang="en" href="https://site.ru/en/page/">
<link rel="alternate" hreflang="x-default" href="https://site.ru/stranica/">
Есть два альтернативных места: HTTP-заголовок Link (для файлов вроде PDF) и XML-карта сайта. Карта удобна, когда языков много. Смешивать способы не запрещено, но дублирование усложняет отладку — выберите один.
Важная деталь. Google опирается на hreflang как на основной сигнал о языковых версиях. У Яндекса другая логика: он определяет язык страницы сам и ориентируется на региональность, заданную в Вебмастере для сайта или поддомена. Поэтому при выходе на зарубежный рынок hreflang нужен ради Google, а для разных регионов России основной инструмент — настройки региона, а не разметка.
Типичные ошибки разметки
hreflang не выдаёт ошибок: он либо учитывается, либо молча игнорируется целиком. Поэтому ошибки живут годами.
| Ошибка | В чём проблема | Как правильно |
|---|---|---|
| Нет обратной ссылки | Русская указывает на английскую, английская на русскую — нет. Связка не подтверждена, разметка отброшена | Каждая версия перечисляет все остальные |
| Нет ссылки на себя | Страница не указывает hreflang на собственный адрес | В наборе обязательно присутствует сама страница |
| Неверный код | en-UK вместо en-GB, регион на месте языка |
Сначала язык по ISO 639-1, потом при необходимости регион по ISO 3166-1 |
| Относительные адреса | /en/page/ без домена и протокола не обрабатывается |
Только абсолютные URL с указанием протокола |
| Ссылка на редирект или 404 | Указанный адрес отдаёт 301 или ошибку | Все адреса отдают 200 и открыты для индексации |
| Конфликт с canonical | Английская страница указывает canonical на русскую | Canonical каждой версии ведёт на себя |
| Разметка только на главной | На остальных страницах связки нет | hreflang нужен на каждой паре страниц |
Отдельно про самую дорогую ошибку — автоматический редирект по IP или языку браузера. Логика кажется разумной: определяем страну и перекидываем. Но робот тоже приходит с определённого IP, получает редирект и видит ровно одну версию. Остальные языки в индекс не попадают. Вместо редиректа делайте заметный переключатель, а предложение перейти — баннером, а не принудительно.
Плагины как класс решений
Плагинов много, но по устройству они делятся на четыре класса с разными последствиями. Разбираться нужно в классе, а не в названии.
| Класс | Как работает | Что получаете | Риск |
|---|---|---|---|
| Перевод внутри одной базы (Polylang, WPML) | Каждая запись получает языковую пару в той же базе | Контроль над текстом, свои метатеги, hreflang из коробки | Рост базы; при удалении плагина связки теряются |
| Перевод поверх вывода (TranslatePress) | Подменяет строки при отдаче страницы, переводы в своих таблицах | Переводится всё, включая темы и плагины | Сложнее править исходник, зависимость от плагина полная |
| Отдельный сайт на язык (Multisite) | Каждый язык — самостоятельный сайт сети со своей базой | Независимость версий, разные структуры и наборы страниц | Администрировать сложнее; hreflang настраивается вручную |
| Машинный перевод на лету (внешние сервисы) | Текст переводится скриптом в браузере или через прокси | Запуск за час | Перевода часто нет в HTML, значит нет и в индексе |
Четвёртый класс — та самая ловушка, из-за которой приходят с вопросом «сделали пять языков, а трафика нет». Если перевод подставляется скриптом после загрузки, для поиска сайт по-прежнему одноязычный. Проверяется за минуту: откройте исходный код и поищите переведённый текст. Нет в коде — нет в индексе.
Второй момент — вес. Любой переводчик добавляет запросы к базе и свои стили, а переключатель часто тянет флаги картинками. На сайте с двумя десятками плагинов это заметно: я писал о том, сколько плагинов WordPress нужно на самом деле и какие из них действительно помогают оптимизировать сайт. Перед установкой мультиязычного решения стоит сначала разобраться со скоростью WordPress, иначе вторая версия окажется вдвое медленнее первой.
Порядок запуска второй языковой версии
- Определить цель. Язык для иностранцев внутри России или выход на рынок другой страны? От ответа зависит структура.
- Выбрать схему адресов и зафиксировать её. Менять потом дорого.
- Снять копию сайта перед установкой плагина. Такие плагины лезут в структуру постов и таксономий глубже остальных, и критическая ошибка WordPress после активации — не редкость.
- Определить, что переводится. Обычно не весь сайт: главная, услуги, контакты, несколько ключевых статей. Блог целиком на старте переводить не нужно.
- Перевести смыслы, а не слова. Дословный перевод русского заголовка редко совпадает с тем, как люди ищут.
- Задать каждой версии свои title и description на её языке. Это пропускают чаще всего, и в выдаче получается английская страница с русским сниппетом.
- Проверить
langу тега<html>— он должен меняться вместе с языком страницы. - Настроить hreflang и проверить взаимность на трёх-четырёх страницах через исходный код.
- Добавить версии в Вебмастер и Search Console: поддомены и отдельные домены подтверждаются как самостоятельные сайты.
- Проверить карту сайта: адреса обеих версий, без дублей и страниц под noindex.
Что нужно кроме перевода текста
Частая недоработка — перевели статьи и забыли остальное. Человек видит английский текст и русскую форму заявки с подписью «Ваше имя».
- Формы и кнопки: подписи полей, тексты ошибок, сообщение после отправки.
- Меню и футер. У большинства плагинов меню — отдельная сущность, его легко пропустить.
- Товары и характеристики. Не только названия, но и атрибуты, единицы измерения, способы доставки.
- Юридические страницы — политика обработки данных и оферта на языке версии.
- Форматы. Даты, разделитель дробной части, валюта, телефон с кодом страны.
- Alt у картинок и подписи — так же, как текст.
- Письма с сайта. Автоответ приходит на языке, на котором человек оставил заявку.
Когда мультиязычность НЕ нужна
Половина запросов на вторую языковую версию заканчивается решением её не делать. Когда я отговариваю:
- Русская версия ещё не приносит заявок. Вторая версия удваивает объём работы и не исправляет причину, по которой не работает первая.
- Английский нужен «чтобы солиднее». Достаточно одной страницы-визитки, без плагина и второй структуры.
- Услуга оказывается в одном городе. Клиент из другой страны не купит монтаж окон в Екатеринбурге.
- Некому поддерживать перевод. Через год у вас двадцать актуальных русских страниц и двадцать устаревших английских. Устаревшая версия хуже отсутствующей.
- Бюджет только на машинный перевод без правки. Текст, не вычитанный носителем, читается как мусор и оценивается соответственно.
И обратная ситуация, где мультиязычность не сработает даже при идеальной настройке: на целевом рынке у вас нет ни ссылок, ни упоминаний, ни отзывов. Разметка помогает показать нужную версию тому, кто вас уже нашёл, но спрос не создаёт. Если задача — вырасти в русской выдаче, это отдельная работа: с ней я помогаю в рамках вывода сайта в топ Яндекса, и почти всегда она приносит больше, чем вторая языковая версия.
Как проверить, что всё работает
- Перевод в HTML. Открыть исходный код страницы: переведённый текст виден в коде, а не подставляется скриптом.
- Взаимность hreflang. Сверить наборы
linkна обеих версиях. - Атрибут lang в первой строке кода меняется вместе с языком.
- Ответ сервера. Все адреса из hreflang отдают 200, без редиректов и noindex.
- Метатеги. Title и description на языке версии, а не скопированные из оригинала.
- Нет принудительного редиректа: английский адрес открывается напрямую.
- Индексация: страницы второй версии в индексе, а не дубль.
Если что-то не сходится и непонятно, где рвётся связка, это разбирается за один заход технической проверки — тот же набор действий, что входит в SEO-аудит сайта. Гадать по симптомам дороже.
Коротко
- Разные языки — подпапка. Разные страны с разными ценами и доставкой — поддомен или отдельный домен.
- hreflang не переводит и не поднимает позиции, он помогает показать нужную версию. Работает только при взаимности и ссылке на себя.
- Google опирается на hreflang, Яндекс — на региональность в Вебмастере.
- Автоматический редирект по IP убивает индексацию всех версий кроме одной. Делайте переключатель.
- Машинный перевод скриптом в браузере в индекс не попадает.
- Переводятся не только статьи: формы, меню, письма, alt, форматы дат и валют.
- Устаревшая языковая версия хуже отсутствующей. Нет того, кто будет её поддерживать — не начинайте.
Частые вопросы
Считается ли вторая языковая версия дублем?
Нет, если это действительно другой язык и связка размечена. Дубль получается, когда «английская» версия содержит тот же русский текст или когда две версии на одном языке отличаются только регионом без разметки.
Нужен ли hreflang, если я работаю только в России?
Если версия одна — нет. Разметка нужна там, где есть несколько версий на разных языках или для разных стран. Для регионов России внутри одного языка работает региональность в Вебмастере.
Можно ли перенести двуязычный сайт с конструктора?
Можно, но сразу с решением по схеме адресов и с картой соответствия старых и новых URL, иначе потеряете обе версии одновременно. Порядок я описывал отдельно: как перенести сайт на WordPress.
Увеличьте позиции и продажи вашего сайта
Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:
Остались вопросы по продвижению?
Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.
Связаться со мной →
Комментарии
Павел
Поставил плагин с автопереводом на шесть языков, прошло четыре месяца — из зарубежного поиска ноль. В админке всё красиво, версии есть. Где смотреть причину?
Анатолий Кузнецов автор
Откройте английскую страницу и посмотрите исходный код — не то, что на экране, а именно код. Если английского текста там нет, перевод подставляется скриптом, и для поиска сайт одноязычный. Это самая частая причина.
Ирина
А почему нельзя редирект по стране? Все крупные сайты так делают, и ничего у них не отваливается.
Анатолий Кузнецов автор
У крупных сайтов роботы уже знают все версии и обходят их с разных адресов, плюс редирект обычно не жёсткий. На новом сайте робот приходит один раз, получает 301 и про остальные версии не узнаёт. Начинайте с переключателя.
Станислав
Подтверждаю про метатеги. Английские страницы полгода были в выдаче с русскими описаниями: плагин копировал их из оригинала. Нашли случайно.
Guzel
Нужно две версии: русская и татарская. Подпапка или поддомен? Страна одна.
Анатолий Кузнецов автор
Подпапка. Страна одна, региональность одна, разделять домен нечем — значит незачем терять вес. Плюс проще администрировать и один сертификат на всё.
Михаил
Не согласен насчёт «не начинайте, если некому поддерживать». Пусть лучше будет устаревшая версия, чем никакой — хоть что-то человек прочитает.
Анатолий Кузнецов автор
Проблема не в том, что человек прочитает старьё, а в том, что он прочитает устаревшие цены и напишет вам претензию. Плюс версия с половиной непереведённых блоков оценивается как слабая страница. Компромисс — одна аккуратная страница на английском вместо копии сайта.
Алексей
Подскажите, hreflang в карте сайта и в head одновременно — это ошибка или нормально?
Дмитрий В.
Алексей, формально не ошибка, но если наборы расходятся, разбираться будете долго. Я оставил только head — отлаживать проще, всё видно в коде.
Оксана
У нас магазин, перевели названия товаров, а фильтры и атрибуты остались на русском. Покупатели пишут, что ничего не понятно. Про характеристики очень к месту.
Тимур
А x-default обязателен? У нас три языка и нет отдельной страницы выбора.
Анатолий Кузнецов автор
Не обязателен, но полезен: он говорит, какую версию показывать, когда язык посетителя ни с одной не совпал. Страница выбора для этого не нужна — укажите основную версию, обычно русскую.
Елена
Добавлю про письма. Автоответ приходил на русском всем, включая иностранцев, три месяца никто не замечал. Проверяйте и письма из форм.
Владислав
Пробовал Multisite под каждый язык. Независимость классная, но hreflang пришлось прописывать руками через фильтр в теме — плагины сеть не видят.
Нина
Полезный пункт про дословный перевод заголовков. Перевели «услуги по остеклению» буквально, а искали совсем другое. Пришлось переделывать структуру английской версии.