コード例 #1
0
 /**
  * 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 testSetFallbackLocalesReplace()
 {
     $this->localeChooser->setFallbackLocales('de', array('fr'), true);
     $this->assertEquals(array('fr'), $this->localeChooser->getFallbackLocales(null, $this->mockMetadata, 'de'));
 }