Налаштування мультиязичності 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:
uk/,en/— рекомендується - Domain:
uk.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('uk')) {
$translated = $node->addTranslation('uk', [
'title' => 'Заголовок українською',
'body' => ['value' => '<p>Текст українською</p>', 'format' => 'full_html'],
'status' => 1,
]);
$translated->save();
}
Twig: відображення з урахуванням мови
{# Отримати поточну мову #}
{% 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 uk /path/to/uk.po
Меню та блоки
Кожен пункт меню перекладається окремо через Структура → Меню → [меню] → Edit → Translate. Блоки: Структура → Розміщення блоків → [блок] → Translate.
URL-алиаси для перекладів
Pathauto створює алиаси для кожного перекладу окремо: /about (en), /uk/про-нас (uk). Налаштування: Конфігурація → 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 днів.







