Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-04-2010 23:22:31

bibine425
Membre
Date d'inscription: 09-10-2007
Messages: 17

[Zend 1.10.3][Zend_Filter_Input] Messages d'erreurs personnalisés

Bonsoir à tous,

Voilà, je viens de télécharger la version 1.10.3 de Zend Framework.


Mais voilà, j'ai un petit soucis.
Avec "Zend_Filter_Input", je n'arrive plus à personnaliser les messages d'erreurs.


Aprés avoir lu, la nouvelle documentation, j'ai tenté de faire fonctionner la traduction pour personnaliser mes messages d'erreurs. Voilà ce petit bout de code:

Code:

if(!empty($_POST['submit'])):
        $filtres = array('*' => 'StringTrim','*' => 'StringToLower');
        
        $validateurs = array(  
          'month' => array( new Zend_Validate_Between(1, 12) ) 
      );
            
         $translate = new Zend_Translate_Adapter_Array(array(                  
            Zend_Validate_Between::NOT_BETWEEN =>'Le mois %value% doit être  compris entre  %min% and %max%',
        Zend_Validate_Between::NOT_BETWEEN_STRICT => ''Le mois %value% doit être strictement compris entre  %min% and %max% '
            ), 'fr'
    );
        
    $input = new Zend_Filter_Input($filtres, $validateurs, $_POST/*, $options*/);
     $input->setTranslator($translate);
     
             Zend_Debug::dump($input->getMessages()); 
            exit;    
            
endif;

En affichant "$input->getMessages()" les messages d'erreurs s'affichent toujours en anglais (texte original) et non pas avec le message personnalisé.

Code:

Exemple : array(1) {
  ["month"] => array(1) {
    ["notBetween"] => string(47) "'hjgh' is not between '1' and '12', inclusively"
  }
}

Quelqu'un peut-il m'aider à comprendre comment faire pour afficher les messages correspondant à l'erreur indiquée ???

En vous remerciant d'avance.

Hors ligne

 

#2 21-04-2010 02:37:44

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: [Zend 1.10.3][Zend_Filter_Input] Messages d'erreurs personnalisés

Pour traduire les messages d'erreur fais comme cela :

[*] Créer un dossier languages/ dans application/
[*] Créer un fichier .tmx (=>Translation Memory eXchange, fichier de traduction type xml), par exemple : traderreurfr.tmx
[*] Après l'autoloader ajouter :

Code:

// Traduction des erreurs
$translate = new Zend_Translate('tmx',APPLICATION_PATH .'/languages/traderreurfr.tmx', null, array('scan' => Zend_Translate::LOCALE_FILENAME));
$translate->setLocale('fr_FR');
Zend_Registry::set('Zend_Translate', $translate);

[*] Remplir  le fichier .tmx (voir ci-dessous)


Voila, si j'ai pas bien compris ta question ça servira à quelqu'un d'autre xD

Exemple fichier .tmx

Code:

<?xml version="1.0" encoding="UTF-8"?>

<tmx version="1.4">
    <body>
        <tu tuid='notAlnum'>
            <tuv xml:lang="fr"><seg><![CDATA['%value%' ne contient pas que des lettres et/ou des chiffres.]]></seg></tuv>
        </tu>
        <tu tuid='notAlpha'>
            <tuv xml:lang="fr"><seg><![CDATA['%value%' ne contient pas que des lettres.]]></seg></tuv>
        </tu>
        <tu tuid='notBetween'>
            <tuv xml:lang="fr"><seg><![CDATA['%value%' n'est pas compris entre %min% et %max% inclus.]]></seg></tuv>
        </tu>
    </body>
</tmx>

Dernière modification par shadypierre (21-04-2010 02:38:48)

Hors ligne

 

#3 21-04-2010 08:23:32

bibine425
Membre
Date d'inscription: 09-10-2007
Messages: 17

Re: [Zend 1.10.3][Zend_Filter_Input] Messages d'erreurs personnalisés

Re !

Peut-être que je me suis mal exprimé. Ce n'est pas l'écriture des traductions qui me pose problème mais comment récupérer la traduction du message en fonction de l'erreur trouvé.

Je reprend l'exemple ci-dessus :
Si $_POST['month'] = '13', si aucune traduction ajouté on m'affichera le message d'erreur suivant :

Code:

Zend_Debug::dump($input->getMessages());

/*
array(1) {
  ["month"] => array(1) {
    ["notBetween"] => string(45) "'13' is not between '1' and '12', inclusively"
  }
}
*/

Mais moi je souhaite qu'en ajoutant la traduction en français, lorsque que je mets pour $_POST['month'] = '13', on m'affiche le message d'erreur traduit et correspondant, soit :

Code:

Zend_Debug::dump($input->getMessages());

/*
array(1) {
  ["month"] => array(1) {
    ["notBetween"] => string(48) "'13' n'est pas compris entre '1' et '12' inclus."
  }
}
*/

J'espère avoir été assez clair cette fois-ci. Vous savez comment résoudre ce problème en vous remerciant d'avance.

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