Помощь Не переключаются языки системных сообщений

Тема в разделе "DLE", создана пользователем Prof1, 29 май 2015.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Модераторы: killoff
  1. Prof1

    Prof1 Создатель

    Регистр.:
    21 янв 2015
    Сообщения:
    22
    Симпатии:
    2
    Сделал сайт на DLE 10.4 на 3 языках - русском, английском и украинском. Соответственно, сделал 3 шаблона - Russian, English, Ukrainian. При переключении языков (шаблонов) при помощи {changeskin}всё работает замечательно. Если же использовать ссылки типа site.ua/index.php?action_skin_change=yes&skin_name=ИМЯ_ШАБЛОНА, то шаблоны переключаются, а язык системных сообщений остается такой, какой выбран по умолчанию в админке. Шаблоны связаны со своими языковыми файлами в админке. Возможно ли это как-то исправить?
     
  2. killoff

    killoff CD тихо, и не DVD меня ;)

    Moderator
    Регистр.:
    13 май 2008
    Сообщения:
    2.166
    Симпатии:
    796
    Как вариант попробуй отключить кеширование в админке ДЛЕ, возможно поможет если по {changeskin} все работает нормально...
     
  3. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.175
    Симпатии:
    2.195
    Вот код, который отвечает за смену шаблона:
    PHP:
    elseif (isset ( $_REQUEST['action_skin_change'] )) {

        
    $_REQUEST['skin_name'] = trimtotranslit($_REQUEST['skin_name'], falsefalse) );

        if (
    $_REQUEST['skin_name'] != '' AND @is_dir ROOT_DIR '/templates/' $_REQUEST['skin_name'] ) ) {
            
    $config['skin'] = $_REQUEST['skin_name'];
            
    set_cookie "dle_skin"$_REQUEST['skin_name'], 365 );
        }

    }
    Как видим, метод получения данных не имеет значения - что GET, что POST запрос.

    Таким образом, если Вы не допустили ошибок в названии шаблона (Регистр имеет значения) - ошибка явно связана с настройками...

    Идём в файл /engine/data/config.php и ищем:
    'lang_Default' => "Russian", - где Default - Ваш шаблон, Russian - язык.

    Вот код подключения языка:
    PHP:
    if (isset ( $config["lang_" $config['skin']] ) and $config["lang_" $config['skin']] != '') {
        if ( 
    file_existsROOT_DIR '/language/' $config["lang_" $config['skin']] . '/website.lng' ) ) {
            include_once 
    ROOT_DIR '/language/' $config["lang_" $config['skin']] . '/website.lng';
        } else die(
    "Language file not found");
    } else {

        include_once 
    ROOT_DIR '/language/' $config['langs'] . '/website.lng';

    }
    Как видим, язык выбирается по алгоритму: если в файле настроек есть 'lang_Default' => "Russian", - то выбирает указанный язык, иначе - выбираем стандартный.

    В админке всё интереснее... Это закодированный init.php:
    PHP:
    $selected_language $config['langs'];

    if (isset( 
    $_POST['selected_language'] )) {

        
    $_POST['selected_language'] = totranslit$_POST['selected_language'], falsefalse );

        if (
    $_POST['selected_language'] != "" AND @is_dir ROOT_DIR '/language/' $_POST['selected_language'] )) {
            
    $selected_language $_POST['selected_language'];
            
    set_cookie "selected_language"$selected_language365 );

        }

    } elseif (isset( 
    $_COOKIE['selected_language'] )) { 

        
    $_COOKIE['selected_language'] = totranslit$_COOKIE['selected_language'], falsefalse );

        if (
    $_COOKIE['selected_language'] != "" AND @is_dir ROOT_DIR '/language/' $_COOKIE['selected_language'] )) {
            
    $selected_language $_COOKIE['selected_language'];
        }

    }
    if ( 
    file_existsROOT_DIR '/language/' $selected_language '/adminpanel.lng' ) ) {
        require_once (
    ROOT_DIR '/language/' $selected_language '/adminpanel.lng');
    } else die(
    "Language file not found");
    Мы видим, что язык меняется только по куке $_COOKIE['selected_language'] и $_POST['selected_language']... При смене шаблона в пользовательской части, кука не меняется... Посему и смеша пользовательского шаблона никак не отразится на язык админ панели...

    Почему отрабатывала смена при использовании выпадающего списка - ответить не могу... В коде этого нет...

    В общем Вам после set_cookie ( "dle_skin", $_REQUEST['skin_name'], 365 ); а лучше после include_once ROOT_DIR . '/language/' . $config["lang_" . $config['skin']] . '/website.lng'; надо ещё и $_COOKIE['selected_language'] генерировать...

    P.s. код взят из DataLife Engine 10.4 (с) Все права похерены...
     
    Prof1 и SPoX нравится это.
  4. Prof1

    Prof1 Создатель

    Регистр.:
    21 янв 2015
    Сообщения:
    22
    Симпатии:
    2
    Спасибо за быстрый ответ. Кеширование отключил - проблема пока осталась. Вот адрес сайта - Перейти по ссылке, светофор слева - это ссылки, которые, к сожалению, только переключают темы. Внизу страницы - поле с выбором (это {changeskin} ) - там все работает нормально.
    <?PHP

    //System Configurations

    $config = array (

    'home_title' => 'Кафедра ОТСиС',

    'http_home_url' => 'Перейти по ссылке',

    'charset' => 'utf-8',

    'description' => 'Сайт кафедры Охрана труда, стандартизация и сертификация',

    'keywords' => 'Охрана труда, БЖД, Метрология, Стандартизация, Управление качеством',

    'short_title' => 'Сайт кафедры ОТСиС',

    'start_site' => '1',

    'date_adjust' => 'Europe/Kiev',

    'allow_alt_url' => '1',

    'seo_type' => '2',

    'seo_control' => '1',

    'langs' => 'Russian',

    'skin' => 'Ukrainian',

    'allow_admin_wysiwyg' => '2',

    'allow_static_wysiwyg' => '0',

    'allow_complaint_mail' => '1',

    'offline_reason' => 'Сайт находится на текущей реконструкции, после завершения всех работ сайт будет открыт.<br /><br />Приносим вам свои извинения за доставленные неудобства.',

    'admin_path' => 'admin.php',

    'extra_login' => '0',

    'admin_allowed_ip' => '',

    'login_log' => '5',

    'login_ban_timeout' => '20',

    'ip_control' => '1',

    'log_hash' => '1',

    'sec_addnews' => '2',

    'spam_api_key' => '',

    'allow_recaptcha' => '0',

    'recaptcha_public_key' => '6LfoOroSAAAAAEg7PViyas0nRqCN9nIztKxWcDp_',

    'recaptcha_private_key' => '6LfoOroSAAAAAMgMr_BTRMZy20PFir0iGT2OQYZJ',

    'recaptcha_theme' => 'clean',

    'adminlog_maxdays' => '30',

    'news_number' => '10',

    'search_number' => '10',

    'related_number' => '5',

    'top_number' => '10',

    'tags_number' => '40',

    'max_moderation' => '0',

    'news_restricted' => '0',

    'category_separator' => '/',

    'speedbar_separator' => '&raquo;',

    'smilies' => 'wink,winked,smile,am,belay,feel,fellow,laughing,lol,love,no,recourse,request,sad,tongue,wassat,crying,what,bully,angry',

    'timestamp_active' => 'j-m-Y, H:i',

    'news_navigation' => '1',

    'news_sort' => 'date',

    'news_msort' => 'DESC',

    'catalog_sort' => 'date',

    'catalog_msort' => 'DESC',

    'image_align' => 'left',

    'mail_news' => '1',

    'show_sub_cats' => '1',

    'allow_search_print' => '1',

    'allow_add_tags' => '1',

    'allow_share' => '1',

    'short_rating' => '1',

    'rating_type' => '1',

    'allow_site_wysiwyg' => '2',

    'allow_quick_wysiwyg' => '2',

    'allow_comments' => '1',

    'comments_restricted' => '0',

    'allow_subscribe' => '1',

    'allow_combine' => '1',

    'max_comments_days' => '0',

    'comments_minlen' => '10',

    'comments_maxlen' => '3000',

    'comm_nummers' => '30',

    'comm_msort' => 'ASC',

    'flood_time' => '30',

    'auto_wrap' => '80',

    'timestamp_comment' => 'j F Y H:i',

    'allow_search_link' => '1',

    'mail_comments' => '1',

    'allow_comments_rating' => '1',

    'comments_rating_type' => '2',

    'allow_comments_wysiwyg' => '1',

    'clear_cache' => '0',

    'cache_type' => '0',

    'memcache_server' => 'localhost:11211',

    'allow_comments_cache' => '1',

    'full_search' => '0',

    'allow_registration' => '1',

    'allow_multi_category' => '1',

    'no_date' => '1',

    'allow_fixed' => '1',

    'speedbar' => '1',

    'allow_banner' => '1',

    'allow_votes' => '1',

    'allow_read_count' => '1',

    'allow_calendar' => '1',

    'allow_archives' => '1',

    'allow_change_sort' => '1',

    'comments_ajax' => '1',

    'online_status' => '1',

    'files_allow' => '1',

    'max_file_count' => '0',

    'files_force' => '1',

    'files_antileech' => '1',

    'files_count' => '1',

    'admin_mail' => 'prof.kharkov.ua@rambler.ru',

    'mail_title' => '',

    'mail_metod' => 'php',

    'mail_additional' => '',

    'smtp_host' => 'localhost',

    'smtp_port' => '465',

    'smtp_user' => '',

    'smtp_pass' => '',

    'smtp_mail' => 'prof.kharkov.ua@rambler.ru',

    'smtp_helo' => 'HELO',

    'auth_metod' => '0',

    'reg_group' => '4',

    'registration_type' => '0',

    'allow_social' => '1',

    'reg_multi_ip' => '1',

    'auth_domain' => '1',

    'registration_rules' => '1',

    'allow_sec_code' => '1',

    'allow_skin_change' => '1',

    'mail_pm' => '1',

    'max_users' => '0',

    'max_users_day' => '0',

    'max_up_side' => '0',

    'o_seite' => '0',

    'max_up_size' => '800',

    'max_image_days' => '5',

    'allow_watermark' => '1',

    'max_watermark' => '150',

    'watermark_seite' => '4',

    'max_image' => '200',

    'medium_image' => '450',

    't_seite' => '0',

    'jpeg_quality' => '85',

    'avatar_size' => '100',

    'tag_img_width' => '0',

    'thumb_dimming' => '1',

    'thumb_gallery' => '1',

    'outlinetype' => '0',

    'allow_smart_format' => '1',

    'mobile_news' => '10',

    'allow_rss' => '1',

    'rss_mtype' => '0',

    'rss_number' => '10',

    'rss_format' => '1',

    'site_offline' => '0',

    'news_future' => '0',

    'create_metatags' => '0',

    'create_catalog' => '0',

    'parse_links' => '0',

    'related_only_cats' => '0',

    'hide_full_link' => '0',

    'js_min' => '0',

    'fast_search' => '0',

    'related_news' => '0',

    'allow_cmod' => '0',

    'cache_count' => '0',

    'rss_informer' => '0',

    'allow_tags' => '0',

    'allow_links' => '0',

    'allow_cache' => '0',

    'allow_gzip' => '0',

    'allow_topnews' => '0',

    'use_admin_mail' => '0',

    'mail_bcc' => '0',

    'reg_question' => '0',

    'allow_smartphone' => '0',

    'allow_smart_images' => '0',

    'allow_smart_video' => '0',

    'comments_lazyload' => '0',

    'auth_only_social' => '0',

    'version_id' => '10.4',

    'key' => '8febcf214da3317669dfa91972fe10e6',

    'lang_Ukrainian' => 'Ukrainian',

    'lang_Russian' => 'Russian',

    'lang_English' => 'English',

    );

    ?>
    Сейчас буду изучать информацию, которую предоставил Горбушка. Меня больше интересует не админпанель - там язык не принципиален. Я имел в виду системные сообщения - это календарь, порядок сортировки новостей
    [​IMG]
    [​IMG]
    [​IMG]
     
    Последнее редактирование: 30 май 2015
  5. killoff

    killoff CD тихо, и не DVD меня ;)

    Moderator
    Регистр.:
    13 май 2008
    Сообщения:
    2.166
    Симпатии:
    796
    сейчас открыл этот сайт, побродил по ссылкам, и всё работает нормально, что менять язык по смене скина что по "светофору"...
     
  6. Prof1

    Prof1 Создатель

    Регистр.:
    21 янв 2015
    Сообщения:
    22
    Симпатии:
    2
    Сейчас в качестве языка по умолчанию стоит русский язык. И у меня, как показано в скриншотах выше, тема полностью изменяется и по смене скина и по светофору. Но то, что выделено красным цветом на скриншотах, переключается исключительно через смену скина. Пробовал на разных компьютерах и в браузерах - Chrome, Opera, FireFox. Если у Вас всё переключается, то я в замешательстве.
    Скорее всего, ответ кроется где-то внутри engine/init.php . Но где именно - понять не могу
     
    Последнее редактирование: 30 май 2015
  7. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.175
    Симпатии:
    2.195
    Всё немного не так... КЭШ необходимо очистить и вырубить - тогда всё будет Ок...

    Не буду углубляться в код, но календарь и прочие элементы кэшируются отдельно от новостей и т.д. и из-за этого могут отдаваться из кэша со старым языком... Ну а сам кэш может генерироваться под рабочую группу, а значит мы, гости, кэш уже не видим (отключён), а ты, админ, видишь ещё сохранённый тогда...
     
  8. Prof1

    Prof1 Создатель

    Регистр.:
    21 янв 2015
    Сообщения:
    22
    Симпатии:
    2
    Всем спасибо за помощь. Кэш очищал и отключал - не помогло. Помогло замечание от Горбушка:
    В ссылках у меня было - index.php?action_skin_change=yes&skin_name=english, а надо было - index.php?action_skin_change=yes&skin_name=English. Самое интересное, шаблоны переключались вне зависимости от регистра, а для переключения языка системных сообщений регистр букв имеет значение. Сейчас вроде всё заработало.
     
  9. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.175
    Симпатии:
    2.195
    Скорее всего, у Вас сайт сейчас на Windows :) Дело в том, что в Windows названия папкой регистро независимые (на самом деле не совсем так, но нас это не касается), а PHP переменные регистрозависимые... Вот он папку шаблона нашёл, а переменную в конфиге - нет. :)

    Возможно и на хостинге так же будет - надо код подключения папки смотреть...
     
    Prof1 нравится это.
  10. Prof1

    Prof1 Создатель

    Регистр.:
    21 янв 2015
    Сообщения:
    22
    Симпатии:
    2
    Абсолютно правильно. Сайт нa домашнем хостинге - OpenServer на Windows Server 2008 r2.
    Самое интересное, после отключенния / чистки кэша перестала высвечиваться главная страница. То есть, если обращаться по адресу - Перейти по ссылке , то получается белая страница, если же обращаться по ссылкам (как прописано в .htaccess) :
    или соответственно:
    то всё загружается нормально.
    При включении всех сообщений об ошибках при обращении по адресу Перейти по ссылке высвечивается следующее:
    Вот часть файла engine\init.php:
    [​IMG]

    Как я понял, теперь шаблон по умолчанию не выбирается.
    Попробовал и в ссылках и в названиях шаблонов использовать только нижний регистр - главная страница появилась, но зато язык системных сообщений опять перестал переключаться.
    В файле engine\data\config.php исправил названия шаблонов на нижний регистр - системные сообщения переключаются, нет главной страницы. Опять размышляю...
     
    Последнее редактирование: 31 май 2015