Мультиязычность Drupal: настройка без дублей и с hreflang

Если сайт на Drupal растёт в новые языки, дубли и рассинхрон переводов незаметно ломают структуру и позиции. Мы настраиваем мультиязычность Drupal под ключ: проектируем языковую архитектуру, убираем дубли, выстраиваем корректные языковые связи и автоматизируем переводы. Вы получаете предсказуемый рост охвата и управляемый контент без ручной рутины.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Мультиязычность Drupal: настройка без дублей и с hreflang
Средний
~3-5 дней
Часто задаваемые вопросы

Мультиязычность Drupal: где ломается структура сайта

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

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

Третий слой — ошибки hreflang. Если в разметке указаны несуществующие адреса, перепутаны коды регионов или отсутствует обратная ссылка, поисковик просто игнорирует подсказки. Тогда языковые версии конкурируют между собой, а нужная аудитория попадает не на ту страницу. Для поддержки это оборачивается тем, что каждая правка требует ручной проверки адресов и связей между версиями.

Отдельно стоит структура языковых версий: выбор между переводом узлов, отдельными материалами под каждый язык и доменной схемой определяет всё дальнейшее — от стоимости правок до поведения в поиске. Разбираем, как выстроить мультиязычность Drupal без дублей, с корректным hreflang и предсказуемой поддержкой.

Что даёт корректная языковая архитектура

Корректная языковая архитектура начинается с того, что контент существует в одном экземпляре, а языковые версии — это его представления. В Drupal за это отвечают сущности с включённым переводом полей и связкой через langcode: правка исходной страницы не требует повторять её в каждом языке, а переводы подтягиваются к актуальной структуре. Если архитектура собрана правильно, публикация новой языковой версии занимает минуты, а не часы ручного копирования.

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

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

Скорость публикации переводов, доля страниц без дублей и предсказуемость правок — это не абстрактные пожелания, а измеримые показатели, которые закладываются в архитектуру на старте. Именно поэтому мы разбираем языковую модель до начала вёрстки, а не правим её после запуска.

Способы организации переводов: сравнение подходов

В Drupal перевод контента и перевод интерфейса — два независимых механизма, и путать их дорого: строки интерфейса живут в файлах перевода и обновляются отдельно от сущностей, а сами сущности (материалы, таксономия, меню, поля) получают переводы на уровне базы. Если выбрать способ под задачу неверно, получаешь либо дубли материалов, либо непереведённые подписи в формах и письмах.

Второй слой выбора — как языки видны в адресах. Языковые префиксы (/en/, /de/) проще в настройке и не требуют отдельных сертификатов, языковые домены дают чистые адреса и лучше подходят, когда у языка своя аудитория и своя поисковая выдача. Смена этого решения после запуска — это переезд всех адресов, поэтому фиксируем его до наполнения.

Вариант Когда подходит Ограничения
Перевод сущностей (встроенный) Контент и таксономия, где переводы связаны между собой Число языков и полей растёт — растёт объём базы; связи между переводами нужно поддерживать
Перевод интерфейса через файлы Строки тем, форм, писем, системные подписи Не покрывает контент; обновление модуля может перезаписать строку
Единый контент с языковыми полями Простые типы, где перевод — это одно-два поля Не масштабируется на большие объёмы, ломает поиск и фильтры
Языковые домены Отдельная выдача и бренд на язык Нужны сертификаты, отдельная настройка редиректов и канонических адресов
Языковые префиксы Быстрый старт, один домен Слабее разводятся языки в поиске, сложнее с региональными версиями

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

Этапы настройки мультиязычного сайта

Мультиязычность в Drupal — это не установка модуля, а проектирование структуры: от неё зависит, как поисковики увидят версии страниц и как редакторы будут с ними работать. Порядок работ выстраиваем так, чтобы дубли адресов и рассинхрон переводов не появлялись на этапе ввода контента, а не лечились потом редиректами.

  1. Аудит языковой структуры. Смотрим текущие материалы, таксономии, меню и шаблоны: что переводится полностью, что остаётся общим, где контент уже задублирован. Фиксируем целевые языки и региональные варианты, чтобы не закладывать лишние сущности.
  2. Схема языков и правила перевода. Определяем, какие типы материалов и поля переводятся, что наследуется без перевода, как ведём языковую привязку терминов. На этом шаге задаём режим перевода — ручной, с общим источником или смешанный.
  3. Настройка переводов. Включаем нужные языки, настраиваем типы материалов, поля и таксономии, подключаем модули перевода интерфейса и контента. Отдельно проверяем, что редактор видит только релевантные языковые вкладки и не плодит копии.
  4. Проверка адресов и разметки. Настраиваем шаблоны путей с языковым префиксом, исключаем дубли, проверяем канонические адреса и корректность языковых меток. Прогоняем карту сайта и убеждаемся, что каждая версия указывает на альтернативы.
  5. Тестирование сценариев. Проверяем переключение языков, поведение при отсутствии перевода, работу поиска и форм, редиректы со старых адресов. Отдельно смотрим, как ведёт себя сайт при добавлении нового языка.
  6. Передача документации. Отдаём регламент: какие поля переводить, как добавлять язык, как проверять адреса перед публикацией. Плюс карта текущей структуры и список известных ограничений.

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

Артефакты и документация после внедрения

После внедрения мультиязычности Drupal заказчик получает не «набор настроек», а комплект, по которому команда может работать без нас: конфигурации, схемы адресации, регламенты и правила редиректов. Ниже — что именно передаём на руки и зачем каждый артефакт нужен в ежедневной работе.

  • Экспорт конфигурации языков — какие языки включены, какой из них базовый, как настроены префиксы и определение языка по адресу. Позволяет развернуть ту же конфигурацию на стенде и проде без ручной сборки.
  • Схема адресов и переводов — таблица «язык → шаблон адреса → источник перевода», чтобы новый контент получал корректный адрес и не появлялся дубль.
  • Правила редиректов и канонических адресов — карта перенаправлений со старых адресов на новые и настройки, исключающие склейку языковых версий в поиске.
  • Регламент публикации — порядок действий редактора: какой язык заполняется первым, как связываются переводы, что проверяется перед публикацией.
  • Документация переводов — глоссарий терминов и правила оформления, чтобы разные редакторы не расходились в формулировках.
  • Инструкция по hreflang — какие связки языков проставляются автоматически, а какие задаются вручную и почему.
  • Чек-лист приёмки — набор проверок: корректность адресов, отсутствие дублей, работа переключателя языка, индексация каждой версии.
  • Журнал изменений конфигурации — что и когда менялось в настройках языков, чтобы при сбое быстро откатиться к рабочему состоянию.

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

Кейс: устранение дублей и рассинхрона переводов

Корпоративный сайт на Drupal с четырьмя языковыми версиями: контент-редакторы жаловались, что переводы «теряются», а поисковая выдача показывала разные адреса для одной и той же страницы. Аудит подтвердил худшее: 38% проиндексированных адресов были дублями — материал на русском открывался и по основному пути, и по служебному с языковым префиксом, а языковые метки на части страниц ссылались на самих себя вместо альтернатив.

Что было до

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

Что изменили

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

Что стало

Доля дублирующихся страниц в индексе упала с 38% до 2% — остались только осознанные исключения для похожих материалов. Время публикации перевода сократилось с 6 дней до нескольких часов: редактор работает с одной формой, а не с копиями. Языковые метки корректны на 100% проверенных страниц, взаимные ссылки между версиями больше не теряются при обновлениях.

Отдельный эффект — предсказуемость. Раньше никто не мог сказать, сколько материалов реально переведено: копии расходились, часть жила без связи с оригиналом. Теперь сводка по языкам строится из самой системы, и пробелы в переводах видны сразу, а не всплывают в жалобах от региональных команд.

Чем отличается перевод сущностей от перевода интерфейса?

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

Разница подходов напрямую влияет на структуру. Интерфейсные строки не создают новых узлов — одна запись обслуживает все языки, поэтому добавление языка не раздувает базу. Сущности же при включённом переводе получают отдельную ревизию на каждый язык: у англоязычной версии статьи свой URL-алиас, свои метатеги, свои привязанные файлы. Если перепутать слои — например, завести «английскую версию» как новый материал вместо перевода — получите дубли в карте сайта, разъехавшиеся ссылки и рассинхрон при обновлении.

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

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

Частые технические сомнения по мультиязычности

Мультиязычность почти всегда внедряют на работающий сайт, а не на пустой: контент уже проиндексирован, ссылки разошлись по внешним источникам, аналитика накоплена. Поэтому первый вопрос — не «как включить второй язык», а «как не потерять то, что уже ранжируется».

Что делать, если сайт уже развёрнут и приносит трафик?

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

Как избежать дублей и не потерять позиции?

Дубль возникает, когда языковые версии отдают одинаковый контент или когда перевод существует, но не связан с оригиналом. Лечится это связкой переводов на уровне материалов и корректными языковыми метками: каждая версия указывает на себя и на все остальные, включая базовую. Если перевод ещё не готов, страница не должна открываться с пустым содержимым — лучше отдать базовую версию с пометкой языка, чем плодить пустые адреса, которые поисковик посчитает дублями.

Как проверять языковые метки и миграцию переводов?

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

Если сомнение не закрылось — опишите вашу структуру и текущее состояние языков, вернёмся с оценкой и планом работ.

Обсудим задачу по мультиязычности Drupal

Чтобы вернуться с оценкой и планом, а не с общими словами, нам нужно понять текущее состояние проекта. Пришлите доступ к репозиторию и конфигурации (экспорт конфигурации, файлы переводов, настройки языкового определения) — по ним мы проведём аудит мультиязычности и увидим, где дублируется контент, как устроены связи переводов и что с hreflang.

  • Адреса сайта и список языков: какие локали активны, есть ли языковые домены или подпапки, как определяется язык посетителя.
  • Как сейчас устроен контент: переводы через связи сущностей, отдельные материалы на язык или общий шаблон с полями перевода.
  • Источники переводов: ручной ввод, файлы импорта, внешний сервис — и кто отвечает за синхронизацию.
  • Текущие проблемы: дубли страниц в выдаче, «прыгающий» язык, битые переключатели, расхождения в метатегах.
  • Требования к SEO: нужны ли отдельные адреса под каждый язык, как должны выглядеть canonical и hreflang.
  • Ограничения: сроки, затронутые разделы, интеграции с внешними системами и каталогами.

После аудита мы вернёмся с оценкой и планом: разложим работы по этапам, укажем сроки внедрения и риски миграции. Если часть контента уже переведена, покажем, как перенести её без потери связей и позиций. Опишите задачу — обсудим детали и предложим решение под ваш проект.

Подход к переводам Когда подходит Что получает клиент Ограничения
Перевод интерфейса Один язык контента, но нужны иноязычные подписи кнопок, меню и форм Быстрый запуск иноязычной оболочки без пересборки материалов Материалы остаются на исходном языке — для полноценного рынка недостаточно
Перевод сущностей (материалы, товары, термины) Несколько языковых рынков с собственным контентом Каждая языковая версия живёт своей жизнью: свои тексты, свои связи, свои разделы Требует аккуратной настройки связей между версиями, иначе растут дубли
Смешанный подход Крупный сайт: часть разделов общая, часть — локальная Гибко: общие блоки не переводятся повторно, локальные — полностью свои Сложнее в сопровождении, нужна понятная карта языков
Автоматический перевод на лету Черновой охват аудитории, тестовые направления Мгновенная видимость на новом языке без ручной работы Качество и поисковая выдача страдают, для основного рынка не годится
Этап Что делаем Ориентир по срокам Кто участвует
Разбор структуры Смотрим, где языковые версии дублируют друг друга, где расходятся связи 2–4 дня Аналитик, разработчик
Проектирование языковой модели Определяем, что переводим как сущность, что как интерфейс, как связываем версии 3–5 дней Архитектор, аналитик
Настройка языков и связей Включаем языки, настраиваем правила связывания версий и адресацию 1–2 недели Разработчик
Разметка для поисковых систем Проставляем корректные указатели языка, убираем пересечения версий 3–5 дней Разработчик, специалист по продвижению
Перенос и вычитка переводов Загружаем материалы, проверяем соответствие версий Зависит от объёма контента Контент-команда, редактор
Проверка и сдача Прогон сценариев переключения языка, проверка связей и адресов 3–5 дней Тестировщик, разработчик
Что входит в работу Результат для клиента
Проектирование языковой структуры Понятная карта: какие разделы общие, какие локальные
Настройка связей между версиями Один материал не расползается на несколько адресов
Разметка языковых версий для поиска Поисковые системы показывают нужную версию нужному региону
Перенос и организация переводов Переводы не теряются при обновлении материалов
Регламент добавления новых языков Новый рынок подключается по готовому порядку, а не с нуля
Инструкция для редакторов Контент-команда сама ведёт языковые версии без разработчика

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

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060