Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-09-2009 12:37:16

Lopimp
Membre
Date d'inscription: 31-07-2009
Messages: 22

[1.8][Zend_Registry | zend_translate] dans une classe = problème

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

Code:

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

 

#2 16-09-2009 00:12:48

ziededt
Nouveau membre
Date d'inscription: 07-09-2009
Messages: 3

Re: [1.8][Zend_Registry | zend_translate] dans une classe = problème

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

Code:

..................................... // 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 :

Code:

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

 

#3 18-09-2009 15:18:41

Lopimp
Membre
Date d'inscription: 31-07-2009
Messages: 22

Re: [1.8][Zend_Registry | zend_translate] dans une classe = problème

Merci pour les infos.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages