2013-02-20 96 views
0

如果我們可以自動去德語,如果瀏覽器接受語言是de_DE或德(德語),否則去英語(所有其他瀏覽器接受語言)?如何根據接受的語言標題翻譯Symfony 2.1中的語言?

我的聽衆

namespace xxxx 
use Symfony\Component\DependencyInjection\ContainerInterface; 

use Symfony\Component\HttpKernel\HttpKernelInterface; 
use Symfony\Component\HttpKernel\Event\GetResponseEvent; 

class LocaleListener 
{ 
    private $container; 
    private $defaultLocale; 

    public function __construct(ContainerInterface $container, $defaultLocale) 
    { 
     $this->container = $container; 
     $this->defaultLocale = $defaultLocale; 
    } 

    public function onKernelRequest(GetResponseEvent $event) 
    { 
     if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { 
      return; 
     } 

     if (!$this->container->has('request')) { 
      return; 
     } 

     $request = $this->container->get('request'); 
     $request->setLocale($request->getPreferredLanguage($this->defaultLocale)); 
    } 
} 

service.yml

my_locale_listener: 
    class: Wishbot\WebBundle\Listener\LocaleListener 
    tags: [{ name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 100 }] 
    arguments: [ @service_container, ['de','en' ] ] 

回答