Sfoglia il codice sorgente

[DOCUMENTATION] French: sync manual

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@20789 44c647ce-9c0f-0410-b52a-842ac1e357ba
mikaelkael 16 anni fa
parent
commit
fde181388c

+ 289 - 94
documentation/manual/fr/module_specs/Zend_Validate-EmailAddress.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 17407 -->
+<!-- EN-Revision: 20115 -->
 <!-- Reviewed: no -->
 <!-- Reviewed: no -->
 <sect2 id="zend.validate.set.email_address">
 <sect2 id="zend.validate.set.email_address">
     <title>EmailAddress</title>
     <title>EmailAddress</title>
@@ -11,10 +11,12 @@
         domaine.
         domaine.
     </para>
     </para>
 
 
-    <para><emphasis>Utilisation de base</emphasis></para>
+    <sect3 id="zend.validate.set.email_address.basic">
+        <title>Utilisation de base</title>
 
 
-    <para>
-        Exemple basique : <programlisting language="php"><![CDATA[
+        <para>Vous trouverez ci-dessous un exemple d'utilisation basique&#160;</para>
+
+        <programlisting language="php"><![CDATA[
 $validateur = new Zend_Validate_EmailAddress();
 $validateur = new Zend_Validate_EmailAddress();
 if ($validateur->isValid($email)) {
 if ($validateur->isValid($email)) {
     // l'email est valide
     // l'email est valide
@@ -24,40 +26,132 @@ if ($validateur->isValid($email)) {
         echo "$message\n";
         echo "$message\n";
     }
     }
 }
 }
-]]></programlisting> Ceci validera l'adresse émail <varname>$email</varname> et, en cas d'échec,
-        fournira des messages d'erreur informatifs via
-        <code>$validator-&gt;getMessages()</code>.
-    </para>
+]]></programlisting>
 
 
-    <para><emphasis>Parties locales complexes</emphasis></para>
+        <para>
+            Ceci validera l'adresse émail <varname>$email</varname> et, en cas d'échec,
+            fournira des messages d'erreur informatifs via
+            <code>$validator-&gt;getMessages()</code>.
+        </para>
+    </sect3>
 
 
-    <para>
-        <classname>Zend_Validate_EmailAddress</classname> validera toute adresse émail
-        conforme à la RFC2822. Comme par exemple <code>bob@domaine.com</code>,
-        <code>bob+jones@domaine.fr</code>, <code>"bob@jones"@domaine.com</code> et <code>"bob
-        jones"@domaine.com</code>. Quelques formats d'émail obsolètes ne seront pas validés (comme
-        tout émail contenant un retour chariot ou un caractère "\").
-    </para>
+    <sect3 id="zend.validate.set.email_address.options">
+        <title>Options for validating Email Addresses</title>
 
 
-    <para><emphasis>Validation de différents types de noms de domaine</emphasis></para>
+        <para>
+            <classname>Zend_Validate_EmailAddress</classname> supports several options which can
+            either be set at initiation, by giving an array with the related options, or
+            afterwards, by using <methodname>setOptions()</methodname>. The following options are
+            supported:
+        </para>
 
 
-    <para>
-        La partie domaine d'une adresse émail est validée via <link
-        linkend="zend.validate.set.hostname"><classname>Zend_Validate_Hostname</classname></link>.
-        Par défaut, seules les domaines qualifiés sous la forme <code>domaine.com</code> sont
-        acceptés, même si, il vous est possible d'accepter les adresses IP et les domaines locaux
-        également.
-    </para>
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <emphasis>allow</emphasis>: Defines which type of domain names are accepted.
+                    This option is used in conjunction with the hostname option to set the
+                    hostname validator. For more informations about possible values of this
+                    option, look at <link linkend="zend.validate.set.hostname">Hostname</link>
+                    and possible <constant>ALLOW</constant>* constants. This option defaults to
+                    <constant>ALLOW_DNS</constant>.
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>hostname</emphasis>: Sets the hostname validator with which the
+                    domain part of the email address will be validated.
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>mx</emphasis>: Defines if the MX records from the server should be
+                    detected. If this option is defined to <constant>TRUE</constant> then the MX
+                    records are used to verify if the server
+                    accepts emails. This option defaults to <constant>FALSE</constant>.
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>deep</emphasis>: Defines if the servers MX records should be verified
+                    by a deep check. When this option is set to <constant>TRUE</constant> then
+                    additionally to MX records also the A, A6 and <constant>AAAA</constant> records
+                    are used to verify if the server accepts emails. This option defaults to
+                    <constant>FALSE</constant>.
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>domain</emphasis>: Defines if the domain part should be checked.
+                    When this option is set to <constant>FALSE</constant>, then only the local part
+                    of the email address will be checked. In this case the hostname validator will
+                    not be called. This option defaults to <constant>TRUE</constant>.
+                </para>
+            </listitem>
+        </itemizedlist>
 
 
-    <para>
-        Afin de réaliser cette opération, il vous faut instancier
-        <classname>Zend_Validate_EmailAddress</classname> en lui passant un paramètre indiquant le
-        type de nom de domaine à accepter. Les détails sont disponibles dans
-        <classname>Zend_Validate_EmailAddress</classname> mais vous trouverez ci-dessous un exemple
-        illustrant comment accepter les noms de domaines qualifiés et les hôtes locaux :
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
-$validateur = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_LOCAL);
-if ($validateur->isValid($email)) {
+$validator = new Zend_Validate_EmailAddress();
+$validator->setOptions(array('domain' => false));
+]]></programlisting>
+    </sect3>
+
+    <sect3 id="zend.validate.set.email_address.complexlocal">
+        <title>Parties locales complexes</title>
+
+        <para>
+            <classname>Zend_Validate_EmailAddress</classname> validera toute adresse émail
+            conforme à la RFC2822. Comme par exemple <code>bob@domaine.com</code>,
+            <code>bob+jones@domaine.fr</code>, <code>"bob@jones"@domaine.com</code> et <code>"bob
+            jones"@domaine.com</code>. Quelques formats d'émail obsolètes ne seront pas validés (comme
+            tout émail contenant un retour chariot ou un caractère "\").
+        </para>
+    </sect3>
+
+    <sect3 id="zend.validate.set.email_address.purelocal">
+        <title>Validating only the local part</title>
+
+        <para>
+            If you need <classname>Zend_Validate_EmailAddress</classname> to check only the local
+            part of an email address, and want to disable validation of the hostname, you can
+            set the <property>domain</property> option to <constant>FALSE</constant>. This forces
+            <classname>Zend_Validate_EmailAddress</classname> not to validate the hostname part of
+            the email address.
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$validator = new Zend_Validate_EmailAddress();
+$validator->setOptions(array('domain' => FALSE));
+]]></programlisting>
+    </sect3>
+
+    <sect3 id="zend.validate.set.email_address.hostnametype">
+        <title>Validation de différents types de noms de domaine</title>
+
+        <para>
+            La partie domaine d'une adresse émail est validée via <link
+            linkend="zend.validate.set.hostname"><classname>Zend_Validate_Hostname</classname></link>.
+            Par défaut, seules les domaines qualifiés sous la forme <code>domaine.com</code> sont
+            acceptés, même si, il vous est possible d'accepter les adresses IP et les domaines locaux
+            également.
+        </para>
+
+        <para>
+            Afin de réaliser cette opération, il vous faut instancier
+            <classname>Zend_Validate_EmailAddress</classname> en lui passant un paramètre indiquant le
+            type de nom de domaine à accepter. Les détails sont disponibles dans
+            <classname>Zend_Validate_EmailAddress</classname> mais vous trouverez ci-dessous un exemple
+            illustrant comment accepter les noms de domaines qualifiés et les hôtes locaux :
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$validator = new Zend_Validate_EmailAddress(
+                    Zend_Validate_Hostname::ALLOW_DNS |
+                    Zend_Validate_Hostname::ALLOW_LOCAL);
+if ($validator->isValid($email)) {
     // l'email est valide
     // l'email est valide
 } else {
 } else {
     // l'email est invalide ; afficher pourquoi
     // l'email est invalide ; afficher pourquoi
@@ -65,79 +159,180 @@ if ($validateur->isValid($email)) {
         echo "$message\n";
         echo "$message\n";
     }
     }
 }
 }
-]]></programlisting></para>
+]]></programlisting>
+    </sect3>
 
 
-    <para>
-        <emphasis>Vérification que le nom de domaine accepte réellement
-        l'émail</emphasis>
-    </para>
+    <sect3 id="zend.validate.set.email_address.checkacceptance">
+        <title>Vérification que le nom de domaine accepte réellement l'émail</title>
 
 
-    <para>
-        Le fait qu'une adresse électronique est dans un format correct, ne signifie pas
-        nécessairement que l'adresse électronique existe en réalité. Pour aider résoudre ce
-        problème, vous pouvez utiliser la validation MX pour vérifier si une entrée MX (l'émail)
-        existe dans le l'enregistrement du DNS pour le nom de domaine de l'émail. Cela vous dit que
-        le nom de domaine accepte l'émail, mais ne vous dit pas que l'adresse électronique elle-même
-        est valable.
-    </para>
+        <para>
+            Le fait qu'une adresse électronique est dans un format correct, ne signifie pas
+            nécessairement que l'adresse électronique existe en réalité. Pour aider résoudre ce
+            problème, vous pouvez utiliser la validation MX pour vérifier si une entrée MX (l'émail)
+            existe dans le l'enregistrement du DNS pour le nom de domaine de l'émail. Cela vous dit que
+            le nom de domaine accepte l'émail, mais ne vous dit pas que l'adresse électronique elle-même
+            est valable.
+        </para>
+
+        <para>
+            La vérification MX n'est pas active par défaut et est seulement supporté par des
+            plates-formes UNIX pour l'instant. Pour activer la vérification MX vous pouvez passer un
+            deuxième paramètre au constructeur <classname>Zend_Validate_EmailAddress</classname>.
+        </para>
 
 
-    <para>
-        La vérification MX n'est pas active par défaut et est seulement supporté par des
-        plates-formes UNIX pour l'instant. Pour activer la vérification MX vous pouvez passer un
-        deuxième paramètre au constructeur <classname>Zend_Validate_EmailAddress</classname>.
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
-$validator =
-    new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS,
-                                   true);
-]]></programlisting> Alternativement vous pouvez passer soit <constant>TRUE</constant> soit
-        <constant>FALSE</constant> à <code>$validator-&gt;setValidateMx()</code> pour activer ou désactiver
-        la validation MX.
-    </para>
+$validator = new Zend_Validate_EmailAddress(
+    array(
+        'allow' => Zend_Validate_Hostname::ALLOW_DNS,
+        'mx'    => true
+    )
+);
+]]></programlisting>
 
 
-    <para>
-        En activant ce paramètre, les fonctions de réseau seront utilisés pour vérifier la
-        présence d'un enregistrement MX sur le nom de domaine de l'adresse électronique que vous
-        voulez valider. Faîtes cependant attention, cela ralentira probablement votre
-        scénario.
-    </para>
+        <note>
+            <title>MX Check under Windows</title>
 
 
-    <para><emphasis>Valider les noms de domaines internationaux</emphasis></para>
+            <para>
+                Within Windows environments MX checking is only available when
+                <acronym>PHP</acronym> 5.3 or above is used. Below <acronym>PHP</acronym> 5.3 MX
+                checking will not be used even if it's activated within the options.
+            </para>
+        </note>
 
 
-    <para>
-        <classname>Zend_Validate_EmailAddress</classname> peut aussi vérifier les caractères
-        internationaux qui existent dans quelques domaines. Ceci est connu comme le support de Nom
-        de Domaine International (IDN). Celui-ci est activé par défaut, quoique vous puissiez le
-        mettre hors service en changeant le paramètre via l'objet interne
-        <classname>Zend_Validate_Hostname</classname> qui existe dans
-        <classname>Zend_Validate_EmailAddress</classname>. <programlisting language="php"><![CDATA[
+        <para>
+            Alternativement vous pouvez passer soit <constant>TRUE</constant> soit
+            <constant>FALSE</constant> à <code>$validator-&gt;setValidateMx()</code> pour activer ou désactiver
+            la validation MX.
+        </para>
+
+        <para>
+            En activant ce paramètre, les fonctions de réseau seront utilisés pour vérifier la
+            présence d'un enregistrement MX sur le nom de domaine de l'adresse électronique que vous
+            voulez valider. Faîtes cependant attention, cela ralentira probablement votre
+            scénario.
+        </para>
+
+        <para>
+            Sometimes validation for MX records returns <constant>FALSE</constant>, even if emails
+            are accepted. The reason behind this behaviour is, that servers can accept emails even
+            if they do not provide a MX record. In this case they can provide A, A6 or
+            <constant>AAAA</constant> records. To allow
+            <classname>Zend_Validate_EmailAddress</classname> to check also for these other records,
+            you need to set deep MX validation. This can be done at initiation by setting the
+            <property>deep</property> option or by using <methodname>setOptions()</methodname>.
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$validator = new Zend_Validate_EmailAddress(
+    array(
+        'allow' => Zend_Validate_Hostname::ALLOW_DNS,
+        'mx'    => true,
+        'deep'  => true
+    )
+);
+]]></programlisting>
+
+        <warning>
+            <title>Performance warning</title>
+
+            <para>
+                You should be aware that enabling MX check will slow down you script because of the
+                used network functions. Enabling deep check will slow down your script even more as
+                it searches the given server for 3 additional types.
+            </para>
+        </warning>
+
+        <note>
+            <title>Disallowed IP addresses</title>
+
+            <para>
+                You should note that MX validation is only accepted for external servers. When deep
+                MX validation is enabled, then local IP addresses like <command>192.168.*</command>
+                or <command>169.254.*</command> are not accepted.
+            </para>
+        </note>
+    </sect3>
+
+    <sect3 id="zend.validate.set.email_address.validateidn">
+        <title>Valider les noms de domaines internationaux</title>
+
+        <para>
+            <classname>Zend_Validate_EmailAddress</classname> peut aussi vérifier les caractères
+            internationaux qui existent dans quelques domaines. Ceci est connu comme le support de Nom
+            de Domaine International (IDN). Celui-ci est activé par défaut, quoique vous puissiez le
+            mettre hors service en changeant le paramètre via l'objet interne
+            <classname>Zend_Validate_Hostname</classname> qui existe dans
+            <classname>Zend_Validate_EmailAddress</classname>.
+        </para>
+
+        <programlisting language="php"><![CDATA[
 $validator->hostnameValidator->setValidateIdn(false);
 $validator->hostnameValidator->setValidateIdn(false);
-]]></programlisting> De plus amples informations concernant l'utilisation de
-        <methodname>setValidateIdn()</methodname> sont présentes dans la <link
-        linkend="zend.validate.set.hostname">documentation de
-        <classname>Zend_Validate_Hostname</classname></link>.
-    </para>
+]]></programlisting>
 
 
-    <para>
-        Notez cependant que les IDNs sont seulement validés si vous autorisez la validation
-        des nom de domaines.
-    </para>
+        <para>
+            De plus amples informations concernant l'utilisation de
+            <methodname>setValidateIdn()</methodname> sont présentes dans la <link
+            linkend="zend.validate.set.hostname">documentation de
+            <classname>Zend_Validate_Hostname</classname></link>.
+        </para>
 
 
-    <para><emphasis>Validation des "Top Level Domains"</emphasis></para>
+        <para>
+            Notez cependant que les IDNs sont seulement validés si vous autorisez la validation
+            des nom de domaines.
+        </para>
+    </sect3>
 
 
-    <para>
-        Par défaut un nom de domaine sera vérifié grâce à une liste de TLDs connus. Ceci est
-        activé par défaut, quoique vous puissiez le mettre hors service en changeant le paramètre
-        via l'objet <classname>Zend_Validate_Hostname</classname> interne qui existe dans
-        <classname>Zend_Validate_EmailAddress</classname>. <programlisting language="php"><![CDATA[
+    <sect3 id="zend.validate.set.email_address.validatetld">
+        <title>Validation des "Top Level Domains"</title>
+
+        <para>
+            Par défaut un nom de domaine sera vérifié grâce à une liste de TLDs connus. Ceci est
+            activé par défaut, quoique vous puissiez le mettre hors service en changeant le paramètre
+            via l'objet <classname>Zend_Validate_Hostname</classname> interne qui existe dans
+            <classname>Zend_Validate_EmailAddress</classname>. 
+        </para>
+
+        <programlisting language="php"><![CDATA[
 $validator->hostnameValidator->setValidateTld(false);
 $validator->hostnameValidator->setValidateTld(false);
-]]></programlisting> De plus amples informations concernant l'utilisation de
-        <methodname>setValidateTld()</methodname> sont présentes dans la <link
-        linkend="zend.validate.set.hostname">documentation de
-        <classname>Zend_Validate_Hostname</classname></link>.
-    </para>
+]]></programlisting>
 
 
-    <para>
-        Notez cependant que les TLDs sont seulement validés si vous autorisez la validation
-        des nom de domaines.
-    </para>
+        <para>
+            De plus amples informations concernant l'utilisation de
+            <methodname>setValidateTld()</methodname> sont présentes dans la <link
+            linkend="zend.validate.set.hostname">documentation de
+            <classname>Zend_Validate_Hostname</classname></link>.
+        </para>
+
+        <para>
+            Notez cependant que les TLDs sont seulement validés si vous autorisez la validation
+            des nom de domaines.
+        </para>
+    </sect3>
+
+    <sect3 id="zend.validate.set.email_address.setmessage">
+        <title>Setting messages</title>
+
+        <para>
+            <classname>Zend_Validate_EmailAddress</classname> makes also use of
+            <classname>Zend_Validate_Hostname</classname> to check the hostname part of a given
+            email address. As with Zend Framework 1.10 you can simply set messages for
+            <classname>Zend_Validate_Hostname</classname> from within
+            <classname>Zend_Validate_EmailAddress</classname>.
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$validator = new Zend_Validate_EmailAddress();
+$validator->setMessages(
+    array(
+        Zend_Validate_Hostname::UNKNOWN_TLD => 'I don't know the TLD you gave'
+    )
+);
+]]></programlisting>
+
+        <para>
+            Before Zend Framework 1.10 you had to attach the messages to your own
+            <classname>Zend_Validate_Hostname</classname>, and then set this validator within
+            <classname>Zend_Validate_EmailAddress</classname> to get your own messages returned.
+        </para>
+    </sect3>
 </sect2>
 </sect2>

+ 101 - 564
documentation/manual/fr/module_specs/Zend_Validate-Messages.xml

@@ -1,578 +1,117 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 18942 -->
+<!-- EN-Revision: 20352 -->
 <!-- Reviewed: no -->
 <!-- Reviewed: no -->
 <sect1 id="zend.validate.messages">
 <sect1 id="zend.validate.messages">
-
     <title>Messages de validation</title>
     <title>Messages de validation</title>
 
 
     <para>
     <para>
         Chaque validateur basé sur <classname>Zend_Validate</classname> propose un ou plusieurs messages
         Chaque validateur basé sur <classname>Zend_Validate</classname> propose un ou plusieurs messages
         dans le cas d'un echec. Vous pouvez utiliser ces informations pour créer vos propres messages
         dans le cas d'un echec. Vous pouvez utiliser ces informations pour créer vos propres messages
-        ou pour traduire les messages présents. La table suivante liste tous les messages retournés
-        par tous les validateurs.
+        ou pour traduire les messages présents.
     </para>
     </para>
 
 
-    <table id="zend.validate.messages.table">
-        <title>Messages de validation disponibles</title>
-        <tgroup cols="3">
-            <thead>
-                <row>
-                    <entry>Validator</entry>
-                    <entry>Constant</entry>
-                    <entry>Message</entry>
-                </row>
-            </thead>
-            <tbody>
-                <row>
-                    <entry morerows="1" valign="middle">Alnum</entry>
-                    <entry><constant>NOT_ALNUM</constant></entry>
-                    <entry>'%value%' has not only alphabetic and digit characters</entry>
-                </row>
-                <row>
-                    <entry><constant>STRING_EMPTY</constant></entry>
-                    <entry>'%value%' is an empty string</entry>
-                </row>
-                <row>
-                    <entry morerows="1" valign="middle">Alpha</entry>
-                    <entry><constant>NOT_ALPHA</constant></entry>
-                    <entry>'%value%' has not only alphabetic characters</entry>
-                </row>
-                <row>
-                    <entry><constant>STRING_EMPTY</constant></entry>
-                    <entry>'%value%' is an empty string</entry>
-                </row>
-                <row>
-                    <entry>Barcode</entry>
-                    <entry>---</entry>
-                    <entry>messages are thrown by a subclass</entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">Barcode_Ean13</entry>
-                    <entry><constant>INVALID</constant></entry>
-                    <entry>'%value%' is an invalid <constant>EAN</constant>-13 barcode</entry>
-                </row>
-                <row>
-                    <entry><constant>INVALID_LENGTH</constant></entry>
-                    <entry>'%value%' should be 13 characters</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_NUMERIC</constant></entry>
-                    <entry>'%value%' should contain only numeric characters</entry>
-                </row>
-                <row>
-                    <entry morerows="1" valign="middle">Barcode_UpcA</entry>
-                    <entry><constant>INVALID</constant></entry>
-                    <entry>'%value%' is an invalid <constant>UPC</constant>-A barcode</entry>
-                </row>
-                <row>
-                    <entry><constant>INVALID_LENGTH</constant></entry>
-                    <entry>'%value%' should be 12 characters</entry>
-                </row>
-                <row>
-                    <entry morerows="1" valign="middle">Between</entry>
-                    <entry><constant>NOT_BETWEEN</constant></entry>
-                    <entry>'%value%' is not between '%min%' and '%max%', inclusively</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_BETWEEN_STRICT</constant></entry>
-                    <entry>'%value%' is not strictly between '%min%' and '%max%'</entry>
-                </row>
-                <row>
-                    <entry morerows="1" valign="middle">Ccnum</entry>
-                    <entry><constant>LENGTH</constant></entry>
-                    <entry>'%value%' must contain between 13 and 19 digits</entry>
-                </row>
-                <row>
-                    <entry><constant>CHECKSUM</constant></entry>
-                    <entry>Luhn algorithm (mod-10 checksum) failed on '%value%'</entry>
-                </row>
-                <row>
-                    <entry morerows="1" valign="middle">Date</entry>
-                    <entry><constant>FALSEFORMAT</constant></entry>
-                    <entry>'%value%' does not fit given date format</entry>
-                </row>
-                <row>
-                    <entry><constant>INVALID</constant></entry>
-                    <entry>'%value%' does not appear to be a valid date</entry>
-                </row>
-                <row>
-                    <entry morerows="1" valign="middle">Db_Abstract</entry>
-                    <entry><constant>ERROR_NO_RECORD_FOUND</constant></entry>
-                    <entry>No record matching %value% was found</entry>
-                </row>
-                <row>
-                    <entry><constant>ERROR_RECORD_FOUND</constant></entry>
-                    <entry>A record matching %value% was found</entry>
-                </row>
-                <row>
-                    <entry morerows="1" valign="middle">Digits</entry>
-                    <entry><constant>NOT_DIGITS</constant></entry>
-                    <entry>'%value%' contains not only digit characters</entry>
-                </row>
-                <row>
-                    <entry><constant>STRING_EMPTY</constant></entry>
-                    <entry>'%value%' is an empty string</entry>
-                </row>
-                <row>
-                    <entry morerows="7" valign="middle">EmailAddress</entry>
-                    <entry><constant>INVALID</constant></entry>
-                    <entry>
-                        '%value%' is not a valid email address in the basic format
-                        local-part@hostname
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>INVALID_FORMAT</constant></entry>
-                    <entry>'%value%' is not a valid email address in the basic format local-part@hostname</entry>
-                </row>
-                <row>
-                    <entry><constant>INVALID_HOSTNAME</constant></entry>
-                    <entry>'%hostname%' is not a valid hostname for email address '%value%'</entry>
-                </row>
-                <row>
-                    <entry><constant>INVALID_MX_RECORD</constant></entry>
-                    <entry>
-                        '%hostname%' does not appear to have a valid MX record for the email address
-                        '%value%'
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>DOT_ATOM</constant></entry>
-                    <entry>'%localPart%' not matched against dot-atom format</entry>
-                </row>
-                <row>
-                    <entry><constant>QUOTED_STRING</constant></entry>
-                    <entry>'%localPart%' not matched against quoted-string format</entry>
-                </row>
-                <row>
-                    <entry><constant>INVALID_LOCAL_PART</constant></entry>
-                    <entry>
-                        '%localPart%' is not a valid local part for email address '%value%'
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>LENGTH_EXCEEDED</constant></entry>
-                    <entry>'%value%' exceeds the allowed length</entry>
-                </row>
-                <row>
-                    <entry morerows="1" valign="middle">File_Count</entry>
-                    <entry><constant>TOO_MUCH</constant></entry>
-                    <entry>
-                        Too much files, maximum '%max%' are allowed but '%count%' are given
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>TOO_LESS</constant></entry>
-                    <entry>
-                        Too less files, minimum '%min%' are expected but '%count%' are given
-                    </entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">File_Crc32</entry>
-                    <entry><constant>DOES_NOT_MATCH</constant></entry>
-                    <entry>The file '%value%' does not match the given crc32 hashes</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_DETECTED</constant></entry>
-                    <entry>There was no crc32 hash detected for the given file</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_FOUND</constant></entry>
-                    <entry>The file '%value%' could not be found</entry>
-                </row>
-                <row>
-                    <entry morerows="1" valign="middle">File_ExcludeExtension</entry>
-                    <entry><constant>FALSE_EXTENSION</constant></entry>
-                    <entry>The file '%value%' has a false extension</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_FOUND</constant></entry>
-                    <entry>The file '%value%' was not found</entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">File_ExcludeMimeType</entry>
-                    <entry><constant>FALSE_TYPE</constant></entry>
-                    <entry>The file '%value%' has a false mimetype of '%type%'</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_DETECTED</constant></entry>
-                    <entry>The mimetype of file '%value%' could not been detected</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_READABLE</constant></entry>
-                    <entry>The file '%value%' can not be read</entry>
-                </row>
-                <row>
-                    <entry>File_Exists</entry>
-                    <entry><constant>DOES_NOT_EXIST</constant></entry>
-                    <entry>The file '%value%' does not exist</entry>
-                </row>
-                <row>
-                    <entry morerows="1" valign="middle">File_Extension</entry>
-                    <entry><constant>FALSE_EXTENSION</constant></entry>
-                    <entry>The file '%value%' has a false extension</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_FOUND</constant></entry>
-                    <entry>The file '%value%' was not found</entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">File_FilesSize</entry>
-                    <entry><constant>TOO_BIG</constant></entry>
-                    <entry>
-                        All files in sum should have a maximum size of '%max%' but '%size%' were
-                        detected
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>TOO_SMALL</constant></entry>
-                    <entry>
-                        All files in sum should have a minimum size of '%min%' but '%size%' were
-                        detected
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_READABLE</constant></entry>
-                    <entry>One or more files can not be read</entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">File_Hash</entry>
-                    <entry><constant>DOES_NOT_MATCH</constant></entry>
-                    <entry>The file '%value%' does not match the given hashes</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_DETECTED</constant></entry>
-                    <entry>There was no hash detected for the given file</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_FOUND</constant></entry>
-                    <entry>The file '%value%' could not be found</entry>
-                </row>
-                <row>
-                    <entry morerows="5" valign="middle">File_ImageSize</entry>
-                    <entry><constant>WIDTH_TOO_BIG</constant></entry>
-                    <entry>
-                        Maximum allowed width for image '%value%' should be '%maxwidth%' but
-                        '%width%' detected
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>WIDTH_TOO_SMALL</constant></entry>
-                    <entry>
-                        Minimum expected width for image '%value%' should be '%minwidth%' but
-                        '%width%' detected
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>HEIGHT_TOO_BIG</constant></entry>
-                    <entry>
-                        Maximum allowed height for image '%value%' should be '%maxheight%' but
-                        '%height%' detected
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>HEIGHT_TOO_SMALL</constant></entry>
-                    <entry>
-                        Minimum expected height for image '%value%' should be '%minheight%' but
-                        '%height%' detected
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_DETECTED</constant></entry>
-                    <entry>The size of image '%value%' could not be detected</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_READABLE</constant></entry>
-                    <entry>The image '%value%' can not be read</entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">File_IsCompressed</entry>
-                    <entry><constant>FALSE_TYPE</constant></entry>
-                    <entry>The file '%value%' is not compressed, '%type%' detected</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_DETECTED</constant></entry>
-                    <entry>The mimetype of file '%value%' could not been detected</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_READABLE</constant></entry>
-                    <entry>The file '%value%' can not be read</entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">File_IsImage</entry>
-                    <entry><constant>FALSE_TYPE</constant></entry>
-                    <entry>The file '%value%' is no image, '%type%' detected</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_DETECTED</constant></entry>
-                    <entry>The mimetype of file '%value%' could not been detected</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_READABLE</constant></entry>
-                    <entry>The file '%value%' can not be read</entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">File_Md5</entry>
-                    <entry><constant>DOES_NOT_MATCH</constant></entry>
-                    <entry>The file '%value%' does not match the given md5 hashes</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_DETECTED</constant></entry>
-                    <entry>There was no md5 hash detected for the given file</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_FOUND</constant></entry>
-                    <entry>The file '%value%' could not be found</entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">File_MimeType</entry>
-                    <entry><constant>FALSE_TYPE</constant></entry>
-                    <entry>The file '%value%' has a false mimetype of '%type%'</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_DETECTED</constant></entry>
-                    <entry>The mimetype of file '%value%' could not been detected</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_READABLE</constant></entry>
-                    <entry>The file '%value%' can not be read</entry>
-                </row>
-                <row>
-                    <entry>File_NotExists</entry>
-                    <entry><constant>DOES_EXIST</constant></entry>
-                    <entry>The file '%value%' does exist</entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">File_Sha1</entry>
-                    <entry><constant>DOES_NOT_MATCH</constant></entry>
-                    <entry>The file '%value%' does not match the given sha1 hashes</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_DETECTED</constant></entry>
-                    <entry>There was no sha1 hash detected for the given file</entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_FOUND</constant></entry>
-                    <entry>The file '%value%' could not be found</entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">File_Size</entry>
-                    <entry><constant>TOO_BIG</constant></entry>
-                    <entry>
-                        Maximum allowed size for file '%value%' is '%max%' but '%size%' detected
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>TOO_SMALL</constant></entry>
-                    <entry>
-                        Minimum expected size for file '%value%' is '%min%' but '%size%' detected
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_FOUND</constant></entry>
-                    <entry>The file '%value%' could not be found</entry>
-                </row>
-                <row>
-                    <entry morerows="9" valign="middle">File_Upload</entry>
-                    <entry><constant>INI_SIZE</constant></entry>
-                    <entry>The file '%value%' exceeds the defined ini size</entry>
-                </row>
-                <row>
-                    <entry><constant>FORM_SIZE</constant></entry>
-                    <entry>The file '%value%' exceeds the defined form size</entry>
-                </row>
-                <row>
-                    <entry><constant>PARTIAL</constant></entry>
-                    <entry>The file '%value%' was only partially uploaded</entry>
-                </row>
-                <row>
-                    <entry><constant>NO_FILE</constant></entry>
-                    <entry>The file '%value%' was not uploaded</entry>
-                </row>
-                <row>
-                    <entry><constant>NO_TMP_DIR</constant></entry>
-                    <entry>No temporary directory was found for the file '%value%'</entry>
-                </row>
-                <row>
-                    <entry><constant>CANT_WRITE</constant></entry>
-                    <entry>The file '%value%' can't be written</entry>
-                </row>
-                <row>
-                    <entry><constant>EXTENSION</constant></entry>
-                    <entry>
-                        The extension returned an error while uploading the file '%value%'
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>ATTACK</constant></entry>
-                    <entry>The file '%value%' was illegal uploaded, possible attack</entry>
-                </row>
-                <row>
-                    <entry><constant>FILE_NOT_FOUND</constant></entry>
-                    <entry>The file '%value%' was not found</entry>
-                </row>
-                <row>
-                    <entry><constant>UNKNOWN</constant></entry>
-                    <entry>Unknown error while uploading the file '%value%'</entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">File_WordCount</entry>
-                    <entry><constant>TOO_MUCH</constant></entry>
-                    <entry>
-                        Too much words, maximum '%max%' are allowed but '%count%' were counted
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>TOO_LESS</constant></entry>
-                    <entry>
-                        Too less words, minimum '%min%' are expected but '%count%' were counted
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>NOT_FOUND</constant></entry>
-                    <entry>The file '%value%' could not be found</entry>
-                </row>
-                <row>
-                    <entry>Float</entry>
-                    <entry><constant>NOT_FLOAT</constant></entry>
-                    <entry>'%value%' does not appear to be a float</entry>
-                </row>
-                <row>
-                    <entry>GreaterThan</entry>
-                    <entry><constant>NOT_GREATER</constant></entry>
-                    <entry>'%value%' is not greater than '%min%'</entry>
-                </row>
-                <row>
-                    <entry>Hex</entry>
-                    <entry><constant>NOT_HEX</constant></entry>
-                    <entry>'%value%' has not only hexadecimal digit characters</entry>
-                </row>
-                <row>
-                    <entry morerows="7" valign="middle">Hostname</entry>
-                    <entry><constant>IP_ADDRESS_NOT_ALLOWED</constant></entry>
-                    <entry>
-                        '%value%' appears to be an IP address, but IP addresses are not allowed
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>UNKNOWN_TLD</constant></entry>
-                    <entry>
-                        '%value%' appears to be a <acronym>DNS</acronym> hostname but cannot match <acronym>TLD</acronym> against known
-                        list
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>INVALID_DASH</constant></entry>
-                    <entry>
-                        '%value%' appears to be a <acronym>DNS</acronym> hostname but contains a dash (-) in an invalid
-                        position
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>INVALID_HOSTNAME_SCHEMA</constant></entry>
-                    <entry>
-                        '%value%' appears to be a <acronym>DNS</acronym> hostname but cannot match against hostname
-                        schema for <acronym>TLD</acronym> '%tld%'
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>UNDECIPHERABLE_TLD</constant></entry>
-                    <entry>
-                        '%value%' appears to be a <acronym>DNS</acronym> hostname but cannot extract <acronym>TLD</acronym> part
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>INVALID_HOSTNAME</constant></entry>
-                    <entry>
-                        '%value%' does not match the expected structure for a <acronym>DNS</acronym> hostname
-                    </entry>
-                </row>
-                <row>
-                    <entry><constant>INVALID_LOCAL_NAME</constant></entry>
-                    <entry>'%value%' does not appear to be a valid local network name</entry>
-                </row>
-                <row>
-                    <entry><constant>LOCAL_NAME_NOT_ALLOWED</constant></entry>
-                    <entry>
-                        '%value%' appears to be a local network name but local network names are not
-                        allowed
-                    </entry>
-                </row>
-                <row>
-                    <entry morerows="2" valign="middle">Iban</entry>
-                    <entry><constant>NOTSUPPORTED</constant></entry>
-                    <entry>'%value%' does not have <acronym>IBAN</acronym></entry>
-                </row>
-                <row>
-                    <entry><constant>FALSEFORMAT</constant></entry>
-                    <entry>'%value%' has a false format</entry>
-                </row>
-                <row>
-                    <entry><constant>CHECKFAILED</constant></entry>
-                    <entry>'%value%' has failed the <acronym>IBAN</acronym> check</entry>
-                </row>
-                <row>
-                    <entry morerows="1" valign="middle">Identical</entry>
-                    <entry><constant>NOT_SAME</constant></entry>
-                    <entry>The token '%token%' does not match the given token '%value%'</entry>
-                </row>
-                <row>
-                    <entry><constant>MISSING_TOKEN</constant></entry>
-                    <entry>No token was provided to match against</entry>
-                </row>
-                <row>
-                    <entry>InArray</entry>
-                    <entry><constant>NOT_IN_ARRAY</constant></entry>
-                    <entry>'%value%' was not found in the haystack</entry>
-                </row>
-                <row>
-                    <entry>Int</entry>
-                    <entry><constant>NOT_INT</constant></entry>
-                    <entry>'%value%' does not appear to be an integer</entry>
-                </row>
-                <row>
-                    <entry>Ip</entry>
-                    <entry><constant>NOT_IP_ADDRESS</constant></entry>
-                    <entry>'%value%' does not appear to be a valid IP address</entry>
-                </row>
-                <row>
-                    <entry>LessThan</entry>
-                    <entry><constant>NOT_LESS</constant></entry>
-                    <entry>'%value%' is not less than '%max%'</entry>
-                </row>
-                <row>
-                    <entry>NotEmpty</entry>
-                    <entry><constant>IS_EMPTY</constant></entry>
-                    <entry>Value is required and can't be empty</entry>
-                </row>
-                <row>
-                    <entry>Regex</entry>
-                    <entry><constant>NOT_MATCH</constant></entry>
-                    <entry>'%value%' does not match against pattern '%pattern%'</entry>
-                </row>
-                <row>
-                    <entry morerows="1" valign="middle">StringLength</entry>
-                    <entry><constant>TOO_SHORT</constant></entry>
-                    <entry>'%value%' is less than %min% characters long</entry>
-                </row>
-                <row>
-                    <entry><constant>TOO_LONG</constant></entry>
-                    <entry>'%value%' is greater than %max% characters long</entry>
-                </row>
-            </tbody>
-        </tgroup>
-    </table>
+    <para>
+        These validation messages are constants which can be found at top of each validator class.
+        Let's look into <classname>Zend_Validate_GreaterThan</classname> for an descriptive example:
+    </para>
+
+    <programlisting language="php"><![CDATA[
+protected $_messageTemplates = array(
+    self::NOT_GREATER => "'%value%' is not greater than '%min%'",
+);
+]]></programlisting>
 
 
     <para>
     <para>
-        Il est possible de récupérer tous les messages d'erreurs d'un validator grâce à sa méthode
-        <methodname>getMessageTemplates()</methodname>. Celle-ci retourne un tableau.
+        As you can see the constant <constant>self::NOT_GREATER</constant> refers to the failure and
+        is used as key, and the message itself is used as value of the message array.
+    </para>
+
+    <para>
+        You can retrieve all message templates from a validator by using the
+        <methodname>getMessageTemplates()</methodname> method. It returns you the above array which
+        contains all messages a validator could return in the case of a failed validation.
     </para>
     </para>
 
 
     <programlisting language="php"><![CDATA[
     <programlisting language="php"><![CDATA[
-$validator = new Zend_Validate_Alnum();
+$validator = new Zend_Validate_GreaterThan();
 $messages  = $validator->getMessageTemplates();
 $messages  = $validator->getMessageTemplates();
 ]]></programlisting>
 ]]></programlisting>
 
 
+    <para>
+        Using the <methodname>setMessage()</methodname> method you can set another message to be
+        returned in case of the specified failure.
+    </para>
+
+    <programlisting language="php"><![CDATA[
+$validator = new Zend_Validate_GreaterThan();
+$validator->setMessage('Please enter a lower value', Zend_Validate_GreaterThan::NOT_GREATER);
+]]></programlisting>
+
+    <para>
+        The second parameter defines the failure which will be overridden. When you omit this
+        parameter, then the given message will be set for all possible failures of this validator.
+    </para>
+
+    <sect2 id="zend.validate.messages.pretranslated">
+        <title>Using pre-translated validation messages</title>
+
+        <para>
+            Zend Framework is shipped with more than 45 different validators with more than 200
+            failure messages. It can be a tendious task to translate all of these messages. But for
+            your convinience Zend Framework comes with already pre-translated validation messages.
+            You can find them within the path <filename>/resources/languages</filename> in your
+            Zend Framework installation.
+        </para>
+
+        <note>
+            <title>Used path</title>
+
+            <para>
+                The resource files are outside of the library path because all of your translations
+                should also be outside of this path.
+            </para>
+        </note>
+
+        <para>
+            So to translate all validation messages to german for example, all you have to do is to
+            attach a translator to <classname>Zend_Validate</classname> using these resource files.
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$translator = new Zend_Translate(
+    'array',
+    '/resources/languages',
+    $language,
+    array('scan' => Zend_Locale::LOCALE_DIRECTORY)
+);
+Zend_Validate_Abstract::setDefaultTranslator($translator);
+]]></programlisting>
+
+        <note>
+            <title>Used translation adapter</title>
+
+            <para>
+                As translation adapter Zend Framework choosed the array adapter. It is simple to
+                edit and created very fast.
+            </para>
+        </note>
+
+        <note>
+            <title>Supported languages</title>
+
+            <para>
+                This feature is very young, so the amount of supported languages may not be
+                complete. New languages will be added with each release. Additionally feel free to
+                use the existing resource files to make your own translations.
+            </para>
+
+            <para>
+                You could also use these resource files to rewrite existing translations. So you
+                are not in need to create these files manually yourself.
+            </para>
+        </note>
+    </sect2>
+
     <sect2 id="zend.validate.messages.limitation">
     <sect2 id="zend.validate.messages.limitation">
         <title>Limiter la taille d'un message de validation</title>
         <title>Limiter la taille d'un message de validation</title>
 
 
@@ -599,14 +138,12 @@ Zend_Validate::setMessageLength(100);
 ]]></programlisting>
 ]]></programlisting>
 
 
         <note>
         <note>
+            <title>Où ce paramètre est-il utilisé&#160;?</title>
+
             <para>
             <para>
-                Notez que la taille des messages affecte aussi les messages personnalisés enregistrés,
-                si le validateur considéré étend <classname>Zend_Validate_Abstract</classname>.
+                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>
             </para>
         </note>
         </note>
     </sect2>
     </sect2>
-
-</sect1>
-<!--
-vim:se ts=4 sw=4 et:
--->
+</sect1>