Чому мультимовність 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 та відсутність дублів. Зв'яжіться з нами для аудиту вашого проєкту — ми безкоштовно оцінимо поточну ситуацію та запропонуємо оптимальне рішення. Замовте налаштування мультимовності, щоб уникнути типових помилок та втраченого трафіку.







