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
{{ app.request.locale }}
or
{{ app.request.getLocale() }}
which returns app.request.locale
if available and app.request.defaultLocale
if app.request.locale
is not set.