De base, symfony ne fourni pas une fonction de récupération du langage de l’interface utilisateur mais seulement la culture. Dans le layout par défaut, vous trouvez cette balise:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
Sur un site multilingue, cette information est très importante pour les robots de recherche. Elle permet de classer son contenu selon la langue affichée. Dans mon cas, j’utilise fr_CH comme culture par défaut et comme j’aimerai garder uniquement les deux premiers caractères, j’ai inséré une fonction dans la classe myUser.class.php se trouvant dans le dossier lib de l’application:
class myUser extends sfBasicSecurityUser { ... public function getLanguage() { $result = explode('_', $this->getCulture()); return $result[0]; } ... }
Ensuite, il suffit de personnaliser la balise html avec la fonction ci-dessus:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $sf_user->getLanguage(); ?>" lang="<?php echo $sf_user->getLanguage(); ?>">
J’espère que cette petite astuce vous servira…