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

В этой статье я расскажу вам как за четверть часа сделать ваш сайт мультиязычным.
Итак, что бы сделать контент мультиязычным в 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.


Итог

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


Немецкий:
  • +11
  • 9,8k
  • 9
Поделиться публикацией

Похожие публикации

Комментарии 9

    +1
    Одно мне не нравилось в мультиязычности в Друпале: когда редактируешь например немецкую ноду, весь UI на немецком, приходиться долго искать кнопку Сохранить. Даже если не влючать автоапдейт, многие модули тянут с собой переводы, в итоге в админском интерфейсе каша из разных языков. Для себя я нашёл такое решение — не использовать имеющиеся языки, а создавать свои: например Русский с кодом языка x-ru (по стандарту вроде бы кастомные языки должны именоваться x-...) и доменом ru. И всё, никто никогда не подтянет переводы для этих языков, и весь инрефейс всегда будет на английском независимо от языка редактируемой ноды. Придётся лишь вручную перевести текс некоторых элементов, который отображается на фронтэнде (например, Голосовать, и проч.)
      +3
      Есть же модуль Administration Language, который позволят выбирать дефолтный язык для админки (список страниц можно изменять).
        0
        Для семёрки до сих пор нету стабильной верии. И работает он из рук вон плохо (всех нюансов не вспомню, относительно давно ипользовал)
        0
        Выставьте в admin/config/regional/language/configure настройку «Follow the user's language preference.» в самый верх и наслаждайтесь
        0
        Вопрос: vj;yj kb сделать сайт на русском и украинском языках, но не делать английскую версию?
          0
          выставляете дефолтным языком один из двух требуемых. А английский отключаете вовсе.
          0
          а спустя четверть часа вы начинаете допиливать перевод…
            0
            вот все допиливают для себя, но никак не допилят тот, что в комплекте… :(
            подстава с публикацией…
            0
            Заметка для себя (пол вечера потратил на поиски):
            Заходим в настройки публикации СТ = en/admin/structure/types/manage/forum/fields

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

            Самое читаемое