Настройка мультиязычности Drupal

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

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка мультиязычности Drupal
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Настройка мультиязычности Drupal

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

Необходимые модули (все в ядре)

drush en language locale content_translation config_translation -y
drush cr
  • language — базовый модуль языков
  • locale — перевод интерфейса
  • content_translation — перевод контента (нод, таксономий, блоков)
  • config_translation — перевод конфигурации (лейблы полей, типы контента)

Добавление языков

Конфигурация → Языки → Добавить язык. Drupal автоматически скачивает переводы интерфейса с drupal.org.

Настройка URL-паттерна: Конфигурация → Языки → Detection and selection:

  • URL prefix: ru/, en/ — рекомендуется
  • Domain: ru.site.com, site.com — для крупных мультиязычных сайтов

Включение перевода для типа контента

Конфигурация → Content language → выбрать тип контента → включить перевод каждого поля отдельно.

Или программно:

// Включить Content Translation для всех полей типа 'article'
$config = \Drupal::configFactory()->getEditable('language.content_settings.node.article');
$config->set('third_party_settings.content_translation.enabled', TRUE)->save();

Создание перевода через 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();
}

Twig: отображение с учётом языка

{# Получить URL текущего языка #}
{% set current_lang = language.getId() %}

{# Ссылки переключения языков (используйте Views Language Switcher вместо этого) #}
{% for language in languages %}
    <a href="{{ path('<current>', {}, {'language': language}) }}"
       hreflang="{{ language.getId() }}"
       {% if language.getId() == current_lang %}class="active"{% endif %}>
        {{ language.getName() }}
    </a>
{% endfor %}

Перевод конфигурации

Лейблы полей, описания типов контента, текст кнопок — переводятся через Конфигурация → Переводы. Или через экспорт:

drush config:export
# Отредактировать locale/*.po файлы
drush locale:import ru /path/to/ru.po

Меню и блоки

Каждый пункт меню переводится отдельно через Структура → Меню → [меню] → Edit → Translate. Блоки: Структура → Размещение блоков → [блок] → Translate.

URL-алиасы для переводов

Pathauto создаёт алиасы для каждого перевода отдельно: /about (en), /ru/о-нас (ru). Настройка: Конфигурация → Pathauto → шаблоны включают [node:language].

hreflang для SEO

Drupal автоматически добавляет <link rel="alternate" hreflang="..."> для всех переводов через модуль Metatag:

composer require drupal/metatag
drush en metatag -y

Сроки

Базовая настройка мультиязычности для 2–3 языков с переводом типов контента и интерфейса — 2–3 дня. Полная мультиязычная конфигурация с URL-паттернами, hreflang и меню — 4–5 дней.