informatique:php:symfony:gestion_de_la_langue_de_l_utilisateur
Ceci est une ancienne révision du document !
−Table des matières
Gestion de la langue de l'utilisateur
Dans cette page nous allons détecter automatique la langue de l'utilisateur puis lui proposer de la changer.
Détection automatique de la langue
On créer un filtre (sfFilter) qui va détecter la langue de l'utilisateur et la lui affecter dans l'objet user (sfUser→setCulture()). Pour que le code du filtre ne s'exécute pas à toute les requêtes, on va forcer Symfony a ne pas affecter à l'utilisateur la langue par défaut. Il faut aussi indiquer au filtre les langues disponibles sur le site.
Pas de culture par défaut
# apps/frontend/config/settings.yml all: .settings: default_culture: null
Les langues disponibles sur le site
# apps/frontend/config/app.yml all: .global: available_cultures: [fr,en]
Le filtre AutoLanguageFilter
# apps/frontend/lib/AutoLanguageFilter.class.php class AutoLanguageFilter extends sfFilter { public function execute( $filterChain ) { if( $this->getContext()->getUser()->getCulture() == null ) { $available_cultures = sfConfig::get('app_available_cultures'); if( ! is_array($available_cultures) ) { throw new sfConfigurationException(sprintf('%s requires a "available_cultures" configuration key.', get_class($this))); } // automatic user's culture selection if not already set $this->getContext()->getUser()->setCulture( $this->getContext()->getRequest()->getPreferredCulture( $available_cultures ) ); //sfContext::getInstance()->getLogger()->debug( 'automatic user\'s culture selection : '.$user->getCulture() ); } // Execute next filter $filterChain->execute(); } }
informatique/php/symfony/gestion_de_la_langue_de_l_utilisateur.1297263994.txt.gz · Dernière modification : 19/05/2012 00:15 (modification externe)