суббота, 27 апреля 2013 г.

Добавление мультиязычности в плагин scrollGallery для WordPress


Занимался тут на днях своим второстепенным проектом, и появилась необходимость добавить что-то наподобие "горизонтальной галереи". Вот такого плана (http://www.pikachoose.com/):


Порыскав в вордпрессовских плагинах, нашел подходящее решение, называется оно: NextGEN Scroll Gallery. Все работало как по маслу. Единственный минус - плагин не дружит с мультиязычностью. Пришлось его немного под рихтовать.

Для работы сайта с несколькими языками я использую плагины qTranslate и CodeStyling Localization. На этом месте я хочу немного подробнее остановиться и поделиться своими впечатлениями от работы плагинов обеспечивающих мультиязычность.

qTranslate

Данный плагин очень мощный, предлагает много фич для обеспечения мультиязычности. НО, имеет очень критический и очень утомляющий баг - проблема с дублированием\перемешиванием текста на разных языках (http://www.qianqin.de/qtranslate/forum/viewtopic.php?f=3&t=2841). Это просто ужас какой-то. Суть в том, что если у вас текст довольно большой и имеет "насыщенное" форматирование, то после сохранения поста и вновь зайдя в режим редактирования вы получите кашу в одном из языков, а в других возможно пусто (а может и нет), как повезет:



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

CodeStyling Localization

Обязательно(!!!) поставьте этот плагин, если захотите подправить переводы в различных плагинах, а также ядра WP. Он избавит вас от геморроя при ручном редактировании переводов (файлов *.mo и *.po) и использования стороннего софта. Единственный недостаток - периодические глюки при подгрузке переводов на определенном языке, особенно если там их очень много. Мне к примеру так и не удалось полностью просмотреть немецкий языковой файл WP.
Данный плагин сберег кучу времени и нервов при доработке мной перевода NextGEN Gallery на украинский.

Правим scrollGallery

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

1. Переходим в редактор кода плагинов:

2. Ищем функцию

nggSGShow():function nggSGShow($sgconfig, $pictures = null, ...) {

3. Чуть ниже видим код:

$aux["title"] = stripslashes($picture->alttext); // $picture->alttext;
$aux["desc"] = $picture->description;

4. Меняем его на:

$aux["title"] = stripslashes(__(html_entity_decode($picture->alttext, ENT_NOQUOTES))); // $picture->alttext;
$aux["desc"] = __(html_entity_decode($picture->description, ENT_NOQUOTES));

Вот и все. Сохраняем.

Теперь при заполнении заголовка изображения или его описания, можно вводить qTranslate'овские шорткоды:



Пример можно посмотреть здесь: http://museum-gallery.org/, кликая по фоткам scrollGallery на разных языках.