Создание мультиязычного сайта на Drupal7

Аватар пользователя userok


Создание мультиязычного сайта на Drupal 7

Доброго времени суток, читатели сайта it-cat. У нас имеется свежеустановленная (на локальную машину, но здесь это несущественно) система управления содержимым Drupal 7. Задача — сделать с её помощью многоязычный сайт. В данной статье под многоязычным сайтом мы понимаем сайт с полностью переведённым интерфейсом и содержимым. Так как автор статьи свободно владеет читает и переводит со словарем только по-английски - мы будем использовать на нашем тестовом сайте два языка: русский и английский.

Рисунок 1.

Новый сайт

Мы предполагаем, что Вы являетесь администратором сайта и Вам доступно меню администрирования вверху страницы(Dashboard, Content, Structure...). В дальнейшем, упоминая это меню будем говорить просто «Администрирование».

Шаг первый. Русификация.

Мы сделали «чистую установку» Drupal, без дополнительных модулей, соответственно наш свежий сайт имеет только англоязычный интерфейс. Первым делом нам необходимо перевести на русский язык административный интерфейс сайта.
На странице http://drupal.org/project/l10n_update загружаем модуль Localization Update и сохраняем файл на жёсткий диск. Подробнее об установке новых модулей.
Далее идём в Администрирование->Modules->Install new module, на появившейся странице нажимаем кнопку «Выбрать файл» и выбираем скачанный нами архив.

Рисунок 2.

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

Нажимаем «Install», после установки нам необходимо активировать данный модуль, для этого идём в Администрирование->Modules и в списке имеющихся модулей в разделе Multilingual находим модуль Localization update. Ставим возле него галочку и жмём «Save configuration».

Рисунок 3.

Далее появляется предложение включить модуль Locale требующийся для работы Localization update. Нажимаем «Continue»

Рисунок 4.

Дополнительные модули

После установки снова попадаем на страницу Администрирование->Modules и видим, что наш модуль Localization update активирован:

Рисунок 5.

Модуль успешно установлен

Мы только что установили модуль Localization update, установка других модулей происходит по точно такому же алгоритму, поэтому далее мы не будем на этом останавливаться столь подробно.

Далее, на странице Администрирование->Configuration->Regional and Languages->Languages
Жмём «Add language», выбираем из списка Russian(Русский) и нажимаем кнопку «Add language». Друпал начинает автоматически загружать файлы переводов.

Рисунок 6.

Автоматическая загрузка переводов

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

Рисунок 7.

Выбор языка


Рисунок 8.

Выбор языка

Обновлять переводы можно на странице: Администрирование->Конфигурация->Регион и язык->Перевод интерфейса:

Рисунок 9.

Перевод интерфейса

Здесь так же можно настроить автоматическое обновление переводов.

Шаг второй. Установка и активация необходимых модулей.

Следующие дополнительные модули необходимо скачать:
Internationalization (i18n)
Variable
Language Icons
Подробнее об установке новых модулей. Загружаем модули на сайт через Администрирование->Модули->Установить новый модуль.
Включаем(если выключены) системные модули Locale и Content translation
Включаем модуль Variable в группе Variable, затем в группе Multilingual-Internalization следующие модули:
Block languages
Internationalization
Language icons
Menu translation
Multilingual content
String translation
Taxonomy translation
Всё необходимое для создания многоязычного сайта мы установили и настроили, теперь пора переходить к переводу.

Шаг третий. Language icons.

Этот модуль нам понадобится для того чтобы добавить на сайт блок переключения языка.
Модуль мы включили выше, теперь нам понадобится его настроить.
Настраиваем отображение на странице. Идём в Администрирование->Структура->Блоки.
Внизу среди отключённых блоков находим «Переключатель языка(Текст пользовательского интерфейса)» и выбираем для него регион(область). Для нашего примера (стандартная тема Bartik) мы выбрали регион «Вторая боковая панель» для наглядности.

Рисунок 10.

Language icons

Нажимаем «Сохранить блоки» и видим следующую страницу:

Рисунок 11.

Настройка автоматического определения языка


Здесь мы видим предупреждение о том, что переключатель языка будет отображаться только после настройки метода автоматического определения языка либо «URL» либо «сессия».
Идём по предложенной ссылке и попадаем на страницу Администрирование->Конфигурация->Регион и язык->Языки->Определение и выбор:
Рисунок 12.

Автоматическое определение языка URL

Перетаскиваем метод URL в начало списка и нажимаем ссылку Настроить:

Рисунок 13.

Настраиваем префикс пути

Здесь выбираем префикс пути или домен, мы выберем префикс пути. Сохраняем настройки.
Ещё раз идём по адресу: Администрирование->Конфигурация->Регион и язык->Языки->Определение и выбор, чтобы убедиться, что метод URL задействован и находится вверху списка.

Шаг четвёртый. Перевод интерфейса и содержимого.

Теперь надо настроить мультиязычность для типа материала «статья». Переходим в Администрирование->Структура->Типы материалов. Для типа материала «Статья(Article)» нажимаем ссылку «Изменить». На странице редактирования типа материала «статья» в пункте «Настройка публикации», «Поддержка многоязычности» выбираем «Включить и разрешить перевод», в пункте «Мультиязычные настройки», «Расширенные языковые настройки» ставим «Требовать язык», «Расширенная поддержка языка» - «Стандартная».

Рисунок 14.

Включаем мультиязычность для типа материала


Рисунок 15.

Включаем мультиязычность для типа материала

Сохраняем тип материала. Теперь проверим что у нас получилось. Зайдём на стартовую страницу нашего сайта и увидим следующую картинку:

Рисунок 16.

Интерфейс переведён

Переключив язык, увидим уже переведённый интерфейс:

Рисунок 17.

Интерфейс переведён

Как видно из снимков экрана, интерфейс стандартных блоков Drupal уже переведён, что избавит нас от лишней работы, нам останется переводить только созданные нами материалы которые мы в дальнейшем будем добавлять на сайт. Не переведенным осталось только название сайта и главное меню. Название сайта мы перевести не сможем, да и смысла в этом нет, а меню, естественно, переведём. Идём в Администрирование->Структура->Меню->Main menu->Изменить меню, выбираем в «Настройках многоязычности» «Переводится и локализуется», сохраняем изменения.

Рисунок 18.

Настройка мультиязычного меню

После сохранения попадаем на страницу Администрирование->Структура->Меню_>Main menu->Список ссылок:

Рисунок 19.

Перевод пункта меню

Нажимаем ссылку «Изменить» напротив того пункта меню, который собираемся переводить, у нас он пока единственный. На появившейся странице в разделе язык выбираем Английский т. к. пункт главного меню Home на английском, а на русский будем переводить.

Рисунок 20.

Перевод ссылки меню

Сохраняем изменения и снова попадаем на страницу Администрирование->Структура->Меню_>Main menu->Список ссылок. Если мы всё сделали правильно, справа вверху должна появиться вкладка «Перевести»; переходим на неё:

Рисунок 21.

Перевод ссылки меню

Нажимаем «Добавить перевод» и на открывшейся странице вписываем русское название ссылки меню. Язык, соответственно нужно было-бы выбрать «русский», однако т. к. у нас всего два языка и английский установлен по-умолчанию, система сама подставила необходимый нам язык.

Рисунок 22.

Перевод ссылки меню

Сохраняем изменения. Переходим на главную и видим, что пункт меню Home переведён на русский.

Рисунок 23.

Переведённое меню

Теперь добавим на наш сайт пробную статью. Администрирование->Содержимое->Добавить содержимое->Article(Статья)
В поле title введем название статьи, в поле body текст статьи, язык - «русский». Поставим галочку «Создать ссылку меню».

Рисунок 24.

Добавление первой статьи


Рисунок 25.

Добавление первой статьи

Родителем сделаем главную страницу,и нажмём «Сохранить».
Статья создана, теперь переведём её на английский. Переходим в Администрирование->Содержимое, находим нашу статью и жмём «Изменить». Переходим на вкладку «Перевести» и добавляем английский перевод:

Рисунок 26.

Перевод статьи Drupal7


Рисунок 27.

Перевод статьи Drupal7

Переводим title и body:

Рисунок 28.

Перевод статьи Drupal7

Создаём ссылку меню и назначаем родителя Home:

Рисунок 29.

Перевод статьи Drupal7

Сохраняем. Переходим на главную страницу:

Рисунок 30.

Мультиязычный сайт Drupal7

Переключаем язык:

Рисунок 31.

Мультиязычный сайт Drupal7

Всё работает!

Скачать статью Создание мультиязычного сайта на Drupal в формате PDF.

См. также: Установка на хостинг и базовая настройка
См. также: Установка Drupal7 на локальный компьютер с ОС Linux
См. также: Установка модулей Drupal7

Эта статья опубликована под Creative Commons Attribution ShareAlike лицензией.

Арам (не проверено)
<p>Spasibo, vi daje ne predstavlyayete kak mne pomogli <img src="http://it-cat.biz/sites/all/libraries/fckeditor/editor/images/smiley/msn/thumbs_up.gif" alt=""></p><p>&nbsp;</p>
GrandVitara
Аватар пользователя GrandVitara
Всегда пожалуйста. Рады были помочь. Нам очень приятно что Вы с нами.
Гость (не проверено)
<p>Я Вас обожаю!</p><p><img src="http://it-cat.biz/sites/all/libraries/fckeditor/editor/images/smiley/msn/kiss.gif" alt=""></p>
GrandVitara
Аватар пользователя GrandVitara
<p>Ммуууррррррр!!! ;)</p>
Vadik (не проверено)
<p>&nbsp;Огромное спасибо!!! Все получилось!!!! Удачи Вам ребята!</p>
GrandVitara
Аватар пользователя GrandVitara
Это хорошо что получилось, и нам приятно....
tasic (не проверено)
<p>Добрый день,</p><p>спасибо за описание,&nbsp;оно помогло,&nbsp;но остался вопрос.&nbsp;В приведенном описании вы фактически не создаете главную страницу.&nbsp;Т.е.&nbsp;она какая-то есть,&nbsp;и на нее помещаются ссылки на articles, для которых задана многоязычность.&nbsp;Но как при этом редактировать заглавную страницу? Я так понимаю, что для сайта нужно создать заглавную страницу и прицепить ее в качестве заглавной.&nbsp;Но вот здесь я наткнулся на сложность -- в конфигурации сайта, где можно бы было указать заглавную страницу адрес сайта уже указан с кусочком языкового пути, и от переключения языков он не меняется.&nbsp;Т.е.&nbsp;в качестве главной страницы получается страница только на одном языке.&nbsp;Может вы можете подсказать,&nbsp;как обойти эту проблему?</p>
GrandVitara
Аватар пользователя GrandVitara
Hi Как таковой "Главной страницы" как единое целое не существует, как и любой другой страницы как единое целое также не существует, все страницы сайта состоят из набора компонентов, а именно: меню или меню+таксономия (надо переводить только таксономию), различные блоки и материалы различных типов и все эти состовляющие переводятся по отдельности путём создания перевода объекта и создания связи между оригиналом и переведённым объектом. А система в соответствии с настройками выводит те или иные компоненты на одном или другом языке. Поэтому переводите меню, блоки и материал которые вы выводите на главной странице. Кстати, изначально возможно пойти немного другим путём в переводе ядра сайта (кому как нравится...), а именно загрузить переводы ядра и модулей в систему и потом переводить ручками то что останется, по выше описанному способу. Будут вопросы спрашивайте. Удачи.
Павел (не проверено)
<p>Настраивал мультиязычность по вашей статье, все работает. Столкнулся с одной проблемой - перевод шапки (текстовое поле с разметкой) представления&nbsp; Views. Нашел,&nbsp;что переводить надо через перевод интерфейса, но в поле присутствуют html-теги, и при переводе возникает ошибка "Запрещенный html".&nbsp; Можно ли как-то это обойти?</p>
GrandVitara
Аватар пользователя GrandVitara
Здравствуйте! Не совсем понятно что и как\для чего Вы переводите? Дайте адрес сайта и подробней опишите что Вы переводите.
elankam (не проверено)
<p>Не совсем понятно по поводу способа определения языка с помощью УРЛ. Если у меня, например, урл в доменной зоне уа, то как будет работать мультиязычность?</p>
userok
Аватар пользователя userok
<p>Зона в которой зарегистрирован Ваш сайт никак не влияет на мультиязычность. Например условная страница вашего сайта без мультиязычности:</p><p>http://yoursite.ya/page</p><p>Та-же страница с мультиязычностью и определением языка "ПО ПРЕФИКСУ ПУТИ"</p><p>http://yoursite.ya/ru/page</p><p>http://yoursite.ya/en/page</p><p>Та-же страница с мультиязычностью и определением языка "ПО ДОМЕНУ"</p><p>http://ru.yoursite.ya/page</p><p>http://en.yoursite.ya/page</p><p>Вся разница только в том куда будет вставлен идентификатор языка</p><p>1) частью пути к странице (после слеша в адресе страницы)</p>><p>2) частью доменного имени (сразу после http://)</p>
elankam (не проверено)
<p>Спасибо, осознала</p>
Антон (не проверено)
<p>Привесттвую!</p><p>Спасибо за полезный урок. Один вопрос: можно как-то убрать значки доступных переводов внизу страницы?</p>
Aussie
Здравствуйте, Антон. О каких именно значках идёт речь? дайте ссылку на страницу или скрин приложите.
Антон (не проверено)
<p>Имелся в виду переключатель языка прямо под нодой. На вашем рисунке 31 – это русский. Впрочем, я уже сам разобрался. Вот тут все написано: http://www.drupal.ru/node/76526</p>
Антон (не проверено)
<p>Еще такой вопрос возник: я добавляю basic page в качестве главной страницы сайта. Добавляю к ней перевод. Блок переключения языков появляется на главной, но главная страница не переводится, пока в нее не ткнуть и не попасть на нее саму. Тогда все переводится.</p><p>Как сделать так, чтобы basic page в качестве главной переводилась на главной?</p>
GrandVitara
Аватар пользователя GrandVitara
Здравствуйте! Антон, не совсем понятна суть ситуации, дайте адрес где это происходит. Что вы имеете в виду под "basic page"?
Антон (не проверено)
<p>Вот тут: _h_t_t_p_:_/_/_d_o_p_o_v_i_d_i_-_n_a_n_u_._o_r_g_._u_a_</p><p>Хотелось бы, чтобы «Про журнал» переводилось прямо на главной. А так переводится все, кроме текста</p>
GrandVitara
Аватар пользователя GrandVitara
Это у Вас какой-либо тип материала, Вы перевели сам материал, а анонс видимо нет. Если не поможет, тогда надо смотреть под админом.
Антон (не проверено)
<p>Тип материала – basic page. Весь текст в нем в поле Body. Анонс пустой и, видимо, генерируется автоматом. Можно сделать так, чтобы на главную выводился не анонс, а вся эта страница?</p>
GrandVitara
Аватар пользователя GrandVitara
Для начала я бы проверил предположение, относительно анонса. А настроить вывод не анонса, а всего материала конечно можно: Структура-Типы материалов-Ваш тип материала и в строке с ним - Управление отображением-В правом верхнем углу выбрать вариант отображения "Анонс", если его там нет, то надо выбрать в левом нижнем углу "Расширенные параметры отображения" и включить там "Анонс", сохранить. В настройках отображения "Анонса", варианты вывода поле "Body" - По умолчанию. Но данная настройка изменит отображение всех материалов данного типа.
Антон (не проверено)
<p>Не получается. Выводится весь текст как анонс. С кнопкой «Читать далее». Мне нужна, чтобы у меня на главной была статичная страница без всяких анонсов. И чтобы она переводилась.</p>
Антон (не проверено)
<p>Не получается. Полный текст все равно выводится как анонс с кнопкой «Читать далее». А мне надо, чтобы первой выводилась просто статичная страница «Про журнал» без всяких кнопок. И чтобы она переводилась тут же.</p>
GrandVitara
Аватар пользователя GrandVitara
Попробовал на тестовом сервере смоделировать данную ситуацию, но у меня не получилось, выводится как и положено, переводится сразу на заглавной, при смене языка изменяется и перевод. Для решения Вашей проблемы надо смотреть сайт с правами админа.
Антон (не проверено)
<p>То есть для этого урока без разницы, какой тип материала использовать? Можно и basic page, и article?&nbsp;</p>
GrandVitara
Аватар пользователя GrandVitara
Вы имеете ввиду для того чтоб разместить на главной странице? Да, можно любой тип, можно создать вообще свой собственный тип материала. Изначально все типы материала одинаковы, а потом их настраивают, те типы что есть по умолчанию в принципе ничем не отличаются от тех что можно создать самому, различие только в выбранных параметрах, добавленных полях.
Антон (не проверено)
<p>Таки поборол, что-то где-то недовключал. Сейчас названия модулей другие уже. А где можно отредактировать языковой блок? Уменьшить и засунуть, скажем, в шапку?&nbsp;</p>
GrandVitara
Аватар пользователя GrandVitara
Языковой блок можно настроить в разделе Структура-Блоки размещаете из того что имеете в том регионе где пожелаете или в шаблоне темы создаёте сами дополнительный регион. Но немного удобней в плане настройки и функционала дополнительный модуль, например User Login bar или другой пожеланию.
Teddywer (не проверено)
<p>Nice description. It certainly helped. But I do have one question. What is the whole purpose of creating a website for the front page? It is even attached as a title. Thank you so much for posting this informattive article.</p>
SlavikV (не проверено)
<p>Привет, как для мультиязычного сайта переводить метатэги ?</p>
GrandVitara
Аватар пользователя GrandVitara
HI так же как и сам контент, после создания копии исходной страницы на требуемом языке, добавляете переведённый контент и метатеги на том же языке что и сам контент.
SlavikV (не проверено)
<p>Спасбо, стоял модуль metatag, я сам себе накрутил, что он не работает.&nbsp; А там все нормально...</p>
GrandVitara
Аватар пользователя GrandVitara
Бывает.
Гость (не проверено)
<p>Спасибо за статью. Подскажите,&nbsp;пожалуйста,&nbsp;как при такой мультиязычности создавать robots?&nbsp;Надо ли добавлять туда какие-либо директории и файлы,&nbsp;если сайт на другом языке будет в поддиректории?&nbsp;</p><p>И еще вопрос - например,&nbsp;есть большой сайт на русском,&nbsp;но сделаю копию по Вашей методике для английского сайта,&nbsp;то будет ли это уже готовая идентичная копия,&nbsp;или я могу сама добавлять статьи,&nbsp;какие захочу?&nbsp;Будут ли видны все страницы,&nbsp;даже не переведенные,&nbsp;или я могу управлять их видимостью?&nbsp;</p>

Добавить комментарий