/** * This method returns a singleton instance of __I18n * * @return __I18n A singleton reference to the __I18n */ public static function &getInstance() { if (self::$_instance == null) { // Use "Lazy initialization" self::$_instance = new __I18n(); //once the __I18n has been built, let's negociate the locale with the client: self::$_instance->_negociateLocale(); } return self::$_instance; }
public function negociateLocale() { $front_controller = __FrontController::getInstance(); $request = $front_controller->getRequest(); $app_name = md5(__ApplicationContext::getInstance()->getPropertyContent('APP_NAME')); if ($request != null && $request->hasCookie('__LOCALE__' . $app_name)) { $locale_code = $request->getCookie('__LOCALE__' . $app_name); $return_value = new __Locale($locale_code); } else { if (key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER)) { $http_accept_language = $_SERVER['HTTP_ACCEPT_LANGUAGE']; } if (!empty($http_accept_language)) { //by default: if (class_exists('Locale')) { $accepted_locale = Locale::acceptFromHttp($http_accept_language); $candidate_language = Locale::getPrimaryLanguage($accepted_locale); } else { $accepted_languages = preg_split('/,/', $http_accept_language); $candidate_language = $this->_getLanguageIsoCode($accepted_languages[0]); } } if (isset($candidate_language) && __I18n::getInstance()->isSupportedLanguage($candidate_language)) { $primary_language = $candidate_language; } else { $primary_language = __I18n::getInstance()->getDefaultLanguageIsoCode(); } $return_value = new __Locale($primary_language); $auth_cookie = new __Cookie('__LOCALE__' . $app_name, $primary_language, session_cache_expire() * 60, '/'); $response = __FrontController::getInstance()->getResponse(); if ($response != null) { $response->addCookie($auth_cookie); } } return $return_value; }
public function addResource(__ResourceBase &$resource, $language_iso_code = null) { if ($language_iso_code == null) { $language_iso_code = __I18n::getInstance()->getLocale()->getLanguageIsoCode(); } $this->_resource_table->addResource($resource, $language_iso_code); }