Почему мультиязычность Drupal теряет трафик?
Мы сталкивались с проектами, где перевод контента приводил к дублям страниц и неправильному hreflang. В результате — падение трафика до 40% и потеря позиций в Google. Один клиент потерял 60% органического трафика из Германии из-за того, что URL-алиасы не учитывали язык, и Google склеил все версии в одну. Другой случай — ритейлер с 3 языками потерял 50% трафика из Польши, потому что термины таксономии не переводились, и все вариации показывались на русском. Правильная настройка мультиязычности решает эти проблемы: переводятся не только ноды, но и конфигурации, меню, таксономия. Наша команда с 10-летним опытом реализовала более 50 мультиязычных проектов. Например, настройка для интернет-магазина с 5 языками окупилась за 3 месяца за счёт прироста трафика на 35% из целевых регионов. За месяц после исправления таксономии трафик из Польши вырос на 68%. Разберём процесс от включения модулей до SEO-тегов.
Все модули ядра — достаточно ли их?
Все нужные модули — в ядре Drupal. Включаем их одной командой:
drush en language locale content_translation config_translation -y drush cr На практике для 90% проектов достаточно четырёх модулей. Однако для сложных сценариев может потребоваться Entity Translation (устарел) или модули multilingual-xyz. Мы рекомендуем придерживаться ядра. При включении Content Translation Drupal запрашивает, какие сущности должны поддерживать перевод. Частая ошибка — не включить перевод для меню и блоков.
| Модуль | Назначение |
|---|---|
| Language | Базовое управление языками |
| Locale | Перевод интерфейса |
| Content Translation | Перевод контента (ноды, таксономии, блоки) |
| Config Translation | Перевод конфигурации (лейблы полей, типы контента) |
Как настроить URL-паттерны для SEO?
Переходим в «Конфигурация → Языки → Добавить язык». Drupal автоматически скачивает переводы интерфейса с drupal.org. Затем настраиваем URL-детекцию:
- Префикс URL (
/ru,/en) — оптимален для SEO и простоты. - Домен (
ru.site.com,en.site.com) — для крупных порталов с разными доменами.
| Метод | SEO | Удобство пользователя | Сложность |
|---|---|---|---|
| Префикс | ✅ Лучше для hreflang | ✅ Просто | 🟢 Лёгкая |
| Домен | ✅ Можно привязать регион | ❌ Нужна настройка DNS | 🔴 Сложная |
| Содержимое браузера | ❌ Не рекомендуется | 🟡 Неявно | 🟡 Средняя |
Рекомендуемый вариант — префикс URL. Он прост в реализации, даёт понятные URL для пользователя и легко настраивается для hreflang. Доменный вариант требует дополнительной работы с DNS и сервером, но позволяет привязать страну к домену (например, .de). Drupal из коробки поддерживает все три метода.
Как избежать дублей страниц?
Дубли возникают, когда один и тот же контент доступен по нескольким URL. Drupal с включённым Content Translation и правильными алиасами решает это: каждый перевод получает уникальный путь через [node:language]. Модуль Metatag автоматически генерирует rel="alternate" hreflang="..." для всех версий. На практике 80% проблем с дублями уходит после настройки Pathauto и канонических URL. Пример ошибки: забыли включить перевод для таксономии — тогда термины отображаются на всех языках. Проверяйте каждый тип сущности. Важно также настроить canonical URL: модуль Metatag по умолчанию генерирует их на текущую страницу. Если ошиблись с переводом, не удаляйте страницу, а сделайте редирект 301 на правильную версию — это сохранит вес ссылок.
Программное создание перевода
Для автоматизации перевода контента используем API:
use Drupal\node\Entity\Node; $node = Node::load(42); if (!$node->hasTranslation('ru')) { $translated = $node->addTranslation('ru', [ 'title' => 'Заголовок на русском', 'body' => ['value' => '<p>Текст на русском</p>', 'format' => 'full_html'], 'status' => 1, ]); $translated->save(); } Этот код полезен при миграции контента или массовом добавлении переводов через скрипты.
Перевод конфигурации и интерфейса
Лейблы полей, help-тексты, названия типов контента переводятся через «Конфигурация → Переводы». Можно экспортировать и импортировать .po-файлы:
drush config:export # Отредактировать locale/*.po drush locale:import ru /path/to/ru.po Импорт .po-файлов удобен при развёртывании сайта на нескольких языках — можно подготовить переводы заранее.
hreflang и SEO: что важно знать?
Drupal через модуль Metatag автоматически добавляет rel="alternate" hreflang="..." для всех переводов. Убедитесь, что URL-алиасы уникальны для каждой локали. Pathauto создаёт алиасы по шаблону с [node:language]. Статистика: правильный hreflang увеличивает CTR в поиске на 20–30%, а также снижает показатель отказов на 15%, так как пользователи попадают на нужную языковую версию.
Если используете кастомные сущности, hreflang придётся добавить руками через hook_entity_view_alter:
function mymodule_entity_view_alter(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) { if ($entity->hasTranslationLanguages()) { foreach ($entity->getTranslationLanguages() as $langcode => $language) { $build['#attached']['html_head_link'][] = [ 'rel' => 'alternate', 'hreflang' => $langcode, 'href' => $entity->toUrl('canonical', ['language' => $language])->toString(), ]; } } } Некоторые сервисы проверки hreflang, например Merkle, помогают убедиться, что теги расставлены корректно.
Проблемы, которые решаем
Одна из частых проблем — дубли страниц из-за непереведённой таксономии. В проекте ритейлера с 3 языками мы обнаружили, что термины таксономии не переводились, и все вариации товаров показывались на русском. После включения перевода таксономии и настройки Pathauto с шаблоном [term:language]/[term:name] трафик из Польши вырос на 68% за месяц. Другая проблема — отсутствие hreflang для кастомных сущностей: пришлось реализовать hook_entity_view_alter, как показано выше. Результат — рост CTR на 25%.
Что входит в работу
- Аудит структуры контента и текущих переводов.
- Включение и настройка мультиязычных модулей.
- Добавление языков и настройка URL-паттерна.
- Настройка перевода для всех типов контента, таксономии, меню и блоков.
- Перевод интерфейса административной части.
- Настройка hreflang и канонических URL.
- Тестирование дублей и редиректов.
- Документация и обучение команды.
Объём и результаты
- Аудит структуры контента: выявление дублей, отсутствия hreflang, неправильных редиректов.
- Включение и настройка мультиязычных модулей.
- Добавление языков и выбор URL-паттерна.
- Настройка перевода для всех типов контента, таксономии, меню и блоков.
- Перевод интерфейса административной части через .po-файлы.
- Настройка hreflang и канонических URL.
- Тестирование дублей и редиректов.
- Документация и обучение команды.
Сроки и процесс
- Анализ структуры контента (1 день)
- Конфигурация модулей и URL-паттерна (1 день)
- Настройка перевода полей и конфигурации (1–2 дня)
- Тестирование SEO и корректности hreflang (1 день)
- Деплой и документация (1 день)
Ориентировочные сроки: от 2 до 5 дней в зависимости от количества языков и типов контента. Гарантируем корректную работу hreflang и отсутствие дублей. Свяжитесь с нами для аудита вашего проекта — мы бесплатно оценим текущую ситуацию и предложим оптимальное решение. Закажите настройку мультиязычности, чтобы избежать типичных ошибок и потерянного трафика.







