Symfony2 locale-Erkennung: nicht in Betracht, _locale in der Sitzung

Ich versuche, die Implementierung eines LocaleListener, erkennt der Benutzer die bevorzugte Sprache (wenn man bedenkt, Accept-Language-header) und speichert es in der session zu vermeiden, überprüft es jede Anforderung. Ich habe entwickelt Sie den code unten, um das zu erreichen:

public function onKernelRequest(GetResponseEvent $event) {
    $request = $event->getRequest();

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

    $preferredLocale = $request->getPreferredLanguage($this->availableLocales);

    if ($this->container->has('session')) {
        $session = $this->container->get('session');
        if (!$session->has('_locale')) {
            $session->set('_locale', $preferredLocale);
        }
    } else {
        $request->setLocale($preferredLocale);
    }
}

Dem code arbeitet, ist die bevorzugte Sprache gespeichert, die in der Sitzung, aber symfony ist nicht unter Berücksichtigung der locale gespeichert in der Sitzung um die Zeichenfolgen zu übersetzen. In meinem Fall, meine bevorzugte Sprache war, 'pt_BR', und wenn ich escape:

{{ app.request.locale }}

symfony entkommen ist 'de'. Sollte nicht symfony werden unter Berücksichtigung der gespeicherte Wert in der session('_locale') zu definieren request locale? Ist das ein korrektes Verhalten? Wie kann ich erreichen, dass?

InformationsquelleAutor Hugo Nogueira | 2013-05-03

Schreibe einen Kommentar