Symfonians en VF
Par NiKo le vendredi 14 mars 2008, 22:47 - Dev - Lien permanent
Je viens de mettre en ligne la version française de Symfonians[1]. J'ai préféré utiliser un sous-domaine pour définir la langue courante plutôt qu'un paramètre supplémentaire dans la requête, car le routing de Symfony implique de le gérer pour chacune des route (ou si y'a une astuce, je suis preneur.)
Ici, je détecte le sous domaine et en fait la langue courante de l'utilisateur au moyen d'un filtre. Pour ceux que ça intéresse, en voici le code :
<?php class i18nSubdomainFilter extends sfFilter { public function execute($filterChain) { if ($this->isFirstCall()) { $context = $this->getContext(); $request = $context->getRequest(); $host_parts = explode('.', $request->getHost()); if (count($host_parts) > 2) // We have at least a subdomain { $subdomain = strtolower($host_parts[0]); $enabled_cultures = sfConfig::get('app_cultures_enabled', array()); if (array_key_exists($subdomain, $enabled_cultures)) { sfConfig::set('sf_current_culture', $subdomain); $context->getResponse()->addMeta('language', $subdomain, true); $context->getUser()->setCulture($subdomain); } } } $filterChain->execute(); } }
Notez que je définis la liste des langues disponibles dans le fichier app.yml, pour éviter les blagues et gérer les domaines pour chacun des environnements que j'ai configuré[2] :
prod:
cultures:
enabled:
en: http://symfonians.net/
fr: http://fr.symfonians.net/
L'activation du filtre se fait dans le fichier filters.yml :
i18nSubdomain: class: i18nSubdomainFilter
Et roule ma poule, mon routing reste strictement intact 




















Commentaires
1. Le vendredi 14 mars 2008, 23:59 par Tonio
2. Le samedi 15 mars 2008, 09:05 par NiKo
3. Le samedi 15 mars 2008, 12:40 par fabien
4. Le samedi 15 mars 2008, 13:50 par NiKo
5. Le samedi 15 mars 2008, 15:19 par NiKo
6. Le dimanche 16 mars 2008, 18:28 par [MA]Pascal
7. Le dimanche 16 mars 2008, 18:36 par NiKo