Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Voila, j'ai développé une app en local sur WAMP qui fonctionnait bien.
Voici mon bootstrap
<?php /* * **** * Bootstrap Zend project * **** */ /* * Gestion des erreurs d'Apache */ error_reporting(E_ALL|E_STRICT); /* * Gestion du time_zone par defaut */ date_default_timezone_set('Europe/London'); //define("WEBAPP_DIR", '/opt/www/nomduprojet/current/'); //define("MODEL_DIR", WEBAPP_DIR . "/application/models"); /* * Gestion de la racine de l'application */ set_include_path('.' . PATH_SEPARATOR . '../library' . PATH_SEPARATOR . '../application/models' . PATH_SEPARATOR . get_include_path()); /* * Appel, le module Zend Loader, qui va se charger de gérer les appel aux classes */ require_once "Zend/Loader.php"; Zend_Loader::registerAutoload(); /* * Charge le fichier langue suivant cele définie dans par le naviguateur */ $options_separator = array('separator' => '|'); $translate = new Zend_Translate('csv', '../application/languages/fr/fr.csv', 'fr', $options_separator); $translate->addTranslation('../application/languages/en/en.csv', 'en', $options_separator); # Ajoute la langue English au translate $language_local = new Zend_Locale(); $translate->setLocale($language_local); Zend_Registry::set('translate', $translate); /* * Charge et sauvegarde la configuration de Zend, d'après le fichier conf.ini */ $config = new Zend_Config_Ini('../application/config/config.ini', 'general'); Zend_Registry::set('config', $config); /* * Créer une instance database */ $db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray()); Zend_Db_Table::setDefaultAdapter($db); Zend_Registry::set('dbAdapter', $db); /* * Installe le Front_Controller */ $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions($config->exceptions->config->enabled); $frontController->setControllerDirectory('../application/controllers'); $frontController->setBaseUrl('/'); /* * Lance la configuration du Front_Controller */ $frontController->dispatch(); ?>
Dans le indexController , j'ai fais fais une fonction init() qui appel les config de base pour ce controller.
public function init() { /* * Initialise la base de l'url */ $this->view->baseUrl = $this->_request->getBaseUrl(); /* * Initialise l'object translate * Ex: $this->view->PanelTrackingTitle = $this->translate->_('PanelTrackingTitle'); */ $this->translate = Zend_Registry::get('translate'); /* * Envoi les données du membre dans le viwer */ $this->view->auth = Zend_Auth::getInstance()->getIdentity(); }
Ensuite dans l'action indexAction(), j'ai envoyé au viewer, une des chaines de mon CSV, comme cela:
public function indexAction() { /* * Exemple du texte */ $this->view->NewTrackingFormErrorTitle = $this->translate->_('NewTrackingFormErrorTitle'); ... ... ...
Mais voila, maintenant que j'ai déployé l'app, sur le serveur distant qui tourne sur du LAMP, la reconnaissance des chaines n'est plus reconnue, dans le viewer Index.phtml.
En gros dans le viewer, quand je récupère la variable
$this->NewTrackingFormErrorTitle;
Il m'affiche simplement le nom de la variable, soit: NewTrackingFormErrorTitle
Je ne sais pas si, cela vient du serveur, mais je dois dire, que la je comprend vraiment pas pourquoi ça ne fonctionne plus.
Je suis ouvert au proposition
Merci
Dernière modification par Badoux (26-09-2008 16:30:23)
Hors ligne
Alors pas d'idée ? Je pense que c'est flagrant comme problème, pour un expert. Alors c'est peut-être moi qui ne suis pas claire ?
Pour aider, je vous présente, mes débug, qui pourront peut-être, vous avancer : ?
J'ai essayer de voir si la méthode de récupération Zend_Registry::get('translate') ressortait quelque chose. ?
Pour cela, j'ai fais un passage de variable dans l'action Index, du controller du même nom.
controller/IndexController.php
public function indexAction() { $this->view->ReturnTranslate = $this->translate; ... ... ...
Ensuite dans le viewer index, j'ai ajouté le passage de contenu, comme ça:
views/scripts/index/index.phtml
<?php echo print_r($this->ReturnTranslate); ?>
Ben oui, il ressort bien le contenu suivant
views/scripts/index/index.phtml
Zend_Translate Object ( [_adapter:private] => Zend_Translate_Adapter_Csv Object ( [_automatic:private] => [_options:protected] => Array ( [clear] => [scan] => [locale] => fr [delimiter] => ; [length] => 0 [enclosure] => " [separator] => | ) [_translate:protected] => Array ( [fr] => Array ( ) [en] => Array ( ) ) [_file] => Resource id #12 ) ) 1
Problème c'est que je ne sais pas exactement ce que devrait ressortir le Zend_Registry::get('translate'). Donc, quand je vois un length = 0, je me dis que la variable est vide. J'en sais rien et vous ?
Hors ligne
Bonjour Badoux,
Evite de relancer tes messages trop vite surtout le week-end...
Sinon comme pour tout déploiement entre windows et unix, je parie sur un problème de majuscule. Unix est case sensitive et pas windows.
Est-ce que tu peux vérifier tes chemins ../application/languages/fr/fr.csv, notamment pour les majuscule. Il semble qu'ils ne soient pas enregistrés.
Maintenant si tu as moyen de passer tes messages d'erreur PHP en E_ALL, il est probable que PHP te signalera ton erreur directement.
Dis nous si ça résout ton problème.
A+, Philippe
Hors ligne
Salut Philippe,
(Désolé pour la relance, mais je voulais simplement apporter d'avantage d'info)
Sinon, j'ai eu en effet, ce problème de majuscule en passant de windows à linux. Mais la j'ai vérifié et tous mes chemin/répertoire sont en minuscule.
Je sais pas si tu as regardé mon premier message, j'y ai ajouté la copie de mon bootstrap, ou tu peux voir que j'ai bien passé les erreurs de PHP en E_ALL, mais pas d'erreur à l'horizont. Tu peux voir aussi que mes chemins jusqu'à mon/mes rep langues sont bien en minuscule. Donc normalement ça dois être bon. Mais non...
P.S: Vive le respect de la case.
Hors ligne
Alors personne n'as d'idée. La je sèche, grave. J'ai tout essayé.
Et pas de majuscule à l'horizon.
Ce que je peux dire, c'est que normalement, quand je fais un print_r du contenu du tableau $this->translate, il devrait dans au niveau de [_translate:protected] => Array(..., sortir tout le texte. Mais la en l'occurence il est vide, comme vous pouvez le voir dans mon deuxième message.
Zend_Translate Object ( [_adapter:private] => Zend_Translate_Adapter_Csv Object ( [_automatic:private] => [_options:protected] => Array ( [clear] => [scan] => [locale] => fr [delimiter] => ; [length] => 0 [enclosure] => " [separator] => | ) [_translate:protected] => Array ( [fr] => Array ( ) [en] => Array ( ) ) [_file] => Resource id #12 ) ) 1
Donc, d'après vous, cela peut venir d'ou ?
Merci.
Dernière modification par Badoux (26-09-2008 14:54:38)
Hors ligne
Résolu:
Voila, en fait, pour je ne sais qu'elle raison, sous WAMP, le paramètre array('separator' => '|');", fonctionne très bien, mais pas sous Linux ou il faut utiliser le array('delimiter' => '|');
Je dis bizarre, mais soulagé
Voila la solution au cas ou.
WAMP
$options_separator = array('separator' => '|'); $translate = new Zend_Translate('csv', '../application/languages/fr/fr.csv', 'fr', $options_separator); $translate->addTranslation('../application/languages/en/en.csv', 'en'); # Ajoute la langue English au translate $language_local = new Zend_Locale(); $translate->setLocale($language_local); Zend_Registry::set('translate', $translate);
Mais sous
LAMP
$options_separator = array('delimiter' => '|'); $translate = new Zend_Translate('csv', '../application/languages/fr/fr.csv', 'fr', $options_separator); $translate->addTranslation('../application/languages/en/en.csv', 'en'); # Ajoute la langue English au translate $language_local = new Zend_Locale(); $translate->setLocale($language_local); Zend_Registry::set('translate', $translate);
++
Hors ligne
Hello,
Tu n'as pas les même versions du ZF sur les 2 machines !!!
En version 1.6.x, c'est "delimiter".
En version 1.5.x, c'est "separator".
A+
Hors ligne
Exactement. J'étais certain que cela venait d'une incompatibilité entre les deux versions.
Merci quand même.
Hors ligne
Pages: 1