Мультиязычность в 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. Например, слоган сайта для английской и русской версий сайта, название и многое другое. Так же можно переводить меню, блоки, словари, термины таксономии и т.д.

В итоге мы получили полноценный мультиязычный сайт с возможностью перевода всех его составных частей, с помощью всего нескольких модулей.

 

Автора автора