Как стать автором
Обновить

Мультиязычность в Drupal 7

Время на прочтение2 мин
Количество просмотров13K
В этой статье я расскажу вам как за четверть часа сделать ваш сайт мультиязычным.
Итак, что бы сделать контент мультиязычным в Drupal 7 у нас есть два способа:
1) Модуль Internationalization и его подмодули
2) Модуль Entity Translation + модуль Title
Их мы сейчас и рассмотрим.

Подготовка


Перед тем как что-то делать нужно добавить на сайт дополнительный язык. Сделать это можно на страничке “admin/config/regional/language/add”.


И включить его на странице: “admin/config/regional/language”


Так же нужно выбрать способ определения языка, я предпочитаю брать его из URL. В настройках можно указать из какой части URL брать язык (префикс или поддомен), по умолчанию стоит префикс.
“admin/config/regional/language/configure”


Первый способ


Модуль Internationalization появился еще в D6, с его помощью можно переводить различные типы контента. Мы рассмотрим его на примере перевода нод, т.к. они составляют большую часть всего контента.

Установка модуля

Для установки и включения модуля воспользуемся удобным инструментом — drush.
drush dl i18n
drush en -y i18n
Поскольку мы собираемся переводить ноды, необходимо включить подмодуль.
drush en -y i18n_node
Модуль включен и готов к работе.

Настройки Content type

Заходим в настройки публикации СТ и выбираем пункт “Enabled, with translation”.


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


Как видим, в списке полей появилось новое поле связанное с выбором языка.


Создание и перевод ноды

Заполняем поля, выбираем нужный язык и сохраняем.


Теперь на странице редактирования ноды появилась новая вкладка Translate.


На странице перевода нам предлагают выбор, добавить новый перевод(1) или задать другую существующую ноду в качестве перевода(2). Т.к. готового перевода у нас нет, мы его будем добавлять.


Открываются форма создания ноды, только язык в ней уже задан и поле отключено.


Итог

Мы имеем 2 ноды, которые имеют разный язык. У ноды с переводом есть ссылка на оригинал.

Думаю, что данный способ не самый лучший, так как происходит дублирование контента.
Поэтому мы рассмотрим второй способ, который позволяет избежать этого.

Второй способ


Установка модулей

drush dl title entity_translation
drush en -y title entity_translation

Настройка модуля

На странице “admin/config/regional/entity_translation” можно выбрать какие типы entity будут переводиться.


Настройка Content type

Заходим в настройки публикации СТ и выбираем пункт “Enabled, with field translation”.


Далее в списке полей нужно заменить Title на обычное поле(это позволяет модуль Title), чтобы его можно было переводить.


Теперь нужно выбрать поля, которые можно будет перевести (Title выбран по умолчанию)
На странице “admin/structure/types/manage/%CT_name%/fields/%field_name%” необходимо включить Field translation.


Создание и перевод ноды

Создание ноды ничем не отличается от создания в первом способе, просто заполняем поля и выбираем язык. Если оставить “Language neutral”, то перевод не будет доступен.
На странице редактировании только что созданной ноды появляется вкладка Translate.
Там можно посмотреть на какие языки нода уже переведена и перевести на остальные доступные.


Заполняем доступные для перевода поля, также на странице есть настройка для публикации перевода и можно указать альтернативный URL.


Итог

В итоге мы имеем одну ноду с двумя вариантами перевода.
Английский:


Немецкий:
Теги:
Хабы:
Всего голосов 19: ↑15 и ↓4+11
Комментарии9

Публикации

Истории

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань