Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Hello tout le monde,
En suivant le tutoriel (très bien fait par ailleurs) de JoeCarbure (http://www.joecarbure.com/dw2/doku.php? … ec_modules), je bloque sur le dernier point qui consiste à définir le bootstrap afin qu'il utilise la langue passée en paramètre dans l'url.
Alors j'aurai une question et un problème.
Je commence par la question : est ce la meilleure façon de mettre un site en multilingue que d'avoir le paramètre de langue dans l'url, n'est il pas plus opportun de placer le paramètre de langue en session par exemple ? Quels sont les intérêts de cette solution ?
Ensuite le problème : en suivant le tutoriel et en tentant de mettre en place le switch permettant la gestion auto des langues en fonction du param passé dans l'url, je tombe sur l'erreur suivante :
Fatal error: Call to a member function getParam() on a non-object in C:\wamp\www\backoffice\application\Bootstrap.php on line 196
Ce qui semblerait indiquer que j'essaye d'utiliser une fonction dans un contexte non objet. Pour rappel la structure proposée pour le bootstrap est la suivante :
public static function i18n() { // Définition de la langue à afficher require_once 'Zend/Locale.php'; require_once 'Zend/Translate.php'; // Définition des langues $language = Zend_Controller_Front::getInstance()->getRequest()->getParam("language", "fr"); switch ( $language) { case "en" : $locale = new Zend_Locale ( "en" ); break; default : $locale = new Zend_Locale ( "fr" ); break; } //Chargement du fichier de traduction $translator = new Zend_Translate ( 'tmx', 'c:/wamp/www/backoffice/application/modules/admin/translations/admin.tmx', $locale ); Zend_Registry::set ( 'translator', $translator ); }
Qui peut m'indiquer à quel endroit, je tombe en erreur ;-) ?
++
Fred
Hors ligne
->_getParam("language", "fr");
a la place de
->getParam("language", "fr");
en ce qui concerne l'intéret d'avoir la langue dans l'url, c'est pour le référencement par les moteurs de recherche
Hors ligne
Merci Lethak,
Malheureusement cela ne marcha pas mieux malgré quelque adaption du code :
public static function i18n() { // Définition de la langue à afficher require_once 'Zend/Locale.php'; require_once 'Zend/Translate.php'; // Définition des langues self::$frontController = Zend_Controller_Front::getInstance(); $language = self::$frontController->getRequest()->_getParam("language", "fr"); switch ( $language) { case "en" : $locale = new Zend_Locale ( "en" ); break; default : $locale = new Zend_Locale ( "fr" ); break; } //Chargement du fichier de traduction $translator = new Zend_Translate ( 'tmx', 'c:/wamp/www/backoffice/application/modules/admin/translations/admin.tmx', $locale ); Zend_Registry::set ( 'translator', $translator ); }
J'obtiens toujours la même erreur... :-(
Hors ligne
Salut,
si tu appelles ta méthode avant le dispatch, la requête n'est pas définie et getRequest retourne null
Hors ligne
grandlap a écrit:
Salut,
si tu appelles ta méthode avant le dispatch, la requête n'est pas définie et getRequest retourne null
j'allais le dire
http://www.kitpages.fr/cms/site/tutoria … lobale.jpg
a partir de routeshutdown tu peux y accéder, utilise un plugin a mon avis
http://framework.zend.com/manual/fr/zen … ugins.html
Hors ligne
lethak a écrit:
http://www.kitpages.fr/cms/site/tutoriaux/sequence_globale.jpg
a partir de routeshutdown tu peux y accéder, utilise un plugin a mon avis
http://framework.zend.com/manual/fr/zen … ugins.html
Merci pour ces précisions.
Donc concrètement, je dois écrire toute la function i18n dans la methode routeShutdown du plugin ? C'est bien ça ?
Je vais essayer...
Hors ligne
ben si tu utilises un plugin et sa méthode routeShutdown, la requête est passée en paramètre
public function routeShutdown (Zend_Controller_Request_Abstract $request) { $this->parlezVousAnglais(); $this->whereIsLeTourEffeil(); //etc }
[edit]
damn ! j'ai oublié le plus important
$this->monTailleurEstRiche();
[/edit]
Dernière modification par grandlap (29-08-2008 12:04:20)
Hors ligne
Salut,
Effectivement il vaut mieux utiliser un plugin. D'ailleurs je suis désolé de ne pas encore avoir modifié mon tutoriel.
Cela devrait être fait durant le week-end.
Edit : voilà un début de réponse http://www.z-f.fr/forum/viewtopic.php?pid=9950#p9950
Dernière modification par acharrex (29-08-2008 17:01:47)
Hors ligne