Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Merci à Phillippe pour le super tutorial sur Zend_Translate et Zend_Locale.
Le seul chose que me manque maintenant est comment il faut organizer mon application pour permettre à l'internaute de changer de langue.
Je sais qu'il faut changer Zend_Locale(ie. new Zend_Locale('en') )
Est-ce que il faut vraiment que j'utilise Modules? Est-ce que il y a des autres facons a faire?
merci pour votre aide.
-Mark
Dernière modification par fizzbanana (02-06-2007 19:53:48)
Hors ligne
De rien pour le tuto
Dans mes sites multilangues, je mets la langues dans toutes les URL où je peux la mettre (parfois ça n'est pas possible pour le retour d'un système de paiement ou autre joyeuseté avec des systèmes extérieurs).
Mes URL sont du type http://monsite/fr/xxx où "fr" est la langue.
Ensuite dans mon index.php, je regarde la langue fournie dans l'URL, je crée ma $locale en fonction et je la mets en session (si le gars revient sur la home http://monsite, il reste dans la même langue, c'est pour ça que je sauvegarde en session, aussi pour les quelques URL où je ne peux pas mettre la langue...).
Le lien pour changer de langue est souvent un lien vers la home dans l'autre langue (http://monsite/en).
Si la langue n'est pas définie en session et si elle n'est pas présente dans l'URL, je détermine la langue en fonction des préférences du navigateurs et des langues disponibles sur le site.
A+, Philippe
Hors ligne
j'ai arriver a faire quel que chose avec Request Object Parameters.
dans My_Controller_Action init() :
$lang = $this->_getParam('lang');
$locale = new Zend_Locale($lang);
$this->view->translateTool->setLocale($locale->getLanguage());
Apres il faut creer le Request Object Parameter 'lang' avec le language code... (ie. ?lang=en)
-mark
Hors ligne
Merci Phillippe, mais comment est il possible de regarde la langue fournie dans l'URL?
Hors ligne
En utilisant le Router_Rewrite, un code du type :
$controller = Zend_Controller_Front::getInstance(); $router = new Zend_Controller_Router_Rewrite(); $router->addRoute( "basic", new Zend_Controller_Router_Route( "/:language/:controller/:action/:parameter1/:parameter2", array( "language"=>null, "controller"=>"index", "action"=>"index", "parameter1"=>null, "parameter2"=>null) ) );
A+, Philippe
Hors ligne
philippe a écrit:
En utilisant le Router_Rewrite, un code du type :
Code:
$controller = Zend_Controller_Front::getInstance(); $router = new Zend_Controller_Router_Rewrite(); $router->addRoute( "basic", new Zend_Controller_Router_Route( "/:language/:controller/:action/:parameter1/:parameter2", array( "language"=>null, "controller"=>"index", "action"=>"index", "parameter1"=>null, "parameter2"=>null) ) );A+, Philippe
Par contre, comment récupérer cette variable "language" et l'ajouter aux vues, cela sans devoir ajouter le même code dans tout les controllers ?
Hors ligne
ceci ce met dans le bootstrap et non dans ton controller, sinon en principe avec $this->getParam tu dois pouvoir récupéré langue et autre
Hors ligne
> ceci ce met dans le bootstrap et non dans ton controller
> sinon en principe avec $this->getParam tu dois pouvoir récupéré langue et autre
Je me doute mais c'est justement le $this->getParam et tout ce qui vient avec que je ne voulais pas avoir à répéter.
Ce que j'ai réussi à faire en utilisant le système de Plugin.
Hors ligne
Pages: 1