Автор Сообщение
White Light

Администратор

Онлайн статус

18 сообщений
http://www.white-light.com.ua

#30   2010-09-05 10:48 GMT      
Мультиязычность



   Описание:
 Этот плагин добавляет возможность переключать язык системы и скин для текущей сессии пользователя.


   Установка:
 Распаковываем архив и копируем всю папку "system/lang" в одноименную папку Вашего сайта - это дополнительные языковые пакеты системы. Из папки "plugins" копируем сам плагин "multilang" в Вашу папку "plugins", а также дополнительные языки только установленных плагинов.
 Ваш скин переименовываем, добавив к нему "-ru" (без кавычек естественно...), и тут же копируем его три раза, меняя "ru" на "ua", затем - на "en" и напоследок - на "de". Внутри каждой из вновь созданных папок переименовываем файлы, имеющие в своём имени название скина, на новое имя, то есть на имя папки, однако, в lang-файлах дополнительно меняем вторую секцию имени на префикс папки (для примера в архиве в папке "skins" я вложил структуру папок и файлов). Копируем картинки флажков из папки "skins/white-light-ru/img" во все папки Ваших скинов, а также добавляем нижеприведённый код во все header.tpl
Код:
<a href="plug.php?e=multilang&l=en"><img id="lang-img" onmouseover="this.src='skins/{PHP.skin}/img/en.gif'" onmouseout="this.src='skins/{PHP.skin}/img/en.png'" src="skins/{PHP.skin}/img/en.png" height="15" width="25"/></a>
<a href="plug.php?e=multilang&l=de"><img id="lang-img" onmouseover="this.src='skins/{PHP.skin}/img/de.gif'" onmouseout="this.src='skins/{PHP.skin}/img/de.png'" src="skins/{PHP.skin}/img/de.png" height="15" width="25"/></a>
<a href="plug.php?e=multilang&l=ua"><img id="lang-img" onmouseover="this.src='skins/{PHP.skin}/img/ua.gif'" onmouseout="this.src='skins/{PHP.skin}/img/ua.png'" src="skins/{PHP.skin}/img/ua.png" height="15" width="25"/></a>
<a href="plug.php?e=multilang&l=ru"><img id="lang-img" onmouseover="this.src='skins/{PHP.skin}/img/ru.gif'" onmouseout="this.src='skins/{PHP.skin}/img/ru.png'" src="skins/{PHP.skin}/img/ru.png" height="15" width="25"/></a>

 Переносим информацию из языковых файлов моего архива в соответствующие языковые файлы Ваших скинов.
 В файле config.php, расположенном в папке "datas", добавляем к названию дефолтного скина "-ru" (без кавычек).
 Открываем common.php, расположенный в папке "system", и ищем секцию
/* ======== User/Guest ======== */
а в ней строчки (217-я и 218-я строчки в оригинальном файле)
Код:
$usr['skin'] = ($cfg['forcedefaultskin']) ? $cfg['defaultskin'] : $row['user_skin'];
$usr['lang'] = ($cfg['forcedefaultlang']) ? $cfg['defaultlang'] : $row['user_lang'];

и заменяем их на код
Код:
//  hack_lang_and_skin
      if (!empty($_SESSION['lng']) || !empty($_GET['lng']))
      {
        if (!empty($_GET['lng'])) $_SESSION['lng']= $_GET['lng'];
        $usr['lang']= $_SESSION['lng'];
        $row['user_lang']= $_SESSION['lng'];
        $thisskin= substr($cfg['defaultskin'], 0, -2);
        $usr['skin']= "".$thisskin.$_SESSION['lng']."";
        $row['user_skin']= "".$thisskin.$_SESSION['lng']."";
      }
      $usr['lang'] = (empty($usr['lang'])) ? $cfg['defaultlang'] : $row['user_lang'];
      $usr['skin'] = (empty($usr['skin'])) ? $cfg['defaultskin'] : $usr['skin'];
//  end_of_hack_lang_and_skin

 В этой же секции заменяем часть кода (254-259 строчки в оригинальном файле)
Код:
if ($usr['id']==0)
{
$usr['auth'] = sed_auth_build(0);
$usr['skin'] = (empty($usr['skin'])) ? $cfg['defaultskin'] : $usr[`skin`];
$usr['lang'] = $cfg['defaultlang'];
}

на
Код:
//  hack_lang_and_skin
if ($usr['level']==0)
{
  $usr['auth'] = sed_auth_build(0);
    if (!empty($_SESSION['lng']) || !empty($_GET['lng']))
      {
        if (!empty($_GET['lng'])) $_SESSION['lng']= $_GET['lng'];
        $usr['lang']= $_SESSION['lng'];
        $row['user_lang']= $_SESSION['lng'];
        $thisskin= substr($cfg['defaultskin'], 0, -2);
        $usr['skin']= "".$thisskin.$_SESSION['lng']."";
        $row['user_skin']= "".$thisskin.$_SESSION['lng']."";
      }
  $usr['lang'] = ($cfg['forcedefaultlang']) ? $cfg['defaultlang'] : $row['user_lang'];
  $usr['skin'] = (empty($usr['skin'])) ? $cfg['defaultskin'] : $usr['skin'];
}
//  end_of_hack_lang_and_skin

 Устанавливаем плагин "Multi Lang" через Админ-панель/Плагины.
 Вывод текста для разных языков осуществляется внутри тега [langsel][ru][/ru][ua][/ua][de][/de][en][/en][/langsel], а картинок - с помощью скинов, которые переключаются вместе с языком.
 Теперь добавим этот тэг в текстбоксер. Заменяем картинку bbcodes.gif в папке "plugins/textboxer2/themes" на файл из папки моего архива "textboxer2/themes". Открываем файл functions.php в папке "system" и вставляем после кода (1853-я строчка оригинального файла)
Код:
$result[]=array('[style=9][/style]','style9');

код
Код:
$$result[]=array('[langsel]\n[ru][/ru]\n[ua][/ua]\n[de][/de]\n[en][/en][/langsel]','langsel');

 Открываем файл textboxer2.inc.php в папке "plugins/textboxer2/inc" и после кода (81-я строчка оригинального файла)
Код:
// 'emailp',

дописываем код
Код:
'langsel',

В этом же файле после кода (150-я строчка оригинального файла)
Код:
$res['emailp'] = array('[email=]', '[/email]', 22);

дописываем
Код:
$res['langsel'] = array('[langsel]\n[ru]', '[/ru]\n[ua][/ua]\n[de][/de]\n[en][/en]\n[/langsel]', 51);

И дальше в этом файле после кода (289-я строчка оригинального файла)
Код:
'",email:"'.$tbL['tb2_email'].

добавляем
Код:
'",langsel:"'.$tbL['tb2_langsel'].

 Открываем файл tb2.page.add.php в папке "plugins/textboxer2" и после кода (72-я строчка оригинального файла)
Код:
// 'emailp',

вписываем
Код:
'langsel',

 То же самое проделываем с файлом tb2.page.edit.php в этой же папке.
 Теперь нам доступен этот тэг в текстбоксере при добавлении и редактировании страниц.
 Чтобы подключить языковые файлы к текстбоксеру следует в файлах tb2.comments.php tb2.forums.editpost.php tb2.forums.newtopic.php tb2.forums.posts.php tb2.page.add.php tb2.page.edit.php tb2.pm.send.php tb2.users.edit.php tb2.users.profile.php, расположенных в папке "plugins/textboxer2", заменить код
Код:
require_once("plugins/textboxer2/inc/textboxer2.lang.php");

на
Код:
if (empty($_SESSION['lng']))
  {
    $tb2lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
  }
else
  {
    $tb2lang = $_SESSION['lng'];
  }
require_once("plugins/textboxer2/lang/textboxer2.$tb2lang.lang.php");



Скачать

отредактировал(а) White Light: 2001-05-18 20:34 GMT

Зарегистрировавшись или войдя в систему, вы сможете оставлять сообщения на форуме.