Многоязычность в Drupal: какой подход выбрать
В Drupal можно переводить контент, интерфейс и настройки сайта — это разные задачи с разными механизмами. Сравниваем возможности ядра, объясняем, когда переводить сущности, как выбрать адреса языковых версий и что проверить до запуска.

В Drupal перевод страницы, перевод кнопки «Отправить» и перевод настройки формы — три разные задачи. Если включить только Content Translation, редакторы смогут переводить материалы, но язык интерфейса и конфигурация останутся отдельной работой. В Drupal 10 и 11 большинство базовых сценариев решается модулями ядра; выбор подхода определяет, что именно смогут переводить редакторы и как посетители найдут нужную языковую версию.
Сначала разделите три вида перевода
Drupal хранит переводы не как одну общую «копию сайта», а связывает язык с разными типами данных. Это удобно, пока команда понимает границы между ними.
- Контент. Статьи, страницы, термины таксономии и другие сущности могут иметь переводы. За перевод контента отвечает модуль Content Translation, а доступные языки задаёт модуль Language.
- Интерфейс. Названия системных элементов и строки, которые выводят модули и темы, переводит Interface Translation. Это не перевод редакторского текста: формулировку в самой статье он не изменит.
- Конфигурация. Названия типов материалов, текстов полей и некоторых настроек можно локализовать через Configuration Translation. Модуль особенно важен, когда интерфейсом и структурой сайта пользуются на нескольких языках.
Языковые функции обычно не активны все сразу: включите нужные модули ядра в разделе Extend, затем добавьте языки в настройках Language. Конкретные названия пунктов меню могут немного различаться в зависимости от версии и перевода интерфейса.
Сравнение подходов: что переводить и где хранить
В большинстве проектов вопрос не в выборе одного универсального модуля, а в том, какие наборы переводов нужны одновременно. Сопоставьте рабочие сценарии до того, как размножать страницы вручную.
| Подход | Что подходит | Цена и ограничение |
|---|---|---|
| Content Translation | Материалы и другие переводимые сущности, связанные с исходной записью | Нужно настроить перевод для конкретных типов сущностей и полей. Перевод страницы не переводит интерфейс вокруг неё |
| Interface Translation | Строки интерфейса Drupal, модулей и тем | Не предназначен для текстов, которые редакторы добавляют в материалы. Непереведённая строка может остаться на языке оригинала |
| Configuration Translation | Названия и значения переводимой конфигурации, например отдельных элементов формы | Нужно отличать перевод конфигурации от перевода контента. Изменение исходной настройки может потребовать проверить её языковые варианты |
| Отдельные страницы для каждого языка | Ситуации, где содержание и структура рынков заметно отличаются | Связь между версиями и синхронизацию редакторы поддерживают вручную; возрастает риск расхождений и дублей |
Последний вариант — не отдельный механизм ядра, а редакторский процесс. Иногда он оправдан: например, языковые версии предлагают разный ассортимент или юридические сведения. Но если тексты в основном совпадают, отдельные несвязанные страницы быстро превращают обновление в ручную сверку.
Перевод страницы отвечает на вопрос «что прочитает посетитель». Перевод интерфейса — «какие системные надписи он увидит». Настройка языка сайта не заменяет ни то ни другое.
Решите, как Drupal будет выбирать язык
После добавления языков настройте определение языка посетителя и адреса. В Drupal можно использовать, например, префикс пути или отдельный домен для языка. В первом случае версии могут выглядеть как разные адреса внутри одного домена; во втором языки получают собственные домены.
Префикс пути обычно проще запускать и поддерживать: маршрутизация остаётся в одном сайте. Отдельные домены удобны, если языковые рынки должны выглядеть как самостоятельные площадки, но добавляют настройки доменов, сертификатов и инфраструктуры. Не полагайтесь только на язык браузера: посетителю нужно оставить понятный способ перейти на другую версию, а адрес страницы должен сохранять выбранный язык.
Drupal поддерживает несколько способов согласования языка — среди них язык URL, домен и пользовательские настройки. Их порядок важен: если одновременно включено несколько способов, заранее проверьте, какой из них будет определять язык в конкретном запросе. Названия и доступность опций сверяйте с документацией именно вашей версии.
Как выбрать модель переводов
- Составьте перечень языков. Отделите языки публикации от языков, на которых редакторам нужно администрировать сайт. Проверка: у каждого языка есть владелец и понятное назначение.
- Определите переводимые типы данных. Отметьте материалы, термины, пользовательские сущности и поля, которым нужны языковые варианты. Проверка: редактор может назвать, какие поля переводятся, а какие общие для всех языков.
- Включите нужные модули ядра. Для контента, интерфейса и конфигурации нужны разные функции; не включайте их наугад. Проверка: нужные языковые настройки доступны в административной части.
- Настройте адреса и согласование языка. Выберите префиксы или домены и проверьте переходы между языками на реальных страницах. Проверка: ссылка на перевод ведёт на версию того же материала, а не на главную или ошибку.
- Пройдите редакторский сценарий. Создайте материал, добавьте перевод, измените исходный текст и проверьте, что видят редакторы и посетители. Проверка: статус и наличие перевода заметны, а непереведённые поля не маскируются под готовые.
Где подходы ломаются
Поле перевели не там
Для поля важно решить, оно переводимое или общее. Например, заголовок страницы обычно переводят, а внутренний идентификатор или часть технических данных могут оставаться общими. Если поле помечено непереводимым, редактор не сможет задать ему отдельное значение для языка; если переводимым — команде придётся поддерживать версии этого поля.
Перевели меню, но не целевую страницу
Переведённый интерфейс не гарантирует, что ссылка ведёт на перевод. Проверьте меню, блоки и ссылки внутри текста на каждом языке. Отдельно проверьте страницу, для которой перевода ещё нет: выбранное поведение должно быть понятным, а не случайным.
Языки расходятся после обновления
Перевод конфигурации и перевод контента живут раздельно. После изменения формы, полей или темы проверьте локализованные подписи и интерфейсные строки. После обновлений Drupal или модулей полезно повторить этот тест: новые строки могут появиться без готового перевода.
Точный набор полей, доступных настроек и интерфейсные подписи зависят от версии ядра, установленных модулей и конкретной сущности. Не переносите настройки тестового сайта на продакшен без проверки: экспорт конфигурации и языковые данные требуют согласованного процесса развёртывания.
Что делать дальше
Выберите один тип материала и настройте для него полный путь: создание исходной страницы, перевод, просмотр адреса на каждом языке и публикация. Затем проверьте отдельным проходом интерфейс и конфигурацию. До запуска зафиксируйте в редакторской инструкции, кто отвечает за переводы, что делать с незаполненными версиями и как тестировать изменения после обновлений.
Сущность — объект Drupal с собственными данными и правилами хранения: например, материал или термин таксономии. Переводимость настраивается для конкретных типов сущностей и полей, а не автоматически для всего сайта.
Задачи: математика, физика, химия: Разбор задачи по шагам с проверкой и похожей задачей
Спросить за 10 ₽Источники: Drupal documentation: Multilingual guide, Drupal.org: Multilingual support in Drupal
Частые вопросы
Достаточно ли включить Content Translation, чтобы перевести сайт?
Можно ли переводить только часть полей материала?
Что выбрать: языковой префикс или отдельный домен?
Что увидит посетитель, если перевод страницы не готов?
Нужно ли переводить меню отдельно от страниц?
Подойдут ли эти рекомендации для Drupal 9?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.