/**
  * Handling the request event.
  *
  * @param GetResponseEvent $event
  */
 public function onKernelRequest(GetResponseEvent $event)
 {
     $request = $event->getRequest();
     if (!($locale = $this->determineLocale($event))) {
         return;
     }
     $this->chooser->setLocale($locale);
     if (self::FALLBACK_HARDCODED == $this->fallback) {
         return;
     }
     // expand language list to include base locales
     // copy-pasted from Request::getPreferredLanguage
     $preferredLanguages = $request->getLanguages();
     $extendedPreferredLanguages = array();
     foreach ($preferredLanguages as $language) {
         $extendedPreferredLanguages[] = $language;
         if (false !== ($position = strpos($language, '_'))) {
             $superLanguage = substr($language, 0, $position);
             if (!in_array($superLanguage, $preferredLanguages)) {
                 $extendedPreferredLanguages[] = $superLanguage;
             }
         }
     }
     $order = array_intersect($this->allowedLocales, $extendedPreferredLanguages);
     $this->chooser->setFallbackLocales($locale, $order, self::FALLBACK_REPLACE == $this->fallback);
 }
Пример #2
0
 public function testSubRegion()
 {
     $orderEnGB = array('en', 'de');
     $this->localeChooser = new LocaleChooser(array('en_GB' => $orderEnGB, 'en' => $this->orderEn, 'de' => $this->orderDe), 'en');
     $order = $this->localeChooser->getFallbackLocales(null, $this->mockMetadata, 'en_GB');
     $this->assertEquals($orderEnGB, $order);
     $this->localeChooser->setLocale('en_GB');
     $locale = $this->localeChooser->getLocale();
     $this->assertEquals('en_GB', $locale);
     $order = $this->localeChooser->getDefaultLocalesOrder();
     $this->assertEquals($orderEnGB, $order);
 }
Пример #3
0
 public function testSetLocaleRegionNotConfigured()
 {
     $this->localeChooser->setLocale('en_GB');
     $locale = $this->localeChooser->getLocale();
     $this->assertEquals('en', $locale);
 }
Пример #4
0
 public function testGetDefaultLocale()
 {
     $locale = $this->localeChooser->getDefaultLocale();
     $this->assertEquals('en', $locale);
 }