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 



















