Перейти к содержанию
CMSTOOLS.org - форум поддержки и развития CMS

Рекомендуемые сообщения

Так как из-за моего косяка, а именно то что я уехал в другой город и забыл обновленный движок я обещал пару тем по улучшению, и так.

(Более подробнее читайте в главной теме Vii Engine Lite Updated)

 

Система лангов которая сейчас в vii engine 2.0, а именно возьму этот кусок кода:

//Смена языка
if ($_GET['act'] == 'chage_lang') {
    $langId = intval($_GET['id']);
    $config['lang_list'] = nl2br($config['lang_list']);
    $expLangList = explode('<br />', $config['lang_list']);
    $numLangs = count($expLangList);
    if ($langId > 0 AND $langId <= $numLangs) {
        //Меняем язык
        set_cookie("lang", $langId, 365);
    }
    $langReferer = $_SERVER['HTTP_REFERER'];
    header("Location: {$langReferer}");
}
//lang
$config['lang_list'] = nl2br($config['lang_list']);
$expLangList = explode('<br />', $config['lang_list']);
$numLangs = count($expLangList);
$useLang = intval($_COOKIE['lang']);
if ($useLang <= 0) $useLang = 1;
$cil = 0;
foreach ($expLangList as $expLangData) {
    $cil++;
    $expLangName = explode(' | ', $expLangData);
    if ($cil == $useLang AND $expLangName[0]) {
        $rMyLang = $expLangName[0];
        $checkLang = $expLangName[1];
    }
}
if (!$checkLang) {
    $rMyLang = 'Русский';
    $checkLang = 'Russian';
}
include ROOT_DIR . '/lang/' . $checkLang . '/site.lng';

Выкидываем его нах**.

 

Делаем в два раза проще. В ядре вместо того кода я предлагаю следующий вариант:

Пример на  куках:

/* PHP (init.php) */

// LANG
isset($_COOKIE['lang']) ? $_LANG = $_COOKIE['lang'] : $_LANG = 'ru';
include ROOT_DIR.'/lang/'.$_LANG.'.lng';
- в папке lang та что в корне надо из папок которые есть там например Russian достать файл site.lng и переименовать его в ru, en и закинуть его просто в папку lang без папки с названием языка. 

/* JS */

// LANG
function SetLang(c_name, value, expiredays) {
	var exdate = new Date();
		exdate.setDate(exdate.getDate()+expiredays);
	document.cookie = c_name +"="+escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
	location.reload();
}

Что бы сменить язык, пример:
в шаблоне на нужную вам button или select повесить onclick="SetLang('lang', 'Имя языка (ru,en)', 'Время в днях');"

P.S. COOKIE можно заменить на SESSION если ваш опыт в php этого позволяет.

 

Но это не все. Так как мы вырезали старые ланги нужно написать отдельный модуль смены языка, ну и в админке чуть переписать и в шаблоне.
Обращаюсь к пользователю Mario что бы дописал и выложил новый полноценный модуль лангов. Если что могу помочь. Я бы сам написал но нету времени занимаюсь проектами по работе.

Изменено пользователем Edward Nemirovskiy
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...