Многоязычность и перевод интерфейса

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

ELiS использует встроенную в Drupal систему перевода. Для Drupal существует два основных модуля перевода: Internationalization и Entity translation. Отличаются они подходом к переводу. Первый модуль создает на каждый перевод новую ноду, что является неприемлемым в ситуации когда надо перевести только метаданные к статье или книге. Второй модуль включен в ядро Drupal8 и позволяет отдельно переводить некоторые поля (field) ноды.

ELiS поддерживает локализацию только с помощью второго модуля (Entity translation). Процесс включения и проведения локализации ничем не отличается от стандартного использования этого модуля и может осуществляться по существующей документации и инструкциям к Drupal.

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

Настройка[править]

Настройка модуля Entity translation[править]

После включения модуля Entity translation следует настроить режим переключения языка на сайте (http://example.com/admin/config/regional/language/configure). ELiS не совместима с режимами переключения на основе URL (домена или суфикса). Для совместимости перевода с мобильным приложением требуется активировать определение языка на основе сессии. Переключение языка на основе настроек пользователя или браузера остается на усмотрение администратора сайта.

regional-language-configure.png

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

В виду внутренней архитектуры Drupal, для перевода названия нод необходимо установить дополнительный модуль title. При активации этого модуля требуется дополнительная настройка поискового сервера Sphinx, чтобы локализованные названия попали в поисковый индекс.

Процесс перевода документов[править]

Редактор сайта, при просмотре материала, увидит вкладку "Переводы" (Translate), на которой он сможет добавить переводы к текущей ноде (документу):

node-add-translate.png

Результаты перевода[править]

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

Приложения автоматически запрашивают информацию на языке по-умолчанию операционной системы. Если язык приложения не поддерживается со стороны сайта, происходит переключение на язык сайта по-умолчанию.

browser-localization.gif

iphone-localization.gif

Пример[править]

http://elis.gpntb.ru/node/300?language=en

http://elis.gpntb.ru/node/300?language=ru

Если пользователь из Бразилии зайдет в библиотеку с активированными локализациями для английского (язык по-умолчанию) и русского, то каталог и метаданные книги он увидит в английской локализации.


Поиск в многоязычной среде[править]

При переключении на многоязычную среду с переводом заглавий документов с помощью модуля title, поиск перестанет индексировать новые заглавия т.к. они начнут размещаться в специальной таблице field_data_title_field. Чтобы вернуть индексирование заголовков, необходимо исправить конфигурацию поискового сервера Sphinx, заменив в sql_query

node.title as title 

на

concat_ws('. ', n.title, group_concat(title_field.title_field_value separator ". "), n.title) as title

и добавив соединение

left join field_data_title_field as title_field on title_field.entity_id = n.nid and title_fielkd.entity_type = 'node'

Возможные проблемы[править]

Нельзя перевести ноду[править]

Ноду нельзя перевести если ей не задан конкретный язык (language neutral). Установите один из языков и, после сохранения ноды, появится возможность добавить перевод.

Проблемы с переводом меню[править]

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

Для некоторых локализаций в мобильном приложении не отображается каталог[править]

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

Оптимизация для внешних поисковых систем[править]

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