Pārlūkot izejas kodu

DOCUMENTATION French: sync and clean manual

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@15487 44c647ce-9c0f-0410-b52a-842ac1e357ba
mikaelkael 16 gadi atpakaļ
vecāks
revīzija
1d7c2d6398

+ 185 - 97
documentation/manual/fr/module_specs/Zend_Test-PHPUnit-Assertions.xml

@@ -1,85 +1,118 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13829 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15103 -->
 <!-- Reviewed: no -->
 <sect2 id="zend.test.phpunit.assertions">
     <title>Assertions</title>
 
-    <para>Les assertions sont le coeur des tests unitaires; vous les utilisez pour vérifier que le résultat est bien
-    celui que vous attendiez. A cette fin, <classname>Zend_Test_PHPUnit_ControllerTestCase</classname> fournit un certain nombre
-    d'assertions pour simplifier le test de vos applications et contrôleurs MVC.</para>
+    <para>
+        Les assertions sont le coeur des tests unitaires; vous les utilisez pour vérifier que
+        le résultat est bien celui que vous attendiez. A cette fin,
+        <classname>Zend_Test_PHPUnit_ControllerTestCase</classname> fournit un certain nombre
+        d'assertions pour simplifier le test de vos applications et contrôleurs MVC.
+    </para>
 
     <sect3 id="zend.test.phpunit.assertions.query">
         <title>Les assertions par sélecteurs CSS</title>
 
-        <para>Les sélecteurs CSS sont une manière simple de vérifier que certaines constructions sont bien présentes
-        dans le contenu de votre réponse. Cela rend aussi plus simple de s'assurer que les éléments nécessaires pour les
-        librairies Javascript et/ou l'intégration d'AJAX sont présents ; la plupart des bibliothèques Javascript
-        fournissent des mécanismes pour charger des éléments DOM sur la base des sélecteurs CSS, ainsi la syntaxe sera
-        identique.</para>
-
-        <para>Cette fonctionnalité est fournie via <link linkend="zend.dom.query">Zend_Dom_Query</link>, et intégré à un
-        jeu d'assertions de type "<code>Query*</code>". Chacune de ces assertions prend un sélecteur CSS en tant que
-        premier argument, avec optionnellement des arguments additionnels et/ou un message d'erreur, basé sur le type
-        d'assertion. Vous pouvez trouver les règles d'écriture des électeurs CSS dans le chapitre <link
-        linkend="zend.dom.query.operation">Zend_Dom_Query - Aspect théorique</link>. Les assertion "<code>Query*</code>"
-        incluent :</para>
+        <para>
+            Les sélecteurs CSS sont une manière simple de vérifier que certaines constructions
+            sont bien présentes dans le contenu de votre réponse. Cela rend aussi plus simple de
+            s'assurer que les éléments nécessaires pour les librairies Javascript et/ou
+            l'intégration d'AJAX sont présents ; la plupart des bibliothèques Javascript fournissent
+            des mécanismes pour charger des éléments DOM sur la base des sélecteurs CSS, ainsi la
+            syntaxe sera identique.
+        </para>
+
+        <para>
+            Cette fonctionnalité est fournie via <link
+            linkend="zend.dom.query">Zend_Dom_Query</link>, et intégré à un jeu d'assertions de type
+            "<code>Query*</code>". Chacune de ces assertions prend un sélecteur CSS en tant que
+            premier argument, avec optionnellement des arguments additionnels et/ou un message
+            d'erreur, basé sur le type d'assertion. Vous pouvez trouver les règles d'écriture des
+            électeurs CSS dans le chapitre <link linkend="zend.dom.query.operation">Zend_Dom_Query -
+            Aspect théorique</link>. Les assertion "<code>Query*</code>" incluent :
+        </para>
 
         <itemizedlist>
             <listitem>
-                <para><code>assertQuery($path, $message = '')</code> : vérifie qu'un ou plusieurs éléments DOM
-                correspondant au sélecteur CSS fourni sont présents. Si un <code>$message</code> est présent, il sera
-                ajouté en cas d'échec de l'assertion.</para>
+                <para>
+                    <code>assertQuery($path, $message = '')</code> : vérifie qu'un ou
+                    plusieurs éléments DOM correspondant au sélecteur CSS fourni sont présents. Si
+                    un <code>$message</code> est présent, il sera ajouté en cas d'échec de
+                    l'assertion.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertQueryContentContains($path, $match, $message = '')</code> : vérifie qu'un ou plusieurs
-                éléments DOM correspondant au sélecteur CSS fourni sont présents, et qu'au moins un de ceux-ci contient
-                le contenu fournit dans <code>$match</code>. Si un <code>$message</code> est présent, il sera ajouté en
-                cas d'échec de l'assertion.</para>
+                <para>
+                    <code>assertQueryContentContains($path, $match, $message = '')</code> :
+                    vérifie qu'un ou plusieurs éléments DOM correspondant au sélecteur CSS fourni
+                    sont présents, et qu'au moins un de ceux-ci contient le contenu fournit dans
+                    <code>$match</code>. Si un <code>$message</code> est présent, il sera ajouté en
+                    cas d'échec de l'assertion.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertQueryContentRegex($path, $pattern, $message = '')</code> : vérifie qu'un ou plusieurs
-                éléments DOM correspondant au sélecteur CSS fourni sont présents, et qu'au moins un de ceux-ci
-                correspond à l'expression régulière fournie dans <code>$pattern</code>. Si un <code>$message</code> est
-                présent, il sera ajouté en cas d'échec de l'assertion.</para>
+                <para>
+                    <code>assertQueryContentRegex($path, $pattern, $message = '')</code> :
+                    vérifie qu'un ou plusieurs éléments DOM correspondant au sélecteur CSS fourni
+                    sont présents, et qu'au moins un de ceux-ci correspond à l'expression régulière
+                    fournie dans <code>$pattern</code>. Si un <code>$message</code> est présent, il
+                    sera ajouté en cas d'échec de l'assertion.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertQueryCount($path, $count, $message = '')</code> : vérifie qu'un nombre exact
-                <code>$count</code> d'éléments DOM correspondant au sélecteur CSS fourni sont présents. Si un
-                <code>$message</code> est présent, il sera ajouté en cas d'échec de l'assertion.</para>
+                <para>
+                    <code>assertQueryCount($path, $count, $message = '')</code> : vérifie
+                    qu'un nombre exact <code>$count</code> d'éléments DOM correspondant au sélecteur
+                    CSS fourni sont présents. Si un <code>$message</code> est présent, il sera
+                    ajouté en cas d'échec de l'assertion.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertQueryCountMin($path, $count, $message = '')</code> : vérifie qu'au moins un
-                nombre <code>$count</code> d'éléments DOM correspondant au sélecteur CSS fourni sont présents. Si un
-                <code>$message</code> est présent, il sera ajouté en cas d'échec de l'assertion. <emphasis>Note
-                :</emphasis> spécifier une valeur de 1 pour <code>$count</code> est la même chose qu'un simple
-                <code>assertQuery()</code>.</para>
+                <para>
+                    <code>assertQueryCountMin($path, $count, $message = '')</code> : vérifie
+                    qu'au moins un nombre <code>$count</code> d'éléments DOM correspondant au
+                    sélecteur CSS fourni sont présents. Si un <code>$message</code> est présent, il
+                    sera ajouté en cas d'échec de l'assertion. <emphasis>Note :</emphasis> spécifier
+                    une valeur de 1 pour <code>$count</code> est la même chose qu'un simple
+                    <code>assertQuery()</code>.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertQueryCountMax($path, $count, $message = '')</code> : vérifie qu'il n'y a pas
-                plus d'un nombre <code>$count</code> d'éléments DOM correspondant au sélecteur CSS fourni sont présents.
-                Si un <code>$message</code> est présent, il sera ajouté en cas d'échec de l'assertion. <emphasis>Note
-                :</emphasis> spécifier une valeur de 1 pour <code>$count</code> est la même chose qu'un simple
-                <code>assertQuery()</code>.</para>
+                <para>
+                    <code>assertQueryCountMax($path, $count, $message = '')</code> : vérifie
+                    qu'il n'y a pas plus d'un nombre <code>$count</code> d'éléments DOM
+                    correspondant au sélecteur CSS fourni sont présents. Si un <code>$message</code>
+                    est présent, il sera ajouté en cas d'échec de l'assertion. <emphasis>Note
+                    :</emphasis> spécifier une valeur de 1 pour <code>$count</code> est la même
+                    chose qu'un simple <code>assertQuery()</code>.
+                </para>
             </listitem>
         </itemizedlist>
 
-        <para>De plus, toutes les méthodes ci-dessus possèdent une variante "<code>Not</code>" qui correspond à
-        l'assertion négative : <code>assertNotQuery()</code>, <code>assertNotQueryContentContains()</code>,
-        <code>assertNotQueryContentRegex()</code>, et <code>assertNotQueryCount()</code>. (Notez que les versions
-        <code>CountMin</code> et <code>CountMax</code> n'ont pas de variantes pour des raisons évidentes).</para>
+        <para>
+            De plus, toutes les méthodes ci-dessus possèdent une variante "<code>Not</code>"
+            qui correspond à l'assertion négative : <code>assertNotQuery()</code>,
+            <code>assertNotQueryContentContains()</code>, <code>assertNotQueryContentRegex()</code>,
+            et <code>assertNotQueryCount()</code>. (Notez que les versions <code>CountMin</code> et
+            <code>CountMax</code> n'ont pas de variantes pour des raisons évidentes).
+        </para>
     </sect3>
 
     <sect3 id="zend.test.phpunit.assertions.xpath">
         <title>Les assertions XPath</title>
 
-        <para>Certains développeurs sont plus familiers avec XPath qu'avec des sélecteurs CSS, ainsi les variantes XPath
-        des toutes les <link linkend="zend.test.phpunit.assertions.query">assertions Query</link> sont aussi fournies.
-        Il s'agit de :</para>
+        <para>
+            Certains développeurs sont plus familiers avec XPath qu'avec des sélecteurs CSS,
+            ainsi les variantes XPath des toutes les <link
+            linkend="zend.test.phpunit.assertions.query">assertions Query</link> sont aussi
+            fournies. Il s'agit de :
+        </para>
 
         <itemizedlist>
             <listitem>
@@ -91,19 +124,31 @@
             </listitem>
 
             <listitem>
-                <para><code>assertXpathContentContains($path, $match, $message = '')</code></para>
+                <para>
+                    <code>assertXpathContentContains($path, $match, $message =
+                    '')</code>
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertNotXpathContentContains($path, $match, $message = '')</code></para>
+                <para>
+                    <code>assertNotXpathContentContains($path, $match, $message =
+                    '')</code>
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertXpathContentRegex($path, $pattern, $message = '')</code></para>
+                <para>
+                    <code>assertXpathContentRegex($path, $pattern, $message =
+                    '')</code>
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertNotXpathContentRegex($path, $pattern, $message = '')</code></para>
+                <para>
+                    <code>assertNotXpathContentRegex($path, $pattern, $message =
+                    '')</code>
+                </para>
             </listitem>
 
             <listitem>
@@ -127,42 +172,58 @@
     <sect3 id="zend.test.phpunit.assertions.redirect">
         <title>Les assertions de redirections</title>
 
-        <para>Souvent une action va redirigé le visiteur. Plutôt que de suivre cette redirection,
-        <classname>Zend_Test_PHPUnit_ControllerTestCase</classname> vous permet de tester ces redirections avec un jeu
-        d'assertions :</para>
+        <para>
+            Souvent une action va redirigé le visiteur. Plutôt que de suivre cette
+            redirection, <classname>Zend_Test_PHPUnit_ControllerTestCase</classname> vous permet de
+            tester ces redirections avec un jeu d'assertions :
+        </para>
 
         <itemizedlist>
             <listitem>
-                <para><code>assertRedirect($message = '')</code> : vérifie simplement qu'une redirection est
-                apparue.</para>
+                <para>
+                    <code>assertRedirect($message = '')</code> : vérifie simplement qu'une
+                    redirection est apparue.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertNotRedirect($message = '') </code>: vérifie qu'aucune redirection n'est
-                apparue.</para>
+                <para>
+                    <code>assertNotRedirect($message = '') </code>: vérifie qu'aucune
+                    redirection n'est apparue.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertRedirectTo($url, $message = '')</code> : vérifie qu'une redirection est apparue, et
-                que la valeur de l'en-tête "<code>Location</code>" est l' <code>$url</code> fourni.</para>
+                <para>
+                    <code>assertRedirectTo($url, $message = '')</code> : vérifie qu'une
+                    redirection est apparue, et que la valeur de l'en-tête "<code>Location</code>"
+                    est l' <code>$url</code> fourni.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertNotRedirectTo($url, $message = '') </code>: vérifie soit qu'aucune redirection n'est
-                apparue, ou que la valeur de l'en-tête "<code>Location</code>" n'est pas l' <code>$url</code>
-                fourni.</para>
+                <para>
+                    <code>assertNotRedirectTo($url, $message = '') </code>: vérifie soit
+                    qu'aucune redirection n'est apparue, ou que la valeur de l'en-tête
+                    "<code>Location</code>" n'est pas l' <code>$url</code> fourni.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertRedirectRegex($pattern, $message = '') </code>: vérifie qu'une redirection est
-                apparue, et que la valeur de l'en-tête "<code>Location</code>" correspond à l'expression régulière fourni
-                dans <code>$pattern</code>.</para>
+                <para>
+                    <code>assertRedirectRegex($pattern, $message = '') </code>: vérifie qu'une
+                    redirection est apparue, et que la valeur de l'en-tête "<code>Location</code>"
+                    correspond à l'expression régulière fourni dans <code>$pattern</code>.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertNotRedirectRegex($pattern, $message = '')</code> : vérifie soit qu'aucune redirection
-                n'est apparue, ou que la valeur de l'en-tête "<code>Location</code>" ne correspond pas à l'expression
-                régulière fourni dans <code>$pattern</code>.</para>
+                <para>
+                    <code>assertNotRedirectRegex($pattern, $message = '')</code> : vérifie
+                    soit qu'aucune redirection n'est apparue, ou que la valeur de l'en-tête
+                    "<code>Location</code>" ne correspond pas à l'expression régulière fourni dans
+                    <code>$pattern</code>.
+                </para>
             </listitem>
         </itemizedlist>
     </sect3>
@@ -170,67 +231,94 @@
     <sect3 id="zend.test.phpunit.assertions.header">
         <title>Les assertions d'en-têtes de réponses</title>
 
-        <para>En plus de vérifier les en-têtes de redirection, vous avez souvent besoin de vérifier des codes de réponse
-        HTTP et des en-têtes spécifiques - par exemple, pour déterminer si une action entraînera une réponse 404 ou 500,
-        ou pour s'assurer qu'une réponse JSON contient bien l'en-tête <code>Content-Type</code> approprié. Les assertions
-        suivantes sont disponibles :</para>
+        <para>
+            En plus de vérifier les en-têtes de redirection, vous avez souvent besoin de
+            vérifier des codes de réponse HTTP et des en-têtes spécifiques - par exemple, pour
+            déterminer si une action entraînera une réponse 404 ou 500, ou pour s'assurer qu'une
+            réponse JSON contient bien l'en-tête <code>Content-Type</code> approprié. Les assertions
+            suivantes sont disponibles :
+        </para>
 
         <itemizedlist>
             <listitem>
-                <para><code>assertResponseCode($code, $message = '') </code>: vérifie qu'une réponse renvoie le code de
-                réponse HTTP fourni.</para>
+                <para>
+                    <code>assertResponseCode($code, $message = '') </code>: vérifie qu'une
+                    réponse renvoie le code de réponse HTTP fourni.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertHeader($header, $message = '')</code> : vérifie qu'une réponse renvoie l'en-tête
-                fourni.</para>
+                <para>
+                    <code>assertHeader($header, $message = '')</code> : vérifie qu'une réponse
+                    renvoie l'en-tête fourni.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertHeaderContains($header, $match, $message = '')</code> : vérifie qu'une réponse renvoie
-                l'en-tête fourni et que son contenu vaut la chaîne fournie.</para>
+                <para>
+                    <code>assertHeaderContains($header, $match, $message = '')</code> :
+                    vérifie qu'une réponse renvoie l'en-tête fourni et que son contenu vaut la
+                    chaîne fournie.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertHeaderRegex($header, $pattern, $message = '') </code>: vérifie qu'une réponse renvoie
-                l'en-tête fourni et que son contenu correspond à l'expression régulière fournie.</para>
+                <para>
+                    <code>assertHeaderRegex($header, $pattern, $message = '') </code>: vérifie
+                    qu'une réponse renvoie l'en-tête fourni et que son contenu correspond à
+                    l'expression régulière fournie.
+                </para>
             </listitem>
         </itemizedlist>
 
-        <para>De plus, toutes les méthodes ci-dessus possèdent une variante "<code>Not</code>" qui correspond à
-        l'assertion négative.</para>
+        <para>
+            De plus, toutes les méthodes ci-dessus possèdent une variante "<code>Not</code>"
+            qui correspond à l'assertion négative.
+        </para>
     </sect3>
 
     <sect3 id="zend.test.phpunit.assertions.request">
         <title>Les assertions de requêtes</title>
 
-        <para>Il est souvent pratique de vérifier l'action, le contrôleur et le module dernièrement exécuté ; ou, vous
-        pouvez vouloir vérifier quelle route a été utilisée. Les assertions suivantes peuvent vous aider dans ce cas
-        :</para>
+        <para>
+            Il est souvent pratique de vérifier l'action, le contrôleur et le module
+            dernièrement exécuté ; ou, vous pouvez vouloir vérifier quelle route a été utilisée. Les
+            assertions suivantes peuvent vous aider dans ce cas :
+        </para>
 
         <itemizedlist>
             <listitem>
-                <para><code>assertModule($module, $message = '') </code>: vérifie que le module fourni a été utilisé
-                lors de la dernière action distribuée.</para>
+                <para>
+                    <code>assertModule($module, $message = '') </code>: vérifie que le module
+                    fourni a été utilisé lors de la dernière action distribuée.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertController($controller, $message = '')</code> : vérifie que le contrôleur fourni a été
-                utilisé lors de la dernière action distribuée.</para>
+                <para>
+                    <code>assertController($controller, $message = '')</code> : vérifie que le
+                    contrôleur fourni a été utilisé lors de la dernière action distribuée.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertAction($action, $message = '')</code> : vérifie que l'action fournie est bien la
-                dernière distribuée.</para>
+                <para>
+                    <code>assertAction($action, $message = '')</code> : vérifie que l'action
+                    fournie est bien la dernière distribuée.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>assertRoute($route, $message = '') </code>: vérifie que la route nommée fournie a été
-                utilisée par le routeur.</para>
+                <para>
+                    <code>assertRoute($route, $message = '') </code>: vérifie que la route
+                    nommée fournie a été utilisée par le routeur.
+                </para>
             </listitem>
         </itemizedlist>
 
-        <para>De plus, toutes les méthodes ci-dessus possèdent une variante "<code>Not</code>" qui correspond à
-        l'assertion négative.</para>
+        <para>
+            De plus, toutes les méthodes ci-dessus possèdent une variante "<code>Not</code>"
+            qui correspond à l'assertion négative.
+        </para>
     </sect3>
 </sect2>

+ 72 - 42
documentation/manual/fr/module_specs/Zend_Test-PHPUnit-Bootstrapping.xml

@@ -1,22 +1,29 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 11497 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15341 -->
 <!-- Reviewed: no -->
 <sect2 id="zend.test.phpunit.bootstrapping">
     <title>Amorcer votre TestCase</title>
 
-    <para>Comme noté dans <link linkend="zend.test.phpunit.loginexample">l'exemple de login</link>, tous les tests MVC
-    doivent étendre <classname>Zend_Test_PHPUnit_ControllerTestCase</classname>. Cette classe étend elle-même
-    <code>PHPUnit_Framework_TestCase</code>, et vous fournit donc toute la structure et les assertions que vous attendez
-    de PHPUnit - ainsi que quelques échafaudages et assertions spécifiques à l'implémentation MVC de Zend
-    Framework.</para>
-
-    <para>Si vous voulez tester votre application MVC, vous devez d'abord l'amorcer ("bootstrap"). Il existe plusieurs
-    manières pour faire ceci, toutes celles-ci s'articulent autour de la propriété publique
-    <code>$bootstrap</code>.</para>
-
-    <para>Premièrement, vous pouvez paramétrer cette propriété pour qu'elle pointe vers un fichier. Si vous faîtes ceci,
-    le fichier ne doit pas distribuer le contrôleur frontal, mais seulement paramétrer celui-ci et faire tout réglage
-    spécifique à votre application.</para>
+    <para>
+        Comme noté dans <link linkend="zend.test.phpunit.loginexample">l'exemple de
+        login</link>, tous les tests MVC doivent étendre
+        <classname>Zend_Test_PHPUnit_ControllerTestCase</classname>. Cette classe étend elle-même
+        <code>PHPUnit_Framework_TestCase</code>, et vous fournit donc toute la structure et les
+        assertions que vous attendez de PHPUnit - ainsi que quelques échafaudages et assertions
+        spécifiques à l'implémentation MVC de Zend Framework.
+    </para>
+
+    <para>
+        Si vous voulez tester votre application MVC, vous devez d'abord l'amorcer
+        ("bootstrap"). Il existe plusieurs manières pour faire ceci, toutes celles-ci s'articulent
+        autour de la propriété publique <code>$bootstrap</code>.
+    </para>
+
+    <para>
+        Premièrement, vous pouvez paramétrer cette propriété pour qu'elle pointe vers un
+        fichier. Si vous faîtes ceci, le fichier ne doit pas distribuer le contrôleur frontal, mais
+        seulement paramétrer celui-ci et faire tout réglage spécifique à votre application.
+    </para>
 
     <programlisting role="php"><![CDATA[
 class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
@@ -27,9 +34,12 @@ class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
 }
 ]]></programlisting>
 
-    <para>Deuxièmement, vous pouvez fournir un callback PHP qui doit être exécuter pour amorcer votre application. Cet
-    exemple est montré dans <link linkend="zend.test.phpunit.loginexample">l'exemple de login</link>. Si le callback est
-    une fonction ou une méthode statique, ceci peut être paramétrer au niveau de la classe :</para>
+    <para>
+        Deuxièmement, vous pouvez fournir un callback PHP qui doit être exécuter pour amorcer
+        votre application. Cet exemple est montré dans <link
+        linkend="zend.test.phpunit.loginexample">l'exemple de login</link>. Si le callback est une
+        fonction ou une méthode statique, ceci peut être paramétrer au niveau de la classe :
+    </para>
 
     <programlisting role="php"><![CDATA[
 class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
@@ -40,8 +50,10 @@ class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
 }
 ]]></programlisting>
 
-    <para>Dans le cas où une instance d'objet est nécessaire, nous recommandons de réaliser ceci dans votre méthode
-    <code>setUp()</code> :</para>
+    <para>
+        Dans le cas où une instance d'objet est nécessaire, nous recommandons de réaliser ceci
+        dans votre méthode <code>setUp()</code> :
+    </para>
 
     <programlisting role="php"><![CDATA[
 class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
@@ -56,35 +68,53 @@ class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
 }
 ]]></programlisting>
 
-    <para>Notez l'appel de <code>parent::setUp()</code>; ceci est nécessaire puisque la méthode <code>setUp()</code> de
-    <classname>Zend_Test_PHPUnit_Controller_TestCase</classname> exécutera le reste du processus d'amorçage (incluant l'appel du
-    callback).</para>
-
-    <para>En utilisation normale, la méthode <code>setUp()</code> amorcera l'application. Ce premier processus inclue le
-    nettoyage de l'environnement pour rendre un état de requête propre, va réinitialiser tout plugins ou aides, va
-    réinitialiser l'instance du contrôleur frontal, et créer de nouveaux objets de requête et de réponse. Une fois ceci
-    fait, la méthode va faire un <code>include</code> du fichier spécifié dans <code>$bootstrap</code>, ou appeler le
-    callback spécifié.</para>
-
-    <para>L'amorçage doit être le proche possible de ce que fera réellement votre application. Cependant, il y a
-    plusieurs avertissements : </para>
+    <para>
+        Notez l'appel de <code>parent::setUp()</code>; ceci est nécessaire puisque la méthode
+        <code>setUp()</code> de <classname>Zend_Test_PHPUnit_Controller_TestCase</classname>
+        exécutera le reste du processus d'amorçage (incluant l'appel du callback).
+    </para>
+
+    <para>
+        En utilisation normale, la méthode <code>setUp()</code> amorcera l'application. Ce
+        premier processus inclue le nettoyage de l'environnement pour rendre un état de requête
+        propre, va réinitialiser tout plugins ou aides, va réinitialiser l'instance du contrôleur
+        frontal, et créer de nouveaux objets de requête et de réponse. Une fois ceci fait, la
+        méthode va faire un <code>include</code> du fichier spécifié dans <code>$bootstrap</code>,
+        ou appeler le callback spécifié.
+    </para>
+
+    <para>
+        L'amorçage doit être le proche possible de ce que fera réellement votre application.
+        Cependant, il y a plusieurs avertissements :
+    </para>
 
     <itemizedlist>
         <listitem>
-            <para>Ne fournissez pas d'implémentations alternatives des objets "Request" et "Response" ; ils ne seront
-            pas utilisés. <classname>Zend_Test_PHPUnit_Controller_TestCase</classname> utilise des objets de requête et de réponse
-            personnalisés, respectivement <classname>Zend_Controller_Request_HttpTestCase</classname> et
-            <classname>Zend_Controller_Response_HttpTestCase</classname>. Ces objets fournissent des méthodes pour paramétrer
-            l'environnement de requête dans le but souhaité, et récupérer les objets de réponse façonnés. </para>
+            <para>
+                Ne fournissez pas d'implémentations alternatives des objets "Request" et
+                "Response" ; ils ne seront pas utilisés.
+                <classname>Zend_Test_PHPUnit_Controller_TestCase</classname> utilise des objets de
+                requête et de réponse personnalisés, respectivement
+                <classname>Zend_Controller_Request_HttpTestCase</classname> et
+                <classname>Zend_Controller_Response_HttpTestCase</classname>. Ces objets fournissent
+                des méthodes pour paramétrer l'environnement de requête dans le but souhaité, et
+                récupérer les objets de réponse façonnés.
+            </para>
         </listitem>
 
         <listitem>
-            <para>N'espérez pas faire des tests spécifiques de serveur. Autrement dit, ces tests ne garantissent pas que
-            le code va s'exécuter sur un serveur avec une configuration spécifique, mais simplement que l'application va
-            fonctionner comme souhaité si le routeur est capable de router une requête donnée. À cet effet, ne
-            paramétrez pas d'en-têtes spécifiques au serveur dans l'objet de requête.</para>
+            <para>
+                N'espérez pas faire des tests spécifiques de serveur. Autrement dit, ces tests
+                ne garantissent pas que le code va s'exécuter sur un serveur avec une configuration
+                spécifique, mais simplement que l'application va fonctionner comme souhaité si le
+                routeur est capable de router une requête donnée. À cet effet, ne paramétrez pas
+                d'en-têtes spécifiques au serveur dans l'objet de requête.
+            </para>
         </listitem>
     </itemizedlist>
 
-    <para>Une fois que votre application est amorcée, vous pouvez commencer à écrire vos tests.</para>
+    <para>
+        Une fois que votre application est amorcée, vous pouvez commencer à écrire vos
+        tests.
+    </para>
 </sect2>

+ 91 - 47
documentation/manual/fr/module_specs/Zend_Test-PHPUnit-Examples.xml

@@ -1,64 +1,95 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13910 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15157 -->
 <!-- Reviewed: no -->
 <sect2 id="zend.test.phpunit.examples">
     <title>Exemples</title>
 
-    <para>Savoir comment configurer votre infrastructure de tests et comment faire des assertions est seulement la
-    moitié du travail ; maintenant il est temps de commencer à regarder quelques scénarios réels de test pour voir
-    comment vous pouvez les étendre. </para>
+    <para>
+        Savoir comment configurer votre infrastructure de tests et comment faire des
+        assertions est seulement la moitié du travail ; maintenant il est temps de commencer à
+        regarder quelques scénarios réels de test pour voir comment vous pouvez les étendre.
+    </para>
 
     <example id="zend.test.phpunit.examples.userController">
         <title>Test d'un contrôleur "UserController"</title>
 
-        <para>Considérons une tâche habituelle d'un site Web : l'authentification et l'enregistrement d'utilisateurs.
-        Dans notre exemple, nous avons défini un contrôleur "<code>UserController</code>" pour gérer ceci, il requiert
-        le conditions suivantes :</para>
+        <para>
+            Considérons une tâche habituelle d'un site Web : l'authentification et
+            l'enregistrement d'utilisateurs. Dans notre exemple, nous avons défini un contrôleur
+            "<code>UserController</code>" pour gérer ceci, il requiert le conditions suivantes
+            :
+        </para>
 
         <itemizedlist>
             <listitem>
-                <para>Si un utilisateur n'est pas authentifié, il sera toujours redirigé vers la page de login, sans se
-                soucier de l'action demandée.</para>
+                <para>
+                    Si un utilisateur n'est pas authentifié, il sera toujours redirigé vers la
+                    page de login, sans se soucier de l'action demandée.
+                </para>
             </listitem>
 
             <listitem>
-                <para>La page avec le formulaire de login présente à la fois le formulaire de login et le formulaire
-                d'enregistrement.</para>
+                <para>
+                    La page avec le formulaire de login présente à la fois le formulaire de
+                    login et le formulaire d'enregistrement.
+                </para>
             </listitem>
 
             <listitem>
-                <para>Fournir une identification invalide entraîne un retour au formulaire de login.</para>
+                <para>
+                    Fournir une identification invalide entraîne un retour au formulaire de
+                    login.
+                </para>
             </listitem>
 
             <listitem>
-                <para>Une identification valide entraîne une redirection vers la page avec le profil de
-                l'utilisateur.</para>
+                <para>
+                    Une identification valide entraîne une redirection vers la page avec le
+                    profil de l'utilisateur.
+                </para>
             </listitem>
 
             <listitem>
-                <para>La page de profil peut être personnalisée pour contenir le nom d'utilisateur.</para>
+                <para>
+                    La page de profil peut être personnalisée pour contenir le nom
+                    d'utilisateur.
+                </para>
             </listitem>
 
             <listitem>
-                <para>Les utilisateurs déjà authentifiés qui accèdent à la page de login sont redirigés vers leur page
-                de profil.</para>
+                <para>
+                    Les utilisateurs déjà authentifiés qui accèdent à la page de login sont
+                    redirigés vers leur page de profil.
+                </para>
             </listitem>
 
             <listitem>
-                <para>En cas de déconnexion, un utilisateur est redirigé vers la page de login.</para>
+                <para>
+                    En cas de déconnexion, un utilisateur est redirigé vers la page de
+                    login.
+                </para>
             </listitem>
 
             <listitem>
-                <para>Avec des données invalides, l'enregistrement doit entraîner un échec.</para>
+                <para>
+                    Avec des données invalides, l'enregistrement doit entraîner un
+                    échec.
+                </para>
             </listitem>
         </itemizedlist>
 
-        <para>Nous pourrions, et devrions définir d'autres tests, mais ceux-ci suffiront pour l'instant.</para>
+        <para>
+            Nous pourrions, et devrions définir d'autres tests, mais ceux-ci suffiront pour
+            l'instant.
+        </para>
 
-        <para>Pour notre application, nous définirons un plugin "<code>Initialize</code>", qui fonctionne en
-        <code>routeStartup()</code>. Ceci nous permet d'encapsuler notre fichier d'amorçage dans une interface POO, et
-        qui nous permet aussi de fournir par une solution simple une fonction de rappel ("callback"). Regardons d'abord
-        les bases de cette classe :</para>
+        <para>
+            Pour notre application, nous définirons un plugin "<code>Initialize</code>", qui
+            fonctionne en <code>routeStartup()</code>. Ceci nous permet d'encapsuler notre fichier
+            d'amorçage dans une interface POO, et qui nous permet aussi de fournir par une solution
+            simple une fonction de rappel ("callback"). Regardons d'abord les bases de cette classe
+            :
+        </para>
 
         <programlisting role="php"><![CDATA[
 class Bugapp_Plugin_Initialize extends Zend_Controller_Plugin_Abstract
@@ -147,10 +178,13 @@ class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
 }
 ]]></programlisting>
 
-        <para>Une fois ceci en place, nous pouvons écrire nos tests. Cependant, combien de ces tests nécessiteront qu'un
-        utilisateur soit connecté ? La solution la plus simple est d'utiliser la logique de votre application pour faire
-        ceci... et d'esquiver un peu par l'utilisation des méthodes <code>resetResponse()</code> et
-        <code>resetResponse()</code>, qui vous permettront de distribuer une nouvelle requête.</para>
+        <para>
+            Une fois ceci en place, nous pouvons écrire nos tests. Cependant, combien de ces
+            tests nécessiteront qu'un utilisateur soit connecté ? La solution la plus simple est
+            d'utiliser la logique de votre application pour faire ceci... et d'esquiver un peu par
+            l'utilisation des méthodes <code>resetResponse()</code> et <code>resetResponse()</code>,
+            qui vous permettront de distribuer une nouvelle requête.
+        </para>
 
         <programlisting role="php"><![CDATA[
 class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
@@ -260,24 +294,34 @@ class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
 }
 ]]></programlisting>
 
-        <para>Notez que ces tests sont laconiques, et, pour la plupart, ne recherchent pas le contenu réel. Au lieu de
-        cela, ils recherchent des objets construits dans la réponse - codes et en-têtes de réponse, et noeuds DOM. Ceci
-        vous permet de vérifier que la structure est comme prévue - sans entraîner un échec dans vos tests à chaque fois
-        qu'un contenu est ajouté au site. </para>
-
-        <para>Notez également que nous utilisons la structure du document dans nos essais. Par exemple, dans le test
-        final, nous recherchons un formulaire qui a un noeud avec la classe "errors" ; ceci nous permet de déterminer
-        simplement la présence des erreurs de validation de formulaire, et sans nous inquiéter de quelles erreurs
-        spécifiques pourraient avoir été levées. </para>
-
-        <para>Cette application <emphasis>peut</emphasis> utiliser une base de données. Si oui, vous aurez besoin
-        probablement d'un certain échafaudage pour s'assurer que la base de données est dans une configuration initiale
-        et testable au début de chaque essai. PHPUnit fournit déjà une fonctionnalité pour faire ceci ; <ulink
-        url="http://www.phpunit.de/pocket_guide/3.3/en/database.html">lisez ceci dans la documentation PHPUnit</ulink>.
-        Nous recommandons d'utiliser une base de données séparée pour les tests et pour la production, et recommandons
-        en particulier d'employer un fichier SQLite ou une base de données en mémoire, d'autant que les deux options
-        s'exécutent très bien, sans nécessité d'un serveur séparé, et peuvent utiliser la plupart de la syntaxe
-        SQL</para>
+        <para>
+            Notez que ces tests sont laconiques, et, pour la plupart, ne recherchent pas le
+            contenu réel. Au lieu de cela, ils recherchent des objets construits dans la réponse -
+            codes et en-têtes de réponse, et noeuds DOM. Ceci vous permet de vérifier que la
+            structure est comme prévue - sans entraîner un échec dans vos tests à chaque fois qu'un
+            contenu est ajouté au site.
+        </para>
+
+        <para>
+            Notez également que nous utilisons la structure du document dans nos essais. Par
+            exemple, dans le test final, nous recherchons un formulaire qui a un noeud avec la
+            classe "errors" ; ceci nous permet de déterminer simplement la présence des erreurs de
+            validation de formulaire, et sans nous inquiéter de quelles erreurs spécifiques
+            pourraient avoir été levées.
+        </para>
+
+        <para>
+            Cette application <emphasis>peut</emphasis> utiliser une base de données. Si oui,
+            vous aurez besoin probablement d'un certain échafaudage pour s'assurer que la base de
+            données est dans une configuration initiale et testable au début de chaque essai.
+            PHPUnit fournit déjà une fonctionnalité pour faire ceci ; <ulink
+            url="http://www.phpunit.de/pocket_guide/3.3/en/database.html">lisez ceci dans la
+            documentation PHPUnit</ulink>. Nous recommandons d'utiliser une base de données séparée
+            pour les tests et pour la production, et recommandons en particulier d'employer un
+            fichier SQLite ou une base de données en mémoire, d'autant que les deux options
+            s'exécutent très bien, sans nécessité d'un serveur séparé, et peuvent utiliser la
+            plupart de la syntaxe SQL
+        </para>
     </example>
 </sect2>
 <!--

+ 16 - 9
documentation/manual/fr/module_specs/Zend_Test-PHPUnit-Testing.xml

@@ -1,15 +1,19 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 12116 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15157 -->
 <!-- Reviewed: no -->
 <sect2 id="zend.test.phpunit.testing">
     <title>Tester vos contrôleurs et vos applications MVC</title>
 
-    <para>Une fois , votre fichier d'amorçage en place, vous pouvez commencer à tester. Tester est typiquement ce que
-    vous auriez pu faire avec une suite de test PHPUnit ("test suite"), avec quelques petites différences
-    mineures.</para>
+    <para>
+        Une fois , votre fichier d'amorçage en place, vous pouvez commencer à tester. Tester
+        est typiquement ce que vous auriez pu faire avec une suite de test PHPUnit ("test suite"),
+        avec quelques petites différences mineures.
+    </para>
 
-    <para>Premièrement, vous devez distribuer l'URL à tester en utilisant la méthode <code>dispatch()</code> de TestCase
-    :</para>
+    <para>
+        Premièrement, vous devez distribuer l'URL à tester en utilisant la méthode
+        <code>dispatch()</code> de TestCase :
+    </para>
 
     <programlisting role="php"><![CDATA[
 class IndexControllerTest extends Zend_Test_PHPUnit_Controller_TestCase
@@ -24,8 +28,11 @@ class IndexControllerTest extends Zend_Test_PHPUnit_Controller_TestCase
 }
 ]]></programlisting>
 
-    <para>Il y a des moments, cependant, où vous devez fournir des informations supplémentaires - des variables GET et
-    POST, des informations de COOKIE, etc. Vous pouvez peupler la requête avec ces informations :</para>
+    <para>
+        Il y a des moments, cependant, où vous devez fournir des informations supplémentaires
+        - des variables GET et POST, des informations de COOKIE, etc. Vous pouvez peupler la requête
+        avec ces informations :
+    </para>
 
     <programlisting role="php"><![CDATA[
 class FooControllerTest extends Zend_Test_PHPUnit_Controller_TestCase

+ 34 - 18
documentation/manual/fr/module_specs/Zend_Test-PHPUnit.xml

@@ -1,35 +1,49 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 12339 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15157 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.test.phpunit" xmlns:xi="http://www.w3.org/2001/XInclude">
     <title>Zend_Test_PHPUnit</title>
 
-    <para><classname>Zend_Test_PHPUnit</classname> fournit un TestCase pour les applications MVC qui contient des assertions qui
-    permettent de tester toute une variété de responsabilités. La manière la plus facile de comprendre ce qui peut être
-    fait est de regarder l'exemple suivant.</para>
+    <para>
+        <classname>Zend_Test_PHPUnit</classname> fournit un TestCase pour les applications MVC
+        qui contient des assertions qui permettent de tester toute une variété de responsabilités.
+        La manière la plus facile de comprendre ce qui peut être fait est de regarder l'exemple
+        suivant.
+    </para>
 
     <example id="zend.test.phpunit.loginexample">
         <title>Exemple d'un TestCase d'une application de login</title>
 
-        <para>L'exemple suivant est un simple test pour un contrôleur <code>UserController</code> permettant de vérifier
-        différentes choses :</para>
+        <para>
+            L'exemple suivant est un simple test pour un contrôleur
+            <code>UserController</code> permettant de vérifier différentes choses :
+        </para>
 
         <itemizedlist>
             <listitem>
-                <para>Le formulaire de login doit être affiché aux utilisateurs non-authentifiés.</para>
+                <para>
+                    Le formulaire de login doit être affiché aux utilisateurs
+                    non-authentifiés.
+                </para>
             </listitem>
 
             <listitem>
-                <para>Quand un utilisateur se connecte, il doit être redirigé vers sa page de profil, et cette page doit
-                affichée des infofrmations particulières.</para>
+                <para>
+                    Quand un utilisateur se connecte, il doit être redirigé vers sa page de
+                    profil, et cette page doit affichée des infofrmations particulières.
+                </para>
             </listitem>
         </itemizedlist>
 
-        <para>Cet exemple particulier suppose différentes choses. Premièrement, la majeure partie de notre fichier
-        d'amorçage a été déplacé dans un plugin. Ceci simplifie le paramétrage dans le cas des tests en spécifiant
-        rapidement votre environnement, et ainsi vous permet d'amorcer votre application en une seule ligne. Ensuite,
-        notre exemple suppose que le chargement automatique ("autoload") est activé donc nous n'avons pas à nous soucier
-        de charger les classes appropriées (comme le bon contrôleur, le bon plugin, etc.)</para>
+        <para>
+            Cet exemple particulier suppose différentes choses. Premièrement, la majeure
+            partie de notre fichier d'amorçage a été déplacé dans un plugin. Ceci simplifie le
+            paramétrage dans le cas des tests en spécifiant rapidement votre environnement, et ainsi
+            vous permet d'amorcer votre application en une seule ligne. Ensuite, notre exemple
+            suppose que le chargement automatique ("autoload") est activé donc nous n'avons pas à
+            nous soucier de charger les classes appropriées (comme le bon contrôleur, le bon plugin,
+            etc.)
+        </para>
 
         <programlisting role="php"><![CDATA[
 class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
@@ -87,9 +101,11 @@ class UserControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
 }
 ]]></programlisting>
 
-        <para>Cet exemple pourrait être écrit plus simplement : toutes les assertions ne sont pas nécessaires et sont
-        fournies seulement à titre d'illustration. Cependant, il montre bien combien il est simple de tester vos
-        applications.</para>
+        <para>
+            Cet exemple pourrait être écrit plus simplement : toutes les assertions ne sont
+            pas nécessaires et sont fournies seulement à titre d'illustration. Cependant, il montre
+            bien combien il est simple de tester vos applications.
+        </para>
     </example>
 
     <xi:include href="Zend_Test-PHPUnit-Bootstrapping.xml" />

+ 7 - 5
documentation/manual/fr/module_specs/Zend_Test.xml

@@ -1,10 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 10125 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15103 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.test.introduction">
     <title>Introduction</title>
 
-    <para><classname>Zend_Test</classname> fournit les outils pour faciliter les tests unitaires de vos applications Zend
-    Framework. Pour le moment, nous offrons des éléments permettant de tester les applications MVC réalisées avec
-    Zend Framework.</para>
+    <para>
+        <classname>Zend_Test</classname> fournit les outils pour faciliter les tests unitaires
+        de vos applications Zend Framework. Pour le moment, nous offrons des éléments permettant de
+        tester les applications MVC réalisées avec Zend Framework.
+    </para>
 </sect1>

+ 82 - 48
documentation/manual/fr/module_specs/Zend_Text_Figlet.xml

@@ -1,92 +1,126 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 12116 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15157 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.text.figlet">
     <title>Zend_Text_Figlet</title>
 
-    <para><classname>Zend_Text_Figlet</classname> est un composant qui permet aux développeurs de créer des textes dénommés
-    FIGlet. Un texte FIGlet test une chaîne de caractères, qui est représenté en "ASCII-art". FIGlet utilise une format
-    de police spécial , nommée FLT (FigLet Font). Par défaut, une police standard est fourni avec
-    <classname>Zend_Text_Figlet</classname>, mais vous pouvez ajouter des polices additionnels à <ulink
-    url="http://www.figlet.org/fontdb.cgi">http://www.figlet.org</ulink>.</para>
+    <para>
+        <classname>Zend_Text_Figlet</classname> est un composant qui permet aux développeurs
+        de créer des textes dénommés FIGlet. Un texte FIGlet test une chaîne de caractères, qui est
+        représenté en "ASCII-art". FIGlet utilise une format de police spécial , nommée FLT (FigLet
+        Font). Par défaut, une police standard est fourni avec
+        <classname>Zend_Text_Figlet</classname>, mais vous pouvez ajouter des polices additionnels à
+        <ulink url="http://www.figlet.org/fontdb.cgi">http://www.figlet.org</ulink>.
+    </para>
 
     <note>
         <title>Polices compressée</title>
 
-        <para><classname>Zend_Text_Figlet</classname> supporte les polices compressées en gzip. Ceci veut dire que vous pouvez
-        prendre un fichier <code>.flf</code> et le gzipper. Pour permettre à <classname>Zend_Text_Figlet</classname> de les
-        reconnaître, les polices gzippées doivent avoir l'extension <code>.gz</code>. De plus, pour pouvoir utiliser les
-        polices compressées, vous devez activer l'extension GZIP de PHP.</para>
+        <para>
+            <classname>Zend_Text_Figlet</classname> supporte les polices compressées en gzip.
+            Ceci veut dire que vous pouvez prendre un fichier <code>.flf</code> et le gzipper. Pour
+            permettre à <classname>Zend_Text_Figlet</classname> de les reconnaître, les polices
+            gzippées doivent avoir l'extension <code>.gz</code>. De plus, pour pouvoir utiliser les
+            polices compressées, vous devez activer l'extension GZIP de PHP.
+        </para>
     </note>
 
     <note>
         <title>Encodage</title>
 
-        <para><classname>Zend_Text_Figlet</classname> considère que vos chaînes sont encodées en UTF-8 par défaut. Si ce n'est pas
-        le cas, vous pouvez fournir le type d'encodage des caractères en tant que second paramètre à la méthode
-        <code>render()</code>.</para>
+        <para>
+            <classname>Zend_Text_Figlet</classname> considère que vos chaînes sont encodées en
+            UTF-8 par défaut. Si ce n'est pas le cas, vous pouvez fournir le type d'encodage des
+            caractères en tant que second paramètre à la méthode <code>render()</code>.
+        </para>
     </note>
 
-    <para>Il existe plusieurs options pour un FIGlet. Quand vous instanciez <classname>Zend_Text_Figlet</classname>, vous pouvez
-    les fournir sous la forme d'un tableau ou d'un objet <classname>Zend_Config</classname>. <itemizedlist>
-            <listitem>
-                <para><code>font</code> : défini la police utilisée pour le rendu. Par défaut la police incorporé sera
-                utilisée.</para>
+    <para>
+        Il existe plusieurs options pour un FIGlet. Quand vous instanciez
+        <classname>Zend_Text_Figlet</classname>, vous pouvez les fournir sous la forme d'un tableau
+        ou d'un objet <classname>Zend_Config</classname>. <itemizedlist>
+                <listitem>
+                <para>
+                    <code>font</code> : défini la police utilisée pour le rendu. Par défaut la
+                    police incorporé sera utilisée.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>outputWidth</code> : défini la largeur maximum de la chaîne résultat. Ceci est utilisé pour
-                le retour à la ligne automatique ainsi que pour la justification. Attention cependant à de trop petites
-                valeurs, qui pourraient induire un comportement indéfini. La valeur par défaut est 80.</para>
+                <para>
+                    <code>outputWidth</code> : défini la largeur maximum de la chaîne
+                    résultat. Ceci est utilisé pour le retour à la ligne automatique ainsi que pour
+                    la justification. Attention cependant à de trop petites valeurs, qui pourraient
+                    induire un comportement indéfini. La valeur par défaut est 80.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>handleParagraphs</code> : un booléen qui indique, comment les nouvelles lignes sont gérées.
-                Réglé à <code>true</code>, les nouvelles lignes uniques sont ignorées et traitées comme un espace
-                unique. Seules des nouvelles lignes multiples seront gérées comme telles. La valeur par défaut est
-                <code>false</code>.</para>
+                <para>
+                    <code>handleParagraphs</code> : un booléen qui indique, comment les
+                    nouvelles lignes sont gérées. Réglé à <code>true</code>, les nouvelles lignes
+                    uniques sont ignorées et traitées comme un espace unique. Seules des nouvelles
+                    lignes multiples seront gérées comme telles. La valeur par défaut est
+                    <code>false</code>.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>justification</code> : peut être une des valeurs de type
-                <classname>Zend_Text_Figlet::JUSTIFICATION_*</classname>. Il existe <code>JUSTIFICATION_LEFT</code>,
-                <code>JUSTIFICATION_CENTER</code> et <code>JUSTIFICATION_RIGHT</code>. La justification par défaut est
-                défini par la valeur de <code>rightToLeft</code>.</para>
+                <para>
+                    <code>justification</code> : peut être une des valeurs de type
+                    <classname>Zend_Text_Figlet::JUSTIFICATION_*</classname>. Il existe
+                    <code>JUSTIFICATION_LEFT</code>, <code>JUSTIFICATION_CENTER</code> et
+                    <code>JUSTIFICATION_RIGHT</code>. La justification par défaut est défini par la
+                    valeur de <code>rightToLeft</code>.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>rightToLeft</code> : défini la direction d'écriture du texte. Peut être
-                <classname>Zend_Text_Figlet::DIRECTION_LEFT_TO_RIGHT</classname> ou
-                <classname>Zend_Text_Figlet::DIRECTION_RIGHT_TO_LEFT</classname>. Par défaut le réglage du fichier de police est
-                utilisé. Quand aucune justification n'est définie, un texte écrit de droite à gauche est automatiquement
-                aligné à droite.</para>
+                <para>
+                    <code>rightToLeft</code> : défini la direction d'écriture du texte. Peut
+                    être <classname>Zend_Text_Figlet::DIRECTION_LEFT_TO_RIGHT</classname> ou
+                    <classname>Zend_Text_Figlet::DIRECTION_RIGHT_TO_LEFT</classname>. Par défaut le
+                    réglage du fichier de police est utilisé. Quand aucune justification n'est
+                    définie, un texte écrit de droite à gauche est automatiquement aligné à
+                    droite.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>smushMode</code> : un entier qui définit comme chaque caractère est fusionné avec les
-                autres. Peut être la somme de multiple valeurs de type <classname>Zend_Text_Figlet::SM_*</classname>. Il existe
-                les modes de fusion suivant : SM_EQUAL, SM_LOWLINE, SM_HIERARCHY, SM_PAIR, SM_BIGX, SM_HARDBLANK,
-                SM_KERN et SM_SMUSH. Une valeur de 0 ne désactive pas entièrement la fusion, mais force la valeur
-                SM_KERN, tandis que la valeur de -1 la désactive. Une explication des différents modes de fusion peut
-                être trouvé <ulink url="http://www.jave.de/figlet/figfont.txt">ici</ulink>. Par défaut le réglage de la
-                police est utilisé. L'option du mode de fusion est normalement seulement utilisé par les concepteurs de
-                police testant les différents mode de disposition d'une nouvelle police.</para>
+                <para>
+                    <code>smushMode</code> : un entier qui définit comme chaque caractère est
+                    fusionné avec les autres. Peut être la somme de multiple valeurs de type
+                    <classname>Zend_Text_Figlet::SM_*</classname>. Il existe les modes de fusion
+                    suivant : SM_EQUAL, SM_LOWLINE, SM_HIERARCHY, SM_PAIR, SM_BIGX, SM_HARDBLANK,
+                    SM_KERN et SM_SMUSH. Une valeur de 0 ne désactive pas entièrement la fusion,
+                    mais force la valeur SM_KERN, tandis que la valeur de -1 la désactive. Une
+                    explication des différents modes de fusion peut être trouvé <ulink
+                    url="http://www.jave.de/figlet/figfont.txt">ici</ulink>. Par défaut le réglage
+                    de la police est utilisé. L'option du mode de fusion est normalement seulement
+                    utilisé par les concepteurs de police testant les différents mode de disposition
+                    d'une nouvelle police.
+                </para>
             </listitem>
-        </itemizedlist></para>
+            </itemizedlist>
+        </para>
 
     <example id="zend.text.figlet.example.using">
         <title>Utilisation Zend_Text_Figlet</title>
 
-        <para>Cet exemple illustre une utilisation basique de <classname>Zend_Text_Figlet</classname> pour créer une texte FIGlet
-        simple :</para>
+        <para>
+            Cet exemple illustre une utilisation basique de
+            <classname>Zend_Text_Figlet</classname> pour créer une texte FIGlet simple :
+        </para>
 
         <programlisting role="php"><![CDATA[
 $figlet = new Zend_Text_Figlet();
 echo $figlet->render('Zend');
 ]]></programlisting>
 
-        <para>En considérant que vous utilisez une police à espacement fixe, vous obtiendrez quelque chose comme ceci
-        :</para>
+        <para>
+            En considérant que vous utilisez une police à espacement fixe, vous obtiendrez
+            quelque chose comme ceci :
+        </para>
 
         <programlisting role="text"><![CDATA[
   ______    ______    _  __   ______

+ 113 - 82
documentation/manual/fr/module_specs/Zend_Text_Table.xml

@@ -1,109 +1,140 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13910 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15157 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.text.table.introduction">
     <title>Zend_Text_Table</title>
 
-    <para><classname>Zend_Text_Table</classname> est un composant pour créer à la volée des tables de type texte avec différents
-    décorateurs. Ceci peut être utile, si vous souhaitez soit envoyé des données structurées dans des emails textuels,
-    qui sont sont utilisés pour leurs polices mono-espacés, ou pour afficher des informations sous forme de tableaux
-    dans une application CLI. <classname>Zend_Text_Table</classname> supporte les colonnes multi-lignes, les fusions de colonnes
-    ainsi que l'alignement.</para>
+    <para>
+        <classname>Zend_Text_Table</classname> est un composant pour créer à la volée des
+        tables de type texte avec différents décorateurs. Ceci peut être utile, si vous souhaitez
+        soit envoyé des données structurées dans des emails textuels, qui sont sont utilisés pour
+        leurs polices mono-espacés, ou pour afficher des informations sous forme de tableaux dans
+        une application CLI. <classname>Zend_Text_Table</classname> supporte les colonnes
+        multi-lignes, les fusions de colonnes ainsi que l'alignement.
+    </para>
 
     <note>
         <title>Encodage</title>
 
-        <para><classname>Zend_Text_Table</classname> suppose que vos chaînes sont encodés en UTF-8 par défaut. Si ce n'est pas le
-        cas, vous pouvez fournir l'encodage en tant que paramètre du constructeur ou à la méthode
-        <code>setContent</code> de <classname>Zend_Text_Table_Column</classname>. Alternativement si vous avez un encodage
-        différent dans le processus complet, vous pouvez définir l'encodage d'entrée ("input") standard avec
-        <classname>Zend_Text_Table::setInputCharset($charset)</classname>. Dans le cas où vous avez besoin d'un autre encodage
-        pour la sortie ("output") de la table, vous pouvez le paramétrer avec
-        <classname>Zend_Text_Table::setOutputCharset($charset)</classname>.</para>
+        <para>
+            <classname>Zend_Text_Table</classname> suppose que vos chaînes sont encodés en
+            UTF-8 par défaut. Si ce n'est pas le cas, vous pouvez fournir l'encodage en tant que
+            paramètre du constructeur ou à la méthode <code>setContent</code> de
+            <classname>Zend_Text_Table_Column</classname>. Alternativement si vous avez un encodage
+            différent dans le processus complet, vous pouvez définir l'encodage d'entrée ("input")
+            standard avec <classname>Zend_Text_Table::setInputCharset($charset)</classname>. Dans le
+            cas où vous avez besoin d'un autre encodage pour la sortie ("output") de la table, vous
+            pouvez le paramétrer avec
+            <classname>Zend_Text_Table::setOutputCharset($charset)</classname>.
+        </para>
     </note>
 
-    <para>Un objet <classname>Zend_Text_Table</classname> consiste en des lignes, qui contiennent des colonnes, représenté par
-    <classname>Zend_Text_Table_Row</classname> et <classname>Zend_Text_Table_Column</classname>. Lors de la création d'une table, vous
-    pouvez fournir un tableau avec les options pour la table. Celles-ci sont : <itemizedlist>
-            <listitem>
-                <para><code>columnWidths</code> (obligatoire) : un tableau définissant toutes les largeurs de colonnes
-                en nombre de caractères.</para>
-            </listitem>
-
-            <listitem>
-                <para><code>decorator</code> : le décorateur à utiliser pour les bordures de la table. Le défaut est
-                <code>unicode</code>, mais vous pouvez aussi spécifier <code>ascii</code> ou fournir une instance d'un
-                objet décorateur personnalisé.</para>
-            </listitem>
-
-            <listitem>
-                <para><code>padding</code> : le remplissage gauche et droit de la colonne en caractères. Le remplissage
-                par défaut est zéro.</para>
+    <para>
+        Un objet <classname>Zend_Text_Table</classname> consiste en des lignes, qui
+        contiennent des colonnes, représenté par <classname>Zend_Text_Table_Row</classname> et
+        <classname>Zend_Text_Table_Column</classname>. Lors de la création d'une table, vous pouvez
+        fournir un tableau avec les options pour la table. Celles-ci sont : <itemizedlist>
+                <listitem>
+                <para>
+                    <code>columnWidths</code> (obligatoire) : un tableau définissant toutes
+                    les largeurs de colonnes en nombre de caractères.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>AutoSeparate</code> : la manière comment les lignes sont séparées avec des lignes
-                horizontales. Par défaut, il y a une séparation entre chaque ligne. Ceci est défini entant que bitmask
-                contenant une ou plus des constantes de <classname>Zend_Text_Table</classname> suivantes :<itemizedlist>
-                        <listitem>
-                            <para><classname>Zend_Text_Table::AUTO_SEPARATE_NONE</classname></para>
-                        </listitem>
-
-                        <listitem>
-                            <para><classname>Zend_Text_Table::AUTO_SEPARATE_HEADER</classname></para>
-                        </listitem>
-
-                        <listitem>
-                            <para><classname>Zend_Text_Table::AUTO_SEPARATE_FOOTER</classname></para>
-                        </listitem>
-
-                        <listitem>
-                            <para><classname>Zend_Text_Table::AUTO_SEPARATE_ALL</classname></para>
-                        </listitem>
-                    </itemizedlist> Où "header" est toujours la première ligne, et "footer" est toujours la
-                dernière.</para>
-            </listitem>
-        </itemizedlist></para>
-
-    <para>Les lignes sont simplement ajoutées à la table en créant une nouvelle instance de
-    <classname>Zend_Text_Table_Row</classname>, et en l'ajoutant à la table via la méthode <code>appendRow</code>. Les lignes
-    elle-même n'ont pas d'options. Vous pouvez aussi fournir un tableau directement à la méthode <code>appendRow</code>,
-    qui le convertira automatiquement en des objets <code>Row</code>, contenant les multiples objets
-    <code>Column</code>.</para>
-
-    <para>De la même manière vous pouvez ajouter les colonnes aux lignes. Créez un instance de
-    <classname>Zend_Text_Table_Column</classname> et ensuite paramétrer les options de colonnes soit dans le constructeur ou plus
-    tard par les méthodes <code>set*</code>. Le premier paramètre est le contenu de la colonne qui peut avoir des lignes
-    multiples, elles sont dans le meilleur des cas séparées par le caractère <code>\n</code>. Le second paramètre
-    définit l'alignement, qui est <code>left</code> par défaut et peut être l'une des constantes de la classe
-    <classname>Zend_Text_Table_Column</classname> :<itemizedlist>
-            <listitem>
-                <para><code>ALIGN_LEFT</code></para>
+                <para>
+                    <code>decorator</code> : le décorateur à utiliser pour les bordures de la
+                    table. Le défaut est <code>unicode</code>, mais vous pouvez aussi spécifier
+                    <code>ascii</code> ou fournir une instance d'un objet décorateur
+                    personnalisé.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>ALIGN_CENTER</code></para>
+                <para>
+                    <code>padding</code> : le remplissage gauche et droit de la colonne en
+                    caractères. Le remplissage par défaut est zéro.
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>ALIGN_RIGHT</code></para>
+                <para>
+                    <code>AutoSeparate</code> : la manière comment les lignes sont séparées
+                    avec des lignes horizontales. Par défaut, il y a une séparation entre chaque
+                    ligne. Ceci est défini entant que bitmask contenant une ou plus des constantes
+                    de <classname>Zend_Text_Table</classname> suivantes :<itemizedlist>
+                            <listitem>
+                                <para><classname>Zend_Text_Table::AUTO_SEPARATE_NONE</classname></para>
+                            </listitem>
+    
+                            <listitem>
+                                <para><classname>Zend_Text_Table::AUTO_SEPARATE_HEADER</classname></para>
+                            </listitem>
+    
+                            <listitem>
+                                <para><classname>Zend_Text_Table::AUTO_SEPARATE_FOOTER</classname></para>
+                            </listitem>
+    
+                            <listitem>
+                                <para><classname>Zend_Text_Table::AUTO_SEPARATE_ALL</classname></para>
+                            </listitem>
+                        </itemizedlist> Où "header" est toujours la première ligne, et "footer" est
+                    toujours la dernière.
+                </para>
             </listitem>
-        </itemizedlist>Le troisième paramètre est le colspan ("fusion") de la colonne. Par exemple, quand vous
-    choisissez "2 comme colspan, la colonne va déborder sur deux colonnes de la table. Le dernier paramètre définit
-    l'encodage du contenu, qui peut être fourni, si le contenu n'est ni de l'ASCII ni de l'UTF-8. Pour ajouter la
-    colonne à la ligne, vous appelez simplement <code>appendColumn</code> dans votre objet <code>Row</code> avec l'objet
-    <code>Column</code> en tant que paramètre. Alternativement vous pouvez directement fournir la chaîne à la méthode
-    <code>appendColumn</code>.</para>
-
-    <para>Pour finalement effectuer le rendu de la table, vous pouvez soit utiliser la méthode <code>render</code> de la
-    table, ou utilisez la méthode magique <code>__toString</code> en faisant <code>echo $table;</code> ou
-    <code>$tableString = (string) $table</code>.</para>
+            </itemizedlist>
+        </para>
+
+    <para>
+        Les lignes sont simplement ajoutées à la table en créant une nouvelle instance de
+        <classname>Zend_Text_Table_Row</classname>, et en l'ajoutant à la table via la méthode
+        <code>appendRow</code>. Les lignes elle-même n'ont pas d'options. Vous pouvez aussi fournir
+        un tableau directement à la méthode <code>appendRow</code>, qui le convertira
+        automatiquement en des objets <code>Row</code>, contenant les multiples objets
+        <code>Column</code>.
+    </para>
+
+    <para>
+        De la même manière vous pouvez ajouter les colonnes aux lignes. Créez un instance de
+        <classname>Zend_Text_Table_Column</classname> et ensuite paramétrer les options de colonnes
+        soit dans le constructeur ou plus tard par les méthodes <code>set*</code>. Le premier
+        paramètre est le contenu de la colonne qui peut avoir des lignes multiples, elles sont dans
+        le meilleur des cas séparées par le caractère <code>\n</code>. Le second paramètre définit
+        l'alignement, qui est <code>left</code> par défaut et peut être l'une des constantes de la
+        classe <classname>Zend_Text_Table_Column</classname> :<itemizedlist>
+                <listitem>
+                    <para><code>ALIGN_LEFT</code></para>
+                </listitem>
+    
+                <listitem>
+                    <para><code>ALIGN_CENTER</code></para>
+                </listitem>
+    
+                <listitem>
+                    <para><code>ALIGN_RIGHT</code></para>
+                </listitem>
+            </itemizedlist>Le troisième paramètre est le colspan ("fusion") de la colonne. Par
+        exemple, quand vous choisissez "2 comme colspan, la colonne va déborder sur deux colonnes de
+        la table. Le dernier paramètre définit l'encodage du contenu, qui peut être fourni, si le
+        contenu n'est ni de l'ASCII ni de l'UTF-8. Pour ajouter la colonne à la ligne, vous appelez
+        simplement <code>appendColumn</code> dans votre objet <code>Row</code> avec l'objet
+        <code>Column</code> en tant que paramètre. Alternativement vous pouvez directement fournir
+        la chaîne à la méthode <code>appendColumn</code>.
+    </para>
+
+    <para>
+        Pour finalement effectuer le rendu de la table, vous pouvez soit utiliser la méthode
+        <code>render</code> de la table, ou utilisez la méthode magique <code>__toString</code> en
+        faisant <code>echo $table;</code> ou <code>$tableString = (string) $table</code>.
+    </para>
 
     <example id="zend.text.table.example.using">
         <title>Utilisation de Zend_Text_Table</title>
 
-        <para>Cet exemple illustre un utilisation basique de <classname>Zend_Text_Table</classname> pour créer une table simple
-        :</para>
+        <para>
+            Cet exemple illustre un utilisation basique de
+            <classname>Zend_Text_Table</classname> pour créer une table simple :
+        </para>
 
         <programlisting role="php"><![CDATA[
 $table = new Zend_Text_Table(array('columnWidths' => array(10, 20)));

+ 127 - 61
documentation/manual/fr/module_specs/Zend_TimeSync-Working.xml

@@ -1,22 +1,32 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13828 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15346 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.timesync.working">
     <title>Utiliser Zend_TimeSync</title>
 
-    <para><classname>Zend_TimeSync</classname> peut retourner le temps de n'importe quel serveur via <emphasis>NTP</emphasis> ou <emphasis>SNTP</emphasis>. Il peut aussi gérer de multiples
-    serveurs.</para>
+    <para>
+        <classname>Zend_TimeSync</classname> peut retourner le temps de n'importe quel serveur
+        via <emphasis>NTP</emphasis> ou <emphasis>SNTP</emphasis>. Il peut aussi gérer de multiples
+        serveurs.
+    </para>
 
     <note>
-        <para>Dans tous les exemples qui suivront, nous utiliserons un pool de serveurs générique public : <emphasis>0.europe.pool.ntp.org</emphasis>. De votre côté, il est conseillé d'utiliser le pool le plus
-        proche possible géographiquement de votre position. Lisez <ulink
-        url="http://www.pool.ntp.org">http://www.pool.ntp.org</ulink> pour plus d'informations.</para>
+        <para>
+            Dans tous les exemples qui suivront, nous utiliserons un pool de serveurs
+            générique public : <emphasis>0.europe.pool.ntp.org</emphasis>. De votre côté, il est
+            conseillé d'utiliser le pool le plus proche possible géographiquement de votre position.
+            Lisez <ulink url="http://www.pool.ntp.org">http://www.pool.ntp.org</ulink> pour plus
+            d'informations.
+        </para>
     </note>
 
     <sect2 id="zend.timesync.working.generic">
         <title>Requêter un serveur de temps public</title>
 
-        <para>Cette opération est très simple, il suffit de préciser le serveur de temps à utiliser.</para>
+        <para>
+            Cette opération est très simple, il suffit de préciser le serveur de temps à
+            utiliser.
+        </para>
 
         <programlisting role="php"><![CDATA[
 $server = new Zend_TimeSync('0.pool.ntp.org');
@@ -24,26 +34,39 @@ $server = new Zend_TimeSync('0.pool.ntp.org');
 print $server->getDate()->getIso();
 ]]></programlisting>
 
-        <para>Que se passe-t-il en arrière plan de <classname>Zend_TimeSync</classname> ? Tout d'abord la syntaxe est vérifiée.
-        Ainsi, "<code>0.pool.ntp.org</code>" est vérifié et reconnu comme pouvant être un serveur de temps. Ensuite
-        l'appel à <code>getDate()</code> génère une requête vers le serveur de temps qui retourne son temps.
-        <classname>Zend_TimeSync</classname> va alors calculer la différence entre ce temps retourné, et le temps actuel du
-        serveur sur lequel le script tourne, et retourner finalement un objet <classname>Zend_Date</classname> représentant le
-        temps actuel, juste et corrigé.</para>
-
-        <para>Pour plus de détails sur les objets <classname>Zend_Date</classname> et leurs méthodes, voyez la documentation de
-        <link linkend="zend.date.introduction">Zend_Date</link>.</para>
+        <para>
+            Que se passe-t-il en arrière plan de <classname>Zend_TimeSync</classname> ? Tout
+            d'abord la syntaxe est vérifiée. Ainsi, "<code>0.pool.ntp.org</code>" est vérifié et
+            reconnu comme pouvant être un serveur de temps. Ensuite l'appel à <code>getDate()</code>
+            génère une requête vers le serveur de temps qui retourne son temps.
+            <classname>Zend_TimeSync</classname> va alors calculer la différence entre ce temps
+            retourné, et le temps actuel du serveur sur lequel le script tourne, et retourner
+            finalement un objet <classname>Zend_Date</classname> représentant le temps actuel, juste
+            et corrigé.
+        </para>
+
+        <para>
+            Pour plus de détails sur les objets <classname>Zend_Date</classname> et leurs
+            méthodes, voyez la documentation de <link
+            linkend="zend.date.introduction">Zend_Date</link>.
+        </para>
     </sect2>
 
     <sect2 id="zend.timesync.working.multiple">
         <title>Serveurs de temps multiples</title>
 
-        <para>Tous les serveurs de temps ne sont pas disponibles tout le temps, à 100%. Il peuvent subir des opérations
-        de maintenance, ou tout simplement se retrouver saturés. Dans de tels cas, une exception sera levée.</para>
+        <para>
+            Tous les serveurs de temps ne sont pas disponibles tout le temps, à 100%. Il
+            peuvent subir des opérations de maintenance, ou tout simplement se retrouver saturés.
+            Dans de tels cas, une exception sera levée.
+        </para>
 
-        <para><classname>Zend_TimeSync</classname> peut gérer plusieurs serveurs, et se connecter automatiquement au suivant, si
-        le précédent ne répond pas. Passez un tableau de serverus de temps au constructeur de l'objet, ou utilisez la
-        méthode <code>addServer()</code> :</para>
+        <para>
+            <classname>Zend_TimeSync</classname> peut gérer plusieurs serveurs, et se
+            connecter automatiquement au suivant, si le précédent ne répond pas. Passez un tableau
+            de serverus de temps au constructeur de l'objet, ou utilisez la méthode
+            <code>addServer()</code> :
+        </para>
 
         <programlisting role="php"><![CDATA[
 $server = new Zend_TimeSync(array('0.pool.ntp.org',
@@ -54,11 +77,16 @@ $server->addServer('3.pool.ntp.org');
 print $server->getDate()->getIso();
 ]]></programlisting>
 
-        <para>Vous pouvez ajouter une infinité de serveurs, et <classname>Zend_TimeSync</classname> basculera automatiquement au
-        suivant, si un ne répond pas.</para>
+        <para>
+            Vous pouvez ajouter une infinité de serveurs, et
+            <classname>Zend_TimeSync</classname> basculera automatiquement au suivant, si un ne
+            répond pas.
+        </para>
 
-        <para>Vous devriez aussi nommer vos serveurs de temps. Ceci se fait au moyen de la clé du tableau de serveurs,
-        ou en second paramètre de la méthode addServer() :</para>
+        <para>
+            Vous devriez aussi nommer vos serveurs de temps. Ceci se fait au moyen de la clé
+            du tableau de serveurs, ou en second paramètre de la méthode addServer() :
+        </para>
 
         <programlisting role="php"><![CDATA[
 $server = new Zend_TimeSync(array('generic'  => '0.pool.ntp.org',
@@ -69,18 +97,26 @@ $server->addServer('3.pool.ntp.org', 'additional');
 print $server->getDate()->getIso();
 ]]></programlisting>
 
-        <para>En nommant vos serveurs, vous pourrez en interroger un en particulier comme nous allons le voir.</para>
+        <para>
+            En nommant vos serveurs, vous pourrez en interroger un en particulier comme nous
+            allons le voir.
+        </para>
     </sect2>
 
     <sect2 id="zend.timesync.working.protocol">
         <title>Les protocoles des serveurs de temps</title>
 
-        <para>La plupart des serveurs publics de temps utilisent le protocole <emphasis>NTP</emphasis>.
-        Mais d'autres protocoles existent.</para>
+        <para>
+            La plupart des serveurs publics de temps utilisent le protocole
+            <emphasis>NTP</emphasis>. Mais d'autres protocoles existent.
+        </para>
 
-        <para>Vous pouvez spécifier le protocole dans l'adresse du serveur de temps. <classname>Zend_TimeSync</classname> en
-        supporte deux actuellement. Celui par défaut est <emphasis>NTP</emphasis>. Si vous omettez le
-        protocole dans l'adresse, c'est NTP qui sera utilisé.</para>
+        <para>
+            Vous pouvez spécifier le protocole dans l'adresse du serveur de temps.
+            <classname>Zend_TimeSync</classname> en supporte deux actuellement. Celui par défaut est
+            <emphasis>NTP</emphasis>. Si vous omettez le protocole dans l'adresse, c'est NTP qui
+            sera utilisé.
+        </para>
 
         <programlisting role="php"><![CDATA[
 $server = new Zend_TimeSync(array('generic'  => 'ntp:\\0.pool.ntp.org',
@@ -91,18 +127,25 @@ $server->addServer('sntp:\\internal.myserver.com', 'additional');
 print $server->getDate()->getIso();
 ]]></programlisting>
 
-        <para><classname>Zend_TimeSync</classname> peut donc gérer plusieurs serveurs, et plusieurs protocoles, en même
-        temps.</para>
+        <para>
+            <classname>Zend_TimeSync</classname> peut donc gérer plusieurs serveurs, et
+            plusieurs protocoles, en même temps.
+        </para>
     </sect2>
 
     <sect2 id="zend.timesync.working.ports">
         <title>Utiliser les ports pour les serveurs de temps</title>
 
-        <para>Comme tous les protocoles, <emphasis>NTP</emphasis> et <emphasis>SNTP</emphasis> utilisent des ports par défaut.</para>
+        <para>
+            Comme tous les protocoles, <emphasis>NTP</emphasis> et <emphasis>SNTP</emphasis>
+            utilisent des ports par défaut.
+        </para>
 
-        <para>Quelque fois il peut être nécessaire de préciser le port à utiliser. Si c'est le cas, rajoutez le
-        simplement à l'adresse du serveur à utiliser, sinon <classname>Zend_TimeSync</classname> utilisera celui par
-        défaut.</para>
+        <para>
+            Quelque fois il peut être nécessaire de préciser le port à utiliser. Si c'est le
+            cas, rajoutez le simplement à l'adresse du serveur à utiliser, sinon
+            <classname>Zend_TimeSync</classname> utilisera celui par défaut.
+        </para>
 
         <programlisting role="php"><![CDATA[
 $server = new Zend_TimeSync(array('generic'  => 'ntp:\\0.pool.ntp.org:200',
@@ -116,18 +159,27 @@ print $server->getDate()->getIso();
     <sect2 id="zend.timesync.working.options">
         <title>Options pour les serveurs de temps</title>
 
-        <para>Actuellement seule une option est utilisée en interne par <classname>Zend_TimeSync</classname>. Mais vous pouvez en
-        utiliser autant que vous voulez.</para>
-
-        <para>L'option <emphasis>timeout</emphasis> définit le nombre de secondes au delà duquel la
-        connexion sera considérée comme cassée. La valeur par défaut est <emphasis>1</emphasis>, donc
-        <classname>Zend_TimeSync</classname> changera de serveur si la réponse du serveur actuellement interrogé met plus d'une
-        seconde à arriver.</para>
-
-        <para>Grâce à <code>setOptions()</code>, vous passez un tableau d'options que vous voulez. La clé du tableau
-        représente le nom de l'option en question et la valeur, sa valeur. Pour voir les options déjà affectées,
-        utilisez la méthode <code>getOptions()</code>. Elle accepte une clé nommant l'option à récupérer, ou alors si
-        aucun paramètre ne lui est passé, la méthode retournera toutes les options connues.</para>
+        <para>
+            Actuellement seule une option est utilisée en interne par
+            <classname>Zend_TimeSync</classname>. Mais vous pouvez en utiliser autant que vous
+            voulez.
+        </para>
+
+        <para>
+            L'option <emphasis>timeout</emphasis> définit le nombre de secondes au delà duquel
+            la connexion sera considérée comme cassée. La valeur par défaut est
+            <emphasis>1</emphasis>, donc <classname>Zend_TimeSync</classname> changera de serveur si
+            la réponse du serveur actuellement interrogé met plus d'une seconde à arriver.
+        </para>
+
+        <para>
+            Grâce à <code>setOptions()</code>, vous passez un tableau d'options que vous
+            voulez. La clé du tableau représente le nom de l'option en question et la valeur, sa
+            valeur. Pour voir les options déjà affectées, utilisez la méthode
+            <code>getOptions()</code>. Elle accepte une clé nommant l'option à récupérer, ou alors
+            si aucun paramètre ne lui est passé, la méthode retournera toutes les options
+            connues.
+        </para>
 
         <programlisting role="php"><![CDATA[
 Zend_TimeSync::setOptions(array('timeout' => 3, 'myoption' => 'timesync'));
@@ -140,17 +192,23 @@ print_r(Zend_TimeSync::getOptions();
 print "Timeout = " . Zend_TimeSync::getOptions('timeout');
 ]]></programlisting>
 
-        <para>Comme vous pouvez le noter, les options de <classname>Zend_TimeSync</classname> sont statiques, ainsi chaque
-        instance de <classname>Zend_TimeSync</classname> possèdera les mêmes options.</para>
+        <para>
+            Comme vous pouvez le noter, les options de <classname>Zend_TimeSync</classname>
+            sont statiques, ainsi chaque instance de <classname>Zend_TimeSync</classname> possèdera
+            les mêmes options.
+        </para>
     </sect2>
 
     <sect2 id="zend.timesync.working.different">
         <title>Utiliser des serveurs de temps différents</title>
 
-        <para>Par défaut la requête utilisera le premier serveur défini, et ainsi de suite. Il peut être nécessaire
-        parfois, de spécifier un serveur précis que l'on souhaite interroger. Utilisez <code>setServer()</code> et
-        passez lui le nom du serveur que vous souhaitez interroger prochainement. Pour savoir le serveur qui va être
-        utilisé, <code>getServer()</code> vous sera utile.</para>
+        <para>
+            Par défaut la requête utilisera le premier serveur défini, et ainsi de suite. Il
+            peut être nécessaire parfois, de spécifier un serveur précis que l'on souhaite
+            interroger. Utilisez <code>setServer()</code> et passez lui le nom du serveur que vous
+            souhaitez interroger prochainement. Pour savoir le serveur qui va être utilisé,
+            <code>getServer()</code> vous sera utile.
+        </para>
 
         <programlisting role="php"><![CDATA[
 $server = new Zend_TimeSync(array('generic'  => 'ntp:\\0.pool.ntp.org',
@@ -165,8 +223,11 @@ $server = $server->setServer('additional');
     <sect2 id="zend.timesync.working.informations">
         <title>Informations sur les serveurs de temps</title>
 
-        <para>Les serveurs de temps fournissent certes le temps, mais aussi d'autres informations. Pour prendre
-        connaissance de ces informations, utilisez la méthode <code>getInfo()</code>.</para>
+        <para>
+            Les serveurs de temps fournissent certes le temps, mais aussi d'autres
+            informations. Pour prendre connaissance de ces informations, utilisez la méthode
+            <code>getInfo()</code>.
+        </para>
 
         <programlisting role="php"><![CDATA[
 $server = new Zend_TimeSync(array('generic'  => 'ntp:\\0.pool.ntp.org',
@@ -175,14 +236,19 @@ $server = new Zend_TimeSync(array('generic'  => 'ntp:\\0.pool.ntp.org',
 print_r ($server->getInfo());
 ]]></programlisting>
 
-        <para>Des protocoles et des serveurs différents, retourneront des informations différentes.</para>
+        <para>
+            Des protocoles et des serveurs différents, retourneront des informations
+            différentes.
+        </para>
     </sect2>
 
     <sect2 id="zend.timesync.working.exceptions">
         <title>Gérer les exceptions</title>
 
-        <para>Les exceptions sont collectées pour tous les serveurs et sont retournées en tant que tableau. Vous pourrez
-        ainsi itérer sur vos exceptions, voyez plutôt :</para>
+        <para>
+            Les exceptions sont collectées pour tous les serveurs et sont retournées en tant
+            que tableau. Vous pourrez ainsi itérer sur vos exceptions, voyez plutôt :
+        </para>
 
         <programlisting role="php"><![CDATA[
 $serverlist = array(

+ 118 - 64
documentation/manual/fr/module_specs/Zend_TimeSync.xml

@@ -1,24 +1,33 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13828 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15346 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.timesync.introduction">
     <title>Introduction</title>
 
-    <para><classname>Zend_TimeSync</classname> est capable de recevoir une information temporelle depuis un serveur de temps, en
-    utilisant les protocoles <emphasis>NTP</emphasis> ou <emphasis>SNTP</emphasis>. Avec
-    <classname>Zend_TimeSync</classname>, Zend Framework peut fonctionner sans se soucier de la configuration du temps (de la
-    date) du serveur sur lequel il tourne.</para>
-
-    <para>Pour se rendre indépendant du temps actuel sur le serveur, <classname>Zend_TimeSync</classname> fonctionne en calculant
-    des différences entre le temps du serveur, et le temps réel actuel, en envoyant et recevant des paquets vers un
-    serveur de gestion du temps, grâce aux protocoles NTP ou SNTP.</para>
+    <para>
+        <classname>Zend_TimeSync</classname> est capable de recevoir une information
+        temporelle depuis un serveur de temps, en utilisant les protocoles <emphasis>NTP</emphasis>
+        ou <emphasis>SNTP</emphasis>. Avec <classname>Zend_TimeSync</classname>, Zend Framework peut
+        fonctionner sans se soucier de la configuration du temps (de la date) du serveur sur lequel
+        il tourne.
+    </para>
+
+    <para>
+        Pour se rendre indépendant du temps actuel sur le serveur,
+        <classname>Zend_TimeSync</classname> fonctionne en calculant des différences entre le temps
+        du serveur, et le temps réel actuel, en envoyant et recevant des paquets vers un serveur de
+        gestion du temps, grâce aux protocoles NTP ou SNTP.
+    </para>
 
     <note>
         <title>En tâche de fond</title>
 
-        <para><classname>Zend_TimeSync</classname> ne peut pas changer le temps sur le serveur, mais il peut en revanche retourner
-        un objet <link linkend="zend.date.introduction">Zend_Date</link> de différence de temps, pour travailler
-        avec.</para>
+        <para>
+            <classname>Zend_TimeSync</classname> ne peut pas changer le temps sur le serveur,
+            mais il peut en revanche retourner un objet <link
+            linkend="zend.date.introduction">Zend_Date</link> de différence de temps, pour
+            travailler avec.
+        </para>
     </note>
 
     <sect2 id="zend.timesync.introduction.why">
@@ -26,116 +35,161 @@
 
         <para>Pourquoi donc utiliser <classname>Zend_TimeSync</classname> ?</para>
 
-        <para>En théorie, sur un serveur, un service (démon) tourne sur le système d'exploitation, pour s'occuper de la
-        synchronisation précise du temps, avec un serveur distant de temps. Cependant il est possible que votre OS ne
-        supporte pas ceci, ou que vous n'ayez pas les droits, ou la possibilité de gérer un tel service de
-        synchronisation. <classname>Zend_TimeSync</classname> prend alors tout son sens.</para>
+        <para>
+            En théorie, sur un serveur, un service (démon) tourne sur le système
+            d'exploitation, pour s'occuper de la synchronisation précise du temps, avec un serveur
+            distant de temps. Cependant il est possible que votre OS ne supporte pas ceci, ou que
+            vous n'ayez pas les droits, ou la possibilité de gérer un tel service de
+            synchronisation. <classname>Zend_TimeSync</classname> prend alors tout son sens.
+        </para>
 
-        <para>Voici quelques exemples dans lesquels <classname>Zend_TimeSync</classname> est tout à fait adapté et utile :</para>
+        <para>
+            Voici quelques exemples dans lesquels <classname>Zend_TimeSync</classname> est
+            tout à fait adapté et utile :
+        </para>
 
         <itemizedlist mark="opencircle">
             <listitem>
-                <para><emphasis>Serveur sans service de synchronisation du temps</emphasis></para>
-
-                <para>Si votre application tourne sur un serveur qui ne possède pas de service de synchronisation du
-                temps, alors utiliser <classname>Zend_TimeSync</classname> vous permettra de gérer le temps dans votre
-                application.</para>
+                <para>
+                    <emphasis>Serveur sans service de synchronisation du
+                    temps</emphasis>
+                </para>
+
+                <para>
+                    Si votre application tourne sur un serveur qui ne possède pas de service
+                    de synchronisation du temps, alors utiliser <classname>Zend_TimeSync</classname>
+                    vous permettra de gérer le temps dans votre application.
+                </para>
             </listitem>
 
             <listitem>
                 <para><emphasis>Serveurs de base de données séparés</emphasis></para>
 
-                <para>Si votre serveur de base de données est installé sur un serveur distant, et qu'il n'est pas
-                synchronisé temporellement avec votre serveur applicatif, alors vous rencontrerez des problèmes si vous
-                utilisez des timestamps.</para>
+                <para>
+                    Si votre serveur de base de données est installé sur un serveur distant,
+                    et qu'il n'est pas synchronisé temporellement avec votre serveur applicatif,
+                    alors vous rencontrerez des problèmes si vous utilisez des timestamps.
+                </para>
             </listitem>
 
             <listitem>
                 <para><emphasis>Serveurs multiples</emphasis></para>
 
-                <para>Si votre application fonctionne au travers de multiples serveurs applicatifs, il est possible que
-                ceux-ci ne soient pas synchronisés au niveau du temps, et entre eux. Des problèmes vont alors apparaître
-                lorsque des données proviennent de plusieurs serveurs différents, et sont traitées ensemble.</para>
+                <para>
+                    Si votre application fonctionne au travers de multiples serveurs
+                    applicatifs, il est possible que ceux-ci ne soient pas synchronisés au niveau du
+                    temps, et entre eux. Des problèmes vont alors apparaître lorsque des données
+                    proviennent de plusieurs serveurs différents, et sont traitées ensemble.
+                </para>
             </listitem>
 
             <listitem>
                 <para><emphasis>Processus de Batch</emphasis></para>
 
-                <para>Si vous utilisez des fichiers batchs, ou des applications en ligne de commande, et que celles-ci
-                nécessitent une synchronisation temporelle absente sur votre système.</para>
+                <para>
+                    Si vous utilisez des fichiers batchs, ou des applications en ligne de
+                    commande, et que celles-ci nécessitent une synchronisation temporelle absente
+                    sur votre système.
+                </para>
             </listitem>
         </itemizedlist>
 
-        <para>Dans tous ces cas là, <classname>Zend_TimeSync</classname> est une solution parfaite lorsque vous ne pouvez
-        installer de service sur vos serveurs.</para>
+        <para>
+            Dans tous ces cas là, <classname>Zend_TimeSync</classname> est une solution
+            parfaite lorsque vous ne pouvez installer de service sur vos serveurs.
+        </para>
     </sect2>
 
     <sect2 id="zend.timesync.introduction.ntp">
         <title>Qu'est ce que NTP ?</title>
 
-        <para>Le <code>Network Time Protocol</code> (<emphasis>NTP</emphasis>) est un protocole utilisé
-        pour la synchronisation du temps des systèmes informatiques au travers du réseau. NTP utilise le port UDP 123
-        comme couche de transport. Voyez cet <ulink url="http://fr.wikipedia.org/wiki/Network_Time_Protocol"> article
-        wikipédia</ulink> pour plus d'informations sur le protocole.</para>
+        <para>
+            Le <code>Network Time Protocol</code> (<emphasis>NTP</emphasis>) est un protocole
+            utilisé pour la synchronisation du temps des systèmes informatiques au travers du
+            réseau. NTP utilise le port UDP 123 comme couche de transport. Voyez cet <ulink
+            url="http://fr.wikipedia.org/wiki/Network_Time_Protocol"> article wikipédia</ulink> pour
+            plus d'informations sur le protocole.
+        </para>
     </sect2>
 
     <sect2 id="zend.timesync.introduction.sntp">
         <title>Qu'est ce que SNTP?</title>
 
-        <para>Le <code>Simple Network Time Protocol</code> (<emphasis>SNTP</emphasis>) est un protocole
-        utilisé pour la synchronisation du temps des systèmes informatiques au travers du réseau. SNTP utilise le port
-        UDP 37 comme couche de transport. Il est très semblable à <code>NTP</code>, mais plus simple (comme son nom
-        l'indique).</para>
+        <para>
+            Le <code>Simple Network Time Protocol</code> (<emphasis>SNTP</emphasis>) est un
+            protocole utilisé pour la synchronisation du temps des systèmes informatiques au travers
+            du réseau. SNTP utilise le port UDP 37 comme couche de transport. Il est très semblable
+            à <code>NTP</code>, mais plus simple (comme son nom l'indique).
+        </para>
     </sect2>
 
     <sect2 id="zend.timesync.introduction.problematic">
         <title>Problèmes courants d'utilisation</title>
 
-        <para>Faites attention avec l'utilisation de <classname>Zend_TimeSync</classname>. Vous devrez garder en tête certains
-        détails concernant la structure de la synchronisation temporelle, et du Web lui-même. Les bonnes pratiques pour
-        éviter ces problèmes sont décrites ici. Lisez les bien avant d'utiliser <classname>Zend_TimeSync</classname>.</para>
+        <para>
+            Faites attention avec l'utilisation de <classname>Zend_TimeSync</classname>. Vous
+            devrez garder en tête certains détails concernant la structure de la synchronisation
+            temporelle, et du Web lui-même. Les bonnes pratiques pour éviter ces problèmes sont
+            décrites ici. Lisez les bien avant d'utiliser
+            <classname>Zend_TimeSync</classname>.
+        </para>
     </sect2>
 
     <sect2 id="zend.timesync.introduction.decision">
         <title>Décider quel serveur de temps utiliser</title>
 
-        <para>Décider du serveur de temps à utiliser est assez minutieux. Vous devrez prendre en considération les
-        paramètres suivants :</para>
+        <para>
+            Décider du serveur de temps à utiliser est assez minutieux. Vous devrez prendre en
+            considération les paramètres suivants :
+        </para>
 
         <itemizedlist mark="opencircle">
             <listitem>
                 <para>La distance</para>
 
-                <para>Bien entendu la distance entre votre serveur et le serveur de temps est importante. Afin de
-                réduire la charge réseau et d'obtenir des réponses plus rapides, veillez à utiliser un serveur de temps
-                proche géographiquement de votre serveur applicatif.</para>
+                <para>
+                    Bien entendu la distance entre votre serveur et le serveur de temps est
+                    importante. Afin de réduire la charge réseau et d'obtenir des réponses plus
+                    rapides, veillez à utiliser un serveur de temps proche géographiquement de votre
+                    serveur applicatif.
+                </para>
             </listitem>
 
             <listitem>
                 <para>La vitesse</para>
 
-                <para>La vitesse à laquelle les serveur de temps vont vous répondre est importante. Certains sont
-                souvent saturés. Faîtes des mesures.</para>
+                <para>
+                    La vitesse à laquelle les serveur de temps vont vous répondre est
+                    importante. Certains sont souvent saturés. Faîtes des mesures.
+                </para>
             </listitem>
 
             <listitem>
                 <para>Leur nombre</para>
 
-                <para>N'utilisez pas systématiquement le même serveur de temps pour vous synchroniser. Si vous envoyez
-                trop de requêtes vers un serveur de temps, celui-ci pourra vous bannir. Utilisez un pool de serveurs
-                dont vous assurerez la rotation.</para>
+                <para>
+                    N'utilisez pas systématiquement le même serveur de temps pour vous
+                    synchroniser. Si vous envoyez trop de requêtes vers un serveur de temps,
+                    celui-ci pourra vous bannir. Utilisez un pool de serveurs dont vous assurerez la
+                    rotation.
+                </para>
             </listitem>
         </itemizedlist>
 
-        <para>Mais où donc trouver des serveurs de temps ? Déjà, essayez votre LAN. En effet il est possible que vous
-        disposiez d'un serveur de temps interne à votre structure. Sinon vous pouvez utiliser l'un des nombreux serveurs
-        publics. Il sera alors intéressant d'utiliser un pool de serveurs. Un pool est un serveur vous donnant
-        aléatoirement l'adresse d'un serveur de temps, en fonction de critères, comme la distance. C'est une solution
-        tout à fait adaptée pour assurer une rotation des serveurs, et éviter tous les problèmes mentionnés
-        ci-dessus.</para>
-
-        <para>Voyez <ulink url="http://www.pool.ntp.org">www.pool.ntp.org</ulink> afin de récupérer le pool le plus
-        proche de vous. Par exemple pour un serveur en France <code>0.europe.pool.ntp.org</code> pourra faire
-        l'affaire.</para>
+        <para>
+            Mais où donc trouver des serveurs de temps ? Déjà, essayez votre LAN. En effet il
+            est possible que vous disposiez d'un serveur de temps interne à votre structure. Sinon
+            vous pouvez utiliser l'un des nombreux serveurs publics. Il sera alors intéressant
+            d'utiliser un pool de serveurs. Un pool est un serveur vous donnant aléatoirement
+            l'adresse d'un serveur de temps, en fonction de critères, comme la distance. C'est une
+            solution tout à fait adaptée pour assurer une rotation des serveurs, et éviter tous les
+            problèmes mentionnés ci-dessus.
+        </para>
+
+        <para>
+            Voyez <ulink url="http://www.pool.ntp.org">www.pool.ntp.org</ulink> afin de
+            récupérer le pool le plus proche de vous. Par exemple pour un serveur en France
+            <code>0.europe.pool.ntp.org</code> pourra faire l'affaire.
+        </para>
     </sect2>
 </sect1>

+ 217 - 127
documentation/manual/fr/module_specs/Zend_Translate-Adapters.xml

@@ -1,12 +1,15 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13904 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15346 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.translate.adapter">
     <title>Adaptateurs pour Zend_Translate</title>
 
-    <para><classname>Zend_Translate</classname> peut manipuler différents adaptateurs pour la traduction. Chaque adaptateur a ses
-    propres avantages et inconvénients. Ci-dessous vous trouverez la liste complète de tous les adaptateurs supportés
-    pour la traduction des fichiers sources.</para>
+    <para>
+        <classname>Zend_Translate</classname> peut manipuler différents adaptateurs pour la
+        traduction. Chaque adaptateur a ses propres avantages et inconvénients. Ci-dessous vous
+        trouverez la liste complète de tous les adaptateurs supportés pour la traduction des
+        fichiers sources.
+    </para>
 
     <table id="zend.translate.adapter.table">
         <title>Liste des adaptateurs pour Zend_Translate</title>
@@ -28,7 +31,8 @@
 
                     <entry>Utilise les tableaux PHP</entry>
 
-                    <entry>Petites pages ; l'utilisation la plus simple ; seulement pour les programmeurs</entry>
+                    <entry>Petites pages ; l'utilisation la plus simple ; seulement pour les
+                    programmeurs</entry>
                 </row>
 
                 <row>
@@ -36,8 +40,8 @@
 
                     <entry>Utilise les fichiers à séparation par virgule (*.csv/*.txt)</entry>
 
-                    <entry>Format simple de fichier texte ; rapide ; problèmes possibles avec les caractères
-                    Unicode</entry>
+                    <entry>Format simple de fichier texte ; rapide ; problèmes possibles avec
+                    les caractères Unicode</entry>
                 </row>
 
                 <row>
@@ -45,7 +49,8 @@
 
                     <entry>Utilise les fichiers binaires gettext (*.mo)</entry>
 
-                    <entry>Norme GNU pour Linux ; thread-safe ; besoin d'outils pour la traduction</entry>
+                    <entry>Norme GNU pour Linux ; thread-safe ; besoin d'outils pour la
+                    traduction</entry>
                 </row>
 
                 <row>
@@ -53,8 +58,8 @@
 
                     <entry>Utilise de simples fichiers ini (*.ini)</entry>
 
-                    <entry>Format simple de fichier texte ; rapide ; problèmes possibles avec les caractères
-                    Unicode</entry>
+                    <entry>Format simple de fichier texte ; rapide ; problèmes possibles avec
+                    les caractères Unicode</entry>
                 </row>
 
                 <row>
@@ -62,7 +67,8 @@
 
                     <entry>Utilise les fichiers d'échange termbase (*.tbx/*.XML)</entry>
 
-                    <entry>Standard industriel pour des chaînes partagées entre les applications ; format XML</entry>
+                    <entry>Standard industriel pour des chaînes partagées entre les applications
+                    ; format XML</entry>
                 </row>
 
                 <row>
@@ -70,8 +76,8 @@
 
                     <entry>Utilise les fichiers tmx (*.tmx/*.XML)</entry>
 
-                    <entry>Industriellement compatible avec la traduction partagée d'application ; format XML ; lisible
-                    par l'homme</entry>
+                    <entry>Industriellement compatible avec la traduction partagée d'application
+                    ; format XML ; lisible par l'homme</entry>
                 </row>
 
                 <row>
@@ -79,7 +85,8 @@
 
                     <entry>Utilise les fichiers qt linguist (*.ts)</entry>
 
-                    <entry>Framework pour les applications mutualisées ; format XML ; lisible par l'homme</entry>
+                    <entry>Framework pour les applications mutualisées ; format XML ; lisible
+                    par l'homme</entry>
                 </row>
 
                 <row>
@@ -87,7 +94,8 @@
 
                     <entry>Utilise les fichiers xliff (*.xliff/*.XML)</entry>
 
-                    <entry>Un format plus simple que TMX mais lié à lui ; format XML ; lisible par l'homme</entry>
+                    <entry>Un format plus simple que TMX mais lié à lui ; format XML ; lisible
+                    par l'homme</entry>
                 </row>
 
                 <row>
@@ -95,7 +103,8 @@
 
                     <entry>Use xmltm (*.XML) files</entry>
 
-                    <entry>Standard industriel pour la traduction de type XML ; format XML ; lisible par l'homme</entry>
+                    <entry>Standard industriel pour la traduction de type XML ; format XML ;
+                    lisible par l'homme</entry>
                 </row>
 
                 <row>
@@ -103,7 +112,8 @@
 
                     <entry>*.sql</entry>
 
-                    <entry>Différents adaptateurs pourront être implémentés dans l'avenir.</entry>
+                    <entry>Différents adaptateurs pourront être implémentés dans
+                    l'avenir.</entry>
                 </row>
             </tbody>
         </tgroup>
@@ -112,159 +122,230 @@
     <sect2 id="zend.translate.adapter.decision">
         <title>Comment décider quel adaptateur de traduction utiliser ?</title>
 
-        <para>Vous devrez décider quel adaptateur vous voulez utiliser avec <classname>Zend_Translate</classname>. Fréquemment,
-        des critères externes tels qu'une condition du projet ou une exigence du client détermine ceci pour vous, mais
-        si vous êtes en position de le faire vous-même, les conseils suivants peuvent simplifier votre décision.</para>
+        <para>
+            Vous devrez décider quel adaptateur vous voulez utiliser avec
+            <classname>Zend_Translate</classname>. Fréquemment, des critères externes tels qu'une
+            condition du projet ou une exigence du client détermine ceci pour vous, mais si vous
+            êtes en position de le faire vous-même, les conseils suivants peuvent simplifier votre
+            décision.
+        </para>
 
         <note>
-            <para>En choisissant votre adaptateur vous devriez également prendre en compte l'encodage utilisé. Même si
-            Zend Framework déclare UTF-8 comme encodage par défaut, il vous sera parfois nécessaire d'utiliser un
-            autre encodage. Zend_Translate ne changera pas l'encodage défini dans votre fichier source ce qui veut dire
-            que si votre source Gettext est construite en ISO-8859-1, il retournera les chaînes dans cet encodage sans
-            les convertir. Il existe une seule restriction :</para>
-
-            <para>Quand vous utilisez des sources basées sur le format XML comme TMX ou XLIFF vous devez définir
-            l'encodage dans l'en-tête des fichiers XML, car tout fichier XML sans définition d'encodage sera traité par
-            défaut en UTF-8 par un analyseur XML. Vous devez aussi prendre en compte que les encodages des fichiers XML
-            sont limités aux encodages supportés par PHP, c'est-à-dire UTF-8, ISO-8859-1 and US-ASCII.</para>
+            <para>
+                En choisissant votre adaptateur vous devriez également prendre en compte
+                l'encodage utilisé. Même si Zend Framework déclare UTF-8 comme encodage par défaut,
+                il vous sera parfois nécessaire d'utiliser un autre encodage. Zend_Translate ne
+                changera pas l'encodage défini dans votre fichier source ce qui veut dire que si
+                votre source Gettext est construite en ISO-8859-1, il retournera les chaînes dans
+                cet encodage sans les convertir. Il existe une seule restriction :
+            </para>
+
+            <para>
+                Quand vous utilisez des sources basées sur le format XML comme TMX ou XLIFF
+                vous devez définir l'encodage dans l'en-tête des fichiers XML, car tout fichier XML
+                sans définition d'encodage sera traité par défaut en UTF-8 par un analyseur XML.
+                Vous devez aussi prendre en compte que les encodages des fichiers XML sont limités
+                aux encodages supportés par PHP, c'est-à-dire UTF-8, ISO-8859-1 and US-ASCII.
+            </para>
         </note>
 
         <sect3 id="zend.translate.adapter.array">
             <title>Zend_Translate_Adapter_Array</title>
 
-            <para>L'adaptateur de type tableau est l'adaptateur qui est le plus simple à utiliser pour les programmeurs.
-            Mais quand vous avez de nombreuses chaînes de traduction ou beaucoup de langues vous devriez penser à un
-            autre adaptateur. Par exemple, si vous avez 5000 chaînes de traduction, l'adaptateur tableau n'est
-            probablement pas le choix le plus approprié pour vous.</para>
-
-            <para>Vous devriez seulement utiliser cet adaptateur pour de petits sites avec quelques langues, et si vous
-            (ou votre équipe de programmeur) créez les traductions vous-même.</para>
+            <para>
+                L'adaptateur de type tableau est l'adaptateur qui est le plus simple à
+                utiliser pour les programmeurs. Mais quand vous avez de nombreuses chaînes de
+                traduction ou beaucoup de langues vous devriez penser à un autre adaptateur. Par
+                exemple, si vous avez 5000 chaînes de traduction, l'adaptateur tableau n'est
+                probablement pas le choix le plus approprié pour vous.
+            </para>
+
+            <para>
+                Vous devriez seulement utiliser cet adaptateur pour de petits sites avec
+                quelques langues, et si vous (ou votre équipe de programmeur) créez les traductions
+                vous-même.
+            </para>
         </sect3>
 
         <sect3 id="zend.translate.adapter.csv">
             <title>Zend_Translate_Adapter_Csv</title>
 
-            <para>L'adaptateur Csv est l'adaptateur qui est le plus simple à utiliser pour les clients. Les fichiers CSV
-            sont lisibles par les éditeurs de texte standard, mais souvent les éditeurs de texte ne supportent pas les
-            jeux de caractères utf8.</para>
+            <para>
+                L'adaptateur Csv est l'adaptateur qui est le plus simple à utiliser pour les
+                clients. Les fichiers CSV sont lisibles par les éditeurs de texte standard, mais
+                souvent les éditeurs de texte ne supportent pas les jeux de caractères utf8.
+            </para>
 
-            <para>Vous devriez utiliser cet adaptateur seulement si votre client veut faire les traductions
-            lui-même.</para>
+            <para>
+                Vous devriez utiliser cet adaptateur seulement si votre client veut faire les
+                traductions lui-même.
+            </para>
 
             <note>
-                <para>Prenez garde que l'adaptateur Csv a des problèmes quand vos fichiers Csv ont un encodage différent
-                que celui de votre environnement. Ceci est du à un bug de PHP lui-même qui ne sera pas corrigé avant la
-                PHP 6.0 (http://bugs.php.net/bug.php?id=38471). Vous devez donc faire attention que l'adaptateur Csv ne
-                gère pas la locale à cause d'une restrictions PHP.</para>
+                <para>
+                    Prenez garde que l'adaptateur Csv a des problèmes quand vos fichiers Csv
+                    ont un encodage différent que celui de votre environnement. Ceci est du à un bug
+                    de PHP lui-même qui ne sera pas corrigé avant la PHP 6.0
+                    (http://bugs.php.net/bug.php?id=38471). Vous devez donc faire attention que
+                    l'adaptateur Csv ne gère pas la locale à cause d'une restrictions PHP.
+                </para>
             </note>
         </sect3>
 
         <sect3 id="zend.translate.adapter.gettext">
             <title>Zend_Translate_Adapter_Gettext</title>
 
-            <para>L'adaptateur Gettext est l'adaptateur qui est utilisé le plus souvent. Gettext est un format de source
-            de traduction qui a été présenté par GNU, et est maintenant employé dans le monde entier. Il n'est pas
-            lisible pour l'homme, mais il y a plusieurs outils gratuiciels (par exemple, <ulink
-            url="http://sourceforge.net/projects/poedit/">POEdit</ulink>), qui sont très utiles. L'adaptateur
-            <classname>Zend_Translate_Gettext</classname> n'est pas implémenté en utilisant l'extension gettext de PHP. Vous
-            pouvez utiliser l'adaptateur Gettext même si vous n'avez pas installer l'extension gettext de PHP. En outre
-            l'adaptateur est "thread-safe" alors que l'extension gettext de PHP ne l'est pas actuellement.</para>
-
-            <para>La plupart des personnes utiliseront cet adaptateur. Avec les outils disponibles, la traduction
-            professionnelle est très simple. Mais les données de gettext sont stockées dans un format compréhensible par
-            une machine, qui n'est pas lisible sans outils.</para>
+            <para>
+                L'adaptateur Gettext est l'adaptateur qui est utilisé le plus souvent. Gettext
+                est un format de source de traduction qui a été présenté par GNU, et est maintenant
+                employé dans le monde entier. Il n'est pas lisible pour l'homme, mais il y a
+                plusieurs outils gratuiciels (par exemple, <ulink
+                url="http://sourceforge.net/projects/poedit/">POEdit</ulink>), qui sont très utiles.
+                L'adaptateur <classname>Zend_Translate_Gettext</classname> n'est pas implémenté en
+                utilisant l'extension gettext de PHP. Vous pouvez utiliser l'adaptateur Gettext même
+                si vous n'avez pas installer l'extension gettext de PHP. En outre l'adaptateur est
+                "thread-safe" alors que l'extension gettext de PHP ne l'est pas actuellement.
+            </para>
+
+            <para>
+                La plupart des personnes utiliseront cet adaptateur. Avec les outils
+                disponibles, la traduction professionnelle est très simple. Mais les données de
+                gettext sont stockées dans un format compréhensible par une machine, qui n'est pas
+                lisible sans outils.
+            </para>
         </sect3>
 
         <sect3 id="zend.translate.adapter.ini">
             <title>Zend_Translate_Adapter_Ini</title>
 
-            <para>L'adaptateur Ini est un adaptateur qui peut être directement utiliser par les clients. Les fichiers
-            INI sont lisibles par les éditeurs de texte standard, mais souvent les éditeurs de texte ne supportent pas
-            les jeux de caractères utf8.</para>
-
-            <para>Vous devriez utiliser cet adaptateur seulement si votre client veut faire les traductions lui-même.
-            N'utilisez pas cet adaptateur comme source de traduction générique.</para>
+            <para>
+                L'adaptateur Ini est un adaptateur qui peut être directement utiliser par les
+                clients. Les fichiers INI sont lisibles par les éditeurs de texte standard, mais
+                souvent les éditeurs de texte ne supportent pas les jeux de caractères utf8.
+            </para>
+
+            <para>
+                Vous devriez utiliser cet adaptateur seulement si votre client veut faire les
+                traductions lui-même. N'utilisez pas cet adaptateur comme source de traduction
+                générique.
+            </para>
         </sect3>
 
         <sect3 id="zend.translate.adapter.tbx">
             <title>Zend_Translate_Adapter_Tbx</title>
 
-            <para>L'adaptateur Tbx est un adaptateur qui sera utilisé par les clients qui utilisent déjà le format TBX
-            pour leur système de traduction interne. Tbx n'est pas un format de traduction standard, mais plus une
-            collection de chaînes de caractère sources déjà traduites et pré-traduites. Quand vous utilisez cet
-            adaptateur vous devez être sûrs que toute votre chaîne de caractère source nécessaire est traduite. TBX est
-            un fichier basé sur le format XML et un format complètement nouveau. XML des fichiers sont lisibles par
-            l'homme, mais l'analyse syntaxique n'est pas aussi rapide qu'avec des fichiers gettext.</para>
-
-            <para>Cet adaptateur est parfait pour les sociétés dont les fichiers source pré-traduits existent déjà. Les
-            fichiers sont lisibles par l'homme et sont indépendants de système.</para>
+            <para>
+                L'adaptateur Tbx est un adaptateur qui sera utilisé par les clients qui
+                utilisent déjà le format TBX pour leur système de traduction interne. Tbx n'est pas
+                un format de traduction standard, mais plus une collection de chaînes de caractère
+                sources déjà traduites et pré-traduites. Quand vous utilisez cet adaptateur vous
+                devez être sûrs que toute votre chaîne de caractère source nécessaire est traduite.
+                TBX est un fichier basé sur le format XML et un format complètement nouveau. XML des
+                fichiers sont lisibles par l'homme, mais l'analyse syntaxique n'est pas aussi rapide
+                qu'avec des fichiers gettext.
+            </para>
+
+            <para>
+                Cet adaptateur est parfait pour les sociétés dont les fichiers source
+                pré-traduits existent déjà. Les fichiers sont lisibles par l'homme et sont
+                indépendants de système.
+            </para>
         </sect3>
 
         <sect3 id="zend.translate.adapter.tmx">
             <title>Zend_Translate_Adapter_Tmx</title>
 
-            <para>L'adaptateur Tmx est l'adaptateur qui sera employé par la plupart des clients qui ont des systèmes
-            multiples qui emploient la même source de traduction, ou quand la source de traduction doit être
-            indépendante du système. TMX est un format basé sur le format XML, qui est annoncé pour être le prochain
-            standard industriel. Les fichiers de XML sont lisibles par l'homme, mais l'analyse n'est pas aussi rapide
-            qu'avec des fichiers gettext.</para>
-
-            <para>La plupart des moyennes à grandes entreprises utilisent cet adaptateur. Les fichiers sont lisibles par
-            l'homme et sont indépendants du système.</para>
+            <para>
+                L'adaptateur Tmx est l'adaptateur qui sera employé par la plupart des clients
+                qui ont des systèmes multiples qui emploient la même source de traduction, ou quand
+                la source de traduction doit être indépendante du système. TMX est un format basé
+                sur le format XML, qui est annoncé pour être le prochain standard industriel. Les
+                fichiers de XML sont lisibles par l'homme, mais l'analyse n'est pas aussi rapide
+                qu'avec des fichiers gettext.
+            </para>
+
+            <para>
+                La plupart des moyennes à grandes entreprises utilisent cet adaptateur. Les
+                fichiers sont lisibles par l'homme et sont indépendants du système.
+            </para>
         </sect3>
 
         <sect3 id="zend.translate.adapter.qt">
             <title>Zend_Translate_Adapter_Qt</title>
 
-            <para>L'adaptateur Qt est destiné à tous les clients qui ont des fichiers TS faits par QtLinguist comme
-            source de traduction. QT est un fichier basé sur le format XML. Les fichiers XML sont humainement lisible,
-            mais l'analyse syntaxique n'est pas si rapide qu'avec des fichiers gettext.</para>
-
-            <para>Plusieurs grands acteurs ont construit leur logiciel sur le framework QT. Les fichiers sont lisibles
-            par l'homme et indépendants du système.</para>
+            <para>
+                L'adaptateur Qt est destiné à tous les clients qui ont des fichiers TS faits
+                par QtLinguist comme source de traduction. QT est un fichier basé sur le format XML.
+                Les fichiers XML sont humainement lisible, mais l'analyse syntaxique n'est pas si
+                rapide qu'avec des fichiers gettext.
+            </para>
+
+            <para>
+                Plusieurs grands acteurs ont construit leur logiciel sur le framework QT. Les
+                fichiers sont lisibles par l'homme et indépendants du système.
+            </para>
         </sect3>
 
         <sect3 id="zend.translate.adapter.xliff">
             <title>Zend_Translate_Adapter_Xliff</title>
 
-            <para>L'adaptateur Xliff est l'adaptateur qui sera employé par la plupart des clients qui veulent avoir des
-            fichiers XML mais n'ont pas d'outils pour TMX. XLIFF est basé sur le format XML et est lié à TMX mais est
-            plus simple car il ne supporte pas toutes ses possibilités. Les fichiers XML sont lisibles par l'homme, mais
-            l'analyse n'est pas aussi rapide qu'avec des fichiers gettext.</para>
-
-            <para>La plupart des moyennes entreprises utilisent cet adaptateur. Les fichiers sont lisibles par l'homme
-            et sont indépendants du système.</para>
+            <para>
+                L'adaptateur Xliff est l'adaptateur qui sera employé par la plupart des
+                clients qui veulent avoir des fichiers XML mais n'ont pas d'outils pour TMX. XLIFF
+                est basé sur le format XML et est lié à TMX mais est plus simple car il ne supporte
+                pas toutes ses possibilités. Les fichiers XML sont lisibles par l'homme, mais
+                l'analyse n'est pas aussi rapide qu'avec des fichiers gettext.
+            </para>
+
+            <para>
+                La plupart des moyennes entreprises utilisent cet adaptateur. Les fichiers
+                sont lisibles par l'homme et sont indépendants du système.
+            </para>
         </sect3>
 
         <sect3 id="zend.translate.adapter.xmltm">
             <title>Zend_Translate_Adapter_XmlTm</title>
 
-            <para>L'adaptateur XmlTm est l'adaptateur qui sera utilisé par les clients qui font leur mise en page
-            eux-mêmes. XmlTm est un format qui permet à la source HTML complète d'être incluse dans la source de
-            traduction, donc la traduction est couplée avec la mise en page. XmlTm est un fichier basé sur le format
-            XML, qui est proche de XLIFF, mais qui n'est pas aussi simple à lire.</para>
-
-            <para>Cet adaptateur devrait être seulement utilisé quand des fichiers source existent déjà. Les fichiers
-            sont lisibles par l'homme et sont indépendants du système.</para>
+            <para>
+                L'adaptateur XmlTm est l'adaptateur qui sera utilisé par les clients qui font
+                leur mise en page eux-mêmes. XmlTm est un format qui permet à la source HTML
+                complète d'être incluse dans la source de traduction, donc la traduction est couplée
+                avec la mise en page. XmlTm est un fichier basé sur le format XML, qui est proche de
+                XLIFF, mais qui n'est pas aussi simple à lire.
+            </para>
+
+            <para>
+                Cet adaptateur devrait être seulement utilisé quand des fichiers source
+                existent déjà. Les fichiers sont lisibles par l'homme et sont indépendants du
+                système.
+            </para>
         </sect3>
     </sect2>
 
     <sect2 id="zend.translate.adapter.selfwritten">
         <title>Intégrer ses propres adaptateurs</title>
 
-        <para><classname>Zend_Translate</classname> vous permet d'intégrer et d'utiliser vos propres classes d'adaptateurs. Elles
-        peuvent être utilisées commes les classes standards qui sont déjà incluses dans
-        <classname>Zend_Translate</classname>.</para>
-
-        <para>Toute classe d'adaptateur que vous voulez utiliser avec <classname>Zend_Translate</classname> doit être une
-        sous-classe de <classname>Zend_Translate_Adapter</classname>. <classname>Zend_Translate_Adapter</classname> est une classe abstraite
-        qui définit déjà tout ce qui est nécessaire pour la traduction. Ce qui doit être fait par vous, est la
-        définition du lecteur des données traduites.</para>
-
-        <para>L'usage du préfixe "Zend" devrait être limité à Zend Framework. Si vous étendez
-        <classname>Zend_Translate</classname> avec votre propre adaptateur, vous devriez le nommer
-        "MonEntreprise_Translate_Adapter_MonFormat". Le code suivant montre un exemple de la manière dont une classe
-        d'adaptateur personnalisée peut être implémentée :</para>
+        <para>
+            <classname>Zend_Translate</classname> vous permet d'intégrer et d'utiliser vos
+            propres classes d'adaptateurs. Elles peuvent être utilisées commes les classes standards
+            qui sont déjà incluses dans <classname>Zend_Translate</classname>.
+        </para>
+
+        <para>
+            Toute classe d'adaptateur que vous voulez utiliser avec
+            <classname>Zend_Translate</classname> doit être une sous-classe de
+            <classname>Zend_Translate_Adapter</classname>.
+            <classname>Zend_Translate_Adapter</classname> est une classe abstraite qui définit déjà
+            tout ce qui est nécessaire pour la traduction. Ce qui doit être fait par vous, est la
+            définition du lecteur des données traduites.
+        </para>
+
+        <para>
+            L'usage du préfixe "Zend" devrait être limité à Zend Framework. Si vous étendez
+            <classname>Zend_Translate</classname> avec votre propre adaptateur, vous devriez le
+            nommer "MonEntreprise_Translate_Adapter_MonFormat". Le code suivant montre un exemple de
+            la manière dont une classe d'adaptateur personnalisée peut être implémentée :
+        </para>
 
         <programlisting role="php"><![CDATA[
 try {
@@ -283,15 +364,22 @@ try {
     <sect2 id="zend.translate.adapter.caching">
         <title>Améliorer les performances de tous les adaptateurs</title>
 
-        <para><classname>Zend_Translate</classname> vous permet d'utiliser en interne <classname>Zend_Cache</classname> pour accélérer le
-        chargement des sources de traduction. Cela devient très pratique si vous utilisez beaucoup de sources de
-        traduction ou des formats source vastes comme des fichiers au format XML.</para>
-
-        <para>Pour utiliser le cache, vous devez juste fournir un objet de cache à la méthode
-        <classname>Zend_Translate::setCache()</classname>. Elle prend une instance de <classname>Zend_Cache</classname> comme seul
-        paramètre. En outre si vous utilisez n'importe quel adaptateur direct, vous pouvez employer la méthode
-        <code>setCache()</code>. Par commodité, il existe des méthodes statiques <code>getCache()</code>,
-        <code>hasCache()</code>, <code>clearCache()</code> et <code>removeCache()</code>.</para>
+        <para>
+            <classname>Zend_Translate</classname> vous permet d'utiliser en interne
+            <classname>Zend_Cache</classname> pour accélérer le chargement des sources de
+            traduction. Cela devient très pratique si vous utilisez beaucoup de sources de
+            traduction ou des formats source vastes comme des fichiers au format XML.
+        </para>
+
+        <para>
+            Pour utiliser le cache, vous devez juste fournir un objet de cache à la méthode
+            <classname>Zend_Translate::setCache()</classname>. Elle prend une instance de
+            <classname>Zend_Cache</classname> comme seul paramètre. En outre si vous utilisez
+            n'importe quel adaptateur direct, vous pouvez employer la méthode
+            <code>setCache()</code>. Par commodité, il existe des méthodes statiques
+            <code>getCache()</code>, <code>hasCache()</code>, <code>clearCache()</code> et
+            <code>removeCache()</code>.
+        </para>
 
         <programlisting role="php"><![CDATA[
 $cache = Zend_Cache::factory('Core',
@@ -305,10 +393,12 @@ $translate = new Zend_Translate('gettext',
 ]]></programlisting>
 
         <note>
-            <para>Vous devez paramétrer le cache <emphasis>avant</emphasis> d'utiliser ou d'initialiser
-            tout adaptateur ou instance de <classname>Zend_Translate</classname>. Sinon votre source de traduction ne sera pas
-            mise en cache tant que vous n'aurez pas ajouté une nouvelle source avec la méthode
-            <code>addTranslation()</code>.</para>
+            <para>
+                Vous devez paramétrer le cache <emphasis>avant</emphasis> d'utiliser ou
+                d'initialiser tout adaptateur ou instance de <classname>Zend_Translate</classname>.
+                Sinon votre source de traduction ne sera pas mise en cache tant que vous n'aurez pas
+                ajouté une nouvelle source avec la méthode <code>addTranslation()</code>.
+            </para>
         </note>
     </sect2>
 </sect1>

+ 84 - 44
documentation/manual/fr/module_specs/Zend_Translate-Introduction.xml

@@ -1,85 +1,120 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13827 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15346 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.translate.introduction">
     <title>Introduction</title>
 
-    <para><classname>Zend_Translate</classname> est la solution de Zend Framework pour des applications multilingues.</para>
+    <para>
+        <classname>Zend_Translate</classname> est la solution de Zend Framework pour des
+        applications multilingues.
+    </para>
 
-    <para>Dans des applications multilingues, le contenu doit être traduit en plusieurs langues et l'affichage du
-    contenu dépend de la langue de l'utilisateur. PHP offre déjà plusieurs manières de manipuler de tels problèmes,
-    toutefois la solution PHP a quelques problèmes :</para>
+    <para>
+        Dans des applications multilingues, le contenu doit être traduit en plusieurs langues
+        et l'affichage du contenu dépend de la langue de l'utilisateur. PHP offre déjà plusieurs
+        manières de manipuler de tels problèmes, toutefois la solution PHP a quelques problèmes
+        :
+    </para>
 
     <itemizedlist>
         <listitem>
-            <para><emphasis>API contradictoire :</emphasis> Il n'y a pas d'API unique pour les différents
-            formats de source. L'utilisation du gettext par exemple est très compliquée.</para>
+            <para>
+                <emphasis>API contradictoire :</emphasis> Il n'y a pas d'API unique pour les
+                différents formats de source. L'utilisation du gettext par exemple est très
+                compliquée.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>PHP supporte seulement gettext et les tableaux natifs :</emphasis> PHP
-            lui-même offre seulement le support des tableaux ou du gettext. Tous autres formats de source doivent être
-            codés manuellement, parce qu'il n'y a aucun support native.</para>
+            <para>
+                <emphasis>PHP supporte seulement gettext et les tableaux natifs :</emphasis>
+                PHP lui-même offre seulement le support des tableaux ou du gettext. Tous autres
+                formats de source doivent être codés manuellement, parce qu'il n'y a aucun support
+                native.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>Pas de détection de la langue par défaut :</emphasis> La langue par défaut de
-            l'utilisateur ne peut pas être détectée sans une connaissance plus approfondie des différents navigateurs
-            Web.</para>
+            <para>
+                <emphasis>Pas de détection de la langue par défaut :</emphasis> La langue par
+                défaut de l'utilisateur ne peut pas être détectée sans une connaissance plus
+                approfondie des différents navigateurs Web.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>Gettext n'est pas "thread-safe" :</emphasis> La bibliothèque gettext de PHP
-            n'est pas "thread safe", et elle ne devrait pas être employée dans un environnement multi-threading. C'est
-            dû à des problèmes de gettext lui-même, pas de PHP, mais c'est un problème existant.</para>
+            <para>
+                <emphasis>Gettext n'est pas "thread-safe" :</emphasis> La bibliothèque gettext
+                de PHP n'est pas "thread safe", et elle ne devrait pas être employée dans un
+                environnement multi-threading. C'est dû à des problèmes de gettext lui-même, pas de
+                PHP, mais c'est un problème existant.
+            </para>
         </listitem>
     </itemizedlist>
 
-    <para><classname>Zend_Translate</classname> n'a pas les problèmes ci-dessus. C'est pourquoi nous recommandons d'employer
-    <classname>Zend_Translate</classname> au lieu des fonctions natives de PHP. Les avantages de <classname>Zend_Translate</classname> sont
-    :</para>
+    <para>
+        <classname>Zend_Translate</classname> n'a pas les problèmes ci-dessus. C'est pourquoi
+        nous recommandons d'employer <classname>Zend_Translate</classname> au lieu des fonctions
+        natives de PHP. Les avantages de <classname>Zend_Translate</classname> sont :
+    </para>
 
     <itemizedlist>
         <listitem>
-            <para><emphasis>Support des formats multiples de source :</emphasis>
-            <classname>Zend_Translate</classname> supporte plusieurs formats de source, y compris ceux supportés par PHP, et
-            d'autres formats comprenant les fichiers de type TMX et CSV.</para>
+            <para>
+                <emphasis>Support des formats multiples de source :</emphasis>
+                <classname>Zend_Translate</classname> supporte plusieurs formats de source, y
+                compris ceux supportés par PHP, et d'autres formats comprenant les fichiers de type
+                TMX et CSV.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>Thread-safe gettext :</emphasis> Le lecteur de gettext de
-            <classname>Zend_Translate</classname> est "thread-safe". Il n'y a aucun problème en utilisant le dans les
-            environnements multi-threadés.</para>
+            <para>
+                <emphasis>Thread-safe gettext :</emphasis> Le lecteur de gettext de
+                <classname>Zend_Translate</classname> est "thread-safe". Il n'y a aucun problème en
+                utilisant le dans les environnements multi-threadés.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>API générique et facile :</emphasis> L'API de <classname>Zend_Translate</classname> est
-            très simple et exige seulement une poignée de fonctions. Ainsi il est facile d'apprendre et facile à
-            maintenir. Tous les formats de source sont manipulés la même manière, ainsi si le format de vos fichiers
-            source changent de Gettext en TMX, vous devez seulement changer une ligne de code pour indiquer l'adaptateur
-            de stockage.</para>
+            <para>
+                <emphasis>API générique et facile :</emphasis> L'API de
+                <classname>Zend_Translate</classname> est très simple et exige seulement une poignée
+                de fonctions. Ainsi il est facile d'apprendre et facile à maintenir. Tous les
+                formats de source sont manipulés la même manière, ainsi si le format de vos fichiers
+                source changent de Gettext en TMX, vous devez seulement changer une ligne de code
+                pour indiquer l'adaptateur de stockage.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>Détection de la langue de l'utilisateur :</emphasis>
-            <classname>Zend_Translate</classname> peut détecter et se servir de la langue préférée de l'utilisateur accédant à
-            l'application.</para>
+            <para>
+                <emphasis>Détection de la langue de l'utilisateur :</emphasis>
+                <classname>Zend_Translate</classname> peut détecter et se servir de la langue
+                préférée de l'utilisateur accédant à l'application.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>Détection automatique de la source :</emphasis> <classname>Zend_Translate</classname>
-            est capable de détecter et d'intégrer des fichiers source multiples et de détecter de plus la localisation à
-            utiliser selon les répertoires ou les noms de fichier.</para>
+            <para>
+                <emphasis>Détection automatique de la source :</emphasis>
+                <classname>Zend_Translate</classname> est capable de détecter et d'intégrer des
+                fichiers source multiples et de détecter de plus la localisation à utiliser selon
+                les répertoires ou les noms de fichier.
+            </para>
         </listitem>
     </itemizedlist>
 
     <sect2 id="zend.translate.introduction.adapters">
         <title>Démarrer avec le multi-linguisme</title>
 
-        <para>Ce que nous voulons faire c'est traduire les chaînes de caractère générées afin que la vue produise un
-        contenu traduit. Autrement nous devrions écrire une vue pour chaque langue, et personne ne voudraient faire
-        ceci. Généralement, les sites multilingues sont très simples dans leur conception. Il y a seulement quatre
-        étapes que vous devrez faire :</para>
+        <para>
+            Ce que nous voulons faire c'est traduire les chaînes de caractère générées afin
+            que la vue produise un contenu traduit. Autrement nous devrions écrire une vue pour
+            chaque langue, et personne ne voudraient faire ceci. Généralement, les sites
+            multilingues sont très simples dans leur conception. Il y a seulement quatre étapes que
+            vous devrez faire :
+        </para>
 
         <orderedlist numeration="arabic">
             <listitem>
@@ -87,7 +122,10 @@
             </listitem>
 
             <listitem>
-                <para>Créer votre vue et intégrer <classname>Zend_Translate</classname> à votre code</para>
+                <para>
+                    Créer votre vue et intégrer <classname>Zend_Translate</classname> à votre
+                    code
+                </para>
             </listitem>
 
             <listitem>
@@ -99,7 +137,9 @@
             </listitem>
         </orderedlist>
 
-        <para>Les sections suivantes vous guident par chacune des quatre étapes. Lisez les pages suivantes pour créer
-        votre propre application Web multilingue.</para>
+        <para>
+            Les sections suivantes vous guident par chacune des quatre étapes. Lisez les pages
+            suivantes pour créer votre propre application Web multilingue.
+        </para>
     </sect2>
 </sect1>

+ 43 - 22
documentation/manual/fr/module_specs/Zend_Translate-Migration.xml

@@ -1,12 +1,15 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13827 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15157 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.translate.migration">
     <title>Migrer à partir des versions précédentes</title>
 
-    <para>L'API de <classname>Zend_Translate</classname> a changé au cours du temps. Si vous avez commencé à utiliser
-    <classname>Zend_Translate</classname> et ses sous-composants avec les versions précédentes, suivez les lignes directrices
-    ci-dessous pour migrer vos scripts et ainsi utiliser la nouvelle API.</para>
+    <para>
+        L'API de <classname>Zend_Translate</classname> a changé au cours du temps. Si vous
+        avez commencé à utiliser <classname>Zend_Translate</classname> et ses sous-composants avec
+        les versions précédentes, suivez les lignes directrices ci-dessous pour migrer vos scripts
+        et ainsi utiliser la nouvelle API.
+    </para>
 
     <sect2 id="zend.translate.migration.fromonesixtooneseven">
         <title>Migrer de la version 1.6 vers 1.7 ou plus récent</title>
@@ -14,28 +17,43 @@
         <sect3 id="zend.translate.migration.fromonesixtooneseven.languages">
             <title>Paramétrer les langues</title>
 
-            <para>Lors de l'utilisation de la détection automatique des langues, ou du réglage manuel des langues de
-            <classname>Zend_Translate</classname>, vous avez peut-être remarqué que de temps en temps une notice est envoyée
-            concernant le non-ajout de traductions vides. Dans certaines versions précédentes, une exception était levée
-            dans certains cas.</para>
+            <para>
+                Lors de l'utilisation de la détection automatique des langues, ou du réglage
+                manuel des langues de <classname>Zend_Translate</classname>, vous avez peut-être
+                remarqué que de temps en temps une notice est envoyée concernant le non-ajout de
+                traductions vides. Dans certaines versions précédentes, une exception était levée
+                dans certains cas.
+            </para>
 
-            <para>Ceci intervient quand un utilisateur requête une langue non existante, vous n'avez alors aucun moyen
-            simple de détecter ce qui ne va pas. Nous avons donc ajouté ces notices qui apparaîtront dans votre
-            historisation et qui vous diront qu'un utilisateur a requêté une langue que vous ne supportez pas. Notez
-            bien que votre code, même si une notice est déclenchée, fonctionnera sans problèmes.</para>
+            <para>
+                Ceci intervient quand un utilisateur requête une langue non existante, vous
+                n'avez alors aucun moyen simple de détecter ce qui ne va pas. Nous avons donc ajouté
+                ces notices qui apparaîtront dans votre historisation et qui vous diront qu'un
+                utilisateur a requêté une langue que vous ne supportez pas. Notez bien que votre
+                code, même si une notice est déclenchée, fonctionnera sans problèmes.
+            </para>
 
-            <para>Mais quand vous utilisez votre propre gestionnaire d'erreur ou d'exception, comme xDebug, toutes les
-            notices vous seront retournées, même si ce n'est pas votre intention initiale. Ceci est du au fait, que ces
-            gestionnaires surchargent tous les réglages internes de PHP.</para>
+            <para>
+                Mais quand vous utilisez votre propre gestionnaire d'erreur ou d'exception,
+                comme xDebug, toutes les notices vous seront retournées, même si ce n'est pas votre
+                intention initiale. Ceci est du au fait, que ces gestionnaires surchargent tous les
+                réglages internes de PHP.
+            </para>
 
-            <para>Pour vous affranchir de ces notices, vous pouvez simplement paramétrer la nouvelle option
-            <code>disableNotices</code> à <code>true</code>, sa valeur par défaut étant <code>false</code>.</para>
+            <para>
+                Pour vous affranchir de ces notices, vous pouvez simplement paramétrer la
+                nouvelle option <code>disableNotices</code> à <code>true</code>, sa valeur par
+                défaut étant <code>false</code>.
+            </para>
 
             <example id="zend.translate.migration.fromonesixtooneseven.example">
                 <title>Paramétrer les langues sans avoir de notices</title>
 
-                <para>Assumons que "<code>fr</code>" soit disponible et qu'un utilisateur requête pour "<code>de</code>"
-                qui ne fait pas partie de votre portefeuille de traductions.</para>
+                <para>
+                    Assumons que "<code>fr</code>" soit disponible et qu'un utilisateur
+                    requête pour "<code>de</code>" qui ne fait pas partie de votre portefeuille de
+                    traductions.
+                </para>
 
                 <programlisting role="php"><![CDATA[
 $language = new Zend_Translate('gettext',
@@ -43,8 +61,11 @@ $language = new Zend_Translate('gettext',
                                'auto');
 ]]></programlisting>
 
-                <para>Dans ce cas nous aurons une notice indiquant la non-disponibilité de la langue "<code>de</code>".
-                Ajoutez simplement l'option et les notices seront désactivées.</para>
+                <para>
+                    Dans ce cas nous aurons une notice indiquant la non-disponibilité de la
+                    langue "<code>de</code>". Ajoutez simplement l'option et les notices seront
+                    désactivées.
+                </para>
 
                 <programlisting role="php"><![CDATA[
 $language = new Zend_Translate('gettext',

+ 102 - 49
documentation/manual/fr/module_specs/Zend_Uri.xml

@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 12116 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15343 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.uri.chapter">
     <title>Zend_Uri</title>
@@ -7,24 +7,33 @@
     <sect2 id="zend.uri.overview">
         <title>Aperçu</title>
 
-        <para><classname>Zend_Uri</classname> est un composant destiné à aider à la manipulation et à la validation des <ulink
-        url="http://www.w3.org/Addressing/"> Uniform Resource Identifiers</ulink> (URIs). <classname>Zend_Uri</classname> existe
-        dans le but d'aider les autres composants de Zend Framework tels que <classname>Zend_Http_Client</classname> mais peut
-        aussi être utilisé comme composant individuel.</para>
-
-        <para>Les URIs commence toujours avec la définition de leur schéma, suivie d'un double-points. La construction
-        des différents schémas variant beaucoup, une fabrique est à votre disposition. <classname>Zend_Uri</classname> possède une
-        fabrique qui retourne des instances sous-classes d'elle même. Chaque sous classe possède le nom du schéma dans
-        son nom, comme <classname>Zend_Uri_&lt;scheme&gt;</classname>, où <code>&lt;scheme&gt;</code> est le nom du schéma
-        utilisé, tout en minuscule, sauf la première lettre. Une exception à cette règle est HTTPS, qui est aussi géré
-        par <classname>Zend_Uri_Http</classname>.</para>
+        <para>
+            <classname>Zend_Uri</classname> est un composant destiné à aider à la manipulation
+            et à la validation des <ulink url="http://www.w3.org/Addressing/"> Uniform Resource
+            Identifiers</ulink> (URIs). <classname>Zend_Uri</classname> existe dans le but d'aider
+            les autres composants de Zend Framework tels que <classname>Zend_Http_Client</classname>
+            mais peut aussi être utilisé comme composant individuel.
+        </para>
+
+        <para>
+            Les URIs commence toujours avec la définition de leur schéma, suivie d'un
+            double-points. La construction des différents schémas variant beaucoup, une fabrique est
+            à votre disposition. <classname>Zend_Uri</classname> possède une fabrique qui retourne
+            des instances sous-classes d'elle même. Chaque sous classe possède le nom du schéma dans
+            son nom, comme <classname>Zend_Uri_&lt;scheme&gt;</classname>, où
+            <code>&lt;scheme&gt;</code> est le nom du schéma utilisé, tout en minuscule, sauf la
+            première lettre. Une exception à cette règle est HTTPS, qui est aussi géré par
+            <classname>Zend_Uri_Http</classname>.
+        </para>
     </sect2>
 
     <sect2 id="zend.uri.creation">
         <title>Créer un nouvel URI</title>
 
-        <para><classname>Zend_Uri</classname> fabriquera un URI vierge, si seul son schéma est passé à
-        <classname>Zend_Uri::factory()</classname>.</para>
+        <para>
+            <classname>Zend_Uri</classname> fabriquera un URI vierge, si seul son schéma est
+            passé à <classname>Zend_Uri::factory()</classname>.
+        </para>
 
         <example id="zend.uri.creation.example-1">
             <title>Créer un URI avec <classname>Zend_Uri::factory()</classname></title>
@@ -37,22 +46,35 @@ $uri = Zend_Uri::factory('http');
 ]]></programlisting>
         </example>
 
-        <para>Pour créer un URI à partir de rien, passez simplement le schéma à <classname>Zend_Uri::factory()</classname>
-        <footnote>
-                <para>Actuellement, <classname>Zend_Uri</classname> ne supporte que les schémas HTTP et HTTPS</para>
-            </footnote>. Si un schéma non supporté lui est passé, une <classname>Zend_Uri_Exception</classname> sera levée.</para>
-
-        <para>Si un schéma ou URI fourni est supporté, <classname>Zend_Uri::factory()</classname> retournera une sous-classe
-        d'elle-même spécialisée pour le schéma à créer.</para>
+        <para>
+            Pour créer un URI à partir de rien, passez simplement le schéma à
+            <classname>Zend_Uri::factory()</classname> <footnote>
+                <para>
+                    Actuellement, <classname>Zend_Uri</classname> ne supporte que les schémas
+                    HTTP et HTTPS
+                </para>
+            </footnote>. Si un schéma non supporté lui est passé, une
+            <classname>Zend_Uri_Exception</classname> sera levée.
+        </para>
+
+        <para>
+            Si un schéma ou URI fourni est supporté,
+            <classname>Zend_Uri::factory()</classname> retournera une sous-classe d'elle-même
+            spécialisée pour le schéma à créer.
+        </para>
     </sect2>
 
     <sect2 id="zend.uri.manipulation">
         <title>Manipuler un URI existant</title>
 
-        <para>Pour manipuler un URI existant, passez le entièrement à <classname>Zend_Uri::factory()</classname>.</para>
+        <para>
+            Pour manipuler un URI existant, passez le entièrement à
+            <classname>Zend_Uri::factory()</classname>.
+        </para>
 
         <example id="zend.uri.manipulation.example-1">
-            <title>Manipuler un URI existant avec <classname>Zend_Uri::factory()</classname></title>
+            <title>Manipuler un URI existant avec
+            <classname>Zend_Uri::factory()</classname></title>
 
             <programlisting role="php"><![CDATA[
 // Passez l'URI complet à la fabrique
@@ -62,15 +84,21 @@ $uri = Zend_Uri::factory('http://www.zend.com');
 ]]></programlisting>
         </example>
 
-        <para>L'URI sera alors analysé et validé. S'il s'avère être invalide, une <classname>Zend_Uri_Exception</classname> sera
-        envoyée immédiatement. Sinon, <classname>Zend_Uri::factory()</classname> retournera une sous classe d'elle-même qui
-        spécialisera le schéma manipulé.</para>
+        <para>
+            L'URI sera alors analysé et validé. S'il s'avère être invalide, une
+            <classname>Zend_Uri_Exception</classname> sera envoyée immédiatement. Sinon,
+            <classname>Zend_Uri::factory()</classname> retournera une sous classe d'elle-même qui
+            spécialisera le schéma manipulé.
+        </para>
     </sect2>
 
     <sect2 id="zend.uri.validation">
         <title>Validation d'URI</title>
 
-        <para>La méthode <classname>Zend_Uri::check()</classname> peut être utilisée pour valider un URI.</para>
+        <para>
+            La méthode <classname>Zend_Uri::check()</classname> peut être utilisée pour
+            valider un URI.
+        </para>
 
         <example id="zend.uri.validation.example-1">
             <title>Validation d'URI avec <classname>Zend_Uri::check()</classname></title>
@@ -83,19 +111,27 @@ $valid = Zend_Uri::check('http://uri.en.question');
 ]]></programlisting>
         </example>
 
-        <para><classname>Zend_Uri::check()</classname> retourne un simple booléen, ce qui est plus pratique que de passer par
-        <classname>Zend_Uri::factory()</classname> et de capturer les exceptions.</para>
+        <para>
+            <classname>Zend_Uri::check()</classname> retourne un simple booléen, ce qui est
+            plus pratique que de passer par <classname>Zend_Uri::factory()</classname> et de
+            capturer les exceptions.
+        </para>
 
         <sect3 id="zend.uri.validation.allowunwise">
             <title>Autoriser les caractères "imprudents" dans les URIs</title>
 
-            <para>Par défaut, <classname>Zend_Uri</classname> n'acceptera pas les caractères suivants, définis par la RFC comme
-            "imprudents" et invalide : <code>"{", "}", "|", "\", "^", "`"</code>. Cependant, de nombreuses
-            implémentations acceptent ces caractères comme valides.</para>
+            <para>
+                Par défaut, <classname>Zend_Uri</classname> n'acceptera pas les caractères
+                suivants, définis par la RFC comme "imprudents" et invalide : <code>"{", "}", "|",
+                "\", "^", "`"</code>. Cependant, de nombreuses implémentations acceptent ces
+                caractères comme valides.
+            </para>
 
-            <para><classname>Zend_Uri</classname> peut être paramètré pour accepter ces caractères "imprudents" en réglant
-            l'option "allow_unwise" à <code>true</code> en utilisant la méthode <classname>Zend_Uri::setConfig()</classname>
-            :</para>
+            <para>
+                <classname>Zend_Uri</classname> peut être paramètré pour accepter ces
+                caractères "imprudents" en réglant l'option "allow_unwise" à <code>true</code> en
+                utilisant la méthode <classname>Zend_Uri::setConfig()</classname> :
+            </para>
 
             <example id="zend.uri.validation.allowunwise.example-1">
                 <title>Autoriser les caractères spéciaux dans les URIs</title>
@@ -114,10 +150,13 @@ Zend_Uri::setConfig(array('allow_unwise' => false));
             </example>
 
             <note>
-                <para><classname>Zend_Uri::setConfig()</classname> paramètre les options de configuration de manière globale. Il
-                est recommandé de réinitialiser l'option <code>allow_unwise</code> à <code>false</code> comme dans
-                l'exemple ci-dessus, à moins d'être certain de vouloir utiliser les caractères "imprudents" de manière
-                globale.</para>
+                <para>
+                    <classname>Zend_Uri::setConfig()</classname> paramètre les options de
+                    configuration de manière globale. Il est recommandé de réinitialiser l'option
+                    <code>allow_unwise</code> à <code>false</code> comme dans l'exemple ci-dessus, à
+                    moins d'être certain de vouloir utiliser les caractères "imprudents" de manière
+                    globale.
+                </para>
             </note>
         </sect3>
     </sect2>
@@ -125,14 +164,18 @@ Zend_Uri::setConfig(array('allow_unwise' => false));
     <sect2 id="zend.uri.instance-methods">
         <title>Méthodes communes</title>
 
-        <para>Toute instance sous-classe de <classname>Zend_Uri</classname> (par exemple <classname>Zend_Uri_Http</classname>) possède
-        plusieurs méthodes utiles :</para>
+        <para>
+            Toute instance sous-classe de <classname>Zend_Uri</classname> (par exemple
+            <classname>Zend_Uri_Http</classname>) possède plusieurs méthodes utiles :
+        </para>
 
         <sect3 id="zend.uri.instance-methods.getscheme">
             <title>Retrouver le schéma d'un URI</title>
 
-            <para>Le schéma d'un URI est la partie précédent les double-points (:). Par exemple, le schéma de
-            <code>http://www.zend.com</code> est <code>http</code>.</para>
+            <para>
+                Le schéma d'un URI est la partie précédent les double-points (:). Par exemple,
+                le schéma de <code>http://www.zend.com</code> est <code>http</code>.
+            </para>
 
             <example id="zend.uri.instance-methods.getscheme.example-1">
                 <title>Récupérer le schéma d'un objet <classname>Zend_Uri_*</classname></title>
@@ -151,7 +194,8 @@ $scheme = $uri->getScheme();  // "http"
             <title>Récupérer l'URI entier</title>
 
             <example id="zend.uri.instance-methods.geturi.example-1">
-                <title>Récupérer l'URI entier depuis un objet <classname>Zend_Uri_*</classname></title>
+                <title>Récupérer l'URI entier depuis un objet
+                <classname>Zend_Uri_*</classname></title>
 
                 <programlisting role="php"><![CDATA[
 $uri = Zend_Uri::factory('http://www.zend.com');
@@ -160,14 +204,20 @@ echo $uri->getUri();  // "http://www.zend.com"
 ]]></programlisting>
             </example>
 
-            <para>La méthode <code>getUri()</code> retourne une chaîne de caractères représentant l'URI entier.</para>
+            <para>
+                La méthode <code>getUri()</code> retourne une chaîne de caractères
+                représentant l'URI entier.
+            </para>
         </sect3>
 
         <sect3 id="zend.uri.instance-methods.valid">
             <title>Valider l'URI</title>
 
-            <para><classname>Zend_Uri::factory()</classname> validera de toute façon systématiquement l'URI qui lui est passé en
-            paramètre. Par contre, l'URI peut devenir invalide après, s'il est modifié.</para>
+            <para>
+                <classname>Zend_Uri::factory()</classname> validera de toute façon
+                systématiquement l'URI qui lui est passé en paramètre. Par contre, l'URI peut
+                devenir invalide après, s'il est modifié.
+            </para>
 
             <example id="zend.uri.instance-methods.valid.example-1">
                 <title>Valider un objet <classname>Zend_Uri_*</classname></title>
@@ -179,7 +229,10 @@ $isValid = $uri->valid();  // TRUE
 ]]></programlisting>
             </example>
 
-            <para>La méthode <code>valid()</code> propose une façon de vérifier si l'URI est toujours valide.</para>
+            <para>
+                La méthode <code>valid()</code> propose une façon de vérifier si l'URI est
+                toujours valide.
+            </para>
         </sect3>
     </sect2>
 </sect1>

+ 121 - 82
documentation/manual/fr/module_specs/Zend_Validate-EmailAddress.xml

@@ -1,104 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 12150 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15346 -->
 <!-- Reviewed: no -->
 <sect2 id="zend.validate.set.email_address">
     <title>EmailAddress</title>
 
-    <para><classname>Zend_Validate_EmailAddress</classname> permet de valider une adresse émail. Ce validateur éclate d'abord
-    l'adresse émail entre partie locale et domaine et essaie de valider ces deux parties conformément aux spécifications
-    des adresses émail et des noms de domaine.</para>
+    <para>
+        <classname>Zend_Validate_EmailAddress</classname> permet de valider une adresse émail.
+        Ce validateur éclate d'abord l'adresse émail entre partie locale et domaine et essaie de
+        valider ces deux parties conformément aux spécifications des adresses émail et des noms de
+        domaine.
+    </para>
 
     <para><emphasis>Utilisation de base</emphasis></para>
 
-    <para>Exemple basique : <programlisting role="php"><![CDATA[
-$validateur = new Zend_Validate_EmailAddress();
-if ($validateur->isValid($email)) {
-    // l'email est valide
-} else {
-    // l'email est invalide ; afficher pourquoi
-    foreach ($validateur->getMessages() as $message) {
-        echo "$message\n";
+    <para>
+        Exemple basique : <programlisting role="php"><![CDATA[
+    $validateur = new Zend_Validate_EmailAddress();
+    if ($validateur->isValid($email)) {
+        // l'email est valide
+    } else {
+        // l'email est invalide ; afficher pourquoi
+        foreach ($validateur->getMessages() as $message) {
+            echo "$message\n";
+        }
     }
-}
-]]></programlisting> Ceci validera l'adresse émail <code>$email</code> et, en cas d'échec, fournira des messages
-    d'erreur informatifs via <code>$validator-&gt;getMessages()</code>.</para>
+    ]]></programlisting> Ceci validera l'adresse émail <code>$email</code> et, en cas d'échec,
+        fournira des messages d'erreur informatifs via
+        <code>$validator-&gt;getMessages()</code>.
+    </para>
 
     <para><emphasis>Parties locales complexes</emphasis></para>
 
-    <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>
+    <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>
 
     <para><emphasis>Validation de différents types de noms de domaine</emphasis></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>
-
-    <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 role="php"><![CDATA[
-$validateur = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_LOCAL);
-if ($validateur->isValid($email)) {
-    // l'email est valide
-} else {
-    // l'email est invalide ; afficher pourquoi
-    foreach ($validateur->getMessages() as $message) {
-        echo "$message\n";
+    <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 :
+        <programlisting role="php"><![CDATA[
+    $validateur = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_LOCAL);
+    if ($validateur->isValid($email)) {
+        // l'email est valide
+    } else {
+        // l'email est invalide ; afficher pourquoi
+        foreach ($validateur->getMessages() as $message) {
+            echo "$message\n";
+        }
     }
-}
-]]></programlisting></para>
-
-    <para><emphasis>Vérification que le nom de domaine accepte réellement l'émail</emphasis></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>. <programlisting role="php"><![CDATA[
-$validator =
-    new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS,
-                                   true);
-]]></programlisting>
-    Alternativement vous pouvez passer soit <code>true</code> soit <code>false</code> à
-    <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>
+    ]]></programlisting></para>
+    
+    <para>
+        <emphasis>Vérification que le nom de domaine accepte réellement
+        l'émail</emphasis>
+    </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>.
+        <programlisting role="php"><![CDATA[
+    $validator =
+        new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS,
+                                       true);
+    ]]></programlisting> Alternativement vous pouvez passer soit <code>true</code> soit
+        <code>false</code> à <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><emphasis>Valider les noms de domaines internationaux</emphasis></para>
 
-    <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
-    role="php"><![CDATA[
-$validator->hostnameValidator->setValidateIdn(false);
-]]></programlisting> De plus amples
-    informations concernant l'utilisation de <code>setValidateIdn()</code> 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 IDNs sont seulement validés si vous autorisez la validation des nom de
-    domaines.</para>
+    <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 role="php"><![CDATA[
+    $validator->hostnameValidator->setValidateIdn(false);
+    ]]></programlisting> De plus amples informations concernant l'utilisation de
+        <code>setValidateIdn()</code> 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 IDNs sont seulement validés si vous autorisez la validation
+        des nom de domaines.
+    </para>
 
     <para><emphasis>Validation des "Top Level Domains"</emphasis></para>
 
-    <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
-    role="php"><![CDATA[
-$validator->hostnameValidator->setValidateTld(false);
-]]></programlisting> De plus amples
-    informations concernant l'utilisation de <code>setValidateTld()</code> 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>
+    <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 role="php"><![CDATA[
+    $validator->hostnameValidator->setValidateTld(false);
+    ]]></programlisting> De plus amples informations concernant l'utilisation de
+        <code>setValidateTld()</code> 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>
 </sect2>

+ 150 - 118
documentation/manual/fr/module_specs/Zend_Validate-Hostname.xml

@@ -1,134 +1,166 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 12116 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15346 -->
 <!-- Reviewed: no -->
 <sect2 id="zend.validate.set.hostname">
     <title>Hostname</title>
 
-    <para><classname>Zend_Validate_Hostname</classname> vous permet de valider un nom de domaine sur la base d'un ensemble de
-    spécifications connues. Il est ainsi possible de valider trois types différents de noms de domaine : un nom de
-    domaine qualifié (ex : domaine.com), une adresse IP (ex : 1.2.3.4) ou un nom de domaine local (ex : localhost). Par
-    défaut, seul les noms de domaine qualifiés sont acceptés.</para>
+    <para>
+        <classname>Zend_Validate_Hostname</classname> vous permet de valider un nom de domaine
+        sur la base d'un ensemble de spécifications connues. Il est ainsi possible de valider trois
+        types différents de noms de domaine : un nom de domaine qualifié (ex : domaine.com), une
+        adresse IP (ex : 1.2.3.4) ou un nom de domaine local (ex : localhost). Par défaut, seul les
+        noms de domaine qualifiés sont acceptés.
+    </para>
 
     <para><emphasis>Utilisation basique</emphasis></para>
 
-    <para>Exemple simple : <programlisting role="php"><![CDATA[
-$validateur = new Zend_Validate_Hostname();
-if ($validateur->isValid($domaine)) {
-    // le nom de domaine est valide
-} else {
-    // le nom de domaine est invalide ; afficher pourquoi
-    foreach ($validateur->getMessages() as $message) {
-        echo "$message\n";
+    <para>
+        Exemple simple : <programlisting role="php"><![CDATA[
+    $validateur = new Zend_Validate_Hostname();
+    if ($validateur->isValid($domaine)) {
+        // le nom de domaine est valide
+    } else {
+        // le nom de domaine est invalide ; afficher pourquoi
+        foreach ($validateur->getMessages() as $message) {
+            echo "$message\n";
+        }
     }
-}
-]]></programlisting> Ceci validera le domaine <code>$domaine</code> et, en cas d'échec, fournira des messages d'erreur
-    informatifs via <code>$validator-&gt;getMessages()</code>.</para>
+    ]]></programlisting> Ceci validera le domaine <code>$domaine</code> et, en cas d'échec, fournira
+        des messages d'erreur informatifs via <code>$validator-&gt;getMessages()</code>.
+    </para>
 
     <para><emphasis>Validation de différents types de noms de domaine</emphasis></para>
 
-    <para>Il peut se trouver que vous souhaitez valider des adresses IP, des noms de domaine locaux ou toute combinaison
-    de tous les types disponibles. Cette opération peut être effectuée en passant un paramètre à
-    <classname>Zend_Validate_Hostname</classname> au moment de l'instanciation. Le paramètre doit être un entier qui détermine
-    quels types de noms de domaine sont admis. Il est recommandé d'utiliser les constantes de la classe
-    <classname>Zend_Validate_Hostname</classname>.</para>
-
-    <para>Les constantes de <classname>Zend_Validate_Hostname</classname> sont : <code>ALLOW_DNS</code> qui autorise uniquement
-    les noms de domaine qualifiés, <code>ALLOW_IP</code> qui autorise les adresses IP, <code>ALLOW_LOCAL</code> qui
-    autorise les domaines locaux et <code>ALLOW_ALL</code> qui autorise les trois types précédents. Pour vérifier
-    uniquement les adresses IP, vous pouvez utiliser l'exemple suivant : <programlisting role="php"><![CDATA[
-$validateur = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP);
-if ($validateur->isValid($hostname)) {
-    // le nom de domaine est valide
-} else {
-    // le nom de domaine est invalide ; afficher pourquoi
-    foreach ($validateur->getMessages() as $message) {
-        echo "$message\n";
+    <para>
+        Il peut se trouver que vous souhaitez valider des adresses IP, des noms de domaine
+        locaux ou toute combinaison de tous les types disponibles. Cette opération peut être
+        effectuée en passant un paramètre à <classname>Zend_Validate_Hostname</classname> au moment
+        de l'instanciation. Le paramètre doit être un entier qui détermine quels types de noms de
+        domaine sont admis. Il est recommandé d'utiliser les constantes de la classe
+        <classname>Zend_Validate_Hostname</classname>.
+    </para>
+
+    <para>
+        Les constantes de <classname>Zend_Validate_Hostname</classname> sont :
+        <code>ALLOW_DNS</code> qui autorise uniquement les noms de domaine qualifiés,
+        <code>ALLOW_IP</code> qui autorise les adresses IP, <code>ALLOW_LOCAL</code> qui autorise
+        les domaines locaux et <code>ALLOW_ALL</code> qui autorise les trois types précédents. Pour
+        vérifier uniquement les adresses IP, vous pouvez utiliser l'exemple suivant :
+        <programlisting role="php"><![CDATA[
+    $validateur = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP);
+    if ($validateur->isValid($hostname)) {
+        // le nom de domaine est valide
+    } else {
+        // le nom de domaine est invalide ; afficher pourquoi
+        foreach ($validateur->getMessages() as $message) {
+            echo "$message\n";
+        }
     }
-}
-]]></programlisting></para>
-
-    <para>Vous pouvez utiliser <code>ALLOW_ALL</code> pour accepter tous les types de domaines. De même, vous pouvez
-    créer des configurations combinant ces différents types. Par exemple, pour accepter les domaines qualifiés et les
-    domaines locaux, instanciez votre objet <classname>Zend_Validate_Hostname</classname> de la manière suivante : <programlisting
-    role="php"><![CDATA[
-$validateur = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS |
-                                         Zend_Validate_Hostname::ALLOW_IP);
-]]></programlisting></para>
-
-    <para><emphasis>Validation de Nom de Domaine International (IDN)</emphasis></para>
-
-    <para>Certains noms de domaines nationaux (Country Code Top Level Domains ou ccTLD), comme .de (Allemagne), supporte
-    les caractères internationaux dans leurs noms de domaine. Ceci est connu sous le nom de Nom de Domaine International
-    (IDN). Ces domaines peuvent être vérifiés par <classname>Zend_Validate_Hostname</classname> grâce aux caractères étendus qui
-    sont utilisés dans le processus de validation.</para>
-
-    <para>Pour l'instant, la liste des ccTLD supportés inclus : <itemizedlist>
-            <listitem>
-                <para>at (Autriche)</para>
-            </listitem>
-
-            <listitem>
-                <para>ch (Suisse)</para>
-            </listitem>
-
-            <listitem>
-                <para>li (Liechtenstein)</para>
-            </listitem>
-
-            <listitem>
-                <para>de (Allemagne)</para>
-            </listitem>
-
-            <listitem>
-                <para>fi (Finlande)</para>
-            </listitem>
-
-            <listitem>
-                <para>hu (Hongrie)</para>
-            </listitem>
-
-            <listitem>
-                <para>no (Norvège)</para>
-            </listitem>
-
-            <listitem>
-                <para>se (Suède)</para>
-            </listitem>
-        </itemizedlist></para>
-
-    <para>Pour vérifier un domaine IDN c'est aussi simple que d'utiliser le validateur standard de nom de domaine
-    puisque la validation IDN est activé par défaut. Si vous voulez mettre hors service la validation IDN, cela peut
-    être fait par le passage d'un paramètre au constructeur <classname>Zend_Validate_Hostname</classname> ou via la méthode
-    <code>$validator-&gt;setValidateIdn()</code>.</para>
-
-    <para>Vous pouvez aussi désactiver la validation IDN en passant un second paramètre au constructeur du
-    <classname>Zend_Validate_Hostname</classname> comme ceci : <programlisting role="php"><![CDATA[
-$validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS,
-                                        false);
-]]></programlisting>
-    Alternativement vous pouvez passer soit <code>true</code> soit <code>false</code> à
-    <code>$validator-&gt;setValidateIdn()</code> pour activer ou désactiver la validation IDN. Si vous essayez de
-    vérifier un nom de domaine IDN qui n'est pas actuellement soutenu il est probable qu'il retournera une erreur s'il y
-    a des caractères internationaux. Quand un fichier de ccTLD spécifiant les caractères supplémentaires n'existe pas
-    dans "Zend/Validate/Hostname",une validation de nom de domaine normale est réalisée.</para>
-
-    <para>Notez cependant que les IDNs sont seulement validés si vous autorisez la validation des noms de
-    domaine.</para>
+    ]]></programlisting></para>
+    
+    <para>
+        Vous pouvez utiliser <code>ALLOW_ALL</code> pour accepter tous les types de domaines.
+        De même, vous pouvez créer des configurations combinant ces différents types. Par exemple,
+        pour accepter les domaines qualifiés et les domaines locaux, instanciez votre objet
+        <classname>Zend_Validate_Hostname</classname> de la manière suivante : <programlisting
+        role="php"><![CDATA[
+    $validateur = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS |
+                                             Zend_Validate_Hostname::ALLOW_IP);
+    ]]></programlisting></para>
+    
+        <para><emphasis>Validation de Nom de Domaine International (IDN)</emphasis></para>
+    
+    <para>
+        Certains noms de domaines nationaux (Country Code Top Level Domains ou ccTLD), comme
+        .de (Allemagne), supporte les caractères internationaux dans leurs noms de domaine. Ceci est
+        connu sous le nom de Nom de Domaine International (IDN). Ces domaines peuvent être vérifiés
+        par <classname>Zend_Validate_Hostname</classname> grâce aux caractères étendus qui sont
+        utilisés dans le processus de validation.
+    </para>
+
+    <para>
+        Pour l'instant, la liste des ccTLD supportés inclus : <itemizedlist>
+                <listitem>
+                    <para>at (Autriche)</para>
+                </listitem>
+    
+                <listitem>
+                    <para>ch (Suisse)</para>
+                </listitem>
+    
+                <listitem>
+                    <para>li (Liechtenstein)</para>
+                </listitem>
+    
+                <listitem>
+                    <para>de (Allemagne)</para>
+                </listitem>
+    
+                <listitem>
+                    <para>fi (Finlande)</para>
+                </listitem>
+    
+                <listitem>
+                    <para>hu (Hongrie)</para>
+                </listitem>
+    
+                <listitem>
+                    <para>no (Norvège)</para>
+                </listitem>
+    
+                <listitem>
+                    <para>se (Suède)</para>
+                </listitem>
+            </itemizedlist>
+        </para>
+
+    <para>
+        Pour vérifier un domaine IDN c'est aussi simple que d'utiliser le validateur standard
+        de nom de domaine puisque la validation IDN est activé par défaut. Si vous voulez mettre
+        hors service la validation IDN, cela peut être fait par le passage d'un paramètre au
+        constructeur <classname>Zend_Validate_Hostname</classname> ou via la méthode
+        <code>$validator-&gt;setValidateIdn()</code>.
+    </para>
+
+    <para>
+        Vous pouvez aussi désactiver la validation IDN en passant un second paramètre au
+        constructeur du <classname>Zend_Validate_Hostname</classname> comme ceci : <programlisting
+        role="php"><![CDATA[
+    $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS,
+                                            false);
+    ]]></programlisting> Alternativement vous pouvez passer soit <code>true</code> soit
+        <code>false</code> à <code>$validator-&gt;setValidateIdn()</code> pour activer ou désactiver
+        la validation IDN. Si vous essayez de vérifier un nom de domaine IDN qui n'est pas
+        actuellement soutenu il est probable qu'il retournera une erreur s'il y a des caractères
+        internationaux. Quand un fichier de ccTLD spécifiant les caractères supplémentaires n'existe
+        pas dans "Zend/Validate/Hostname",une validation de nom de domaine normale est
+        réalisée.
+    </para>
+
+    <para>
+        Notez cependant que les IDNs sont seulement validés si vous autorisez la validation
+        des noms de domaine.
+    </para>
 
     <para><emphasis>Validation des "Top Level Domains"</emphasis></para>
 
-    <para>Par défaut un nom de domaine sera vérifié grâce à une liste de TLDs connus. Si cette fonctionnalité n'est pas
-    nécessaire, elle peut être désactivée de la même façon que la désactivation du support des IDNs. Vous pouvez
-    désactiver la validation TLD en passant un troisième paramètre au constructeur de
-    <classname>Zend_Validate_Hostname</classname>. Dans l'exemple ci-dessous, la validation IDN est supportée via le second
-    paramètre. <programlisting role="php"><![CDATA[
-$validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS,
-                                        true,
-                                        false);
-]]></programlisting>
-    Alternativement vous pouvez passer soit <code>true</code> soit <code>false</code> à
-    <code>$validator-&gt;setValidateTld()</code> pour activer ou désactiver la validation TLD.</para>
-
-    <para>Notez cependant que les TLDs sont seulement validés si vous autorisez la validation des noms de
-    domaine.</para>
+    <para>
+        Par défaut un nom de domaine sera vérifié grâce à une liste de TLDs connus. Si cette
+        fonctionnalité n'est pas nécessaire, elle peut être désactivée de la même façon que la
+        désactivation du support des IDNs. Vous pouvez désactiver la validation TLD en passant un
+        troisième paramètre au constructeur de <classname>Zend_Validate_Hostname</classname>. Dans
+        l'exemple ci-dessous, la validation IDN est supportée via le second paramètre.
+        <programlisting role="php"><![CDATA[
+    $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS,
+                                            true,
+                                            false);
+    ]]></programlisting> Alternativement vous pouvez passer soit <code>true</code> soit
+        <code>false</code> à <code>$validator-&gt;setValidateTld()</code> pour activer ou désactiver
+        la validation TLD.
+    </para>
+
+    <para>
+        Notez cependant que les TLDs sont seulement validés si vous autorisez la validation
+        des noms de domaine.
+    </para>
 </sect2>

+ 46 - 37
documentation/manual/fr/module_specs/Zend_Validate-ValidatorChains.xml

@@ -1,44 +1,53 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 11089 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15157 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.validate.validator_chains">
     <title>Chaînes de validation</title>
 
-    <para>Souvent, de multiples validations doivent être appliquées à une valeur dans un ordre particulier. Le code
-    suivant décrit une méthode permettant de solutionner l'exemple de <link
-    linkend="zend.validate.introduction">l'introduction</link>, dans lequel un identifiant doit contenir précisément
-    entre 6 et 12 caractères alphanumériques. <programlisting role="php"><![CDATA[
-// Creation d'une chaine de validateurs et ajout de validateurs
-$validateurChaine = new Zend_Validate();
-$validateurChaine->addValidator(new Zend_Validate_StringLength(6, 12))
-                 ->addValidator(new Zend_Validate_Alnum());
-
-// Validation de l'identifiant
-if ($validateurChaine->isValid($identifiant)) {
-    // l'identifiant est testé avec succès
-} else {
-    // l'identifiant échoue aux tests, afficher pourquoi
-    foreach ($validateurChaine->getMessages() as $message) {
-        echo "$message\n";
+    <para>
+        Souvent, de multiples validations doivent être appliquées à une valeur dans un ordre
+        particulier. Le code suivant décrit une méthode permettant de solutionner l'exemple de <link
+        linkend="zend.validate.introduction">l'introduction</link>, dans lequel un identifiant doit
+        contenir précisément entre 6 et 12 caractères alphanumériques. <programlisting
+        role="php"><![CDATA[
+    // Creation d'une chaine de validateurs et ajout de validateurs
+    $validateurChaine = new Zend_Validate();
+    $validateurChaine->addValidator(new Zend_Validate_StringLength(6, 12))
+                     ->addValidator(new Zend_Validate_Alnum());
+    
+    // Validation de l'identifiant
+    if ($validateurChaine->isValid($identifiant)) {
+        // l'identifiant est testé avec succès
+    } else {
+        // l'identifiant échoue aux tests, afficher pourquoi
+        foreach ($validateurChaine->getMessages() as $message) {
+            echo "$message\n";
+        }
     }
-}
-]]></programlisting> Les validateurs sont exécutés dans leur ordre d'ajout à <classname>Zend_Validate</classname>. Dans l'exemple
-    ci-dessus, l'identifiant est d'abord testé pour vérifier que sa longueur est bien comprise entre 6 et 12 caractères,
-    puis ensuite testé pour vérifier qu'il ne contient bien que des caractères alphanumériques. Le second test est
-    exécuté quelque soit le résultat du précédent. Ainsi, dans le cas où les deux tests échouent,
-    <code>getMessages()</code> retournera un message d'échec pour chacun des validateurs.</para>
-
-    <para>Dans certains cas, il peut être utile d'interrompre le processus si l'un des tests échoue.
-    <classname>Zend_Validate</classname> permet ce cas de figure via l'usage du deuxième paramètre de la méthode
-    <code>addValidator()</code>. En positionnant <code>$breakChainOnFailure</code> à <code>true</code>, le validateur
-    ajouté interrompra la procédure de test s'il échoue, ce qui permet d'éviter de lancer tout autre test qui serait
-    inutile ou inapproprié dans ce cas de figure. Si l'exemple précédent était écrit comme suit, la validation
-    alphanumérique ne serait pas lancé si la vérification de la longueur de la valeur échouait : <programlisting
-    role="php"><![CDATA[
-$validateurChaine->addValidator(new Zend_Validate_StringLength(6, 12), true)
-                 ->addValidator(new Zend_Validate_Alnum());
-]]></programlisting></para>
+    ]]></programlisting> Les validateurs sont exécutés dans leur ordre d'ajout à
+        <classname>Zend_Validate</classname>. Dans l'exemple ci-dessus, l'identifiant est d'abord
+        testé pour vérifier que sa longueur est bien comprise entre 6 et 12 caractères, puis ensuite
+        testé pour vérifier qu'il ne contient bien que des caractères alphanumériques. Le second
+        test est exécuté quelque soit le résultat du précédent. Ainsi, dans le cas où les deux tests
+        échouent, <code>getMessages()</code> retournera un message d'échec pour chacun des
+        validateurs.
+    </para>
 
-    <para>Tout objet qui implémente <classname>Zend_Validate_Interface</classname> peut être utilisé dans une chaîne de
-    validation.</para>
+    <para>
+        Dans certains cas, il peut être utile d'interrompre le processus si l'un des tests
+        échoue. <classname>Zend_Validate</classname> permet ce cas de figure via l'usage du deuxième
+        paramètre de la méthode <code>addValidator()</code>. En positionnant
+        <code>$breakChainOnFailure</code> à <code>true</code>, le validateur ajouté interrompra la
+        procédure de test s'il échoue, ce qui permet d'éviter de lancer tout autre test qui serait
+        inutile ou inapproprié dans ce cas de figure. Si l'exemple précédent était écrit comme suit,
+        la validation alphanumérique ne serait pas lancé si la vérification de la longueur de la
+        valeur échouait : <programlisting role="php"><![CDATA[
+    $validateurChaine->addValidator(new Zend_Validate_StringLength(6, 12), true)
+                     ->addValidator(new Zend_Validate_Alnum());
+    ]]></programlisting></para>
+    
+    <para>
+        Tout objet qui implémente <classname>Zend_Validate_Interface</classname> peut être
+        utilisé dans une chaîne de validation.
+    </para>
 </sect1>

+ 241 - 194
documentation/manual/fr/module_specs/Zend_Validate-WritingValidators.xml

@@ -1,226 +1,273 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 11089 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15157 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.validate.writing_validators">
     <title>Écrire des validateurs</title>
 
-    <para><classname>Zend_Validate</classname> fournit un ensemble de validateurs habituellement nécessaires, mais inévitablement,
-    les développeurs souhaiteront écrire des validateurs sur mesure pour leurs besoins particuliers. La méthode
-    d'écriture d'un validateur personnalisé est décrit dans cette section.</para>
-
-    <para><classname>Zend_Validate_Interface</classname> définit trois méthodes, <code>isValid()</code>,
-    <code>getMessages()</code>, et <code>getErrors()</code>, qui peuvent être implémentées par des classes d'utilisateur
-    afin de créer les objets de validation sur mesure. Un objet qui implémente l'interface
-    <classname>Zend_Validate_Interface</classname> peut être ajouté à une chaîne de validateur avec
-    <classname>Zend_Validate::addValidator()</classname>. De tels objets peuvent également être employés avec <link
-    linkend="zend.filter.input"><classname>Zend_Filter_Input</classname></link>.</para>
-
-    <para>Comme vous avez déjà pu déduire de la description ci-dessus de <classname>Zend_Validate_Interface</classname>, les
-    classes de validation fournie avec Zend Framework retourne une valeur booléenne pour savoir si une valeur est
-    validée ou non. Elles fournissent également des informations sur la raison pour laquelle la validation a échoué sur
-    une valeur. La mise à disposition de ces raisons d'échec de validation peut être utilisée par une application dans
-    différents buts, tels que fournir des statistiques pour l'analyse de la facilité d'utilisation.</para>
-
-    <para>La fonctionnalité de base de message d'échec de validation est implémentée dans
-    <classname>Zend_Validate_Abstract</classname>. Pour inclure cette fonctionnalité en créant une classe de validation, étendez
-    simplement <classname>Zend_Validate_Abstract</classname>. Dans la classe étendue vous implémenteriez la logique de la méthode
-    <code>isValid()</code> et définiriez les variables de message et les modèles de message qui correspondent aux types
-    d'échecs de validation qui peuvent se produire. Si une valeur ne passe pas vos essais de validation, alors
-    <code>isValid()</code> devrait renvoyer <code>false</code>. Si la valeur passe vos essais de validation, alors
-    <code>isValid()</code> devrait renvoyer <code>true</code>.</para>
-
-    <para>En général, la méthode <code>isValid()</code> ne devrait lever aucune exception, excepté où il est impossible
-    de déterminer si la valeur d'entrée est valide. Quelques exemples de cas raisonnables pour lever une exception
-    pourraient être si un fichier ne peut pas être ouvert, un serveur de LDAP ne pourraient pas être contacté, ou une
-    connexion de base de données est indisponible, où quand une telle chose peut être exigée pour que le succès ou
-    l'échec de validation soit déterminé.</para>
+    <para>
+        <classname>Zend_Validate</classname> fournit un ensemble de validateurs habituellement
+        nécessaires, mais inévitablement, les développeurs souhaiteront écrire des validateurs sur
+        mesure pour leurs besoins particuliers. La méthode d'écriture d'un validateur personnalisé
+        est décrit dans cette section.
+    </para>
+
+    <para>
+        <classname>Zend_Validate_Interface</classname> définit trois méthodes,
+        <code>isValid()</code>, <code>getMessages()</code>, et <code>getErrors()</code>, qui peuvent
+        être implémentées par des classes d'utilisateur afin de créer les objets de validation sur
+        mesure. Un objet qui implémente l'interface <classname>Zend_Validate_Interface</classname>
+        peut être ajouté à une chaîne de validateur avec
+        <classname>Zend_Validate::addValidator()</classname>. De tels objets peuvent également être
+        employés avec <link
+        linkend="zend.filter.input"><classname>Zend_Filter_Input</classname></link>.
+    </para>
+
+    <para>
+        Comme vous avez déjà pu déduire de la description ci-dessus de
+        <classname>Zend_Validate_Interface</classname>, les classes de validation fournie avec Zend
+        Framework retourne une valeur booléenne pour savoir si une valeur est validée ou non. Elles
+        fournissent également des informations sur la raison pour laquelle la validation a échoué
+        sur une valeur. La mise à disposition de ces raisons d'échec de validation peut être
+        utilisée par une application dans différents buts, tels que fournir des statistiques pour
+        l'analyse de la facilité d'utilisation.
+    </para>
+
+    <para>
+        La fonctionnalité de base de message d'échec de validation est implémentée dans
+        <classname>Zend_Validate_Abstract</classname>. Pour inclure cette fonctionnalité en créant
+        une classe de validation, étendez simplement <classname>Zend_Validate_Abstract</classname>.
+        Dans la classe étendue vous implémenteriez la logique de la méthode <code>isValid()</code>
+        et définiriez les variables de message et les modèles de message qui correspondent aux types
+        d'échecs de validation qui peuvent se produire. Si une valeur ne passe pas vos essais de
+        validation, alors <code>isValid()</code> devrait renvoyer <code>false</code>. Si la valeur
+        passe vos essais de validation, alors <code>isValid()</code> devrait renvoyer
+        <code>true</code>.
+    </para>
+
+    <para>
+        En général, la méthode <code>isValid()</code> ne devrait lever aucune exception,
+        excepté où il est impossible de déterminer si la valeur d'entrée est valide. Quelques
+        exemples de cas raisonnables pour lever une exception pourraient être si un fichier ne peut
+        pas être ouvert, un serveur de LDAP ne pourraient pas être contacté, ou une connexion de
+        base de données est indisponible, où quand une telle chose peut être exigée pour que le
+        succès ou l'échec de validation soit déterminé.
+    </para>
 
     <example id="zend.validate.writing_validators.example.simple">
         <title>Création d'une simple classe de validation</title>
 
-        <para>L'exemple suivant démontre comment un validateur personnalisé très simple pourrait être écrit. Dans ce
-        cas-ci les règles de validation sont simplement que la valeur d'entrée doit être une valeur en virgule
-        flottante. <programlisting role="php"><![CDATA[
-class MonValidateur_Float extends Zend_Validate_Abstract
-{
-    const FLOAT = 'float';
-
-    protected $_messageTemplates = array(
-        self::FLOAT => "'%value%' n'est pas une valeur en virgule flottante"
-    );
-
-    public function isValid($value)
+        <para>
+            L'exemple suivant démontre comment un validateur personnalisé très simple pourrait
+            être écrit. Dans ce cas-ci les règles de validation sont simplement que la valeur
+            d'entrée doit être une valeur en virgule flottante. <programlisting role="php"><![CDATA[
+    class MonValidateur_Float extends Zend_Validate_Abstract
     {
-        $this->_setValue($value);
-
-        if (!is_float($value)) {
-            $this->_error();
-            return false;
+        const FLOAT = 'float';
+    
+        protected $_messageTemplates = array(
+            self::FLOAT => "'%value%' n'est pas une valeur en virgule flottante"
+        );
+    
+        public function isValid($value)
+        {
+            $this->_setValue($value);
+    
+            if (!is_float($value)) {
+                $this->_error();
+                return false;
+            }
+    
+            return true;
         }
-
-        return true;
     }
-}
-]]></programlisting> La classe définit un modèle pour son message unique d'échec de validation, qui inclut le paramètre
-        magique intégré, <code>%value%</code>. L'appel à <code>_setValue()</code> prépare l'objet pour insérer
-        automatiquement la valeur examinée dans le message d'échec, si la validation de la valeur échoue. L'appel à
-        <code>_error()</code> trace la raison d'échec de validation. Puisque cette classe définit seulement un message
-        d'échec, il n'est pas nécessaire de fournir à <code>_error()</code> le nom du modèle de message d'échec.</para>
+    ]]></programlisting> La classe définit un modèle pour son message unique d'échec de validation,
+            qui inclut le paramètre magique intégré, <code>%value%</code>. L'appel à
+            <code>_setValue()</code> prépare l'objet pour insérer automatiquement la valeur examinée
+            dans le message d'échec, si la validation de la valeur échoue. L'appel à
+            <code>_error()</code> trace la raison d'échec de validation. Puisque cette classe
+            définit seulement un message d'échec, il n'est pas nécessaire de fournir à
+            <code>_error()</code> le nom du modèle de message d'échec.
+        </para>
     </example>
 
     <example id="zend.validate.writing_validators.example.conditions.dependent">
         <title>Écriture d'une classe de validation ayant des conditions de dépendances</title>
 
-        <para>L'exemple suivant démontre un ensemble plus complexe de règles de validation, où on l'exige que la valeur
-        d'entrée doit être numérique et dans la plage des valeurs limites minimum et maximum. Une valeur d'entrée ferait
-        échouer la validation pour exactement une des raisons suivantes : <itemizedlist>
-                <listitem>
-                    <para>La valeur d'entrée n'est pas numérique.</para>
-                </listitem>
-
-                <listitem>
-                    <para>La valeur d'entrée est inférieure que la valeur permise minimum.</para>
+        <para>
+            L'exemple suivant démontre un ensemble plus complexe de règles de validation, où
+            on l'exige que la valeur d'entrée doit être numérique et dans la plage des valeurs
+            limites minimum et maximum. Une valeur d'entrée ferait échouer la validation pour
+            exactement une des raisons suivantes : <itemizedlist>
+                    <listitem>
+                        <para>La valeur d'entrée n'est pas numérique.</para>
+                    </listitem>
+    
+                    <listitem>
+                    <para>
+                        La valeur d'entrée est inférieure que la valeur permise
+                        minimum.
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para>La valeur d'entrée est supérieure que la valeur permise maximum.</para>
+                    <para>
+                        La valeur d'entrée est supérieure que la valeur permise
+                        maximum.
+                    </para>
                 </listitem>
-            </itemizedlist></para>
+                </itemizedlist>
+            </para>
 
-        <para>Ces raisons d'échec de validation sont alors traduites dans les définitions de la classe : <programlisting
-        role="php"><![CDATA[
-class MonValidateur_NumericBetween extends Zend_Validate_Abstract
-{
-    const MSG_NUMERIC = 'msgNumeric';
-    const MSG_MINIMUM = 'msgMinimum';
-    const MSG_MAXIMUM = 'msgMaximum';
-
-    public $minimum = 0;
-    public $maximum = 100;
-
-    protected $_messageVariables = array(
-        'min' => 'minimum',
-        'max' => 'maximum'
-    );
-
-    protected $_messageTemplates = array(
-        self::MSG_NUMERIC => "'%value%' n'est pas numérique",
-        self::MSG_MINIMUM => "'%value%' doit être supérieure à '%min%'",
-        self::MSG_MAXIMUM => "'%value%' doit être inférieure à '%max%'"
-    );
-
-    public function isValid($value)
+        <para>
+            Ces raisons d'échec de validation sont alors traduites dans les définitions de la
+            classe : <programlisting role="php"><![CDATA[
+    class MonValidateur_NumericBetween extends Zend_Validate_Abstract
     {
-        $this->_setValue($value);
-
-        if (!is_numeric($value)) {
-            $this->_error(self::MSG_NUMERIC);
-            return false;
-        }
-
-        if ($value < $this->minimum) {
-            $this->_error(self::MSG_MINIMUM);
-            return false;
-        }
-
-        if ($value > $this->maximum) {
-            $this->_error(self::MSG_MAXIMUM);
-            return false;
+        const MSG_NUMERIC = 'msgNumeric';
+        const MSG_MINIMUM = 'msgMinimum';
+        const MSG_MAXIMUM = 'msgMaximum';
+    
+        public $minimum = 0;
+        public $maximum = 100;
+    
+        protected $_messageVariables = array(
+            'min' => 'minimum',
+            'max' => 'maximum'
+        );
+    
+        protected $_messageTemplates = array(
+            self::MSG_NUMERIC => "'%value%' n'est pas numérique",
+            self::MSG_MINIMUM => "'%value%' doit être supérieure à '%min%'",
+            self::MSG_MAXIMUM => "'%value%' doit être inférieure à '%max%'"
+        );
+    
+        public function isValid($value)
+        {
+            $this->_setValue($value);
+    
+            if (!is_numeric($value)) {
+                $this->_error(self::MSG_NUMERIC);
+                return false;
+            }
+    
+            if ($value < $this->minimum) {
+                $this->_error(self::MSG_MINIMUM);
+                return false;
+            }
+    
+            if ($value > $this->maximum) {
+                $this->_error(self::MSG_MAXIMUM);
+                return false;
+            }
+    
+            return true;
         }
-
-        return true;
     }
-}
-]]></programlisting> Les propriétés publiques <code>$minimum</code> et <code>$maximum</code> ont été établies pour
-        fournir les frontières minimum et maximum d'une valeur pour qu'elle soit validée avec succès. La classe définit
-        également deux variables de message qui correspondent aux propriétés publiques et permettent que
-        <code>min</code> et <code>max</code> soient employés dans des modèles de message en tant que paramètres
-        magiques, comme avec <code>value</code>.</para>
-
-        <para>Noter que si n'importe quel élément de la validation vérifié dans <code>isValid()</code> échoue, un
-        message approprié d'échec est préparé, et la méthode renvoie immédiatement <code>false</code>. Ces règles de
-        validation sont donc séquentiellement dépendantes. C'est-à-dire, que si un essai échoue, il n'y a aucun besoin
-        d'examiner les règles suivantes de validation. Ce besoin peut exister, cependant. L'exemple suivant illustre
-        comment écrire une classe ayant des règles indépendantes de validation, où l'objet de validation peut renvoyer
-        des raisons multiples pour lesquelles une tentative particulière de validation a échoué.</para>
+    ]]></programlisting> Les propriétés publiques <code>$minimum</code> et <code>$maximum</code> ont
+            été établies pour fournir les frontières minimum et maximum d'une valeur pour qu'elle
+            soit validée avec succès. La classe définit également deux variables de message qui
+            correspondent aux propriétés publiques et permettent que <code>min</code> et
+            <code>max</code> soient employés dans des modèles de message en tant que paramètres
+            magiques, comme avec <code>value</code>.
+        </para>
+
+        <para>
+            Noter que si n'importe quel élément de la validation vérifié dans
+            <code>isValid()</code> échoue, un message approprié d'échec est préparé, et la méthode
+            renvoie immédiatement <code>false</code>. Ces règles de validation sont donc
+            séquentiellement dépendantes. C'est-à-dire, que si un essai échoue, il n'y a aucun
+            besoin d'examiner les règles suivantes de validation. Ce besoin peut exister, cependant.
+            L'exemple suivant illustre comment écrire une classe ayant des règles indépendantes de
+            validation, où l'objet de validation peut renvoyer des raisons multiples pour lesquelles
+            une tentative particulière de validation a échoué.
+        </para>
     </example>
 
     <example id="zend.validate.writing_validators.example.conditions.independent">
-        <title>Validation avec des conditions indépendantes, avec raisons multiples d'échec</title>
-
-        <para>Considérons l'écriture d'une classe de validation pour le contrôle de résistance d'un mot de passe - quand
-        un utilisateur est requis afin de choisir un mot de passe qui respecte certains critères pour aider à la
-        sécurisation des comptes d'utilisateur. Supposons que les critères de sécurité de mot de passe imposent que le
-        mot de passe : <itemizedlist>
-                <listitem>
-                    <para>est au moins une longueur de 8 caractères,</para>
-                </listitem>
-
-                <listitem>
-                    <para>contient au moins une lettre majuscule,</para>
-                </listitem>
-
-                <listitem>
-                    <para>contient au moins une lettre minuscule,</para>
-                </listitem>
-
-                <listitem>
-                    <para>et contient au moins un caractère de chiffre.</para>
-                </listitem>
-            </itemizedlist></para>
-
-        <para>La classe suivante implémente ces critères de validation : <programlisting role="php"><![CDATA[
-class MonValidateur_PasswordStrength extends Zend_Validate_Abstract
-{
-    const LENGTH = 'length';
-    const UPPER  = 'upper';
-    const LOWER  = 'lower';
-    const DIGIT  = 'digit';
-
-    protected $_messageTemplates = array(
-        self::LENGTH =>
-            "'%value%' doit avoir une longueur d'au moins 8 caractères",
-        self::UPPER  =>
-            "'%value%' doit contenir au moins une lettre majuscule",
-        self::LOWER  =>
-            "'%value%' doit contenir au moins une lettre minuscule",
-        self::DIGIT  =>
-            "'%value%' doit contenir au moins un chiffre"
-    );
-
-    public function isValid($value)
+        <title>Validation avec des conditions indépendantes, avec raisons multiples
+        d'échec</title>
+
+        <para>
+            Considérons l'écriture d'une classe de validation pour le contrôle de résistance
+            d'un mot de passe - quand un utilisateur est requis afin de choisir un mot de passe qui
+            respecte certains critères pour aider à la sécurisation des comptes d'utilisateur.
+            Supposons que les critères de sécurité de mot de passe imposent que le mot de passe :
+            <itemizedlist>
+                    <listitem>
+                        <para>est au moins une longueur de 8 caractères,</para>
+                    </listitem>
+    
+                    <listitem>
+                        <para>contient au moins une lettre majuscule,</para>
+                    </listitem>
+    
+                    <listitem>
+                        <para>contient au moins une lettre minuscule,</para>
+                    </listitem>
+    
+                    <listitem>
+                        <para>et contient au moins un caractère de chiffre.</para>
+                    </listitem>
+                </itemizedlist>
+            </para>
+
+        <para>
+            La classe suivante implémente ces critères de validation : <programlisting
+            role="php"><![CDATA[
+    class MonValidateur_PasswordStrength extends Zend_Validate_Abstract
     {
-        $this->_setValue($value);
-
-        $isValid = true;
-
-        if (strlen($value) < 8) {
-            $this->_error(self::LENGTH);
-            $isValid = false;
-        }
-
-        if (!preg_match('/[A-Z]/', $value)) {
-            $this->_error(self::UPPER);
-            $isValid = false;
+        const LENGTH = 'length';
+        const UPPER  = 'upper';
+        const LOWER  = 'lower';
+        const DIGIT  = 'digit';
+    
+        protected $_messageTemplates = array(
+            self::LENGTH =>
+                "'%value%' doit avoir une longueur d'au moins 8 caractères",
+            self::UPPER  =>
+                "'%value%' doit contenir au moins une lettre majuscule",
+            self::LOWER  =>
+                "'%value%' doit contenir au moins une lettre minuscule",
+            self::DIGIT  =>
+                "'%value%' doit contenir au moins un chiffre"
+        );
+    
+        public function isValid($value)
+        {
+            $this->_setValue($value);
+    
+            $isValid = true;
+    
+            if (strlen($value) < 8) {
+                $this->_error(self::LENGTH);
+                $isValid = false;
+            }
+    
+            if (!preg_match('/[A-Z]/', $value)) {
+                $this->_error(self::UPPER);
+                $isValid = false;
+            }
+    
+            if (!preg_match('/[a-z]/', $value)) {
+                $this->_error(self::LOWER);
+                $isValid = false;
+            }
+    
+            if (!preg_match('/\d/', $value)) {
+                $this->_error(self::DIGIT);
+                $isValid = false;
+            }
+    
+            return $isValid;
         }
-
-        if (!preg_match('/[a-z]/', $value)) {
-            $this->_error(self::LOWER);
-            $isValid = false;
-        }
-
-        if (!preg_match('/\d/', $value)) {
-            $this->_error(self::DIGIT);
-            $isValid = false;
-        }
-
-        return $isValid;
     }
-}
-]]></programlisting>Noter que les quatre critères d'essais dans <code>isValid()</code> ne renvoient pas immédiatement
-        <code>false</code>. Ceci permet à la classe de validation de fournir toutes les raisons pour lesquelles le mot
-        de passe d'entrée n'a pas réussi à remplir les conditions de validation. Si, par exemple, un utilisateur entre
-        la chaîne "<code>#$%</code>" comme mot de passe, <code>isValid()</code> entraînera que les quatre messages
-        d'échec de validation seront retournés lors de l'appel suivant à <code>getMessages()</code>.</para>
+    ]]></programlisting>Noter que les quatre critères d'essais dans <code>isValid()</code> ne
+            renvoient pas immédiatement <code>false</code>. Ceci permet à la classe de validation de
+            fournir toutes les raisons pour lesquelles le mot de passe d'entrée n'a pas réussi à
+            remplir les conditions de validation. Si, par exemple, un utilisateur entre la chaîne
+            "<code>#$%</code>" comme mot de passe, <code>isValid()</code> entraînera que les quatre
+            messages d'échec de validation seront retournés lors de l'appel suivant à
+            <code>getMessages()</code>.
+        </para>
     </example>
 </sect1>