Во многих случаях может потребоваться перевод метаданных и локализация интерфейса. Например, для научных статей может потребоваться перевод заголовка, имен авторов и анонса.
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 (домена или суфикса). Для совместимости перевода с мобильным приложением требуется активировать определение языка на основе сессии. Переключение языка на основе настроек пользователя или браузера остается на усмотрение администратора сайта.
После активации модуля, администратору следует активировать локализацию полей для выбранных им типов контента.
В виду внутренней архитектуры Drupal, для перевода названия нод необходимо установить дополнительный модуль title. При активации этого модуля требуется дополнительная настройка поискового сервера Sphinx, чтобы локализованные названия попали в поисковый индекс.
Процесс перевода документов[править]
Редактор сайта, при просмотре материала, увидит вкладку "Переводы" (Translate), на которой он сможет добавить переводы к текущей ноде (документу):
Результаты перевода[править]
В зависимости от выбранного языка, по одному и тому же URL пользователи будут видеть переведенную страницу. При помощи параметра language можно переключить интерфейс на другой язык.
Приложения автоматически запрашивают информацию на языке по-умолчанию операционной системы. Если язык приложения не поддерживается со стороны сайта, происходит переключение на язык сайта по-умолчанию.
Пример[править]
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