3 строки для мультиязычности модулей

3 строки для мультиязычности модулей

Разработчик DLE в упор не хочет подарить своим пользователям то, что они просят. А ведь до полной поддержки нескольких языков в панели администратора осталась сущая копейка - названия и описания модуля. И решается это в 3 строчки! Предлагаю позаботится об этом за него.


Все знают, что название и описание модуля хранится в таблице _admin_sections. И записываются там жёстко в 1 языке. Выводятся они в шаблон админ-панели тоже без какой-либо обработки, на которую можно повлиять. В результате, даже делая модуль на 30 языках, название модуля всегда будет на 1, что не красит продукт.

Решение проблемы лежит на поверхности - обрабатывать значения из БД и выводить локализированную версию. И решается это всего в 3 строчки. Давайте добавим их.

Для начала запишем в БД что-нибудь уникальное, к примеру:
INSERT INTO `dle_admin_sections` (`name`, `title`, `descr`, `icon`, `allow_groups`) VALUES ('gcallback', '__G_CALLBACK_TITLE__', '__G_CALLBACK_DESCR__', 'gcallback.png', '1')

Т.е. именем модуля у нас будет __G_CALLBACK_TITLE__, а заголовком __G_CALLBACK_DESCR__ . Теперь панель администратора выглядит уж больно не приглядно.


Давайте добавим в файл локализации названия на русском и английском языках, для этого внесём правки в /language/.../adminpanel.lng (увы, автоподгрузки внешних языковых файлов у нас тоже нет). Просто добавим секцию с нашими переменными:
//Callback by gorbushka.name
   '__G_CALLBACK_TITLE__'       => "Обратный звонок",                                                              // Title for DLE admin panel
   '__G_CALLBACK_DESCR__'       => "Модуль управления заявками на обратный звонок от Ваших клиентов",              // Description for DLE admin panel

Сохраним, но что-то нам это ничего не дало. Конечно, мы завели в БД переменные вместо названия, добавили их значения в лег-файл, теперь надо добавить обработку этой радости в сам DLE. И делается это, как я говорил, в 3 строки, правда в 2 файлах.

Для отображения всех модулей в файле /engine/inc/options.php находим:
$row['title'] = strip_tags(stripslashes($row['title']));
$row['descr'] = strip_tags(stripslashes($row['descr']));

И заменяем на:
if ($lang[$row['title']] != '') $row['title'] = strip_tags(stripslashes($lang[$row['title']]));
else $row['title'] = strip_tags(stripslashes($row['title']));
if ($lang[$row['descr']] != '') $row['descr'] = strip_tags(stripslashes($lang[$row['descr']]));
else $row['descr'] = strip_tags(stripslashes($row['descr']));

Теперь правим список в левой части страницы (да, он грузится из БД отдельно - кэш наше всё): в /engine/skins/default.skin.php находим:
$row['title'] = strip_tags(stripslashes($row['title']));

Меняем на:
if ($lang[$row['title']] != '') $row['title'] = strip_tags(stripslashes($lang[$row['title']]));
else $row['title'] = strip_tags(stripslashes($row['title']));

Т.е. мы добавили проверку на существование в lang-файле того, что записано в БД. Если есть - заменяем, если нет - оставляем как есть. Не трудно посчитать, что мы действительно добавили всего 3 строки. И теперь панель администратора выглядит куда лучше.



Всего 3 строки и Ваш продукт вызывает куда меньше отвращения у клиентов, говорящих на другом языке.
 
Версия DLE: 11.0-11.1
Автор: Горбушка
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.