public function _initLocale() { $request = JO_Request::getInstance(); if ($request->getModule() == 'install') { return ''; } $locale_get = JO_Locale::findLocale(); $loc = new WM_Locale(); $languages = $loc->getLanguages(); $detect = ''; $languages_tmp = array(); foreach ($languages as $language) { // $lang = explode(',', $language['locale']); // if(in_array($locale_get, $lang)) { // $detect = $language['language_id']; // } $languages_tmp[$language['language_id']] = $language; } $code = ''; if ($request->getRequest('language_id') && array_key_exists($request->getRequest('language_id'), $languages_tmp)) { $code = $request->getRequest('language_id'); } elseif (JO_Session::get('language_id') && array_key_exists(JO_Session::get('language_id'), $languages_tmp)) { $code = JO_Session::get('language_id'); } elseif ($request->getCookie('language_id') && array_key_exists($request->getCookie('language_id'), $languages_tmp)) { $code = $request->getCookie('language_id'); } elseif ($detect) { $code = $detect; } elseif (JO_Registry::isRegistered('config_language_id')) { $code = JO_Registry::get('config_language_id'); } // if($request->getModule() == 'admin') { // $code = JO_Registry::get('config_language_id'); // } if (!$code) { throw new JO_Exception("No default language found"); } if (JO_Session::get('language_id') != $code) { JO_Session::set('language_id', $code); } if ($request->getCookie('language_id') != $code) { setcookie('language_id', $code, time() + 60 * 60 * 24 * 30, '/', '.' . $request->getDomain()); } if (isset($languages_tmp[$code])) { JO_Registry::set('config_language_id', $languages_tmp[$code]['language_id']); JO_Registry::set('config_language', $languages_tmp[$code]['code']); JO_Registry::set('JO_Locale', new JO_Locale($languages_tmp[$code]['locale_territory'])); setlocale(LC_TIME, $languages_tmp[$code]['locale_territory'] . '.utf-8'); } }