Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
J'ai un problème avec des traduction de texte stocké via array dans zend_translate.
Dans mon bootstrap je crée une instance de Zend_Translate tirant les texte sous forme d'array dans un fichier php.
Je stock cette instance de zend_Translate dans la registry.
Dans mes views, aucun problème, j'utilise $this->translate('NOM_DU_LABEL') et ca me le traduit très bien
Mon problème vient lorsque je veux utiliser le translate dans mes Contollers
J'ai donc créé une classe à appeler dans les controlleur, je l'appèle via : UDF_Translate::translate->('NOM_DU_LABEL')
voilà ma classe
class UDF_Translate { public static function translate($message) { $translate = Zend_Registry::get('Zend_Translate'); return $translate->_($message); } }
Je n'ai pas d'erreur mais dans ma page, au lieud'avoir ma traduction affichée, j'ai le contenu de la variable $message qui s'affiche (donc la clé de l'array index que translate doit utiliser).
je ne comprends pas pourquoi il ne me renvoit pas la traduction voulue pour cette clé. le plus étrange, c'est que si je remplace $message par la vraie clé en texte, la ca fonctionne
donc : return $translate->_('NOM_DU_LABEL');
Quelqu'un aurait une idée?
P.S: les autres fonction de la classe translate fonctionnent, la fonction qui renvoit tous les labels fonctionne bien quand je l'utilise, ca me renvoit bien un array avec toutes les traductions.
Pour quoi donc avec une variable qui contient la clé ca ne fonctionne pas?
Merci d'avance, et dites moi si je ne suis pas assez clair ou si vous avez besoin de plus d'infos pour me répondre
Hors ligne
Bonjour Lopimp;
Pas besoin de faire une class;
tu peux directement instancier Zend_Translate dans ton bootstrap , puis enregistrer l'obj translate dans Zend_regisrty et dans ton controleur tu fais l'appel Zend_regisrty et en fin tu recupére l'obj translet :
index.php
..................................... // initialisation des différents modules (view, db,.....) $localeFr = new Zend_Locale("fr"); $localeEn = new Zend_Locale("en"); $translate->addTranslation( CSV_DIR.'/translate_fr.csv', 'fr'); $translate->addTranslation( CSV_DIR.'/translate_en.csv', 'en'); $translate->setLocale('en'); // EN figé par exemple Zend_Registry::set('translate', $translate);
Puis dans IndexController par exemple :
Zend_Loader::loadClass("Zend_Registry"); class IndexController extends Zend_Controller_Action { function indexAction() { $translate = Zend_Registry::get('translate'); $this->view->headerTitle_ = $translate->_("msg1") ; ................................................ } }
J'espere que sa va t'aider.....
Hors ligne
Merci pour les infos.
Hors ligne
Pages: 1