null

Исправляем виджет переключения языка сайта в Liferay 6.2

Если вы посмотрите в правый верхний угол любой страницы нашего сайта, то увидите там виджет смены локализации:

Виджет выбора локализации на нашем сайте

Т.к. этот виджет должен быть виден на всех страницах и во всех разделах сайта, целесообразно было интегрировать его в состав темы портала. В Liferay версий 6.0 - 6.1 это можно было сделать, добавив в нужный элемент разметки нужного vm-шаблона приблизительно такой код (приводится с фрагментом HTML-разметки):

<span class="language-switcher">
    $taglibLiferay.language("fm", null, "languageId", 2)
</span>

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

В настоящий момент мы с коллегами активно занимаемся апгрейдом сайта на актуальную версию Liferay (6.2.2), и, добавив сабжевый виджет в новую тему сайта обнаружили, что работает он весьма странно: с дефолтного языка (в нашем случае, русского) на недефолтный (английский) переключается, а обратно - не хочет.

При этом, судя по URL запросов, выбранный идентификатор языка на сервер отправляется, но до целевого портлета не доходит. Логично предположить, что в запросе либо неверно указан идентификатор выбранного языка, либо передаётся неправильный идентификатор портлета, который должен обработать сам запрос. С идентификатором языка проблема маловероятна (по запросу видно, что передаются те же самые "ru_RU" и "en_US", которые заданы в конфигах портала), а вот проблема с идентификатором портлета вполне возможна.

Небольшой гуглинг подтверждает наши подозрения - в версии 6.2 слегка изменились (в менее логичную сторону) параметры, необходимые для передачи запроса на смену выбранной локализации нужному обработчику. Так что, в соответствии с рекомендацией, меняем код встраивания виджета на такой:

<span class="language-switcher">
    $taglibLiferay.language("fm", null, "_82_languageId", 2)
</span>

Видим, что добавилось прямое указание на идентификатор портлета-обработчика (82 - это Language Selector).

Пересобираем тему, деплоим, проверяем - всё заработало:

Локализация успешно меняется в обоих направлениях

Коротко о себе:

Работаю ведущим программистом в компании Tune IT и ассистентом кафедры Вычислительной техники в Университете ИТМО .

Занимаюсь проектами, связанными с разработкой разного рода веб-приложений (порталы, CRM-системы, системы электронного документооборота), а также, в рамках научной работы на кафедре, изучаю возможности применения семантического анализа в задачах САПР.