I’m working with Symfony 2 on a site which having 2 languages,
and I want to change patterns of my routes depending on user locale language !
Example:
user_login_en:
pattern: /en/user/login.html
defaults: { _controller: SfErrorsAppBundle:User:login, _locale: en }
user_login_fr:
pattern: /fr/utilisateur/connexion.html
defaults: { _controller: SfErrorsAppBundle:User:login, _locale: fr}
Inside a template, this is not difficult, i just have to pass the $this->get(‘session’)->getLocale() from the controller to the template…
To work, I have to call my routes:
$router->generate('user_login_'.$locale, array());
But inside my layouts, I have of course a menu, and sidebars, which have links… So I want to get the locale variable to use it ! So my question is simple: how to get this variable inside a “layout” template ? Otherwise, have you got any idea to change the pattern depending on the language ?
The reasons are that I want beautiful routes for all users, whether they’re english or french… And also for a SEO reason !
—UPDATED FROM THE COMMENTS—
As Symfony 2.1, you must use
or
which returns
app.request.localeif available andapp.request.defaultLocaleifapp.request.localeis not set.