Баг :Локализация настроек (названий конфигов) плагинов
Статус :Исправлено
Серьёзность :Нормальное
Репортер :Amro 02-06-12 14:39
Обновил :Amro 02-06-12 14:40
КатегорияГлавное
Версия :170
Частота :Постоянно
Пофиксено в :171
Детали :

Функции sed_plugin_install() модифицирована. Сделано 2 вставки:

Первая цепляет lang файл, если таковой имеется:

		$path_lang_setup	= "plugins/".$pl."/lang/".$pl.".".$cfg['defaultlang'].".lang.php";
			if (file_exists($path_lang_setup))
		{ require($path_lang_setup); }	

Вторая заменяет названия конфигов из lang файла:

  if (isset($L['setup_cfg_'.$i])) { $line[4] = $L['setup_cfg_'.$i]; }

Собственно в plugins/названиеплагина/lang/названиеплагина.языкпоумолч.lang.php теперь можно дописывать так (на примере локализации конфигов CKEditor):

$L['setup_cfg_ckeditor_skin'] = "Скин по-умолчанию";
$L['setup_cfg_ckeditor_lang'] = "Язык интерфеса редактора";
$L['setup_cfg_ckeditor_color_toolbar'] = "Цвет тулбара";
$L['setup_cfg_ckeditor_other_textarea'] = "Использовать редактор для всех текстовых полей";

т.е. 

$L['setup_cfg_название_опции'] = "Локализация опции";
Затронутые части :functions.admin.php

История и комментарии :

20-10-12 15:18   Amro

В 173 эти вставки будут удалены.

В lang файлы можно будет как по стандарту вписывать локализацию, как это сделано например в admin.lang.php.

Т.е. для плагина к примеру CKeditor будет так:

$L['cfg_ckeditor_skin'] =  array("Скин по-умолчанию", "");
$L['cfg_ckeditor_lang'] =  array("Язык интерфеса редактора", "");
$L['cfg_ckeditor_color_toolbar'] =  array("Цвет тулбара", "");
$L['cfg_ckeditor_other_textarea'] =  array("Использовать редактор для всех текстовых полей", "");
$L['cfg_ckeditor_other_toolbar'] =  array("Тулбар для других текстовых полей", "");
$L['cfg_newpagetext'] =  array("Тулбар для режима добавления страниц", "");
$L['cfg_rpagetext'] =  array("Тулбар для режима редактирования страниц", "");
$L['cfg_newpmtext'] =  array("Тулбар для личных сообщений", "");
$L['cfg_rusertext'] =  array("Тулбар для подписи пользователя", "");
$L['cfg_rtext'] =  array("Тулбар для комментариев", "");
$L['cfg_newmsg'] =  array("Тулбар для форума", "");
$L['cfg_newpagetext_height'] =  array("Высота текстового поля для режима добавления страниц", "");
$L['cfg_rpagetext_height'] =  array("Высота текстового поля для режима редактирования страниц", "");
$L['cfg_newpmtext_height'] =  array("Высота текстового поля для личных сообщений", "");
$L['cfg_rusertext_height'] =  array("Высота текстового поля для подписи пользователя", "");
$L['cfg_rtext_height'] =  array("Высота текстового поля для комментариев", "");
$L['cfg_newmsg_height'] =  array("Высота текстового поля для форума", "");
$L['cfg_ckeditor_other_height'] =  array("Высота для других текстовых полей", "");
$L['cfg_ckeditor_global_toolbar'] =  array("Глобальный тулбар для группы ", "");
$L['cfg_ckeditor_detectlang'] =  array("Определять язык интерфейса редактора из профиля пользователя", "");

А непосредственно в admin.config.inc.php

будут цеплятся lang фалы плугов и на лету происходить локализация, т.е. в зависимости от языка в профиле пользователя:

if ($o == 'plug' && !empty($p))  //New in v173
  {
    $plug_langfile = "plugins/".$p."/lang/".$p.".".$usr['lang'].".lang.php";
    if (@file_exists($plug_langfile)) { require($plug_langfile); }
  }