what is the best practise how to work with locale in the twig templates:
- how switch between languages (with language switcher in template) and how to keep an existing URL with just a change of language
- how create URL with locale support
For example:
I have 2 languages (ES and EN), default language is ES, for my home page I create 2 Route Anotations for /
(for default language, in this case ES) and for /{_locale}/
(for other languages) in my Controller file.
And now I need to get locale parameter to my twig template to my URL, but only if I will not on my default language.
Manually rewrite URL works fine, but is there any easy way how add locale parameter to URL when I creating on my twig templates ?
The actual value of the variable locale can be passed to Controller, but is there any better way to got it in twig?
EDIT:
/**
* @Route(
* "/{_locale}/branches", name="branches",
* requirements={"_locale":"%app_locales%"}
* )
*
*/
public function indexAction(Request $request) {
return $this->render('branches/index.html.twig');
}
index.html.twig
<li class="{% if app.request.attributes.get('_route') starts with 'branches' %}active{% endif %}">
<a href="{{ path('branches') }}" class="">{{ 'header.menu.branches'|trans }}</a>
</li>
I got
No route found for "GET /branches" i use this URL http://localhost:8080/en/branches (works OK) and http://localhost:8080/branches (ERROR) I must use something like this:
/**
* @Route(
* "/branches/", name="branches_def",
* defaults={"_locale":"%locale%"},
* )
* @Route(
* "/{_locale}/branches/", name="branches",
* requirements={"_locale":"%app_locales%"}
* )
*
*/
public function indexAction(Request $request) {
return $this->render('branches/index.html.twig');
}
URL generating with path is OK, but if I delete locale parameter from my URL in my browser I got this error.
Thanks a lot for any usefull advice