Index: branches/5.0.x/core/units/languages/languages_event_handler.php =================================================================== diff -u -N -r12960 -r12970 --- branches/5.0.x/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 12960) +++ branches/5.0.x/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 12970) @@ -1,6 +1,6 @@ SetDBField('CopyFromLanguage', $primary_lang_id); } - function OnChangeLanguage(&$event) { - $this->Application->SetVar('m_lang', $this->Application->GetVar('language')); + $language_id = $this->Application->GetVar('language'); if ($this->Application->isAdmin) { + // admin data only + $this->Application->SetVar('m_lang', $language_id); + + // set new language for this session (admin interface only) + $this->Application->Session->SetField('Language', $language_id); + + // remember last user language in administrative console + if ($this->Application->RecallVar('user_id') == -1) { + $this->Application->StorePersistentVar('AdminLanguage', $language_id); + } + else { + $object =& $this->Application->recallObject('u.current'); + /* @var $object kDBItem */ + + $object->SetDBField('AdminLanguage', $language_id); + $object->Update(); + } + // without this language change in admin will cause erase of last remembered tree section $this->Application->SetVar('skip_last_template', 1); } - elseif (MOD_REWRITE) { - $mod_rewrite_helper =& $this->Application->recallObject('ModRewriteHelper'); - /* @var $mod_rewrite_helper kModRewriteHelper */ + else { + // changing language on Front-End + $this->Application->SetVar('m_lang', $language_id); - $mod_rewrite_helper->removePages(); - } + if (MOD_REWRITE) { + $mod_rewrite_helper =& $this->Application->recallObject('ModRewriteHelper'); + /* @var $mod_rewrite_helper kModRewriteHelper */ - //$this->Application->LinkVar('language', 'm_lang'); + $mod_rewrite_helper->removePages(); + } + } } /**