<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.validate.messages">
    <title>Messages de validation</title>

    <para>
        Chaque validateur basé sur <classname>Zend_Validate</classname> propose un ou plusieurs messages
        dans le cas d'un échec. Vous pouvez utiliser ces informations pour créer vos propres messages
        ou pour traduire les messages présents.
    </para>

    <para>
        Ces messages sont représentés par des constantes se trouvant en haut de chaque classe de validateur.
        Voyons <classname>Zend_Validate_GreaterThan</classname> pour un exemple complet:
    </para>

    <programlisting language="php"><![CDATA[
protected $_messageTemplates = array(
    self::NOT_GREATER => "'%value%' n'est pas plus grande que '%min%'",
);
]]></programlisting>

    <para>
        Comme vous le voyez, la constante <constant>self::NOT_GREATER</constant> fait référence à un échec et est
        utilisée comme clé, le message lui-même est utilisé comme valeur dans le tableau des messages.
    </para>

    <para>
        Vous pouvez récupérer les templates de messages d'un validateur en utilisant la méthode
        <methodname>getMessageTemplates()</methodname>. Elle vous retourne le tableau comme vu ci-dessus qui contient
        tous les messages que le validateur pourrait retourner en cas d'échec de validation.
    </para>

    <programlisting language="php"><![CDATA[
$validator = new Zend_Validate_GreaterThan();
$messages  = $validator->getMessageTemplates();
]]></programlisting>

    <para>
        La méthode <methodname>setMessage()</methodname> permet de modifier un message unique correspondant à un
        cas particulier d'échec de validation.
    </para>

    <programlisting language="php"><![CDATA[
$validator = new Zend_Validate_GreaterThan();
$validator->setMessage('Entrez une valeur plus petite', Zend_Validate_GreaterThan::NOT_GREATER);
]]></programlisting>

    <para>
        Le deuxième paramètre indique le cas d'échec à surcharger. Lorsque vous omettez ce paramètre,
        alors le message précisé sera affecté comme message pour tous les cas d'échec possibles du validateur.
    </para>

    <sect2 id="zend.validate.messages.pretranslated">
        <title>Utiliser les messages de validations pré-traduits</title>

        <para>
            Zend Framework est livré avec plus de 45 validateurs différents et plus de 200 messages d'échecs.
            Cela peut-être pénible de tous les traduire. Pour votre convenance, Zend Framework est livré avec
            des messages d'échec pré-traduits. Vous les trouverez dans <filename>/resources/languages</filename>
            de votre installation de Zend Framework.
        </para>

        <note>
            <title>Chemin utilisé</title>

            <para>
                Les fichiers de ressources sont en dehors du dossier library car les traductions sont sensées
                être en dehors de ce chemin.
            </para>
        </note>

        <para>
            Donc pour traduire les messages de validation en français par exemple, tout ce qu'il y a à faire est
            d'attacher un objet de traduction à <classname>Zend_Validate</classname> en utilisant les fichiers
            de ressources (pré-traductions).
        </para>

        <programlisting language="php"><![CDATA[
$translator = new Zend_Translate(
    array(
        'adapter' => 'array',
        'content' => '/resources/languages',
        'locale'  => $language,
        'scan' => Zend_Translate::LOCALE_DIRECTORY
    )
);
Zend_Validate_Abstract::setDefaultTranslator($translator);
]]></programlisting>

        <note>
            <title>Adaptateur de traduction utilisé</title>

            <para>
                L'adaptateur array a été utilisé, ceci pour permettre une modification simple des
                messages pré-traduits.
            </para>
        </note>

        <note>
            <title>Langues supportées</title>

            <para>
                Cette caractéristique de pré-traduction est jeune, donc le nombre de langues supportées peut
                ne pas être complet. De nouvelles langues seront ajoutées dans les sorties futures.
            </para>

            <para>
                Vous pouvez aussi partir de ces fichiers pré-traduits pour créer vos propres traductions,
                par exemple.
            </para>
        </note>
    </sect2>

    <sect2 id="zend.validate.messages.limitation">
        <title>Limiter la taille d'un message de validation</title>

        <para>
            Il peut être nécessaire parfois de limiter la taille en caractères des messages d'erreur
            retournés. par exemple si une vue n'autorise que 100 caractères par ligne.
            <classname>Zend_Validate</classname> propose une telle option.
        </para>

        <para>
            La taille actuelle est
            <methodname>Zend_Validate::getMessageLength()</methodname>. -1 signifie que le message ne
            sera pas tronqué et entièrement retourné, c'est le comportement par défaut.
        </para>

        <para>
            Pour limiter la taille, utilisez
            <methodname>Zend_Validate::setMessageLength()</methodname>. Lorsque la taille excède cette valeur,
            le message sera alors tronqué et suivi de '<emphasis>...</emphasis>'.
        </para>

        <programlisting language="php"><![CDATA[
Zend_Validate::setMessageLength(100);
]]></programlisting>

        <note>
            <title>Où ce paramètre est-il utilisé ?</title>

            <para>
                La taille des messages affecte aussi les messages personnalisés enregistrés, dès
                que le validateur considéré étend <classname>Zend_Validate_Abstract</classname>.
            </para>
        </note>
    </sect2>
</sect1>