Bonjour à tous,
J'ai récemment débuté mon introduction à Symfony2, et j'ai un peu de difficulté avec l'internationnalisation ( i18n ) des locales; mettre en place une logique efficace.
Mon but est simple, faire comme microsoft.com: lorsqu'un utilisateur accède à la route /, déterminer la locale la plus appropriée, et le rediriger vers la page d'accueil correspondante. Si aucune locale ne correspond, attribuer la locale par défaut à l'utilisateur.
Donc déjà, il me faut savoir:
1- Comment définir les locales que mon site supportera.
Pour se faire, j'ai créé l'entré suivante dans app/config.yml:
Ce qui me permet d'y avoir accès à partir de n'importe quel contrôlleur de la façon suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3parameters: supported_locale: [fr, en, es]
Question: Suis-je en train d'essayer de ré-inventer quelque chose qui existe déjà dans Symfony2 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
2- Comment rendre fonctionnel la détection de la locale ?
J'ai besoin de traduction différentes pour les locales en_CA et en_US.
En fait, en_US sera la version anglaise par défaut, donc je pourrais dire que j'ai besoin de en et en_CA.
Lorsque je regarde la valeur de $this->get('session')->getLocale(), j'obtiens toujours 'en', malgré que mon navigateur soit configuré pour prioriser fr_CA, fr, en.
Question: Pourquoi est-ce que symfony2 ne détecte pas bien ma locale ? ( Lien à faire avec la question #1 ?)
Edit: $this->getRequest()->getPreferredLanguage()
3- Comment accéder à la locale par défaut ?
Un petit var_dump($this->get('session')); montre rapidement qu'il existe une variable protected 'defaultLocale' => string 'en' (length=2) dans l'objet Symfony\Component\HttpFoundation\Session. Or, il n'existe aucune méthode d'accès à cette propriété.
Question: Comment suis-je supposer pouvoir la récupérer à l'intérieur d'un controlleur ?
Note: Si possible sans ajouter ceci dans app/config.yml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3parameters: default_locale: %locale%
Note concernant les routes: j'utilise le bundle BeSimpleI18nRoutingBundle() pour gérer l'internationnalisatio de mes routes.

 

 
		
		 
         
 

 
			
			


 
			

 Travailler avec les locales et les URLS
 Travailler avec les locales et les URLS
				 Répondre avec citation
  Répondre avec citation


 
			 
   
Partager