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 :

Traduire les messages d'erreur [ZF 1.9]


Sujet :

Zend_Form PHP

  1. #1
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut Traduire les messages d'erreur
    Bonjour,

    J'aimerais pouvoir traduire les messages d'erreurs générés par les éléments des formulaires. La documentation indique que le meilleur moyen est de traduire les identifiants des messages (j'imagine qu'il s'agit, par exemple, de notAlnum, notEmpty...). Le soucis c'est que j'utilise PoEdit pour les traductions et que le logiciel scanne mon code source. Or il n'a aucun moyen de savoir que je veux extraire notAlnum et tous les autres mots-clés. Avez-vous une solution propre pour ce problème ? (je pourrais créer un fichier .php juste avec les mots-clés et demander à PoEdit de scanner le fichier mais j'imagine qu'il y a plus propre que ça...).

    Merci !

  2. #2
    Membre éclairé Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Points : 663
    Points
    663
    Par défaut
    Salut!

    J'ai eu le même problème que toi et la seule solution que j'ai trouvé est de créé un fichier classe bidon contenant la méthode translate pour chaque message, du coup poedit scanne ce fichier et trouve les occurrences.

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    <?php
    /**
     * Classe de traduction permettant de traduire 
     * les messages d'erreur des formulaires
     *
     * Cette classe n'est pas appelée
     * elle est créée juste pour être scanné par poedit
     * 
     * Les codes de messages d'erreurs sont détecté et ajoutés au fichier de traduction
     * 
     * 
     */
    class Form_Translations
    {
        public $t;
     
        public function __construct()
        {
            $this->t = Zend_Translate::getAdapter();
     
            $this->t->translate("isUnique");
            $this->t->translate("noRecordFound");
            $this->t->translate("recordFound");
            $this->t->translate('notAlnum');
            $this->t->translate('notAlpha');
            $this->t->translate('notBetween');
            $this->t->translate('notBetweenStrict');
            $this->t->translate('dateNotYYYY-MM-DD');
            $this->t->translate('dateInvalid');
            $this->t->translate('dateFalseFormat');
            $this->t->translate('notDigits');
            $this->t->translate('emailAddressInvalid');
            $this->t->translate('emailAddressInvalidHostname');
            $this->t->translate('emailAddressInvalidMxRecord');
            $this->t->translate('emailAddressDotAtom');
            $this->t->translate('emailAddressQuotedString');
            $this->t->translate('emailAddressInvalidLocalPart');
            $this->t->translate('notFloat');
            $this->t->translate('notGreaterThan');
            $this->t->translate('notInt');
            $this->t->translate('notLessThan');
            $this->t->translate('isEmpty');
            $this->t->translate('stringEmpty');
            $this->t->translate('regexNotMatch');
            $this->t->translate('stringLengthTooShort');
            $this->t->translate('stringLengthTooLong');
            $this->t->translate('fileExtensionFalse');
            $this->t->translate('fileExtensionNotFound');
            $this->t->translate('fileCountTooMuch');
            $this->t->translate('fileCountTooLess');
            $this->t->translate('fileImageSizeWidthTooBig');
            $this->t->translate('fileImageSizeWidthTooSmall');
            $this->t->translate('fileImageSizeHeightTooBig');
            $this->t->translate('fileImageSizeHeightTooSmall');
            $this->t->translate('fileImageSizeNotDetected');
            $this->t->translate('fileImageSizeNotReadable');
            $this->t->translate('emailDoesntExist');
        }
    }
    ?>

  3. #3
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Merci bien. En attendant mieux je prends cette solution :/ (dommage qu'il soit pas possible directement d'ajouter des lignes depuis poEdit).

  4. #4
    Membre éclairé Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Points : 663
    Points
    663
    Par défaut
    ça c'est vrai c'est vraiment dommage

  5. #5
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    ... parce que à part ça ça marche vraiment bien ce système de traduction (et c'est vraiment bien bien foutu !).

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Pourtant dans la class Form, il y a tous ce qu'il faut, si ton objet est enregistrer dans Zend_Registry('Zend_Translate'), comme la convention le conseille.

    dans la classe Form il récupère ton translate dans le isValid() et traduit les messages suivant ton poedit(si tu as garder les même id).

    sinon tu passe ton adaptater translate comme ceci dans ta class form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->setTranslator($translator);
    et tes messages seront traduits

  7. #7
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Non justement. Mon objet est bien enregistré dans le registre sous le nom de Zend_Translate, le soucis c'est que justement, dans poEdit je ne peux pas ajouter "à la main" des mots (comme les identifiants des messages d'erreur par exemple). La seule façon d'ajouter des mots c'est que poEdit scanne mes fichiers et ajoute les mots chaque fois qu'il rencontre un des mots-clés définis (translate, _, setValue...). Or, sans la petite astuce du dessus en créant un fichier bateau ces valeurs ne sont jamais ajoutés (à moins qu'il faille que j'ajoute la bibliothèque Zend dans les fichiers à scanner ? Mais ça me paraît un peu overkill u_u).

  8. #8
    Membre éclairé Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Points : 663
    Points
    663
    Par défaut
    Je rejoins Bakura, Poedit ne peut pas trouver les constantes dans les classes de validations pour les traduire.

    Il y a bien cette solution sur la FAQ :
    http://zend-framework.developpez.com...initialisation

    Mais ça oblige à créer un autre fichier de langue exprès pour les formulaires et ce n'est pas top....

  9. #9
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Je ne connais pas poEdit, il n'y pas moyen de créer un fichier à la main ?

    Où alors si il doit scanné!!!!!, le répertoire validate de Zend n'est pas énorme.

  10. #10
    Membre éclairé Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Points : 663
    Points
    663
    Par défaut
    Non justement on ne peut pas créer de fichier à la main et on ne peut pas ajouter de traduction à la volée et c'est bien dommage.

    Peut-etre que l'on se trompe mais j'ai pas mal cherché et jusqu'à présent rien trouvé sur le sujet.

    Sinon pour t'expliquer rapidement, Poedit va scanner les fichier pour trouver une chaîne de caractère à l'intérieur d'une fonction ou d'une méthode (dans notre cas 'translate()' ).

    Les messages d'erreurs dans les validateurs sont stockés dans une variable $_messageTemplate dont les clés font référence à une constante. Donc impossible pour poedit de détecter la function translate et donc la chaine de caractere à l'intérieur

  11. #11
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Ok merci pour les infos

  12. #12
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Effectivement, manuscle a tout dit... Mais bon, la solution de créer un fichier n'est pas dérangeante en soit, c'est juste que c'est pas très propre, par rapport au reste du code .

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

Discussions similaires

  1. [SAX] Sax traduire les messages d'erreur en français
    Par sinur dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 15/02/2011, 14h11
  2. Traduire les messages d'erreur de validation
    Par Aquaa dans le forum Zend_Form
    Réponses: 2
    Dernier message: 10/05/2010, 13h08
  3. Réponses: 5
    Dernier message: 16/08/2005, 12h15
  4. [Message d'erreur] gérer les message d'erreurs
    Par heid dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2004, 14h57
  5. recuperer les messages d'erreurs de interbase
    Par devalender dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/06/2004, 11h45

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