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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während der Suche für einige weitere details, um zu schreiben, eine Antwort, die ich stolperte über dieses
Symfony
Kochbuch-Eintrag: Machen Sie das Gebietsschema "Sticky" während der Sitzung des BenutzersIch denke, das ist genau das, was Sie brauchen 😉
Vielen Dank nochmal , ich angewendet, was der doc sagt, Aber auf die locale habe ich nur
$request->setLocale()
, und jetzt habe ich den$this->get('session')->set('_locale')
es funktioniert ... am Besten beantworten !InformationsquelleAutor Jovan Perovic
Symfony 2.6:
Ich benutzte die LocaleListener erwähnt in "das Gebietsschema "Klebrig", aber hatten auch diese zu verwenden, um die Dinge richtig funktioniert:
InformationsquelleAutor developer
Können Sie so einen kernel Anfrage und mit querystring swich_language können Sie es ändern,
InformationsquelleAutor Giray Kefelioglu