Багатомовність Drupal 7
Щоб зробити сайт більш дружнім до користувачів іноді виникає завдання додавання на сайт декількох мов, на яких буде представлений контент. Можна звичайно створювати статті просто з різним вмістом, але як бути з іншими частинами сайту як меню, блоки і т.д.? У цьому нам допоможе лише кілька модулів, які повністю переведуть весь сайт на будь-який потрібну мову.
Модулі, які нам знадобляться:
- Internationalization - набір модулів для розширення можливостей багатомовності.
- Variable - модуль для редагування змінних реєстру Drupal. Потрібен якщо вам необхідно перевести на іншу мову системні змінні.
Перше що необхідно зробити - це активувати модуль ядра Drupal під назвою Locale. Після чого за адресою admin / config / regional / language необхідно додати потрібний нам мову, крім англійської, який встановлений за замовчуванням. У моєму випадку це буде російська мова. Далі потрібно вибрати мову, який буде встановлений для сайту за замовчуванням. Я вибрав російську мову і встановив відповідні переклади для Drupal. Встановити переклади можна вручну, скачавши з сайту drupal.org або drupaler.ru . Так само переклади можна встановити за допомогою корисного модуля Localization update , Який в подальшому дуже стане в нагоді для установки або оновлення перекладів.
Після зробленого потрібно встановити і активувати модулі Internationalization і Variable (не обов'язково).
Список модулів, які необхідно активувати:
- Internationalization
- Field translation - переклад полів.
- Menu translation - переклад меню.
- Block languages - переклад блоків.
- Multilingual content - розширення базових можливостей перекладу контенту.
- Taxonomy translation - переклад таксономії.
- String translation - переклад певних користувачем рядків. Необхідний для перерахованих вище модулів.
- Variable translation (не обов'язково) - переклад системних змінних.
- Variable (не обов'язково) - модуль для доступу до системних змінних.
- Variable admin (не обов'язково) - UI для редагування змінних.
Поле установки і активації модулів необхідно перейти за адресою admin / structure / types і для типів контенту, для яких потрібен переклад, включити підтримку багатомовності. Спочатку включаємо в розділі Налаштування публікації, вибравши варіант Включити і дозволити переклад, а потім після збереження в розділі мультимовну настройки включаємо опцію Вимагати мову, що б на сайті не виявилося контенту нейтрального по відношенню до мови.
Створимо ноду типу Basic page російською мовою, помістивши посилання на неї в меню. Ось так виглядає наша додана сторінка:
Далі нам необхідно додати переклад сторінки, натиснувши на кнопку Переклад в списку локальних задач. Аналогічно заповнюємо даними, тільки на англійській мові і додаємо посилання в меню.
Тепер належить найважливіший момент, нам необхідно вибрати параметр, за яким буде визначатися мову для всього сайту. Для цього переходимо за адресою admin / config / regional / language / configure і бачимо форму параметрів визначення мови сайту.
Власне з опису методів все зрозуміло. Методи визначення будуть спрацьовувати в залежності від ваги і послідовності, в якій вони розташовані. Зупинимося на методі визначення мови по URL. Поставимо галочку і активуємо його, а також переходимо в настройки.
Префікс шляху - код мови сайту буде розташовуватися відразу після базового URL. Наприклад: http: //multi.local/ en / node / 1, http: //multi.local/ ua / node / 1, http: //multi.local/ ru / node / 1.
Домен - код мови сайту буде розташовуватися в вигляді поддомена. Наприклад: http: // en .multi.local / node / 1, http: // ua .multi.local / node / 1, http: // ru. multi.localnode / 1.
Спочатку зупинимося на варіанті з префіксом шляху. Щоб при використанні сайту російською мовою в адресі не було ru, перейдемо admin / config / regional / language / edit / ru і залишимо порожнім поле Префікс мови. Так само раджу включити блок для зміни мови.
Ось так виглядає сторінка російською http: //multilan.local/page:
Ось так англійською http: //multilan.local/en/page:
Тепер підемо іншим шляхом, і виберемо визначення мови по Домену.
За адресою admin / config / regional / language налаштуємо мови наступним чином.
Русский:
англійська:
Тепер російська версія доступна за звичайним адресою http: //multilan.local, а англійська за адресою http: //en.multilan.local.
Після цього можна користуватися сайтом на декількох мови. Якщо з якихось причин сторінка з піддоменів en недоступна, то необхідно перевірити настройки сервера і роботу директиви htaccess.
Ще один важливий момент багатомовності при використанні доменів - це авторизація на різних версіях сайту. Для того що б авторизація зберігалася всюди, необхідно в файлі конфігурації settings.php встановити параметр $ cookie_domain = '. multilan.local; ось з таким значенням.
Це лише мала частина функціональності набору цих модулів. Завдяки модулю Variable ми можемо перекладати всі доступні змінні, встановлені в Drupal за допомогою set_variable. Наприклад, слоган сайту для англійської та російської версій сайту, назва і багато іншого. Так само можна переводити меню, блоки, словники, терміни таксономії і т.д.
У підсумку ми отримали повноцінний багатомовний сайт з можливістю перекладу всіх його складових частин, за допомогою всього декількох модулів.