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…