Beispiel #1
0
 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');
     }
 }