3 строки для мультиязычности модулей
Представляем вам такой хак 3 строки для мультиязычности модулей для DLE 11.0 - 11.1 после установке которого, разработчик в упор не хотят сделать мультиязычность в движке, а ведь до полной поддержки нескольких языков в самой панели администратора осталась совсем немного, названия и описания модуля. И это решается это в 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__ . Теперь панель администратора выглядит уж больно не приглядно. ( Смотрите скриншот 2 )
Давайте добавим в файл локализации названия на русском и английском языках, для этого внесём правки в /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, 4 )
Всего 3 строки и Ваш продукт вызывает куда меньше отвращения у клиентов, говорящих на другом языке.
- Версия DLE: 11.0 - 11.1
- Кодировка: utf-8
- Категория: Хаки
- Автор: Горбушка
- Комплектация: модуль, инструкция
Войдите на сайт
Все собранные средства будут переданы автору этой статьи - DEN
Сумма перевода от 10.00 рублей