IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

[Zend Form] Traduction des messages d'erreur


Sujet :

Zend_Form PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut [Zend Form] Traduction des messages d'erreur
    J'aimerai bien traduire en francais les messages d'erreur issu des forms généré par zend form.

    Les message dans ce style la pour les mail par exemple

    * 'aol' is not a valid hostname for email address 'huhu@aol'
    * 'aol' does not match the expected structure for a DNS hostname
    * 'aol' appears to be a local network name but local network names are not allowed

    Sans passé par le Zend Translate si possible.

    Merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		$french = array("isEmpty" => "Le champ est vide");
    		$translate = new Zend_Translate('array', $french, 'fr');
    		$this->setTranslator($translate);
    Voila la solution la plus simple que j'ai pu trouver.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    Bonjour, chaque message d'erreur possède un ID par exemple l'ID de l'erreur si le champs est vide alors qu'il devré etre rempli est "isEmpty" , tu peux donc creer un fichier de traduction comme ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    isEmpty;Ce champ ne doit pas être vide
    stringLengthTooShort;Chaine trop courte
    le fichier est a mettre dans un répertoire language que tu appel globalerror_fr.csv par exemple si tu a choisi la methode csv pour les translates
    et globalerror_en.csv pour l'anglais,
    ensuite dans ton controller tu défini la methode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
       Zend_Loader::loadClass("Zend_Translate");
       /**langue de depart**/	
        $this->translate = new Zend_Translate('csv', './language', null, arra('scan' => Zend_Translate::LOCALE_FILENAME));
        	$this->view->translate = $this->translate;
    des translate et hop magique Zend recupere la langue du navigateur et gère tout tout seul comme un grand

    si tu a utiliser un objet de type Zend_form alors tout se fera en automatique

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Je me permets de m'incruster dans le topic pour dire merci dans un premier temps, cette soluce m'a bien aidée, et en second temps, pour me permettre de dire au prochain qui peuvent galérer comme moi durant une demi heure:

    Si vous obtenez une erreur T_DOUBLE_ARROW, la raison est simple, il manque un "y" à "array":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Zend_Loader::loadClass("Zend_Translate");
     
     $this->translate = new Zend_Translate('csv', './language', null, array('scan' => Zend_Translate::LOCALE_FILENAME));
    Et j'ajoute que pour généraliser à toute l'application, on peux mettre ceci dans le bootstrap à la place:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $translate = new Zend_Translate('csv', $appPath.'/language', null, array('scan' => Zend_Translate::LOCALE_FILENAME));
     
    $translate->setLocale('fr_FR');
     
    Zend_Registry::set('Zend_Translate', $translate);
    Voilou... Simplement qu'il est bon d'aider quand on peux

    Merci encore

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639

  6. #6
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Cette solution ne fonctionne pas a 100% dans mon cas:
    J'ai bien fait comme indiqué dans la faq à la difference que j'utilise des ids, gérant moi même la traduction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public function __construct($options = null)
        {
            parent::__construct($options);
     
            // traduction des messages d'erreur de validation
            $french = array(
    	        'notAlnum' => "formerreur_doit_etre_alphanumerique",
    	        (...)
                    'emailAddressInvalid' => "formerreur_email_incorrecte",
    	        'emailAddressInvalidHostname' => "formerreur_email_incorrecte",
    	        'emailAddressInvalidMxRecord' => "formerreur_email_incorrecte",
    	        'emailAddressDotAtom' => "formerreur_email_incorrecte",
    	        'emailAddressQuotedString' => "formerreur_email_incorrecte",
    	        'emailAddressInvalidLocalPart' => "formerreur_email_incorrecte",
                    (...)
    	        'stringLengthTooLong' => "formerreur_chaine_trop_longue"
            );
     
            $translate = new Zend_Translate('array', $french, 'fr');
            $this->setTranslator($translate);
        }
    Hors lors d'une mauvaise saisie d'email
    Il m'affiche une erreur concaténant mon tag et l'erreur zend_form
    exple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formerreur_email_incorrecte 'societe' does not match the expected structure for a DNS hostname 'societe' appears to be a local network name but local network names are not allowed
    Complement d'info:
    Je n'ai ce comportement bizarre que pour l'erreur emailAddressInvalidHostname (email@societe)
    les autres il me retourne bien mon tag seul


    note: j'utilise ZF 1.8.4
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  7. #7
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut RESOLU
    Je vous mets la réponse (ca peut servir)
    Le comportement particulier de cette erreur est du au fait qu'il génère en plus une erreur de validation d'hostname

    J'ai ajouté ces quelques lignes pour eviter d'avoir cette sortie "concatené"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public function __construct($options = null)
        {
            parent::__construct($options);
     
            // traduction des messages d'erreur de validation
            $french = array(
    	      (...)
     
    	        'emailAddressInvalid' => "formerreur_email_incorrecte",
    	        'emailAddressInvalidFormat' => "formerreur_email_incorrecte",
    	        'emailAddressInvalidHostname' => "formerreur_email_incorrecte",
    	        'emailAddressInvalidMxRecord' => "formerreur_email_incorrecte",
    	        'emailAddressDotAtom' => "formerreur_email_incorrecte",
    	        'emailAddressQuotedString' => "formerreur_email_incorrecte",
    	        'emailAddressInvalidLocalPart' => "formerreur_email_incorrecte",
    	        'emailAddressLengthExceeded' => "formerreur_email_incorrecte",
     
                    //ajout des ids d'erreurs d'hostname
    			'hostnameIpAddressNotAllowed' => '',
    			'hostnameUnknownTld'=> '',
    			'hostnameDashCharacter'=> '',
    			'hostnameInvalidHostnameSchema'=> '',
    			'hostnameUndecipherableTld'=> '',
    			'hostnameInvalidHostname'=> '',
    			'hostnameInvalidLocalName'=> '',
    			'hostnameLocalNameNotAllowed'=> '',
    			'hostnameCannotDecodePunycode'=> '',
     
     
    	       (...)
            );
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Il y a plus simple avec le pack "complet" pour ZF (et non le pack minimal qui ne contient pas les ressources).

    Documentation officielle ZF

    Je suis tombé sur cette recherche depuis Google... Autant partager une autre bonne réponse

  9. #9
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Merci du partage mais si tu regarde le dernier message remonte à il y a 2 ans.
    A cette époque, la 1.11 n'existait pas et ces traductions également.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Traduction des messages d'erreurs de Firebird
    Par SergioMaster dans le forum Firebird
    Réponses: 5
    Dernier message: 20/10/2014, 07h29
  2. [2.x] Traduction des messages d'erreur d'authentification
    Par symfolive dans le forum Symfony
    Réponses: 0
    Dernier message: 22/08/2012, 09h44
  3. [ZF 1.10] Traduction des messages d'erreur des validateurs ZF
    Par erehcab dans le forum Zend_Form
    Réponses: 2
    Dernier message: 01/12/2010, 15h28
  4. Réponses: 1
    Dernier message: 23/03/2009, 15h56
  5. Réponses: 4
    Dernier message: 11/05/2006, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo