Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Quand j'ajoute des validators à mes champs Zend_Form(je passe par un fichier de config), les messages d'erreur apparaissent en Anglais.
Y a t il moyen de les avoir en Francais ?
J'ai essayé de mettre un
Zend_Locale::setDefault('fr_FR');
Mais çà n'a pas l'air de fonctionner.
Hors ligne
Bonjour,
j'ai réussit à le faire en créant un fichier de tracductuion comme ca :
traduction.php
<?php return array( "stringLengthTooShort" => "'%value%' fait moins de %min% caractères. ", "stringLengthTooLong" => "'%value%' fait plus de %max% caractères. ", "notInArray" => "'%value%' n'a pas été trouvé dans le tableau. ", ... ); ?>
et j'ai inséré dans mes controllers :
//Traduction automatique des messages d'erreur Zend_Loader::loadClass('Zend_Validate_Abstract'); $translator = new Zend_Translate('array','../application/traduction/traduction.php','fr'); Zend_Validate_Abstract::setDefaultTranslator($translator);
voilà...
Dernière modification par Peggy (07-03-2008 16:56:22)
Hors ligne
Pour mettre ça directement dans le code de la config du form, perso j'ai pas réussi non plus. Je sais qu'avant c'était possible via PHP mais là j'ai pas trouvé.
Le seul moyen c'est de passer par un Translator.
Donc en faite si tu fais un translator avec un .ini c'est possible mais j'ai pas essayé. Ca sera l'équivalent du tableau de Peggy du post au dessus. Et peux utiliser quasiment le même code pour charger la config.
Rq: Dans la mesure ou vous savez qu'une classe existe, n'utiliser pas Zend_Loader::loadClass() car c'est plus lourd qu'un simple require(_once). Par contre quand il s'agit d'incorporer une classe à partir d'une string formaté j'dis pas
Hors ligne
ok.
Petites questions
1) Ces messages affichés ils sont stockés où exactement ? Je ne les vois pas dans les sources, c'est géré par le navigateur ? Peut être que je dis une grosse bêtise...mais j'aimerai comprendre...
2) Je ne comprend pas pourquoi en faisant un
Zend_Locale::setDefault('fr_FR');
dans mon bootstrap, le message d'erreur généré suite à la saisie d'une date mal formatée est :
... is not of the format YYYY-MM-DD
Je pensais (naïvement) que le format date de ma localité était connu...Je fais quelque chose qui ne va pas là, ou bien ?
Hors ligne
Pour aider, voici mon formulaire de d'identification avec la traduction pour la validator NotEmpty
class My_Form_Login extends Zend_Form { public function __construct($options = null) { $english = array('isEmpty' => 'Le champ ne peut rester vide'); $translate = new Zend_Translate('array', $english, 'fr'); $translate->setLocale('fr'); Zend_Validate_Abstract::setDefaultTranslator($translate); parent::__construct($options); $this->setName('login'); $username = new Zend_Form_Element_Text('login'); $username->setLabel('Identifiant:'); $username->setRequired(true); $username->addValidator('NotEmpty'); $password = new Zend_Form_Element_Password('password'); $password->setLabel('Mot de passe:'); $password->setRequired(true); $password->addValidator('NotEmpty'); $submit = new Zend_Form_Element_Submit('submit'); $submit->setLabel('Envoyer'); $this->addElements(array( $username, $password, $submit )); } }
Biensur, il faut regarder dans le code du framework pour trouver la constante à traduire (ici isEmpty)
Dernière modification par nORKy (10-03-2008 16:44:32)
Hors ligne
Pages: 1