Exemple #1
0
 /**
  * If shouldRedirectToRecognizedLanguage is enabled
  * or
  * If we are here: "/pl" and default language is different (ie. EN)
  *    then set lang to router, to achieve all urls with this language
  *
  * @param MvcEvent $event
  * @param string   $lang
  */
 private function setLangToRouterIfLangIsDifferentFromDefaultLangOrShouldRedirectOptionIsEnabled(MvcEvent $event, $lang)
 {
     if ($this->config->shouldRedirectToRecognizedLanguage() || $lang !== $this->config->getDefaultLanguage()) {
         /** @var SimpleRouteStack $router */
         $router = $event->getRouter();
         $router->setDefaultParam('lang', $lang);
     }
 }
Exemple #2
0
 public function recognize(MvcEvent $event)
 {
     if (!$this->config->getAvailableLanguages()) {
         return false;
     }
     $lang = $this->config->getDefaultLanguage();
     /** @var Request $request */
     $request = $event->getRequest();
     $routeMatchLang = $this->getRouteMatchLanguage($event);
     $browserLang = null;
     if ($this->config->shouldRedirectToRecognizedLanguage()) {
         $browserLang = $this->getBrowseAcceptLanguage($request->getHeaders());
     }
     if ($routeMatchLang || $browserLang) {
         $lang = $routeMatchLang ? $routeMatchLang : $browserLang;
     }
     $locale = $this->config->findLocaleByLanguage($lang);
     return [$lang, $locale, $routeMatchLang, $browserLang];
 }
Exemple #3
0
 public function testConstructor_WithNotEmptyConfig_WhenShouldRedirectIsDisabled()
 {
     $testedObject = new LangConfig($this->prepareConfig(false));
     $this->assertSame('en', $testedObject->getDefaultLanguage());
     $this->assertSame('en_GB', $testedObject->getDefaultLocale());
     $this->assertSame(['de', 'en', 'pl', 'pt-br'], $testedObject->getAvailableLanguages());
     $this->assertSame('de', $testedObject->findLanguageByLocale('de_DE'));
     $this->assertSame('pt_BR', $testedObject->findLocaleByLanguage('pt-br'));
     $this->assertFalse($testedObject->shouldRedirectToRecognizedLanguage());
 }
 /**
  * @param array  $params
  * @param string $lang
  *
  * @return array
  */
 private function prepareLanguageInParams(array $params, $lang)
 {
     // when error occurred (404) we don't have routeMatch
     if ($this->routeMatch) {
         // we change lang only there when lang parameter exists
         if ($this->routeMatch->getParam('lang') !== null) {
             $params['lang'] = $lang;
         }
     } else {
         $params['lang'] = $lang;
     }
     // if default app language is the same as lang and shouldRedirect is disabled
     if ($this->config->getDefaultLanguage() === $lang && !$this->config->shouldRedirectToRecognizedLanguage()) {
         $params['lang'] = '';
     }
     return $params;
 }