Многоязычность и перевод интерфейса¶
Во многих случаях может потребоваться перевод метаданных и локализация интерфейса. Например, для научных статей может потребоваться перевод заголовка, имен авторов и анонса.
ELiS использует встроенную в Drupal систему перевода. Для Drupal существует два основных модуля перевода: Internatiolization и Entity translation. Отличаются они подходом к переводу. Первый модуль создает на каждый перевод новую ноду, что является неприемлемым в ситуации когда надо перевести только метаданные к статье или книге. Второй модуль включен в ядро Drupal8 и позволяет отдельно переводить некоторые поля (field) ноды.
ELiS поддерживает локализацию только с помощью второго модуля (Entity translation). Процесс включения и проведения локализации ничем не отличается от стандартного использования этого модуля и может осуществляться по существующей документации и инструкциям к Drupal.
Note
В некоторых случаях автоматический выбор языка не используется и пользователи увидят локализацию на языке по-умолчанию.
Warning
Если вы планируете поддержку многоязычности, рекомендуется ее включить на ранних стадиях внедрения проекта.
Warning
Все ноды должны в качестве основной (базовой) иметь ноду без указания языка.
Настройка¶
Настройка модуля 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
и добавив соединение:
sql_joined_field = title from query; \
SELECT n.nid, title_field.title_field_value as title FROM node as n \
LEFT JOIN field_data_title_field as title_field on title_field.entity_id = n.nid and n.vid = title_field.revision_id and title_field.entity_type = 'node' ORDER BY n.nid ASC
Возможные проблемы¶
Нельзя перевести ноду¶
Ноду нельзя перевести если ей не задан конкретный язык (language neutral). Установите один из языков и, после сохранения ноды, появится возможность добавить перевод.
Проблемы с переводом меню¶
В многоязычной среде может потребоваться установка английского в качестве языка по-умолчанию.
Для некоторых локализаций в мобильном приложении не отображается каталог¶
При подключении нового языка убедитесь, что служебный синоним catalog установлен на какую-либо ноду каталога на всех языках. В Drupal синонимы для разных языков могут быть установлены на разные ноды, а для работы каталога в мобильных приложениях в качестве точки входа в каталог используется нода на которую направляет синоним catalog на текущем языке локализации.