Ein language switcher in Symfony 2.4

Habe ich ein Objekt-Sprache, und ich kann hinzufügen, delete-und update-Sprachen von der admin-Seite.

Was ich tun will, ist das hinzufügen eines language switcher, ich habe dieses html/twig-code:

 {% for language in languages %}         
      <li><a href="{{ path('evr_footer_switch_language',{'locale': language.code | lower }) }}">{{ language.language | capitalize }} ({{ language.code }})</a></li>
 {% endfor %}

- Und action -the route for the action is evr_footer_switch_language, die ich verwendet, in den Umschalter oben:

 public function switchlanguageAction($locale = 'en') {

        $this->get('session')->set('_locale', $locale);
        $request = $this->getRequest();
       $request->setLocale($locale);
        return $this->redirect($request->headers->get('referer'));
    }

Dies ist die route, die ich für die Aktion definierten/controller switchlanguageAction()

evr_footer_switch_language:
    pattern: /language/switch/{locale}
    defaults: { _controller: EvrHomeBundle:Footer:switchlanguage, locale: en }

Scheint es mir sehr einfach, im Prinzip, klicken Sie auf den link der Sprache (aus der Datenbank), senden Sie den code der Sprache (Beispiel : 'fr', 'de', 'zh', usw...), um die Aktion als $locale-variable, dann wird das Gebietsschema der Sitzung/Anfrage zu diesem Wert.

Das problem ist, dass keines dieser Werke, und die Sprache ist immer noch 'EN' (default-Wert).

Hinweis Nach den Anforderungen des Projekts kann Die Sprache nicht erwähnt werden, dass in der URL (wie fr/articles, de/Artikel), aber die gleiche URL (/Artikel/) zeigen in verschiedenen Sprachen, das ist, warum ich nicht verwenden, die vordefinierte slug (_locale).

Dank

InformationsquelleAutor SmootQ | 2014-02-06

Schreibe einen Kommentar