0

ブラウザの Accept 言語が de_DE または de(ドイツ語) の場合、自動的にドイツ語に移行し、それ以外の場合は英語 (他のすべてのブラウザの Accept 言語) に移行するにはどうすればよいでしょうか?

私の聞き手

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' ] ]
4

1 に答える 1

-1

Symfony 2 ドキュメントの翻訳の章を読むことをお勧めします。

http://symfony.com/doc/2.0/book/translation.html

サイトをさまざまな言語で維持する方法について説明します。

于 2013-02-20T07:34:34.773 に答える