Exemplo n.º 1
0
 public function onBootstrap(MvcEvent $e)
 {
     $e->getApplication()->getServiceManager()->get('translator');
     $eventManager = $e->getApplication()->getEventManager();
     $moduleRouteListener = new ModuleRouteListener();
     $moduleRouteListener->attach($eventManager);
     // Add translation
     $translator = $e->getApplication()->getServiceManager()->get('translator');
     if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
         $setLang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
     } else {
         $setLang = '';
     }
     $translator->setLocale(\Locale::acceptFromHttp($setLang))->setFallbackLocale('en_US');
     // Add ACL information to the Navigation view helper
     $sm = $e->getApplication()->getServiceManager();
     $authorize = $sm->get('BjyAuthorize\\Service\\Authorize');
     $acl = $authorize->getAcl();
     $role = $authorize->getIdentity();
     \Zend\View\Helper\Navigation::setDefaultAcl($acl);
     \Zend\View\Helper\Navigation::setDefaultRole($role);
     $e->getApplication()->getEventManager()->getSharedManager()->attach('Zend\\Mvc\\Application', 'dispatch.error', function ($e) use($sm) {
         if ($e->getParam('exception')) {
             $sm->get('Zend\\Log\\Logger')->crit($e->getParam('exception'));
         }
     });
 }
Exemplo n.º 2
0
 public function onBootstrap(EventInterface $event)
 {
     /*$eventManager        = $e->getApplication()->getEventManager();
       $moduleRouteListener = new ModuleRouteListener();
       $moduleRouteListener->attach($eventManager);*/
     $application = $event->getTarget();
     $serviceManager = $application->getServiceManager();
     $translator = $serviceManager->get('translator');
     $translator->setLocale(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']))->setFallbackLocale('en_US');
     $application->getEventManager()->attach(MvcEvent::EVENT_DISPATCH, function (MvcEvent $event) use($serviceManager) {
         $request = $event->getRequest();
         $response = $event->getResponse();
         if (!($request instanceof HttpRequest && $response instanceof HttpResponse)) {
             return;
             // CLI application maybe?
         }
         $authAdapter = $serviceManager->get('AuthenticationAdapter');
         $authAdapter->setRequest($request);
         $authAdapter->setResponse($response);
         $result = $authAdapter->authenticate();
         if ($result->isValid()) {
             return;
             // OK
         }
         $response->setContent('Access denied');
         $response->setStatusCode(HttpResponse::STATUS_CODE_401);
         $event->setResult($response);
         // to end
         return false;
         // event propagation stop
     });
 }
Exemplo n.º 3
0
 public function getLanguage($format = NULL, $test = NULL)
 {
     $locale = $this->getContainer();
     if ($this->getController() != NULL && $this->getController()->params()->fromRoute($this->getIdentifiantRequest())) {
         $language = $this->getController()->params()->fromRoute($this->getIdentifiantRequest());
     } else {
         if ($locale->offsetExists($this->getIdentifiantSession())) {
             $language = $locale->offsetGet($this->getIdentifiantSession());
         } else {
             $language = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
             $language = $this->convertToAuthorizedLanguage($language);
         }
     }
     switch ($format) {
         case 'upper':
             $language = strtoupper($language);
             break;
         case 'lower':
             $language = strtolower($language);
             break;
         default:
             break;
     }
     $this->setLanguage($language);
     $this->saveInSession();
     return $this->language;
 }
Exemplo n.º 4
0
 public static function translate($source_string, $locale = null)
 {
     if (!$locale) {
         if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
             $locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
         } else {
             $locale = 'en_US';
         }
     }
     $languages = self::getConfigValue('languages');
     if ($languages != array()) {
         foreach ($languages as $language_group => $language_codes) {
             if (file_exists($_SERVER['APPLICATION_ROOT'] . "config/i18n/" . $language_group . ".yml")) {
                 foreach ($language_codes as $code) {
                     if (!isset($_SESSION['dinkly']['languages'])) {
                         $_SESSION['dinkly']['languages'] = array();
                     }
                     $translations = Yaml::parse($_SERVER['APPLICATION_ROOT'] . "config/i18n/" . $language_group . ".yml");
                     $_SESSION['dinkly']['languages'][$code] = $translations;
                 }
             }
         }
     }
     if (isset($_SESSION['dinkly']['languages'][$locale]['translations'][$source_string])) {
         return $_SESSION['dinkly']['languages'][$locale]['translations'][$source_string];
     }
     //Default to original string
     return $source_string;
 }
Exemplo n.º 5
0
 public function onBootstrap(MvcEvent $e)
 {
     $eventManager = $e->getApplication()->getEventManager();
     $moduleRouteListener = new ModuleRouteListener();
     $moduleRouteListener->attach($eventManager);
     $locale = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
     $fallbackLocale = 'en_US';
     $sm = $e->getApplication()->getServiceManager();
     $sm->get('translator')->setLocale($locale)->setFallbackLocale($fallbackLocale);
     $type = 'phpArray';
     $pattern = './vendor/zendframework/zendframework/resources/languages/%s/Zend_Validate.php';
     $textDomain = 'default';
     $translator = $e->getApplication()->getServiceManager()->get('translator');
     if (file_exists(sprintf($pattern, $locale))) {
         $translator->addTranslationFile($type, sprintf($pattern, $locale), $textDomain);
     } else {
         if (file_exists(sprintf($pattern, preg_replace('/_(.*)/', '', $locale)))) {
             $translator->addTranslationFile($type, sprintf($pattern, preg_replace('/_(.*)/', '', $locale)), $textDomain);
         } else {
             $pattern = sprintf($pattern, preg_replace('/_(.*)/', '', $fallbackLocale));
             $translator->addTranslationFile($type, $pattern, $textDomain);
         }
     }
     \Zend\Validator\AbstractValidator::setDefaultTranslator($translator);
 }
 /**
  * Get locale from browser
  *
  * @return string
  * @throws LocaleNotFoundException
  */
 public function getLocaleFromBrowser()
 {
     $locale = \Locale::acceptFromHttp($this->localeHeader);
     if (is_null($locale)) {
         throw new LocaleNotFoundException('Locale could not be obtain from browser');
     }
     return $this->getLocaleFromOptionsByKey($locale);
 }
 public function onBootstrap(MvcEvent $e)
 {
     $eventManager = $e->getApplication()->getEventManager();
     $moduleRouteListener = new ModuleRouteListener();
     $moduleRouteListener->attach($eventManager);
     $tanslator = $e->getApplication()->getServiceManager()->get('translator');
     $tanslator->setLocale(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']))->setFallBackLocale('en_US');
 }
Exemplo n.º 8
0
 /**
  * @return string
  */
 public static function getCanonicalLocale()
 {
     try {
         $locale = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
         return \Locale::canonicalize($locale);
     } catch (\Exception $e) {
         return static::getDefaultLocale();
     }
 }
 public function getLocale()
 {
     if ($this->locale === null) {
         if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
             $this->locale = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
         }
     }
     return $this->locale;
 }
Exemplo n.º 10
0
 public static function getTranslatedDate(\DateTime $date)
 {
     $locale = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
     if ($locale == "el_GR" || $locale == "el") {
         $day = self::$translatedDays[$date->format("w")];
     } else {
         $day = $date->format("D");
     }
     return $day . " " . $date->format("j/m");
 }
Exemplo n.º 11
0
 /**
  * Called after routing
  *
  * @param MvcEvent $event
  */
 public function onRoute(MvcEvent $event)
 {
     $serviceManager = $event->getApplication()->getServiceManager();
     /* @var RouteMatch $routeMatch */
     $routeMatch = $event->getRouteMatch();
     $language = '';
     // check if the language is set by routing (parameter, domain name, etc)
     if ($routeMatch->getParam('language') == '') {
         // get route
         $route = explode('/', $routeMatch->getMatchedRouteName());
         //
         $module = $route[0];
         /** @var \Msingi\Cms\Settings $settings */
         $settings = $event->getApplication()->getServiceManager()->get('Settings');
         // get defaults from settings
         $multilanguage = (bool) $settings->get($module . ':languages:multilanguage');
         $language_default = $settings->get($module . ':languages:default');
         $languages_enabled = $settings->get($module . ':languages:enabled');
         if ($multilanguage && is_array($languages_enabled)) {
             /** @var \Zend\Http\Request $request */
             $request = $event->getRequest();
             // try to get language from cookie
             if ($request->getCookie('language') != '') {
                 $language = $event->getRequest()->getCookie('language');
             }
             // try to get language from browser
             if ($language == '' && isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
                 $language = \Locale::getPrimaryLanguage(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']));
             }
             // fallback to default language if given one is not supported
             if (!in_array($language, $languages_enabled)) {
                 $language = $language_default;
             }
         } else {
             // not multilanguage module, use default language
             $language = $language_default;
         }
         $routeMatch->setParam('language', $language);
     } else {
         $language = $routeMatch->getParam('language');
         $language_default = $language;
     }
     // translator
     $translator = $serviceManager->get('Translator');
     $translator->setLocale($language)->setFallbackLocale($language_default);
     // cache
     $cache = $serviceManager->get('Application\\Cache');
     if ($cache) {
         $translator->setCache($cache);
     }
 }
Exemplo n.º 12
0
 public function init()
 {
     parent::init();
     // Set language
     if (!isset(Yii::app()->request->cookies['lang'])) {
         $language = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']) ?: 'en_US';
         $cookie = new CHttpCookie('lang', $language);
         $cookie->expire = time() + 60 * 60 * 24 * 30;
         Yii::app()->request->cookies['lang'] = $cookie;
     } else {
         $language = (string) Yii::app()->request->cookies['lang'];
     }
     Yii::app()->setLanguage($language);
 }
Exemplo n.º 13
0
 public function onBootstrap(MvcEvent $e)
 {
     Paginator::setDefaultItemCountPerPage(30);
     ini_set('html_errors', 'Off');
     $eventManager = $e->getApplication()->getEventManager();
     $moduleRouteListener = new ModuleRouteListener();
     $moduleRouteListener->attach($eventManager);
     $sm = $e->getApplication()->getServiceManager();
     $em = $sm->get('doctrine.entitymanager.orm_default');
     $auth = $sm->get('Zend\\Authentication\\AuthenticationService');
     if (Cons::isConsole()) {
         $locale = locale_get_default();
     } else {
         /* @var $al \Zend\Http\Header\Accept */
         $al = $e->getRequest()->getHeaders('accept-language');
         if ($al) {
             $locales = $al->getPrioritized();
             $locale = reset($locales)->getTypeString();
             \Locale::acceptFromHttp($locale);
         } else {
             $locale = locale_get_default();
         }
     }
     /** @var Translator $translator */
     $translator = $sm->get('MvcTranslator');
     $translator->setLocale(mb_substr($locale, 0, 2));
     //        $translator->getEventManager()->attach('missingTranslation', array($this, 'translationListener'));
     AbstractValidator::setDefaultTranslator($translator);
     //
     // Narediti session tako, da se virtual hosti ne bodo med seboj mešali
     // da se avtentikacija ne prenaša med vhosti
     // poskrbim za identiteto uporabnika
     if ($e->getRequest() instanceof Request) {
         // handling autorizacij preko konzole
         $this->setIdentity('*****@*****.**', $auth, $em);
     } else {
         /* @var $request Request2 */
         $request = $e->getRequest();
         $header = $request->getHeader('Authorization');
         if ($header instanceof Authorization && strlen($header->getFieldValue()) > 10) {
             $this->tryHttpAuth($auth, $em, $e);
         }
     }
     $identity = $auth->getIdentity();
     $evm = $em->getEventManager();
     $evm->addEventSubscriber(new RevisionsListener($sm, $identity));
     $config = $sm->get('entity.metadata.factory')->getAllEntityConfig();
     $evm->addEventSubscriber(new PrePersistListener($config));
 }
Exemplo n.º 14
0
 /**
  * @internal
  */
 public function onBootstrap(\Zend\EventManager\EventInterface $e)
 {
     $eventManager = $e->getParam('application')->getEventManager();
     $eventManager->attach(MvcEvent::EVENT_ROUTE, array($this, 'forceLogin'));
     $eventManager->attach(MvcEvent::EVENT_RENDER, array($this, 'setStrictVars'));
     $eventManager->attach(MvcEvent::EVENT_RENDER, array($this, 'setMenu'));
     $eventManager->attach(MvcEvent::EVENT_RENDER, array($this, 'setLayoutTitle'));
     $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, array($this, 'onError'));
     $eventManager->attach(MvcEvent::EVENT_RENDER_ERROR, array($this, 'onError'));
     // Evaluate locale from HTTP header. Affects translations, date/time rendering etc.
     if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
         \Locale::setDefault(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']));
     }
     // Attach translator to validators
     \Zend\Validator\AbstractValidator::setDefaultTranslator($e->getApplication()->getServiceManager()->get('MvcTranslator'));
 }
Exemplo n.º 15
0
 public function onRoute(\Zend\EventManager\EventInterface $e)
 {
     // Event manager of the app
     $application = $e->getApplication();
     $routeMatch = $e->getRouteMatch();
     $sm = $application->getServiceManager();
     $translator = $sm->get('translator');
     // $routeMatch->getParam('lang');
     // By default, the translator will get the locale to use from the Intl extension’s Locale class. If you want to set an alternative locale explicitly, you can do so by passing it to the setLocale() method.
     // $translator->setLocale('bg_BG');
     // echo $_SERVER["HTTP_ACCEPT_LANGUAGE"];
     // allow intl extension
     $translator->setLocale(\Locale::acceptFromHttp($_SERVER["HTTP_ACCEPT_LANGUAGE"]));
     //-		echo '<h1>On Route</h1>';
     // echo $translator->getLocale();
 }
Exemplo n.º 16
0
 /**
  * Set up application environment, optionally run the application
  *
  * This sets up the PHP environment and autoloaders, loads the provided
  * module and optionally runs the MVC application. The default behavior for
  * the $run option depends on the module. This should rarely need to be
  * overridden except for testing.
  *
  * @param string $module Module to load
  * @param bool $run Run the application after initialization. Default: TRUE
  * @codeCoverageIgnore
  */
 public static function init($module, $run = true)
 {
     // Set up PHP environment.
     session_cache_limiter('nocache');
     // Default headers to prevent caching
     // Evaluate locale from HTTP header. Affects translations, date/time rendering etc.
     \Locale::setDefault(\Locale::acceptFromHttp(@$_SERVER['HTTP_ACCEPT_LANGUAGE']));
     // Set up autoloader for ZF classes
     require_once 'Zend/Loader/AutoloaderFactory.php';
     \Zend\Loader\AutoloaderFactory::factory(array('\\Zend\\Loader\\StandardAutoloader' => array('autoregister_zf' => true)));
     $application = \Zend\Mvc\Application::init(array('modules' => array($module), 'module_listener_options' => array('module_paths' => array('Console' => self::getPath('module/Console/Console'), 'Database' => self::getPath('module/Database'), 'Export' => self::getPath('module/Export'), 'Library' => self::getPath('module/Library'), 'Model' => self::getPath('module/Model'), 'PackageBuilder' => self::getPath('module/PackageBuilder'), 'Protocol' => self::getPath('module/Protocol'), 'DatabaseManager' => self::getPath('module/DatabaseManager')))));
     self::$_serviceManager = $application->getServiceManager();
     if ($run) {
         $application->run();
     }
 }
Exemplo n.º 17
0
 public function onBootstrap(MvcEvent $e)
 {
     $sm = $e->getApplication()->getServiceManager();
     $session = new SessionContainer('preferences');
     if (isset($_GET['ln']) && ($ln = $_GET['ln'])) {
         $session->locale = $ln;
     } elseif (!$session->locale) {
         $session->locale = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
     }
     if ($session->locale == 'ru') {
         $session->locale = 'ru_RU';
     } elseif ($session->locale == 'en') {
         $session->locale = 'en_EN';
     }
     \Locale::setDefault($session->locale);
     $translator = $sm->get('translator');
     $translator->setLocale($session->locale)->factory($sm->get('config')['translator']);
 }
Exemplo n.º 18
0
 public function translateByCode($idiomaCode = null)
 {
     $dir = '';
     switch ($idiomaCode) {
         case 'en':
             $dir = APP_PATH . '/common/Util/translate/words.en.php';
             break;
         case 'es':
             $dir = APP_PATH . '/common/Util/translate/words.es.php';
             break;
         default:
             $dir = APP_PATH . '/common/Util/translate/words.en.php';
     }
     $type = 'phpArray';
     $this->_ts->addTranslationFile($type, $dir);
     $this->_ts->setFallbackLocale('en_EN');
     if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
         $this->_ts->setLocale(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']));
     }
 }
Exemplo n.º 19
0
 public function adminIndex()
 {
     Piwik::checkUserHasSuperUserAccess();
     $view = new View('@GeoIpChain/adminIndex');
     $providerHandler = new LocationProvider();
     $providers = [];
     foreach ($providerHandler->getProviders() as $provider) {
         /* @var $provider \Piwik\Plugins\GeoIpChain\Provider\AbstractProvider */
         $data = ['name' => $provider->getName(), 'isWorking' => $provider->isWorking(), 'usedFile' => null, 'doesSupportIpV4' => $provider->doesSupportIpV4(), 'doesSupportIpV6' => $provider->doesSupportIpV6(), 'supportFields' => $provider->getSupportedFields()];
         if ($provider instanceof LocaleAwareProvider) {
             $provider->setLocale(\Locale::acceptFromHttp($this->getUsedAcceptLanguage()));
         }
         if ($provider instanceof FileAwareProvider) {
             $data['usedFile'] = $provider->getFile();
         }
         $data['result'] = false;
         if ($provider->isWorking() === true) {
             try {
                 /* @var $result \Geocoder\Model\AddressCollection */
                 $result = $provider->geocode($this->getUsedIp());
                 /* @var $firstResult \Geocoder\Model\Address */
                 $firstResult = $result->first();
                 $data['result'] = $firstResult->toArray();
             } catch (NoResult $ex) {
             } catch (UnsupportedOperation $ex) {
             }
         }
         $providers[] = $data;
     }
     $view->usedIp = $this->getUsedIp();
     $view->defaultIp = $this->getDefaultIp();
     $view->usedAcceptLanguage = $this->getUsedAcceptLanguage();
     $view->defaultAcceptLanguage = $this->getDefaultAcceptLanguage();
     $view->providers = $providers;
     $this->setBasicVariablesView($view);
     $this->setBasicVariablesAdminView($view);
     return $view->render();
 }
Exemplo n.º 20
0
 private function setLocale()
 {
     // Check if user has provided its list of preferred languages
     if (empty($_SERVER["HTTP_ACCEPT_LANGUAGE"])) {
         return false;
     }
     // Let's try if we support user preferred language
     if (class_exists("Locale") && $this->tryLocale(Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']))) {
         return true;
     }
     // Get list of preferred languages as provided by user to try them all
     $languages = explode(",", $_SERVER["HTTP_ACCEPT_LANGUAGE"]);
     if (!empty($languages) && is_array($languages)) {
         // Iterate over languages to find the first we support
         foreach ($languages as $l) {
             // Convert Accept-Language language to a locale one
             $l = preg_replace(array("/;.*/", "/-/"), array("", "_"), $l);
             if ($this->tryLocale($l)) {
                 return true;
             }
         }
     }
     return false;
 }
 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;
 }
Exemplo n.º 22
0
 public function onBootstrap(MvcEvent $e)
 {
     $eventManager = $e->getApplication()->getEventManager();
     $moduleRouteListener = new ModuleRouteListener();
     $request = $e->getApplication()->getServiceManager()->get('Request');
     $moduleRouteListener->attach($eventManager);
     $adapter = $e->getApplication()->getServiceManager()->get('Zend\\Db\\Adapter\\Adapter');
     $config = $e->getApplication()->getServiceManager()->get('Configuration');
     $locale = null;
     $eventManager->attach(new UserRegisterListener($adapter));
     $eventManager->attach(new LogListener());
     // Add ACL information to the Navigation view helper
     $authorize = $e->getApplication()->getServiceManager()->get('BjyAuthorize\\Service\\Authorize');
     $acl = $authorize->getAcl();
     $role = $authorize->getIdentity();
     \Zend\View\Helper\Navigation::setDefaultAcl($acl);
     \Zend\View\Helper\Navigation::setDefaultRole($role);
     // translating system
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config['session']);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     $session = new Container('base');
     // Get the visitor language selection
     $translator = $e->getApplication()->getServiceManager()->get('translator');
     // get the locale from the cookie
     $headCookie = $request->getHeaders()->get('Cookie');
     if (!empty($headCookie) && array_key_exists('locale', get_object_vars($headCookie))) {
         $locale = $headCookie->locale;
     }
     if (empty($locale)) {
         // if there is not set any cookie
         $locale = $session->offsetGet('locale');
         // Get the locale from the session
         if (empty($locale)) {
             // if there is not any session set yet
             $headers = $request->getHeaders();
             if ($headers->has('Accept-Language')) {
                 $locales = $headers->get('Accept-Language')->getPrioritized();
                 $first = array_shift($locales);
                 $locale = $first->getLanguage();
                 if (!empty($locale) && 2 == strlen($locale)) {
                     $locale .= "_" . strtoupper($locale);
                 }
             }
             if (empty($locale)) {
                 // if the browser has no locale set, we have to get the default INTL global locale setting
                 $locale = \Locale::getPrimaryLanguage(\Locale::getDefault());
                 // Gets the default locale value from the INTL global 'default_locale'
             }
         }
     } else {
         #\Zend\Debug\debug::dump("Cookie set with locale: $locale");
     }
     $translator->setLocale(\Locale::acceptFromHttp($locale));
     $translator->setLocale($locale)->setFallbackLocale('en_US');
     \Zend\Validator\AbstractValidator::setDefaultTranslator($translator);
     \Zend\Validator\AbstractValidator::setDefaultTranslatorTextDomain();
 }
Exemplo n.º 23
0
 /**
  * @return string
  */
 protected function getLocaleFromServer()
 {
     $ln = $potentialLn = '';
     $locale = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
     if ($locale) {
         $exp = explode('_', $locale);
         if (is_array($exp)) {
             $potentialLn = $exp[0];
         }
     }
     if (array_key_exists($potentialLn, $this->settings)) {
         $ln = $potentialLn;
     }
     return $ln;
 }
Exemplo n.º 24
0
 /**
  * Determines if a locale name is valid and known.
  *
  * Scripts, variants, and keyword-value pairs are ignored.
  *
  * @param  string $localeName The locale name to be looked into.
  *
  * @return bool `true` if the locale name is valid and known, `false` otherwise.
  */
 public static function isValid($localeName)
 {
     assert('is_cstring($localeName)', vs(isset($this), get_defined_vars()));
     if (!CRegex::findGroups($localeName, "/^([a-z]{2,3}(?![^_\\-]))(?|[_\\-]([a-z]{2,3}(?![^_\\-]))|[_\\-][a-z]{4}(?![^_\\-])[_\\-]([a-z]{2,3}" . "(?![^_\\-]))|(?:\\z|[_\\-][a-z])).*\\z(?<=[a-z0-9])/i", $foundGroups)) {
         return false;
     }
     $rfc2616 = $foundGroups[0];
     if (CArray::length($foundGroups) > 1) {
         $rfc2616 .= "-" . $foundGroups[1];
     }
     return is_cstring(Locale::acceptFromHttp($rfc2616));
 }
Exemplo n.º 25
0
 public function onBootstrap(EventInterface $e)
 {
     $serviceManager = $e->getApplication()->getServiceManager();
     $config = $e->getApplication()->getServiceManager()->get('config');
     $translator = $serviceManager->get('translator');
     // Gestion de la locale
     if (PHP_SAPI !== 'cli') {
         //translator
         // Gestion locale pour le back
         if ($serviceManager->get('router')->match($serviceManager->get('request')) && strpos($serviceManager->get('router')->match($serviceManager->get('request'))->getMatchedRouteName(), 'admin') !== false) {
             if ($e->getRequest()->getCookie() && $e->getRequest()->getCookie()->offsetExists('pg_locale_back')) {
                 $locale = $e->getRequest()->getCookie()->offsetGet('pg_locale_back');
             }
         }
         if (empty($locale)) {
             if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
                 $locale = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
             } else {
                 $locale = 'fr_FR';
             }
         }
         $translator->setLocale($locale);
         // plugins
         $translate = $serviceManager->get('viewhelpermanager')->get('translate');
         $translate->getTranslator()->setLocale($locale);
         $options = $serviceManager->get('playgroundcore_module_options');
         $options->setLocale($locale);
     }
     // positionnement de la langue pour les traductions de date avec strftime
     setlocale(LC_TIME, "fr_FR", 'fr_FR.utf8', 'fra');
     AbstractValidator::setDefaultTranslator($translator, 'playgroundcore');
     /*
      * Entity translation based on Doctrine Gedmo library
      */
     $doctrine = $serviceManager->get('doctrine.entitymanager.orm_default');
     $evm = $doctrine->getEventManager();
     $translatableListener = new \Gedmo\Translatable\TranslatableListener();
     // TODO : Set the Default locale to be taken from config
     $translatableListener->setDefaultLocale('fr_FR');
     // If no translation is found, fallback to entity data
     $translatableListener->setTranslationFallback(true);
     // set Locale
     if (!empty($locale)) {
         $translatableListener->setTranslatableLocale($locale);
     }
     $evm->addEventSubscriber($translatableListener);
     /**
      * Adding a Filter to slugify a string (make it URL compliiant)
      */
     $filterChain = new \Zend\Filter\FilterChain();
     $filterChain->getPluginManager()->setInvokableClass('slugify', 'PlaygroundCore\\Filter\\Slugify');
     $filterChain->attach(new Filter\Slugify());
     // Start the session container
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config['session']);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     /**
      * Optional: If you later want to use namespaces, you can already store the
      * Manager in the shared (static) Container (=namespace) field
      */
     \Zend\Session\Container::setDefaultManager($sessionManager);
     // Google Analytics : When the render event is triggered, we invoke the view helper to
     // render the javascript code.
     $e->getApplication()->getEventManager()->attach(\Zend\Mvc\MvcEvent::EVENT_RENDER, function (\Zend\Mvc\MvcEvent $e) use($serviceManager) {
         $view = $serviceManager->get('ViewHelperManager');
         $plugin = $view->get('googleAnalytics');
         $plugin();
         $pluginOG = $view->get('facebookOpengraph');
         $pluginOG();
     });
     if (PHP_SAPI !== 'cli') {
         $session = new Container('facebook');
         $fb = $e->getRequest()->getPost()->get('signed_request');
         if ($fb) {
             list($encoded_sig, $payload) = explode('.', $fb, 2);
             $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
             $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
             $session->offsetSet('signed_request', $data);
             // This fix exists only for safari on Windows : we need to redirect the user to the page outside of iframe
             // for the cookie to be accepted. Core just adds a 'redir_fb_page_id' var to alert controllers
             // that they need to send the user back to FB...
             if (!count($_COOKIE) > 0 && strpos($_SERVER['HTTP_USER_AGENT'], 'Safari')) {
                 echo '<script type="text/javascript">' . 'window.top.location.href = window.location.href+"?redir_fb_page_id=' . $data["page"]["id"] . '";' . '</script>';
             }
             // This fix exists only for IE6+, when this app is embedded into an iFrame : The P3P policy has to be set.
             $response = $e->getResponse();
             if ($response instanceof \Zend\Http\Response && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') || strpos($_SERVER['HTTP_USER_AGENT'], 'rv:11.'))) {
                 $response->getHeaders()->addHeaderLine('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
             }
         }
     }
 }
Exemplo n.º 26
0
 /**
  * Browser Locale Detection
  *
  * This functions check the HTTP_ACCEPT_LANGUAGE HTTP-Header
  * for the supported browser languages and returns an array.
  *
  * Basically HTTP_ACCEPT_LANGUAGE locales are composed by 3 elements:
  * PREFIX-SUBCLASS ; QUALITY=value
  *
  * PREFIX:      is the main language identifier
  *              (i.e. en-us, en-ca => both have prefix EN)
  * SUBCLASS:    is a subdivision for main language (prefix)
  *              (i.e. en-us runs for english - united states) IT CAN BE BLANK
  * QUALITY:     is the importance for given language
  *              primary language setting defaults to 1 (100%)
  *              secondary and further selections have a lower Q value (value <1).
  * EXAMPLE:     de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
  *
  * @return Array containing the list of supported languages
  */
 public function getBrowserLanguages()
 {
     // check if environment variable HTTP_ACCEPT_LANGUAGE exists
     if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) === false) {
         // if not return an empty language array
         return array();
     } elseif (extension_loaded('intl') === true) {
         /**
          * Try to find best available locale based on HTTP "Accept-Language" header
          * via Locale class, which is part INTL, a php default extension as of php 5.3.
          */
         $lang = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
         return (array) mb_substr($lang, 0, 2);
     } else {
         // fallback for non "ext/intl" environments
         // explode environment variable HTTP_ACCEPT_LANGUAGE at ,
         $browserLanguages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
         // convert the headers string to an array
         $browserLanguagesSize = count($browserLanguages);
         for ($i = 0; $i < $browserLanguagesSize; $i++) {
             // explode string at ;
             $browserLanguage = explode(';', $browserLanguages[$i]);
             // cut string and place into array
             $browserLanguages[$i] = mb_substr($browserLanguage[0], 0, 2);
         }
         // remove the duplicates and return the browser languages
         return array_values(array_keys(array_flip($browserLanguages)));
     }
 }
Exemplo n.º 27
0
 /**
  * Detect language
  *
  * @from 1.2
  */
 public function auto_detect_language()
 {
     if (class_exists('Locale')) {
         $locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
         return $this->get_language_by($locale, 'post_content');
     }
     return false;
 }
Exemplo n.º 28
0
 /**
  * Try to figure the users language based on earlier visits
  * http_accept_language and geo-ip check.
  *
  * @param bool $ipCheck
  * @return string
  */
 public static function sniffLanguage($ipCheck = false)
 {
     if (!is_null(session()->get('locale', null))) {
         return app('translator')->parseLocale(session()->get('locale'));
     }
     // Check for HTTP_ACCEPT heaer
     if (!is_null(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']))) {
         return app('translator')->parseLocale(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']));
     }
     // Do IP check ?
     if ($ipCheck) {
         $url = 'http://freegeoip.net/json/' . $_SERVER['REMOTE_ADDR'];
         $fs = fsockopen($url, 80, $errno, $errstr, config('translaravel.timeout_ip_check'));
         if ($fs) {
             stream_set_timeout($fs, config('translaravel.timeout_ip_check'));
             $info = stream_get_meta_data($fs);
             $data = '';
             while (!feof($fs) && !$info['timed_out']) {
                 $data .= fgets($fs);
                 $info = stream_get_meta_data($fs);
                 flush();
             }
             if (!$info['timed_out']) {
                 $ipInfo = collect($data)->toArray();
                 if (isset($ipInfo['country_code'])) {
                     return app('translator')->parseLocale($ipInfo['country_code']);
                 }
             }
         }
     }
     // End ip check
     // Nothing available do default
     return app('translator')->parseLocale(config('app.fallback_locale'));
 }
Exemplo n.º 29
0
}
$unittest[__FILE__] = sizeof(get_included_files()) == 1;
// The default translations are in locale/en_US.UTF-8/LC_MESSAGES/palma.mo.
$locale = '';
if (isset($_REQUEST['lang'])) {
    // User requested language by URL parameter.
    $locale = $_REQUEST['lang'];
    $_SESSION['lang'] = $locale;
} else {
    if (isset($_SESSION['lang'])) {
        // Get language from session data.
        $locale = $_SESSION['lang'];
    } else {
        if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
            // Get language from browser settings.
            $locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
        }
    }
}
switch (substr($locale, 0, 2)) {
    case 'ar':
        // Arabic.
        $locale = 'ar.UTF-8';
        break;
    case 'de':
        // German.
        $locale = 'de_DE.UTF-8';
        break;
    case 'en':
        // English.
        $locale = 'en_US.UTF-8';
Exemplo n.º 30
0
<?php

$engine->translator->setLocale(Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']));