ソースを参照

DOCUMENTATION French: sync and clean manual

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@15481 44c647ce-9c0f-0410-b52a-842ac1e357ba
mikaelkael 16 年 前
コミット
15eed151fe

+ 81 - 46
documentation/manual/fr/module_specs/Zend_Gdata_AuthSub.xml

@@ -1,53 +1,79 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13842 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15156 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.gdata.authsub">
     <title>Authentification par procédé AuthSub</title>
 
-    <para>Le mécanisme d'authentification AuthSub permet d'écrire des applications dans lesquelles il n'est pas
-    nécessaire de coder "en dur" des identifiants. L'application demande ces informations à l'utilisateur, pour ouvrir
-    un session de travail.</para>
-
-    <para>Voyez <ulink
-    url="http://code.google.com/apis/accounts/AuthForWebApps.html">http://code.google.com/apis/accounts/AuthForWebApps.html</ulink>
-    pour plus d'informations sur l'authentification AuthSub de Google Data.</para>
-
-    <para>La documentation Google indique que le mécanisme ClientLogin est approprié dans le cas d'applications
-    embarquées, à la différence du mécanisme AuthSub, utilisé pour les applications Web ayant recours à une
-    authentification extérieure. AuthSub récupère des identifiant d'un utilisateur de l'application Web, et un
-    navigateur réagissant aux redirections est requis. Le processus ClientLogin, lui, utilise du code PHP tel qu'écrit
-    dans l'application elle-même. L'utilisateur de l'application n'entre pas en jeu pour fournir des identifiants de
-    manière interactive.</para>
-
-    <para>Les identifiants utilisés par le processus AuthSub sont fournis par l'utilisateur de l'application, et non par
-    l'application elle-même.</para>
+    <para>
+        Le mécanisme d'authentification AuthSub permet d'écrire des applications dans
+        lesquelles il n'est pas nécessaire de coder "en dur" des identifiants. L'application demande
+        ces informations à l'utilisateur, pour ouvrir un session de travail.
+    </para>
+
+    <para>
+        Voyez <ulink
+        url="http://code.google.com/apis/accounts/AuthForWebApps.html">http://code.google.com/apis/accounts/AuthForWebApps.html</ulink>
+        pour plus d'informations sur l'authentification AuthSub de Google Data.
+    </para>
+
+    <para>
+        La documentation Google indique que le mécanisme ClientLogin est approprié dans le cas
+        d'applications embarquées, à la différence du mécanisme AuthSub, utilisé pour les
+        applications Web ayant recours à une authentification extérieure. AuthSub récupère des
+        identifiant d'un utilisateur de l'application Web, et un navigateur réagissant aux
+        redirections est requis. Le processus ClientLogin, lui, utilise du code PHP tel qu'écrit
+        dans l'application elle-même. L'utilisateur de l'application n'entre pas en jeu pour fournir
+        des identifiants de manière interactive.
+    </para>
+
+    <para>
+        Les identifiants utilisés par le processus AuthSub sont fournis par l'utilisateur de
+        l'application, et non par l'application elle-même.
+    </para>
 
     <note>
         <title>Jetons sécurisés et certificats</title>
 
-        <para><classname>Zend_Gdata</classname> ne supporte pas actuellement l'utilisation de jetons sécurisés, car
-        l'authentification AuthSub ne supporte pas les certificats permettant l'obtention de jetons sécurisés.</para>
+        <para>
+            <classname>Zend_Gdata</classname> ne supporte pas actuellement l'utilisation de
+            jetons sécurisés, car l'authentification AuthSub ne supporte pas les certificats
+            permettant l'obtention de jetons sécurisés.
+        </para>
     </note>
 
     <sect2 id="zend.gdata.authsub.login">
         <title>Création d'un client HTTP authentifié avec AuthSub</title>
 
-        <para>Votre application PHP devrait fournir un lien URL vers le service d'authentification de Google. La méthode
-        statique <classname>Zend_Gdata_AuthSub::getAuthSubTokenUri()</classname> permet ceci. Elle prend un argument représentant
-        l'URL de votre application. De cette manière, le serveur Google pourra générer une réponse menant à une
-        redirection vers cette URL, une fois l'authentification passée.</para>
-
-        <para>Après que le serveur d'authentification de Google ait redirigé le navigateur de l'utilisateur vers votre
-        application, un paramètre <code>GET</code> est ajouté, il s'agit du <code>jeton</code> d'authentification. Ce
-        jeton servira à éviter de demander une authentification à chaque requête future.</para>
-
-        <para>Ensuite, utilisez le jeton avec un appel à la méthode <classname>Zend_Gdata_AuthSub::getHttpClient()</classname>.
-        Cette méthode retournera alors un objet de type <classname>Zend_Http_Client</classname>, qui sera peuplé des bons en-têtes
-        permettant ainsi une utilisation future sans nécessité de ré-authentification.</para>
-
-        <para>Ci-dessous un exemple d'une application PHP qui effectue une authentification afin d'utiliser le service
-        Google Calendar. Elle crée un objet client <classname>Zend_Gdata</classname> utilisant le client HTTP fraîchement
-        authentifié.</para>
+        <para>
+            Votre application PHP devrait fournir un lien URL vers le service
+            d'authentification de Google. La méthode statique
+            <classname>Zend_Gdata_AuthSub::getAuthSubTokenUri()</classname> permet ceci. Elle prend
+            un argument représentant l'URL de votre application. De cette manière, le serveur Google
+            pourra générer une réponse menant à une redirection vers cette URL, une fois
+            l'authentification passée.
+        </para>
+
+        <para>
+            Après que le serveur d'authentification de Google ait redirigé le navigateur de
+            l'utilisateur vers votre application, un paramètre <code>GET</code> est ajouté, il
+            s'agit du <code>jeton</code> d'authentification. Ce jeton servira à éviter de demander
+            une authentification à chaque requête future.
+        </para>
+
+        <para>
+            Ensuite, utilisez le jeton avec un appel à la méthode
+            <classname>Zend_Gdata_AuthSub::getHttpClient()</classname>. Cette méthode retournera
+            alors un objet de type <classname>Zend_Http_Client</classname>, qui sera peuplé des bons
+            en-têtes permettant ainsi une utilisation future sans nécessité de
+            ré-authentification.
+        </para>
+
+        <para>
+            Ci-dessous un exemple d'une application PHP qui effectue une authentification afin
+            d'utiliser le service Google Calendar. Elle crée un objet client
+            <classname>Zend_Gdata</classname> utilisant le client HTTP fraîchement
+            authentifié.
+        </para>
 
         <programlisting role="php"><![CDATA[
 $my_calendar =
@@ -83,8 +109,11 @@ $cal = new Zend_Gdata_Calendar($client);
     <sect2 id="zend.gdata.authsub.logout">
         <title>Destruction de l'authentification AuthSub</title>
 
-        <para>Pour détruire la validité d'un jeton d'authentification, utilisez la méthode statique
-        <classname>Zend_Gdata_AuthSub::AuthSubRevokeToken()</classname>. Autrement, le jeton reste valide un certain temps.</para>
+        <para>
+            Pour détruire la validité d'un jeton d'authentification, utilisez la méthode
+            statique <classname>Zend_Gdata_AuthSub::AuthSubRevokeToken()</classname>. Autrement, le
+            jeton reste valide un certain temps.
+        </para>
 
         <programlisting role="php"><![CDATA[
 // construction sécurisée de la valeur.
@@ -104,13 +133,19 @@ if (isset($_GET['logout'])) {
         <note>
             <title>Notes de sécurité</title>
 
-            <para>Le traitement effectué pour la variable <code>$php_self</code> dans l'exemple ci-dessus est une règle
-            de sécurité générale, elle n'est pas spécifique à l'utilisation de <classname>Zend_Gdata</classname>. Vous devriez
-            systématiquement filtrer le contenu que vous envoyez en tant qu'en-tête HTTP.</para>
-
-            <para>Au sujet de la destruction du jeton, elle est recommandée lorsque l'utilisateur en a terminé avec sa
-            session Google. Même si la possibilité d'interception de ce jeton reste très faible, il s'agit d'une
-            précaution faisant partie du bon sens et des bonnes pratiques.</para>
+            <para>
+                Le traitement effectué pour la variable <code>$php_self</code> dans l'exemple
+                ci-dessus est une règle de sécurité générale, elle n'est pas spécifique à
+                l'utilisation de <classname>Zend_Gdata</classname>. Vous devriez systématiquement
+                filtrer le contenu que vous envoyez en tant qu'en-tête HTTP.
+            </para>
+
+            <para>
+                Au sujet de la destruction du jeton, elle est recommandée lorsque
+                l'utilisateur en a terminé avec sa session Google. Même si la possibilité
+                d'interception de ce jeton reste très faible, il s'agit d'une précaution faisant
+                partie du bon sens et des bonnes pratiques.
+            </para>
         </note>
     </sect2>
 </sect1>

+ 79 - 46
documentation/manual/fr/module_specs/Zend_Gdata_ClientLogin.xml

@@ -1,54 +1,84 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13842 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15156 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.gdata.clientlogin">
     <title>Authentification avec ClientLogin</title>
 
-    <para>Le mécanisme dit "ClientLogin" vous permet d'écrire des applications PHP qui récupèrent une authentification
-    vis à vis des services Google, en spécifiant des identifiants dans le client HTTP.</para>
-
-    <para>Voyez <ulink url="http://code.google.com/apis/accounts/AuthForInstalledApps.html">
-    http://code.google.com/apis/accounts/AuthForInstalledApps.html </ulink> pour plus d'informations sur
-    l'authentification ClientLogin de Google Data.</para>
-
-    <para>La documentation Google indique que le mécanisme ClientLogin est approprié dans le cas d'applications
-    embarquées, à la différence du mécanisme AuthSub, utilisé pour les applications Web ayant recours à une
-    authentification extérieure. AuthSub récupère des identifiant d'un utilisateur de l'application Web, et un
-    navigateur réagissant aux redirections est requis. Le processus ClientLogin, lui, utilise du code PHP tel qu'écrit
-    dans l'application elle-même. L'utilisateur de l'application n'entre pas en jeu pour fournir des identifiants de
-    manière interactive.</para>
-
-    <para>Les identifiants fournis au mécanisme ClientLogin doivent correspondre à des identifiants valides pour les
-    services Google, mais il n'est pas nécessaire qu'ils correspondent à ceux de l'utilisateur de l'application.</para>
+    <para>
+        Le mécanisme dit "ClientLogin" vous permet d'écrire des applications PHP qui
+        récupèrent une authentification vis à vis des services Google, en spécifiant des
+        identifiants dans le client HTTP.
+    </para>
+
+    <para>
+        Voyez <ulink url="http://code.google.com/apis/accounts/AuthForInstalledApps.html">
+        http://code.google.com/apis/accounts/AuthForInstalledApps.html </ulink> pour plus
+        d'informations sur l'authentification ClientLogin de Google Data.
+    </para>
+
+    <para>
+        La documentation Google indique que le mécanisme ClientLogin est approprié dans le cas
+        d'applications embarquées, à la différence du mécanisme AuthSub, utilisé pour les
+        applications Web ayant recours à une authentification extérieure. AuthSub récupère des
+        identifiant d'un utilisateur de l'application Web, et un navigateur réagissant aux
+        redirections est requis. Le processus ClientLogin, lui, utilise du code PHP tel qu'écrit
+        dans l'application elle-même. L'utilisateur de l'application n'entre pas en jeu pour fournir
+        des identifiants de manière interactive.
+    </para>
+
+    <para>
+        Les identifiants fournis au mécanisme ClientLogin doivent correspondre à des
+        identifiants valides pour les services Google, mais il n'est pas nécessaire qu'ils
+        correspondent à ceux de l'utilisateur de l'application.
+    </para>
 
     <sect2 id="zend.gdata.clientlogin.login">
         <title>Création d'un client HTTP "ClientLogin" authentifié</title>
 
-        <para>La création d'un client HTTP "ClientLogin" authentifié est un processus servi par la méthode statique
-        <classname>Zend_Gdata_ClientLogin::getHttpClient()</classname>. Passez lui les identifiants Google services sous forme de
-        texte (plain text). La valeur de retour de cette méthode est un objet <classname>Zend_Http_Client</classname>.</para>
-
-        <para>Le troisième paramètre optionnel est le nom du service Google Data. Par exemple, il peut être "cl" pour
-        Google Calendar. Par défaut il s'agit de "xapi", ce qui correspond au service générique de Google Data.</para>
-
-        <para>La quatrième paramètre optionnel est une instance de <classname>Zend_Http_Client</classname>. Vous pouvez alors
-        configurer votre client à part (par exemple lui ajouter des options pour la gestion d'un Proxy). Si vous passez
-        <code>null</code> à ce paramètre, alors un client <classname>Zend_Http_Client</classname> générique est crée.</para>
-
-        <para>Le cinquième paramètre optionnel est le nom du client que les serveurs Google Data identifieront en
-        interne. Par défaut il s'agit de "Zend-ZendFramework".</para>
-
-        <para>Le sixième paramètre, toujours optionnel, est l'ID pour le challenge <trademark>CAPTCHA</trademark>
-        retourné par le serveur. Ce paramètre n'est nécessaire que si vous avez reçu un challenge lors d'un processus
-        d'authentification passé, et que vous le renvoyez pour résolution..</para>
-
-        <para>Le septième paramètre optionnel représente la réponse de l'utilisateur au challenge
-        <trademark>CAPTCHA</trademark> précédemment reçu. Il n'est donc nécessaire que si vous avez reçu un challenge
-        <trademark>CAPTCHA</trademark> à résoudre.</para>
-
-        <para>Ci dessous, un exemple d'une application PHP qui s'authentifie auprès du service Google Calendar et crée
-        un objet client <classname>Zend_Gdata</classname> utilisant l'objet <classname>Zend_Http_Client</classname> fraîchement authentifié
-        :</para>
+        <para>
+            La création d'un client HTTP "ClientLogin" authentifié est un processus servi par
+            la méthode statique <classname>Zend_Gdata_ClientLogin::getHttpClient()</classname>.
+            Passez lui les identifiants Google services sous forme de texte (plain text). La valeur
+            de retour de cette méthode est un objet <classname>Zend_Http_Client</classname>.
+        </para>
+
+        <para>
+            Le troisième paramètre optionnel est le nom du service Google Data. Par exemple,
+            il peut être "cl" pour Google Calendar. Par défaut il s'agit de "xapi", ce qui
+            correspond au service générique de Google Data.
+        </para>
+
+        <para>
+            La quatrième paramètre optionnel est une instance de
+            <classname>Zend_Http_Client</classname>. Vous pouvez alors configurer votre client à
+            part (par exemple lui ajouter des options pour la gestion d'un Proxy). Si vous passez
+            <code>null</code> à ce paramètre, alors un client
+            <classname>Zend_Http_Client</classname> générique est crée.
+        </para>
+
+        <para>
+            Le cinquième paramètre optionnel est le nom du client que les serveurs Google Data
+            identifieront en interne. Par défaut il s'agit de "Zend-ZendFramework".
+        </para>
+
+        <para>
+            Le sixième paramètre, toujours optionnel, est l'ID pour le challenge
+            <trademark>CAPTCHA</trademark> retourné par le serveur. Ce paramètre n'est nécessaire
+            que si vous avez reçu un challenge lors d'un processus d'authentification passé, et que
+            vous le renvoyez pour résolution..
+        </para>
+
+        <para>
+            Le septième paramètre optionnel représente la réponse de l'utilisateur au
+            challenge <trademark>CAPTCHA</trademark> précédemment reçu. Il n'est donc nécessaire que
+            si vous avez reçu un challenge <trademark>CAPTCHA</trademark> à résoudre.
+        </para>
+
+        <para>
+            Ci dessous, un exemple d'une application PHP qui s'authentifie auprès du service
+            Google Calendar et crée un objet client <classname>Zend_Gdata</classname> utilisant
+            l'objet <classname>Zend_Http_Client</classname> fraîchement authentifié :
+        </para>
 
         <programlisting role="php"><![CDATA[
 // identifiants de compte Google
@@ -70,8 +100,11 @@ $cal = new Zend_Gdata_Calendar($client);
     <sect2 id="zend.gdata.clientlogin.terminating">
         <title>Fermer un client HTTP authentifié par ClientLogin</title>
 
-        <para>Il n'y a pas de méthode pour supprimer l'authentification effectuée via un ClientLogin, comme c'est le cas
-        avec le système de jeton du procédé AuthSub. Les identifiants dans le ClientLogin étant un identifiant et un mot
-        de passe de compte Google, ils ne peuvent être invalidés et sont utilisables de manière continue.</para>
+        <para>
+            Il n'y a pas de méthode pour supprimer l'authentification effectuée via un
+            ClientLogin, comme c'est le cas avec le système de jeton du procédé AuthSub. Les
+            identifiants dans le ClientLogin étant un identifiant et un mot de passe de compte
+            Google, ils ne peuvent être invalidés et sont utilisables de manière continue.
+        </para>
     </sect2>
 </sect1>

+ 53 - 28
documentation/manual/fr/module_specs/Zend_Gdata_Exception.xml

@@ -1,11 +1,13 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13842 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15156 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.gdata.exception">
     <title>Attraper les exceptions Gdata</title>
 
-    <para>La classe <classname>Zend_Gdata_App_Exception</classname> est la classe de base de toutes les exceptions envoyées par
-    les composants Gdata.</para>
+    <para>
+        La classe <classname>Zend_Gdata_App_Exception</classname> est la classe de base de
+        toutes les exceptions envoyées par les composants Gdata.
+    </para>
 
     <programlisting role="php"><![CDATA[
 try {
@@ -17,44 +19,67 @@ try {
 }
 ]]></programlisting>
 
-    <para>Voici les sous classes exception utilisées dans <classname>Zend_Gdata</classname> :<itemizedlist>
-            <listitem>
-                <para><classname>Zend_Gdata_App_AuthException</classname> indique que les identifiants du compte utilisateur sont
-                erronés.</para>
+    <para>
+        Voici les sous classes exception utilisées dans <classname>Zend_Gdata</classname>
+        :<itemizedlist>
+                <listitem>
+                <para>
+                    <classname>Zend_Gdata_App_AuthException</classname> indique que les
+                    identifiants du compte utilisateur sont erronés.
+                </para>
             </listitem>
 
             <listitem>
-                <para><classname>Zend_Gdata_App_BadMethodCallException</classname> est levée lorsque vous tentez d'utiliser une
-                méthode sur un service qui ne l'implémente pas. Par exemple, le service CodeSearch ne supporte pas la
-                méthode <code>post()</code>.</para>
+                <para>
+                    <classname>Zend_Gdata_App_BadMethodCallException</classname> est levée
+                    lorsque vous tentez d'utiliser une méthode sur un service qui ne l'implémente
+                    pas. Par exemple, le service CodeSearch ne supporte pas la méthode
+                    <code>post()</code>.
+                </para>
             </listitem>
 
             <listitem>
-                <para><classname>Zend_Gdata_App_HttpException</classname> indique un échec de requête HTTP. Cette exception vous
-                donne le moyen de récupérer la réponse <classname>Zend_Http_Response</classname> entière pour déterminer la cause
-                exacte de l'erreur, alors que <code>$e-&gt;getMessage()</code> ne montre pas autant de détails.</para>
+                <para>
+                    <classname>Zend_Gdata_App_HttpException</classname> indique un échec de
+                    requête HTTP. Cette exception vous donne le moyen de récupérer la réponse
+                    <classname>Zend_Http_Response</classname> entière pour déterminer la cause
+                    exacte de l'erreur, alors que <code>$e-&gt;getMessage()</code> ne montre pas
+                    autant de détails.
+                </para>
             </listitem>
 
             <listitem>
-                <para><classname>Zend_Gdata_App_InvalidArgumentException</classname> est envoyée lorsque l'application envoie une
-                valeur non attendue. Par exemple spécifier la visibilité d'un calendrier à "banane", ou récupérer le
-                flux d'un blog Blogger sans spécifier le nom du blog en question.</para>
+                <para>
+                    <classname>Zend_Gdata_App_InvalidArgumentException</classname> est envoyée
+                    lorsque l'application envoie une valeur non attendue. Par exemple spécifier la
+                    visibilité d'un calendrier à "banane", ou récupérer le flux d'un blog Blogger
+                    sans spécifier le nom du blog en question.
+                </para>
             </listitem>
 
             <listitem>
-                <para><classname>Zend_Gdata_App_CaptchaRequiredException</classname> est envoyée lorsqu'une tentative de
-                ClientLogin reçoit un challenge <trademark>CAPTCHA</trademark> depuis le service d'authentification.
-                Cette exception contient un jeton ID et une URL vers une image <trademark>CAPTCHA</trademark> . Cette
-                image est un puzzle visuel qui devrait être retournée à l'utilisateur du service. Après récupération de
-                la réponse de l'utilisateur, celle-ci peut être incluse lors du ClientLogin suivant. L'utilisateur peut
-                aussi alternativement être redirigé vers ce site : <ulink
-                url="https://www.google.com/accounts/DisplayUnlockCaptcha"></ulink>. De plus amples informations peuvent
-                être trouvées dans <link linkend="zend.gdata.clientlogin">la documentation du ClientLogin</link>.</para>
+                <para>
+                    <classname>Zend_Gdata_App_CaptchaRequiredException</classname> est envoyée
+                    lorsqu'une tentative de ClientLogin reçoit un challenge
+                    <trademark>CAPTCHA</trademark> depuis le service d'authentification. Cette
+                    exception contient un jeton ID et une URL vers une image
+                    <trademark>CAPTCHA</trademark> . Cette image est un puzzle visuel qui devrait
+                    être retournée à l'utilisateur du service. Après récupération de la réponse de
+                    l'utilisateur, celle-ci peut être incluse lors du ClientLogin suivant.
+                    L'utilisateur peut aussi alternativement être redirigé vers ce site : <ulink
+                    url="https://www.google.com/accounts/DisplayUnlockCaptcha"></ulink>. De plus
+                    amples informations peuvent être trouvées dans <link
+                    linkend="zend.gdata.clientlogin">la documentation du ClientLogin</link>.
+                </para>
             </listitem>
-        </itemizedlist></para>
+            </itemizedlist>
+        </para>
 
-    <para>Vous pouvez ainsi utiliser ces sous-classes d'exceptions pour les gérer chacune différemment. Référez vous à
-    l'API pour savoir quel composant <classname>Zend_Gdata</classname> envoie quel type d'exception.</para>
+    <para>
+        Vous pouvez ainsi utiliser ces sous-classes d'exceptions pour les gérer chacune
+        différemment. Référez vous à l'API pour savoir quel composant
+        <classname>Zend_Gdata</classname> envoie quel type d'exception.
+    </para>
 
     <programlisting role="php"><![CDATA[
 try {

+ 230 - 112
documentation/manual/fr/module_specs/Zend_Gdata_Photos.xml

@@ -1,80 +1,116 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13842 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15156 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.gdata.photos">
     <title>Utilisation des albums Web Picasa</title>
 
-    <para>Les albums Web Picasa représentent un service Google permettant de maintenir à jour des albums photos, tout en
-    pouvant récupérer des photos de l'album d'un membre. L'API propose des services pour ajouter, mettre à jour ou
-    supprimer des photos d'un album, de même que gérer des mots-clés ou des commentaires sur des images(photos).</para>
-
-    <para>L'accès public à un album, en lecture donc, n'est pas sujet à demande d'authentification. En revanche, toute
-    autre manipulation telle que la mise à jour ou la suppression, nécessitera que vous vous authentifiez.</para>
-
-    <para>Pour plus d'informations sur l'API, voyez <ulink
-    url="http://code.google.com/apis/picasaweb/overview.html">l'API Picasa Web Albums</ulink>.</para>
+    <para>
+        Les albums Web Picasa représentent un service Google permettant de maintenir à jour
+        des albums photos, tout en pouvant récupérer des photos de l'album d'un membre. L'API
+        propose des services pour ajouter, mettre à jour ou supprimer des photos d'un album, de même
+        que gérer des mots-clés ou des commentaires sur des images(photos).
+    </para>
+
+    <para>
+        L'accès public à un album, en lecture donc, n'est pas sujet à demande
+        d'authentification. En revanche, toute autre manipulation telle que la mise à jour ou la
+        suppression, nécessitera que vous vous authentifiez.
+    </para>
+
+    <para>
+        Pour plus d'informations sur l'API, voyez <ulink
+        url="http://code.google.com/apis/picasaweb/overview.html">l'API Picasa Web
+        Albums</ulink>.
+    </para>
 
     <note>
         <title>Authentification</title>
 
-        <para>L'API propose les deux modes d'authentification, AuthSub (recommandé) et ClientAuth. Pour toute opération
-        d'écriture vers le service, une authentification sera demandée, la lecture est elle, libre, au regard de
-        l'API.</para>
+        <para>
+            L'API propose les deux modes d'authentification, AuthSub (recommandé) et
+            ClientAuth. Pour toute opération d'écriture vers le service, une authentification sera
+            demandée, la lecture est elle, libre, au regard de l'API.
+        </para>
     </note>
 
     <sect2 id="zend.gdata.photos.connecting">
         <title>Se connecter au service</title>
 
-        <para>L'API Picasa, comme tous les autres services Web Google Gdata, est basée sur le protocole Atom Publishing
-        Protocol (APP), et le XML. Le trafic entre le client et le serveur se fait sur HTTP, et autorise des connexions
-        authentifiées, ou non.</para>
+        <para>
+            L'API Picasa, comme tous les autres services Web Google Gdata, est basée sur le
+            protocole Atom Publishing Protocol (APP), et le XML. Le trafic entre le client et le
+            serveur se fait sur HTTP, et autorise des connexions authentifiées, ou non.
+        </para>
 
-        <para>Avant tout, il faut donc se connecter. Ceci se fait en deux étapes : créer un client HTTP, et insérer un
-        <classname>Zend_Gdata_Photos</classname> dans celui-ci.</para>
+        <para>
+            Avant tout, il faut donc se connecter. Ceci se fait en deux étapes : créer un
+            client HTTP, et insérer un <classname>Zend_Gdata_Photos</classname> dans
+            celui-ci.
+        </para>
 
         <sect3 id="zend.gdata.photos.connecting.authentication">
             <title>Authentification</title>
 
-            <para>L'API propose un accès à la fois aux données publiques, et aux données privées. Les données publiques
-            ne requièrent pas d'authentification, mais ne sont accessibles qu'en lecture seule. L'écriture et l'accès
-            aux données privées requièrent une authentification, qui peut s'effectuer de trois manières différentes
-            :</para>
+            <para>
+                L'API propose un accès à la fois aux données publiques, et aux données
+                privées. Les données publiques ne requièrent pas d'authentification, mais ne sont
+                accessibles qu'en lecture seule. L'écriture et l'accès aux données privées
+                requièrent une authentification, qui peut s'effectuer de trois manières différentes
+                :
+            </para>
 
             <itemizedlist>
                 <listitem>
-                    <para><firstterm>ClientAuth</firstterm> permet une authentification directe en donnant un couple
-                    login/password. Les utilisateurs devront donc renseigner ces 2 paramètres sur votre site
-                    directement.</para>
+                    <para>
+                        <firstterm>ClientAuth</firstterm> permet une authentification directe
+                        en donnant un couple login/password. Les utilisateurs devront donc
+                        renseigner ces 2 paramètres sur votre site directement.
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><firstterm>AuthSub</firstterm> permet l'authentification en passant par un serveur proxy de
-                    Google. Les risques liés à la sécurité sont donc moindre avec cette méthode.</para>
+                    <para>
+                        <firstterm>AuthSub</firstterm> permet l'authentification en passant
+                        par un serveur proxy de Google. Les risques liés à la sécurité sont donc
+                        moindre avec cette méthode.
+                    </para>
                 </listitem>
             </itemizedlist>
 
-            <para>La librairie <classname>Zend_Gdata</classname> permet ces 2 types d'authentification. Le reste de ce chapitre
-            supposera que vous soyez habitué à l'authentification avec les service Web Google GData. Si ce n'est pas le
-            cas, nous vous conseillons de consulter <link linkend="zend.gdata.introduction.authentication">la section
-            authentification</link> de ce manuel, ou encore <ulink url="http://code.google.com/apis/gdata/auth.html">le
-            guide d'authentification Google GData webservices API</ulink>.</para>
+            <para>
+                La librairie <classname>Zend_Gdata</classname> permet ces 2 types
+                d'authentification. Le reste de ce chapitre supposera que vous soyez habitué à
+                l'authentification avec les service Web Google GData. Si ce n'est pas le cas, nous
+                vous conseillons de consulter <link
+                linkend="zend.gdata.introduction.authentication">la section authentification</link>
+                de ce manuel, ou encore <ulink url="http://code.google.com/apis/gdata/auth.html">le
+                guide d'authentification Google GData webservices API</ulink>.
+            </para>
         </sect3>
 
         <sect3 id="zend.gdata.photos.connecting.service">
             <title>Créer une instance du service</title>
 
-            <para>Pour interagir avec les serveurs, la classe <classname>Zend_Gdata_Photos</classname> sera nécessaire. Elle
-            abstrait toute la logique de communication avec le Protocol Atom Publishing vers les serveurs de
-            Google.</para>
-
-            <para>Une fois que vous avez choisi une méthode d'authentification, vous devez créer une instance de
-            <classname>Zend_Gdata_Photos</classname>. Le constructeur prend en paramètre une instance de
-            <classname>Zend_Http_Client</classname>. Cette classe est l'interface AuthSub ou ClientAuth authentification. Si vous
-            ne passez pas cette instance en argument, alors une instance de <classname>Zend_Http_Client</classname> sera crée
-            automatiquement, mais en mode non authentifié.</para>
-
-            <para>Voici un exemple qui démontre comment créer une classe vers le service avec le procédé
-            d'authentification ClientAuth :</para>
+            <para>
+                Pour interagir avec les serveurs, la classe
+                <classname>Zend_Gdata_Photos</classname> sera nécessaire. Elle abstrait toute la
+                logique de communication avec le Protocol Atom Publishing vers les serveurs de
+                Google.
+            </para>
+
+            <para>
+                Une fois que vous avez choisi une méthode d'authentification, vous devez créer
+                une instance de <classname>Zend_Gdata_Photos</classname>. Le constructeur prend en
+                paramètre une instance de <classname>Zend_Http_Client</classname>. Cette classe est
+                l'interface AuthSub ou ClientAuth authentification. Si vous ne passez pas cette
+                instance en argument, alors une instance de <classname>Zend_Http_Client</classname>
+                sera crée automatiquement, mais en mode non authentifié.
+            </para>
+
+            <para>
+                Voici un exemple qui démontre comment créer une classe vers le service avec le
+                procédé d'authentification ClientAuth :
+            </para>
 
             <programlisting role="php"><![CDATA[
 // Paramètres pour ClientAuth authentification
@@ -197,22 +233,32 @@ $service = new Zend_Gdata_Photos();
     <sect2 id="zend.gdata.photos.queries">
         <title>Comprendre et construire des requêtes</title>
 
-        <para>Pour créer des requêtes vers le service Web, vous devrez utiliser une de ces classes :</para>
+        <para>
+            Pour créer des requêtes vers le service Web, vous devrez utiliser une de ces
+            classes :
+        </para>
 
         <itemizedlist>
             <listitem>
-                <para><firstterm>User</firstterm> Cette classe requêtera tout ce qui concerne un utilisateur du service.
-                Sans spécifier d'utilisateur, "default" sera utilisé.</para>
+                <para>
+                    <firstterm>User</firstterm> Cette classe requêtera tout ce qui concerne un
+                    utilisateur du service. Sans spécifier d'utilisateur, "default" sera
+                    utilisé.
+                </para>
             </listitem>
 
             <listitem>
-                <para><firstterm>Album</firstterm> Cette classe va servir de base pour toutes les requêtes concernant
-                les albums Picasa.</para>
+                <para>
+                    <firstterm>Album</firstterm> Cette classe va servir de base pour toutes
+                    les requêtes concernant les albums Picasa.
+                </para>
             </listitem>
 
             <listitem>
-                <para><firstterm>Photo</firstterm> Cette classe va servir de base pour toutes les requêtes concernant
-                les photos Picasa.</para>
+                <para>
+                    <firstterm>Photo</firstterm> Cette classe va servir de base pour toutes
+                    les requêtes concernant les photos Picasa.
+                </para>
             </listitem>
         </itemizedlist>
 
@@ -227,65 +273,93 @@ $query = new Zend_Gdata_Photos_UserQuery();
 $query->setUser("sample.user");
 ]]></programlisting>
 
-        <para>Pour chaque requête, des paramètres de limitations de la recherche peuvent être passés grâce aux méthodes
-        get(Paramètre) and set(Paramètre) :</para>
+        <para>
+            Pour chaque requête, des paramètres de limitations de la recherche peuvent être
+            passés grâce aux méthodes get(Paramètre) and set(Paramètre) :
+        </para>
 
         <itemizedlist>
             <listitem>
-                <para><firstterm>Projection</firstterm> spécifie le format de retour des données dans le flux. Peut être
-                "api" ou "base". En temps normal, "api" est conseillé, c'est la valeur par défaut d'ailleurs.</para>
+                <para>
+                    <firstterm>Projection</firstterm> spécifie le format de retour des données
+                    dans le flux. Peut être "api" ou "base". En temps normal, "api" est conseillé,
+                    c'est la valeur par défaut d'ailleurs.
+                </para>
             </listitem>
 
             <listitem>
-                <para><firstterm>Type</firstterm> détermine le type des éléments retournés, "feed"(défaut) ou
-                "entry".</para>
+                <para>
+                    <firstterm>Type</firstterm> détermine le type des éléments retournés,
+                    "feed"(défaut) ou "entry".
+                </para>
             </listitem>
 
             <listitem>
-                <para><firstterm>Access</firstterm> détermine la visibilité des éléments retournés, "all"(défaut),
-                "public", ou "private". Les éléments non publics ne seront retournés que si le client est
-                authentifié.</para>
+                <para>
+                    <firstterm>Access</firstterm> détermine la visibilité des éléments
+                    retournés, "all"(défaut), "public", ou "private". Les éléments non publics ne
+                    seront retournés que si le client est authentifié.
+                </para>
             </listitem>
 
             <listitem>
-                <para><firstterm>Tag</firstterm> fournit un filtre par mots-clés sur les éléments retournés.</para>
+                <para>
+                    <firstterm>Tag</firstterm> fournit un filtre par mots-clés sur les
+                    éléments retournés.
+                </para>
             </listitem>
 
             <listitem>
-                <para><firstterm>Kind</firstterm> détermine un filtre sur la sorte (le type) d'éléments
-                retournés.</para>
+                <para>
+                    <firstterm>Kind</firstterm> détermine un filtre sur la sorte (le type)
+                    d'éléments retournés.
+                </para>
             </listitem>
 
             <listitem>
-                <para><firstterm>ImgMax</firstterm> spécifie un filtre par dimension maximale sur les éléments
-                retournés.</para>
+                <para>
+                    <firstterm>ImgMax</firstterm> spécifie un filtre par dimension maximale
+                    sur les éléments retournés.
+                </para>
             </listitem>
 
             <listitem>
-                <para><firstterm>Thumbsize</firstterm> spécifie un filtre par dimension maximale des miniatures
-                retournées.</para>
+                <para>
+                    <firstterm>Thumbsize</firstterm> spécifie un filtre par dimension maximale
+                    des miniatures retournées.
+                </para>
             </listitem>
 
             <listitem>
-                <para><firstterm>User</firstterm> spécifie l'utilisateur dont les éléments sont recherchés. Par défaut,
-                "default".</para>
+                <para>
+                    <firstterm>User</firstterm> spécifie l'utilisateur dont les éléments sont
+                    recherchés. Par défaut, "default".
+                </para>
             </listitem>
 
             <listitem>
-                <para><firstterm>AlbumId</firstterm> spécifie l'identifiant de l'album recherché. Ceci ne s'applique
-                qu'aux requêtes album et photo. Dans le cas d'une recherche de photo, ceci indique l'album dans lequel
-                effectuer la requête de recherche. Ce paramètre annule et remplace AlbumName, si spécifié.</para>
+                <para>
+                    <firstterm>AlbumId</firstterm> spécifie l'identifiant de l'album
+                    recherché. Ceci ne s'applique qu'aux requêtes album et photo. Dans le cas d'une
+                    recherche de photo, ceci indique l'album dans lequel effectuer la requête de
+                    recherche. Ce paramètre annule et remplace AlbumName, si spécifié.
+                </para>
             </listitem>
 
             <listitem>
-                <para><firstterm>AlbumName</firstterm> spécifie le nom de l'album recherché. Ceci ne s'applique qu'aux
-                requêtes album et photo. Dans le cas d'une recherche de photo, ceci indique l'album dans lequel
-                effectuer la requête de recherche. Ce paramètre annule et remplace AlbumId, si spécifié.</para>
+                <para>
+                    <firstterm>AlbumName</firstterm> spécifie le nom de l'album recherché.
+                    Ceci ne s'applique qu'aux requêtes album et photo. Dans le cas d'une recherche
+                    de photo, ceci indique l'album dans lequel effectuer la requête de recherche. Ce
+                    paramètre annule et remplace AlbumId, si spécifié.
+                </para>
             </listitem>
 
             <listitem>
-                <para><firstterm>PhotoId</firstterm> spécifie l'identifiant de la photo recherchée. Ceci ne s'applique
-                qu'aux requêtes photo.</para>
+                <para>
+                    <firstterm>PhotoId</firstterm> spécifie l'identifiant de la photo
+                    recherchée. Ceci ne s'applique qu'aux requêtes photo.
+                </para>
             </listitem>
         </itemizedlist>
     </sect2>
@@ -293,18 +367,25 @@ $query->setUser("sample.user");
     <sect2 id="zend.gdata.photos.retrieval">
         <title>Récupérer des flux et des éléments</title>
 
-        <para>Le service propose des méthodes de récupération de flux, ou d'éléments simples, concernant les
-        utilisateurs, albums, ou photos.</para>
+        <para>
+            Le service propose des méthodes de récupération de flux, ou d'éléments simples,
+            concernant les utilisateurs, albums, ou photos.
+        </para>
 
         <sect3 id="zend.gdata.photos.user_retrieval">
             <title>Récupérer un utilisateur</title>
 
-            <para>Le service propose de récupérer un utilisateur, et toutes les infos de son flux, comme ses photos, ses
-            albums.... Si le client est authentifié et demande des informations sur son propre compte, alors les
-            éléments marqués comme "<code>hidden</code>" seront aussi retournés.</para>
+            <para>
+                Le service propose de récupérer un utilisateur, et toutes les infos de son
+                flux, comme ses photos, ses albums.... Si le client est authentifié et demande des
+                informations sur son propre compte, alors les éléments marqués comme
+                "<code>hidden</code>" seront aussi retournés.
+            </para>
 
-            <para>Le flux de l'utilisateur est accessible en passant son nom à la méthode <code>getUserFeed</code>
-            :</para>
+            <para>
+                Le flux de l'utilisateur est accessible en passant son nom à la méthode
+                <code>getUserFeed</code> :
+            </para>
 
             <programlisting role="php"><![CDATA[
     $service = Zend_Gdata_Photos::AUTH_SERVICE_NAME;
@@ -335,7 +416,10 @@ try {
 }
 ]]></programlisting>
 
-            <para>Construire une requête donne aussi accès aux éléments d'un utilisateur :</para>
+            <para>
+                Construire une requête donne aussi accès aux éléments d'un utilisateur
+                :
+            </para>
 
             <programlisting role="php"><![CDATA[
     $service = Zend_Gdata_Photos::AUTH_SERVICE_NAME;
@@ -359,8 +443,10 @@ try {
 
             <para>Le service donne accès aux flux d'albums et à leurs contenus.</para>
 
-            <para>Le flux d'albums est disponible en construisant un objet de requête et en le passant à
-            <code>getAlbumFeed</code> :</para>
+            <para>
+                Le flux d'albums est disponible en construisant un objet de requête et en le
+                passant à <code>getAlbumFeed</code> :
+            </para>
 
             <programlisting role="php"><![CDATA[
     $service = Zend_Gdata_Photos::AUTH_SERVICE_NAME;
@@ -378,8 +464,11 @@ try {
 }
 ]]></programlisting>
 
-            <para>L'objet de requête accepte aussi un nom d'album avec <code>setAlbumName</code>. Attention, ceci annule
-            un identifiant d'album éventuellement précédemment spécifié.</para>
+            <para>
+                L'objet de requête accepte aussi un nom d'album avec
+                <code>setAlbumName</code>. Attention, ceci annule un identifiant d'album
+                éventuellement précédemment spécifié.
+            </para>
 
             <para>Construire une requête donne aussi accès au requêtage d'un album :</para>
 
@@ -404,11 +493,15 @@ try {
         <sect3 id="zend.gdata.photos.photo_retrieval">
             <title>Récupérer une Photo</title>
 
-            <para>Le service permet la récupération de flux de photos, et des commentaires et/ou mots-clés
-            associés</para>
+            <para>
+                Le service permet la récupération de flux de photos, et des commentaires et/ou
+                mots-clés associés
+            </para>
 
-            <para>Le flux de photos est accessible en construisant un objet de requête et en le passant à la méthode
-            <code>getPhotoFeed</code> :</para>
+            <para>
+                Le flux de photos est accessible en construisant un objet de requête et en le
+                passant à la méthode <code>getPhotoFeed</code> :
+            </para>
 
             <programlisting role="php"><![CDATA[
     $service = Zend_Gdata_Photos::AUTH_SERVICE_NAME;
@@ -451,11 +544,16 @@ try {
         <sect3 id="zend.gdata.photos.comment_retrieval">
             <title>Récupérer des commentaires</title>
 
-            <para>Vous pouvez récupérer des commentaires depuis des éléments divers de flux. En spécifiant à votre
-            requête un paramètre de "comment", celle-ci retournera les mots-clés associés à la ressource demandée (user,
-            album ou photo)</para>
+            <para>
+                Vous pouvez récupérer des commentaires depuis des éléments divers de flux. En
+                spécifiant à votre requête un paramètre de "comment", celle-ci retournera les
+                mots-clés associés à la ressource demandée (user, album ou photo)
+            </para>
 
-            <para>Voici comment effectuer des actions sur les commentaires récupérés d'une photo :</para>
+            <para>
+                Voici comment effectuer des actions sur les commentaires récupérés d'une photo
+                :
+            </para>
 
             <programlisting role="php"><![CDATA[
     $service = Zend_Gdata_Photos::AUTH_SERVICE_NAME;
@@ -485,10 +583,16 @@ try {
         <sect3 id="zend.gdata.photos.tag_retrieval">
             <title>Récupérer des mots-clés</title>
 
-            <para>Vous pouvez récupérer des mots-clés depuis des éléments divers de flux. En spécifiant à votre requête
-            un paramètre de "tag", celle-ci retournera les mots-clés associés à la ressource demandée.</para>
+            <para>
+                Vous pouvez récupérer des mots-clés depuis des éléments divers de flux. En
+                spécifiant à votre requête un paramètre de "tag", celle-ci retournera les mots-clés
+                associés à la ressource demandée.
+            </para>
 
-            <para>Voici comment effectuer des actions sur les mots-clés récupérés d'une photo :</para>
+            <para>
+                Voici comment effectuer des actions sur les mots-clés récupérés d'une photo
+                :
+            </para>
 
             <programlisting role="php"><![CDATA[
     $service = Zend_Gdata_Photos::AUTH_SERVICE_NAME;
@@ -519,8 +623,10 @@ try {
     <sect2 id="zend.gdata.photos.creation">
         <title>Créer des ressources</title>
 
-        <para>Des opérations de création sont possible, qu'il s'agisse d'albums, photos, commentaires, ou
-        mots-clés.</para>
+        <para>
+            Des opérations de création sont possible, qu'il s'agisse d'albums, photos,
+            commentaires, ou mots-clés.
+        </para>
 
         <sect3 id="zend.gdata.photos.album_creation">
             <title>Créer un album</title>
@@ -542,7 +648,10 @@ $service->insertAlbumEntry($entry);
         <sect3 id="zend.gdata.photos.photo_creation">
             <title>Créer une photo</title>
 
-            <para>Créer une photo est possible pour les clients authentifiés, procédez comme suit :</para>
+            <para>
+                Créer une photo est possible pour les clients authentifiés, procédez comme
+                suit :
+            </para>
 
             <programlisting role="php"><![CDATA[
     $service = Zend_Gdata_Photos::AUTH_SERVICE_NAME;
@@ -571,7 +680,10 @@ $service->insertPhotoEntry($entry, $albumEntry);
         <sect3 id="zend.gdata.photos.comment_creation">
             <title>Créer un commentaire pour une photo</title>
 
-            <para>Il est possible de créer un commentaire pour une photo, voici un exemple :</para>
+            <para>
+                Il est possible de créer un commentaire pour une photo, voici un exemple
+                :
+            </para>
 
             <programlisting role="php"><![CDATA[
     $service = Zend_Gdata_Photos::AUTH_SERVICE_NAME;
@@ -726,13 +838,19 @@ $service->deleteTagEntry($tagEntry, true);
         <sect3 id="zend.gdata.photos.optimistic_concurrenty">
             <title>Gestion des accès concurrents</title>
 
-            <para>Les flux GData, dont ceux de Picasa Web Albums, implémentent un système d'accès concurrent qui empêche
-            les changements avec écrasements par inadvertance. Si vous demandez l'effacement d'une ressource qui a été
-            modifiée depuis votre dernière requête, alors une exception sera levée, sauf si vous demandez le contraire
-            explicitement (dans un tel cas, la procédure d'effacement sera réessayée sur l'élément mis à jour).</para>
-
-            <para>Voici un exemple de gestion des versions et accès concurrent sur un effacement avec
-            <code>deleteAlbumEntry</code>:</para>
+            <para>
+                Les flux GData, dont ceux de Picasa Web Albums, implémentent un système
+                d'accès concurrent qui empêche les changements avec écrasements par inadvertance. Si
+                vous demandez l'effacement d'une ressource qui a été modifiée depuis votre dernière
+                requête, alors une exception sera levée, sauf si vous demandez le contraire
+                explicitement (dans un tel cas, la procédure d'effacement sera réessayée sur
+                l'élément mis à jour).
+            </para>
+
+            <para>
+                Voici un exemple de gestion des versions et accès concurrent sur un effacement
+                avec <code>deleteAlbumEntry</code>:
+            </para>
 
             <programlisting role="php"><![CDATA[
     // $album est l'albumEntry à effacer

+ 278 - 222
documentation/manual/fr/module_specs/Zend_Http_Client-Advanced.xml

@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 12150 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15156 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.http.client.advanced">
     <title>Zend_Http_Client - Utilisation avancée</title>
@@ -7,272 +7,328 @@
     <sect2 id="zend.http.client.redirections">
         <title>Redirections HTTP</title>
 
-        <para>Par défaut, <classname>Zend_Http_Client</classname> gère automatiquement les redirections HTTP, et suivra jusqu'à 5
-        redirections. Ce comportement peut être modifié en changeant le paramètre de configuration
-        "maxredirects".</para>
-
-        <para>Conformément à la RFC HTTP/1.1, les codes réponse HTTP 301 et 302 doivent être traités par le client en
-        envoyant à nouveau la même requête à l'adresse spécifiée - en utilisant la même méthode de requête. Cependant,
-        la plupart des clients ne réagissent pas correctement et redirige toujours via une requête GET. Par défaut,
-        <classname>Zend_Http_Client</classname> agit de même - Lors d'une redirection basée sur la réception d'un code 301 ou 302,
-        tous les paramètres GET et POST sont remis à zéro, et une requête GET est envoyée à la nouvelle adresse. Ce
-        comportement peut être modifié en positionnant le paramètre de configuration "strictredirects" à
-        <code>TRUE</code> : <example id="zend.http.client.redirections.example-1">
-                <title>Forcer des redirections conformes au RFC 2616 lors de la réception d'un code statut 301 and
-                302</title>
-
-                <programlisting role="php"><![CDATA[
-// Redirections strictes
-$client->setConfig(array('strictredirects' => true)
-
-// Redirections non strictes
-$client->setConfig(array('strictredirects' => false)
-]]></programlisting>
-            </example></para>
-
-        <para>Il est toujours possible d'obtenir le nombre de redirections effectuées après l'envoi d'une requête en
-        invoquant la méthode getRedirectionsCount().</para>
+        <para>
+            Par défaut, <classname>Zend_Http_Client</classname> gère automatiquement les
+            redirections HTTP, et suivra jusqu'à 5 redirections. Ce comportement peut être modifié
+            en changeant le paramètre de configuration "maxredirects".
+        </para>
+
+        <para>
+            Conformément à la RFC HTTP/1.1, les codes réponse HTTP 301 et 302 doivent être
+            traités par le client en envoyant à nouveau la même requête à l'adresse spécifiée - en
+            utilisant la même méthode de requête. Cependant, la plupart des clients ne réagissent
+            pas correctement et redirige toujours via une requête GET. Par défaut,
+            <classname>Zend_Http_Client</classname> agit de même - Lors d'une redirection basée sur
+            la réception d'un code 301 ou 302, tous les paramètres GET et POST sont remis à zéro, et
+            une requête GET est envoyée à la nouvelle adresse. Ce comportement peut être modifié en
+            positionnant le paramètre de configuration "strictredirects" à <code>TRUE</code> :
+            <example id="zend.http.client.redirections.example-1">
+                    <title>Forcer des redirections conformes au RFC 2616 lors de la réception d'un
+                    code statut 301 and 302</title>
+    
+                    <programlisting role="php"><![CDATA[
+    // Redirections strictes
+    $client->setConfig(array('strictredirects' => true)
+    
+    // Redirections non strictes
+    $client->setConfig(array('strictredirects' => false)
+    ]]></programlisting>
+                </example>
+            </para>
+
+        <para>
+            Il est toujours possible d'obtenir le nombre de redirections effectuées après
+            l'envoi d'une requête en invoquant la méthode getRedirectionsCount().
+        </para>
     </sect2>
 
     <sect2 id="zend.http.client.cookies">
         <title>Ajout de cookies et gestion de leur persistance</title>
 
-        <para><classname>Zend_Http_Client</classname> fournit une interface simple afin d'ajouter des cookies à une requête de
-        manière à ce qu'aucune modification directe de l'en-tête ne soit nécessaire. Ceci est réalisé via la méthode
-        <code>setCookie()</code>. Cette méthode peut être utilisée de plusieurs manières : <example
-                id="zend.http.client.cookies.example-1">
-                <title>Définition de cookies via setCookie()</title>
-
-                <programlisting role="php"><![CDATA[
-// Simple et facile : en fournissant un nom de cookie et une valeur
-$client->setCookie('parfum', 'pépites de chocolat');
-
-// en fournissant directement une chaîne de cookie encodée (nom=valeur)
-// Notez que la valeur doit être déjà encodée au format URL
-$client->setCookie('parfum=p%C3%A9pites%20de%20chocolat');
-
-// En fournissant un objet Zend_Http_Cookie
-$cookie =
-    Zend_Http_Cookie::fromString('parfum=p%C3%A9pites%20de%20chocolat');
-$client->setCookie($cookie);
-]]></programlisting>
-            </example> Pour plus d'information sur les objets <classname>Zend_Http_Cookie</classname>, voir <xref
-        linkend="zend.http.cookies" />.</para>
-
-        <para><classname>Zend_Http_Client</classname> permet également la persistance des cookies - ce qui permet au client de
-        stocker tous les cookies reçus et transmis, et de les retransmettre automatiquement lors des requêtes suivantes.
-        Cela se révèle très utile lorsqu'il est nécessaire de s'identifier sur un site donné (et de recevoir ainsi un
-        cookie de session) avant de pouvoir envoyer d'autres requêtes. <example id="zend.http.client.cookies.example-2">
-                <title>Activer la persistance des cookies</title>
-
-                <programlisting role="php"><![CDATA[
-// Pour activer la persistance des cookies,
-// définissez un Magasin de cookie "Cookie Jar"
-$client->setCookieJar();
-
-// Première requête : s'identifier et démarrer une session
-$client->setUri('http://exemple.com/login.php');
-$client->setParameterPost('user', 'h4x0r');
-$client->setParameterPost('password', '1337');
-$client->request('POST');
-
-// Le magasin de cookies stocke automatiquement les
-// cookies transmis dans la réponse, un cookie de session par exemple
-
-// Maintenant nous pouvons envoyer notre requête suivante
-// les cookies stockés seront transmis automatiquement.
-$client->setUri('http://exemple.com/lire_actualite_membres.php');
-$client->request('GET');
-]]></programlisting>
-            </example> Pour plus d'information sur la classe <classname>Zend_Http_CookieJar</classname>, voir <xref
-        linkend="zend.http.cookies.cookiejar" />.</para>
+        <para>
+            <classname>Zend_Http_Client</classname> fournit une interface simple afin
+            d'ajouter des cookies à une requête de manière à ce qu'aucune modification directe de
+            l'en-tête ne soit nécessaire. Ceci est réalisé via la méthode <code>setCookie()</code>.
+            Cette méthode peut être utilisée de plusieurs manières : <example
+                    id="zend.http.client.cookies.example-1">
+                    <title>Définition de cookies via setCookie()</title>
+    
+                    <programlisting role="php"><![CDATA[
+    // Simple et facile : en fournissant un nom de cookie et une valeur
+    $client->setCookie('parfum', 'pépites de chocolat');
+    
+    // en fournissant directement une chaîne de cookie encodée (nom=valeur)
+    // Notez que la valeur doit être déjà encodée au format URL
+    $client->setCookie('parfum=p%C3%A9pites%20de%20chocolat');
+    
+    // En fournissant un objet Zend_Http_Cookie
+    $cookie =
+        Zend_Http_Cookie::fromString('parfum=p%C3%A9pites%20de%20chocolat');
+    $client->setCookie($cookie);
+    ]]></programlisting>
+                </example> Pour plus d'information sur les objets
+            <classname>Zend_Http_Cookie</classname>, voir <xref
+            linkend="zend.http.cookies" />.
+        </para>
+
+        <para>
+            <classname>Zend_Http_Client</classname> permet également la persistance des
+            cookies - ce qui permet au client de stocker tous les cookies reçus et transmis, et de
+            les retransmettre automatiquement lors des requêtes suivantes. Cela se révèle très utile
+            lorsqu'il est nécessaire de s'identifier sur un site donné (et de recevoir ainsi un
+            cookie de session) avant de pouvoir envoyer d'autres requêtes. <example
+                    id="zend.http.client.cookies.example-2">
+                    <title>Activer la persistance des cookies</title>
+    
+                    <programlisting role="php"><![CDATA[
+    // Pour activer la persistance des cookies,
+    // définissez un Magasin de cookie "Cookie Jar"
+    $client->setCookieJar();
+    
+    // Première requête : s'identifier et démarrer une session
+    $client->setUri('http://exemple.com/login.php');
+    $client->setParameterPost('user', 'h4x0r');
+    $client->setParameterPost('password', '1337');
+    $client->request('POST');
+    
+    // Le magasin de cookies stocke automatiquement les
+    // cookies transmis dans la réponse, un cookie de session par exemple
+    
+    // Maintenant nous pouvons envoyer notre requête suivante
+    // les cookies stockés seront transmis automatiquement.
+    $client->setUri('http://exemple.com/lire_actualite_membres.php');
+    $client->request('GET');
+    ]]></programlisting>
+                </example> Pour plus d'information sur la classe
+            <classname>Zend_Http_CookieJar</classname>, voir <xref
+            linkend="zend.http.cookies.cookiejar" />.
+        </para>
     </sect2>
 
     <sect2 id="zend.http.client.custom_headers">
         <title>Définir des en-têtes personnalisés</title>
 
-        <para>Il est possible de définir des en-têtes personnalisés en utilisant la méthode <code>setHeaders()</code>.
-        Cette méthode est très versatile et peut être utilisée de diverses manières comme le montre l'exemple suivant :
-        <example id="zend.http.client.custom_headers.example-1">
-                <title>Définir un en-tête personnalisé unique</title>
-
-                <programlisting role="php"><![CDATA[
-// Définition d'un en-tête unique,
-// écrasant toute valeur précédemment définie
-$client->setHeaders('Host', 'www.exemple.com');
-
-// La même chose d'une autre manière
-$client->setHeaders('Host: www.example.com');
-
-// Définition de plusieurs valeurs pour le même en-tête
-// (surtout utile pour les en-têtes de cookies)
-$client->setHeaders('Cookie', array(
-    'PHPSESSID=1234567890abcdef1234567890abcdef',
-    'language=fr'
-));
-]]></programlisting>
-            </example></para>
-
-        <para><code>setHeader()</code> peut aussi être facilement utilisé pour définir des en-têtes multiples en un seul
-        appel, en fournissant un tableau d'en-têtes comme paramètre unique : <example
-                id="zend.http.client.custom_headers.example-2">
-                <title>Définition de plusieurs en-têtes personnalisés</title>
-
-                <programlisting role="php"><![CDATA[
-// Définition de plusieurs en-têtes,
-// écrasant toute valeur précédemment définie
-$client->setHeaders(array(
-    'Host' => 'www.exemple.com',
-    'Accept-encoding' => 'gzip,deflate',
-    'X-Powered-By' => 'Zend Framework'));
-
-// Le tableau peut contenir uniquement des valeurs
-$client->setHeaders(array(
-    'Host: www.exemple.com',
-    'Accept-encoding: gzip,deflate',
-    'X-Powered-By: Zend Framework'));
-]]></programlisting>
-            </example></para>
+        <para>
+            Il est possible de définir des en-têtes personnalisés en utilisant la méthode
+            <code>setHeaders()</code>. Cette méthode est très versatile et peut être utilisée de
+            diverses manières comme le montre l'exemple suivant : <example
+                    id="zend.http.client.custom_headers.example-1">
+                    <title>Définir un en-tête personnalisé unique</title>
+    
+                    <programlisting role="php"><![CDATA[
+    // Définition d'un en-tête unique,
+    // écrasant toute valeur précédemment définie
+    $client->setHeaders('Host', 'www.exemple.com');
+    
+    // La même chose d'une autre manière
+    $client->setHeaders('Host: www.example.com');
+    
+    // Définition de plusieurs valeurs pour le même en-tête
+    // (surtout utile pour les en-têtes de cookies)
+    $client->setHeaders('Cookie', array(
+        'PHPSESSID=1234567890abcdef1234567890abcdef',
+        'language=fr'
+    ));
+    ]]></programlisting>
+                </example>
+            </para>
+
+        <para>
+            <code>setHeader()</code> peut aussi être facilement utilisé pour définir des
+            en-têtes multiples en un seul appel, en fournissant un tableau d'en-têtes comme
+            paramètre unique : <example id="zend.http.client.custom_headers.example-2">
+                    <title>Définition de plusieurs en-têtes personnalisés</title>
+    
+                    <programlisting role="php"><![CDATA[
+    // Définition de plusieurs en-têtes,
+    // écrasant toute valeur précédemment définie
+    $client->setHeaders(array(
+        'Host' => 'www.exemple.com',
+        'Accept-encoding' => 'gzip,deflate',
+        'X-Powered-By' => 'Zend Framework'));
+    
+    // Le tableau peut contenir uniquement des valeurs
+    $client->setHeaders(array(
+        'Host: www.exemple.com',
+        'Accept-encoding: gzip,deflate',
+        'X-Powered-By: Zend Framework'));
+    ]]></programlisting>
+                </example>
+            </para>
     </sect2>
 
     <sect2 id="zend.http.client.file_uploads">
         <title>Envoi de fichiers</title>
 
-        <para>Il est possible d'envoyer des fichiers au travers d'HTTP en utilisant la méthode
-        <code>setFileUpload</code>. Cette méthode attend un nom de fichier comme premier paramètre, un nom de formulaire
-        comme second paramètre, et, en option, des données comme troisième paramètre. Si le troisième paramètre est
-        <code>null</code>, la valeur du premier paramètre est supposée être un fichier sur le disque dur et
-        <classname>Zend_Http_Client</classname> essaiera de lire ce fichier et de l'envoyer. Sinon la valeur du premier paramètre
-        sera envoyée comme nom du fichier mais il n'est pas nécessaire que le fichier existe sur le disque dur. Le
-        deuxième paramètre est toujours requis, et est équivalent à l'attribut "name" d'une balise &lt;input&gt;, si le
-        fichier devait être envoyé à partir d'un formulaire HTML. Un quatrième paramètre optionnel fournit le type du
-        fichier. S'il n'est pas spécifié et que <classname>Zend_Http_Client</classname> lit le fichier à partir du disque dur, la
-        fonction mime_content_type sera utilisée pour tenter de définir, si possible, le type du fichier. Dans tous les
-        cas, le type MIME par défaut sera 'application/octet-stream'. <example
-                id="zend.http.client.file_uploads.example-1">
-                <title>Utilisation de setFileUpload pour envoyer des fichiers</title>
-
-                <programlisting role="php"><![CDATA[
-// Envoi de données arbitraires comme fichier
-$texte = 'ceci est un texte ordinaire';
-$client->setFileUpload('du_texte.txt', 'upload', $texte, 'text/plain');
-
-// envoi d'un fichier existant
-$client->setFileUpload('/tmp/Backup.tar.gz', 'bufile');
-
-// envoi des fichiers
-$client->request('POST');
-]]></programlisting>
-            </example> Dans le premier exemple, la variable $texte est envoyée et sera disponible dans
-        <code>$_FILES['upload']</code> côté serveur. Dans le second exemple, le fichier existant
-        "<filename>/tmp/Backup.tar.gz</filename>" est envoyé au serveur et sera disponible dans
-        <code>$_FILES['bufile']</code>. Son type sera défini automatiquement si possible. Sinon, le type sera défini
-        comme "application/octet-stream".</para>
+        <para>
+            Il est possible d'envoyer des fichiers au travers d'HTTP en utilisant la méthode
+            <code>setFileUpload</code>. Cette méthode attend un nom de fichier comme premier
+            paramètre, un nom de formulaire comme second paramètre, et, en option, des données comme
+            troisième paramètre. Si le troisième paramètre est <code>null</code>, la valeur du
+            premier paramètre est supposée être un fichier sur le disque dur et
+            <classname>Zend_Http_Client</classname> essaiera de lire ce fichier et de l'envoyer.
+            Sinon la valeur du premier paramètre sera envoyée comme nom du fichier mais il n'est pas
+            nécessaire que le fichier existe sur le disque dur. Le deuxième paramètre est toujours
+            requis, et est équivalent à l'attribut "name" d'une balise &lt;input&gt;, si le fichier
+            devait être envoyé à partir d'un formulaire HTML. Un quatrième paramètre optionnel
+            fournit le type du fichier. S'il n'est pas spécifié et que
+            <classname>Zend_Http_Client</classname> lit le fichier à partir du disque dur, la
+            fonction mime_content_type sera utilisée pour tenter de définir, si possible, le type du
+            fichier. Dans tous les cas, le type MIME par défaut sera 'application/octet-stream'.
+            <example id="zend.http.client.file_uploads.example-1">
+                    <title>Utilisation de setFileUpload pour envoyer des fichiers</title>
+    
+                    <programlisting role="php"><![CDATA[
+    // Envoi de données arbitraires comme fichier
+    $texte = 'ceci est un texte ordinaire';
+    $client->setFileUpload('du_texte.txt', 'upload', $texte, 'text/plain');
+    
+    // envoi d'un fichier existant
+    $client->setFileUpload('/tmp/Backup.tar.gz', 'bufile');
+    
+    // envoi des fichiers
+    $client->request('POST');
+    ]]></programlisting>
+                </example> Dans le premier exemple, la variable $texte est envoyée et sera
+            disponible dans <code>$_FILES['upload']</code> côté serveur. Dans le second exemple, le
+            fichier existant "<filename>/tmp/Backup.tar.gz</filename>" est envoyé au serveur et sera
+            disponible dans <code>$_FILES['bufile']</code>. Son type sera défini automatiquement si
+            possible. Sinon, le type sera défini comme "application/octet-stream".
+        </para>
 
         <note>
             <title>Envoi de fichiers</title>
 
-            <para>Lors de l'envoi de fichiers, le type de la requête HTTP est automatiquement défini comme
-            "multipart/form-data". Gardez à l'esprit que vous devez utiliser la méthode POST ou la méthode PUT pour
-            envoyer des fichiers. La plupart des serveurs ignoreront le corps de la requête si vous utilisez une autre
-            méthode.</para>
+            <para>
+                Lors de l'envoi de fichiers, le type de la requête HTTP est automatiquement
+                défini comme "multipart/form-data". Gardez à l'esprit que vous devez utiliser la
+                méthode POST ou la méthode PUT pour envoyer des fichiers. La plupart des serveurs
+                ignoreront le corps de la requête si vous utilisez une autre méthode.
+            </para>
         </note>
     </sect2>
 
     <sect2 id="zend.http.client.raw_post_data">
         <title>Envoyer des données brutes via POST</title>
 
-        <para>Vous pouvez utiliser <classname>Zend_Http_Client</classname> pour envoyer des données brutes via POST en utilisant
-        la méthode <code>setRawData()</code>. Cette méthode accepte deux paramètres : le premier contient les données à
-        transmettre dans le corps de la requête. Le deuxième paramètre, optionnel, contient le type des données. Bien
-        que ce paramètre soit optionnel, vous devriez normalement le définir avant l'envoi de la requête, soit via
-        setRawData() ou via la méthode <code>setEncType()</code>. <example id="zend.http.client.raw_post_data.example-1">
-                <title>Envoi de données brutes via POST</title>
-
-                <programlisting role="php"><![CDATA[
-$xml = '<book>' .
-       '  <title>Islands in the Stream</title>' .
-       '  <author>Ernest Hemingway</author>' .
-       '  <year>1970</year>' .
-       '</book>';
-
-$client->setRawData($xml, 'text/xml')->request('POST');
-
-// Une autre manière de faire la même chose :
-$client->setRawData($xml)->setEncType('text/xml')->request('POST');
-]]></programlisting>
-            </example> Les données seront disponible côté serveur via la variable PHP <code>$HTTP_RAW_POST_DATA</code>
-        ou via le flux php://input.</para>
+        <para>
+            Vous pouvez utiliser <classname>Zend_Http_Client</classname> pour envoyer des
+            données brutes via POST en utilisant la méthode <code>setRawData()</code>. Cette méthode
+            accepte deux paramètres : le premier contient les données à transmettre dans le corps de
+            la requête. Le deuxième paramètre, optionnel, contient le type des données. Bien que ce
+            paramètre soit optionnel, vous devriez normalement le définir avant l'envoi de la
+            requête, soit via setRawData() ou via la méthode <code>setEncType()</code>. <example
+                    id="zend.http.client.raw_post_data.example-1">
+                    <title>Envoi de données brutes via POST</title>
+    
+                    <programlisting role="php"><![CDATA[
+    $xml = '<book>' .
+           '  <title>Islands in the Stream</title>' .
+           '  <author>Ernest Hemingway</author>' .
+           '  <year>1970</year>' .
+           '</book>';
+    
+    $client->setRawData($xml, 'text/xml')->request('POST');
+    
+    // Une autre manière de faire la même chose :
+    $client->setRawData($xml)->setEncType('text/xml')->request('POST');
+    ]]></programlisting>
+                </example> Les données seront disponible côté serveur via la variable PHP
+            <code>$HTTP_RAW_POST_DATA</code> ou via le flux php://input.
+        </para>
 
         <note>
             <title>Utiliser des données brutes POST</title>
 
-            <para>Définir des données brutes POST pour une requête écrasera tout autre paramètre POST ou envoi de
-            fichiers. Il est recommandé de ne pas utiliser les deux conjointement. Gardez à l'esprit que la plupart des
-            serveurs ignoreront le corps de la requête si celle-ci n'utilise pas la méthode POST.</para>
+            <para>
+                Définir des données brutes POST pour une requête écrasera tout autre paramètre
+                POST ou envoi de fichiers. Il est recommandé de ne pas utiliser les deux
+                conjointement. Gardez à l'esprit que la plupart des serveurs ignoreront le corps de
+                la requête si celle-ci n'utilise pas la méthode POST.
+            </para>
         </note>
     </sect2>
 
     <sect2 id="zend.http.client.http_authentication">
         <title>Authentification HTTP</title>
 
-        <para>Actuellement, <classname>Zend_Http_Client</classname> propose uniquement l'authentification HTTP "basic". Cette
-        fonctionnalité est utilisée via la méthode <code>setAuth()</code>. Celle-ci accepte trois paramètres : le nom
-        d'utilisateur, le mot de passe et un type d'authentification optionnel. Comme mentionné, seule
-        l'authentification "basic" est actuellement implémentée (l'ajout de l'authentification "digest" est planifié).
-        <example id="zend.http.client.http_authentication.example-1">
-                <title>Définir nom d'utilisateur et mot de passe pour l'authentification HTTP</title>
-
-                <programlisting role="php"><![CDATA[
-// Utilisation de l'authentification 'basic'
-$client->setAuth('shahar',
-                 'monMotdePasse!',
-                 Zend_Http_Client::AUTH_BASIC);
-
-// L'authentification 'basic' étant le comportement par défaut,
-// on peut aussi écrire ceci :
-$client->setAuth('shahar', 'monMotdePasse!');
-]]></programlisting>
-            </example></para>
+        <para>
+            Actuellement, <classname>Zend_Http_Client</classname> propose uniquement
+            l'authentification HTTP "basic". Cette fonctionnalité est utilisée via la méthode
+            <code>setAuth()</code>. Celle-ci accepte trois paramètres : le nom d'utilisateur, le mot
+            de passe et un type d'authentification optionnel. Comme mentionné, seule
+            l'authentification "basic" est actuellement implémentée (l'ajout de l'authentification
+            "digest" est planifié). <example id="zend.http.client.http_authentication.example-1">
+                    <title>Définir nom d'utilisateur et mot de passe pour l'authentification
+                    HTTP</title>
+    
+                    <programlisting role="php"><![CDATA[
+    // Utilisation de l'authentification 'basic'
+    $client->setAuth('shahar',
+                     'monMotdePasse!',
+                     Zend_Http_Client::AUTH_BASIC);
+    
+    // L'authentification 'basic' étant le comportement par défaut,
+    // on peut aussi écrire ceci :
+    $client->setAuth('shahar', 'monMotdePasse!');
+    ]]></programlisting>
+                </example>
+            </para>
     </sect2>
 
     <sect2 id="zend.http.client.multiple_requests">
         <title>Envoyer plusieurs requêtes avec le même client</title>
 
-        <para><classname>Zend_Http_Client</classname> a été également conçu spécifiquement pour gérer plusieurs requêtes
-        consécutives avec la même instance. Ceci est utile dans les cas ou le script nécessite d'accéder à des données
-        en provenance de divers emplacements ou, par exemple, lors de l'accès à des ressources HTTP nécessitant une
-        authentification préalable.</para>
-
-        <para>Lorsqu'on génère plusieurs requêtes vers le même hôte, il est chaudement recommandé d'activer la variable
-        de configuration "keepalive". De cette manière, si le serveur supporte le mode de connexion "keep-alive", la
-        connexion au serveur sera fermée après l'exécution de toutes les requêtes et la destruction de l'instance. Ceci
-        permet d'éviter au serveur d'ouvrir et de fermer de multiples connexions TCP.</para>
-
-        <para>Lorsqu'on génère plusieurs requêtes avec le même client, mais qu'on souhaite s'assurer que tous les
-        paramètres spécifiques de chacune des requêtes sont effacés, on peut utiliser la méthode
-        <code>resetParameters()</code>. Ceci permet de supprimer tous les paramètres GET et POST, le contenu des
-        requêtes et les en-têtes spécifiques de manière à ce qu'ils ne soient pas réutilisés lors de la requête
-        suivante.</para>
+        <para>
+            <classname>Zend_Http_Client</classname> a été également conçu spécifiquement pour
+            gérer plusieurs requêtes consécutives avec la même instance. Ceci est utile dans les cas
+            ou le script nécessite d'accéder à des données en provenance de divers emplacements ou,
+            par exemple, lors de l'accès à des ressources HTTP nécessitant une authentification
+            préalable.
+        </para>
+
+        <para>
+            Lorsqu'on génère plusieurs requêtes vers le même hôte, il est chaudement
+            recommandé d'activer la variable de configuration "keepalive". De cette manière, si le
+            serveur supporte le mode de connexion "keep-alive", la connexion au serveur sera fermée
+            après l'exécution de toutes les requêtes et la destruction de l'instance. Ceci permet
+            d'éviter au serveur d'ouvrir et de fermer de multiples connexions TCP.
+        </para>
+
+        <para>
+            Lorsqu'on génère plusieurs requêtes avec le même client, mais qu'on souhaite
+            s'assurer que tous les paramètres spécifiques de chacune des requêtes sont effacés, on
+            peut utiliser la méthode <code>resetParameters()</code>. Ceci permet de supprimer tous
+            les paramètres GET et POST, le contenu des requêtes et les en-têtes spécifiques de
+            manière à ce qu'ils ne soient pas réutilisés lors de la requête suivante.
+        </para>
 
         <note>
             <title>Réinitialiser les paramètres</title>
 
-            <para>Notez que les en-têtes spécifiques non liés à la requête ne sont pas réinitialisés quand la méthode
-            <code>resetParameters</code> est invoquée. En fait, seuls les en-têtes "Content-length" et "Content-type"
-            sont supprimés. Ceci permet de définir une seule fois les en-têtes comme "Accept-language" ou
-            "Accept-encoding".</para>
+            <para>
+                Notez que les en-têtes spécifiques non liés à la requête ne sont pas
+                réinitialisés quand la méthode <code>resetParameters</code> est invoquée. En fait,
+                seuls les en-têtes "Content-length" et "Content-type" sont supprimés. Ceci permet de
+                définir une seule fois les en-têtes comme "Accept-language" ou
+                "Accept-encoding".
+            </para>
         </note>
 
-        <para>Une autre fonctionnalité spécifique aux requêtes consécutives est l'objet Magasin de Cookies ("Cookie
-        Jar"). Il permet de sauver automatiquement les cookies définis par le serveur lors de la première requête et de
-        les renvoyer de manière transparente lors de chacune des requêtes suivantes. Ceci permet, par exemple, de passer
-        une étape d'authentification avant d'envoyer d'autres requêtes.</para>
-
-        <para>Si votre application nécessite une requête d'authentification par utilisateur, et que d'autres requêtes
-        peuvent être effectuées via plusieurs scripts différents, il peut se révéler pratique de stocker le Magasin de
-        cookies dans la session utilisateur. De cette manière, il sera possible de ne s'identifier qu'une seule fois par
-        session.</para>
+        <para>
+            Une autre fonctionnalité spécifique aux requêtes consécutives est l'objet Magasin
+            de Cookies ("Cookie Jar"). Il permet de sauver automatiquement les cookies définis par
+            le serveur lors de la première requête et de les renvoyer de manière transparente lors
+            de chacune des requêtes suivantes. Ceci permet, par exemple, de passer une étape
+            d'authentification avant d'envoyer d'autres requêtes.
+        </para>
+
+        <para>
+            Si votre application nécessite une requête d'authentification par utilisateur, et
+            que d'autres requêtes peuvent être effectuées via plusieurs scripts différents, il peut
+            se révéler pratique de stocker le Magasin de cookies dans la session utilisateur. De
+            cette manière, il sera possible de ne s'identifier qu'une seule fois par session.
+        </para>
 
         <example id="zend.http.client.multiple_requests.example-1">
             <title>Exécuter plusieurs requêtes avec un seul client</title>

+ 258 - 225
documentation/manual/fr/module_specs/Zend_Http_Client.xml

@@ -1,259 +1,292 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13623 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15156 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.http.client">
     <title>Introduction</title>
 
-    <para><classname>Zend_Http_Client</classname> fournit une interface qui permet d'utiliser le protocole HTTP (Hyper-Text
-    Transfer Protocol). <classname>Zend_Http_Client</classname> supporte les fonctionnalités de base d'un client HTTP, ainsi que
-    des fonctionnalités plus avancées, comme l'authentification ou l'upload de fichiers. Toutes les requêtes retournent
-    un objet Zend_Http_Response, avec lequel on pourra accéder au corps ou aux en-têtes de la réponse HTTP (voyez <xref
-    linkend="zend.http.response" />).</para>
+    <para>
+        <classname>Zend_Http_Client</classname> fournit une interface qui permet d'utiliser le
+        protocole HTTP (Hyper-Text Transfer Protocol). <classname>Zend_Http_Client</classname>
+        supporte les fonctionnalités de base d'un client HTTP, ainsi que des fonctionnalités plus
+        avancées, comme l'authentification ou l'upload de fichiers. Toutes les requêtes retournent
+        un objet Zend_Http_Response, avec lequel on pourra accéder au corps ou aux en-têtes de la
+        réponse HTTP (voyez <xref linkend="zend.http.response" />).
+    </para>
 
     <sect2 id="zend.http.client.introduction">
         <title>Utilisation de Zend_Http_Client</title>
 
-        <para>Le constructeur de classe accepte deux paramètres : l'URI (ou un objet
-        <code><classname>Zend_Uri_Http</classname></code>), et un tableau de configuration. Ils peuvent aussi être définis avec
-        des méthodes plus tard : <code>setUri()</code> et <code>setConfig()</code>. <example
-                id="zend.http.client.introduction.example-1">
-                <title>Instanciation d'un objet Zend_Http_Client</title>
-
-                <programlisting role="php"><![CDATA[
-$client = new Zend_Http_Client('http://example.org', array(
-    'maxredirects' => 0,
-    'timeout'      => 30));
-
-// OU
-$client = new Zend_Http_Client();
-$client->setUri('http://example.org');
-$client->setConfig(array(
-    'maxredirects' => 0,
-    'timeout'      => 30));
-]]></programlisting>
-            </example></para>
+        <para>
+            Le constructeur de classe accepte deux paramètres : l'URI (ou un objet
+            <code><classname>Zend_Uri_Http</classname></code>), et un tableau de configuration. Ils
+            peuvent aussi être définis avec des méthodes plus tard : <code>setUri()</code> et
+            <code>setConfig()</code>. <example id="zend.http.client.introduction.example-1">
+                    <title>Instanciation d'un objet Zend_Http_Client</title>
+    
+                    <programlisting role="php"><![CDATA[
+    $client = new Zend_Http_Client('http://example.org', array(
+        'maxredirects' => 0,
+        'timeout'      => 30));
+    
+    // OU
+    $client = new Zend_Http_Client();
+    $client->setUri('http://example.org');
+    $client->setConfig(array(
+        'maxredirects' => 0,
+        'timeout'      => 30));
+    ]]></programlisting>
+                </example>
+            </para>
 
         <note>
-            <para><classname>Zend_Http_Client</classname> utilise <classname>Zend_Uri_Http</classname> pour valider les URLs. Ce qui veut
-            dire que certains caractères comme les pipes ("|") ou le symbole "^" ne seront pas acceptés par défaut dans
-            les URLs. Ceci peut être modifié par le réglage de l'option "allow_unwise" de <classname>Zend_Uri</classname> à
-            <code>true</code>. Voir <xref linkend="zend.uri.validation.allowunwise" /> pour de plus amples
-            informations.</para>
+            <para>
+                <classname>Zend_Http_Client</classname> utilise
+                <classname>Zend_Uri_Http</classname> pour valider les URLs. Ce qui veut dire que
+                certains caractères comme les pipes ("|") ou le symbole "^" ne seront pas acceptés
+                par défaut dans les URLs. Ceci peut être modifié par le réglage de l'option
+                "allow_unwise" de <classname>Zend_Uri</classname> à <code>true</code>. Voir <xref
+                linkend="zend.uri.validation.allowunwise" /> pour de plus amples
+                informations.
+            </para>
         </note>
     </sect2>
 
     <sect2 id="zend.http.client.configuration">
         <title>Les paramètres de configuration</title>
 
-        <para>Le constructeur et <code>setConfig()</code> acceptent un tableau associatif de paramètre de configuration.
-        Fixer ces paramètres est optionnel, ils ont tous une valeur par défaut. <table
-                id="zend.http.client.configuration.table">
-                <title>Zend_Http_Client : paramètres de configuration</title>
-
-                <tgroup cols="4">
-                    <thead>
-                        <row>
-                            <entry>Paramètre</entry>
-
-                            <entry>Description</entry>
-
-                            <entry>Valeur attendue</entry>
-
-                            <entry>Valeur par défaut</entry>
-                        </row>
-                    </thead>
-
-                    <tbody>
-                        <row>
-                            <entry>maxredirects</entry>
-
-                            <entry>Nombre maximum de redirections à suivre (0 = aucune)</entry>
-
-                            <entry>entier</entry>
-
-                            <entry>5</entry>
-                        </row>
-
-                        <row>
-                            <entry>strict</entry>
-
-                            <entry>Validation faite ou non sur les noms d'en-têtes. Si à <code>false</code>, des
-                            fonctions de validation n'interviendront pas. Habituellement ceci ne devrait pas être
-                            changé</entry>
-
-                            <entry>booléen</entry>
-
-                            <entry><code>true</code></entry>
-                        </row>
-
-                        <row>
-                            <entry>strictredirects</entry>
-
-                            <entry>Est ce que le client doit suivre strictement les redirections selon la RFC2616 ?
-                            (voyez <xref linkend="zend.http.client.redirections" />)</entry>
-
-                            <entry>booléen</entry>
-
-                            <entry><code>false</code></entry>
-                        </row>
-
-                        <row>
-                            <entry>useragent</entry>
-
-                            <entry>La chaîne User Agent du client (envoyée en en-tête de requête)</entry>
-
-                            <entry>chaîne</entry>
-
-                            <entry>'Zend_Http_Client'</entry>
-                        </row>
-
-                        <row>
-                            <entry>timeout</entry>
-
-                            <entry>Connexion timeout (secondes)</entry>
-
-                            <entry>entier</entry>
-
-                            <entry>10</entry>
-                        </row>
-
-                        <row>
-                            <entry>httpversion</entry>
-
-                            <entry>Version du protocole HTTP à utiliser ('1.1', '1.0' ou '0.9')</entry>
-
-                            <entry>chaîne</entry>
-
-                            <entry>'1.1'</entry>
-                        </row>
-
-                        <row>
-                            <entry>adapter</entry>
-
-                            <entry>Classe adaptateur à utiliser (voyez <xref
-                            linkend="zend.http.client.adapters" />)</entry>
-
-                            <entry>mixed</entry>
-
-                            <entry>'Zend_Http_Client_Adapter_Socket'</entry>
-                        </row>
-
-                        <row>
-                            <entry>keepalive</entry>
-
-                            <entry>Utilisation du pipelining HTTP (connexion ouverte après déconnexion du
-                            client)</entry>
-
-                            <entry>booléen</entry>
-
-                            <entry><code>false</code></entry>
-                        </row>
-
-                        <row>
-                            <entry>storeresponse</entry>
-
-                            <entry>Stockage ou non de la dernière réponse pour une récupération ultérieure avec
-                            <code>getLastResponse()</code>. Si réglez à <code>false</code>,
-                            <code>getLastResponse()</code> retournera <code>null</code>.</entry>
-
-                            <entry>booléen</entry>
-
-                            <entry><code>true</code></entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </table></para>
+        <para>
+            Le constructeur et <code>setConfig()</code> acceptent un tableau associatif de
+            paramètre de configuration. Fixer ces paramètres est optionnel, ils ont tous une valeur
+            par défaut. <table id="zend.http.client.configuration.table">
+                    <title>Zend_Http_Client : paramètres de configuration</title>
+    
+                    <tgroup cols="4">
+                        <thead>
+                            <row>
+                                <entry>Paramètre</entry>
+    
+                                <entry>Description</entry>
+    
+                                <entry>Valeur attendue</entry>
+    
+                                <entry>Valeur par défaut</entry>
+                            </row>
+                        </thead>
+    
+                        <tbody>
+                            <row>
+                                <entry>maxredirects</entry>
+    
+                                <entry>Nombre maximum de redirections à suivre (0 = aucune)</entry>
+    
+                                <entry>entier</entry>
+    
+                                <entry>5</entry>
+                            </row>
+    
+                            <row>
+                                <entry>strict</entry>
+    
+                                <entry>Validation faite ou non sur les noms d'en-têtes. Si à
+                                <code>false</code>, des fonctions de validation n'interviendront
+                                pas. Habituellement ceci ne devrait pas être changé</entry>
+    
+                                <entry>booléen</entry>
+    
+                                <entry><code>true</code></entry>
+                            </row>
+    
+                            <row>
+                                <entry>strictredirects</entry>
+    
+                                <entry>Est ce que le client doit suivre strictement les redirections
+                                selon la RFC2616 ? (voyez <xref
+                                linkend="zend.http.client.redirections" />)</entry>
+    
+                                <entry>booléen</entry>
+    
+                                <entry><code>false</code></entry>
+                            </row>
+    
+                            <row>
+                                <entry>useragent</entry>
+    
+                                <entry>La chaîne User Agent du client (envoyée en en-tête de
+                                requête)</entry>
+    
+                                <entry>chaîne</entry>
+    
+                                <entry>'Zend_Http_Client'</entry>
+                            </row>
+    
+                            <row>
+                                <entry>timeout</entry>
+    
+                                <entry>Connexion timeout (secondes)</entry>
+    
+                                <entry>entier</entry>
+    
+                                <entry>10</entry>
+                            </row>
+    
+                            <row>
+                                <entry>httpversion</entry>
+    
+                                <entry>Version du protocole HTTP à utiliser ('1.1', '1.0' ou
+                                '0.9')</entry>
+    
+                                <entry>chaîne</entry>
+    
+                                <entry>'1.1'</entry>
+                            </row>
+    
+                            <row>
+                                <entry>adapter</entry>
+    
+                                <entry>Classe adaptateur à utiliser (voyez <xref
+                                linkend="zend.http.client.adapters" />)</entry>
+    
+                                <entry>mixed</entry>
+    
+                                <entry>'Zend_Http_Client_Adapter_Socket'</entry>
+                            </row>
+    
+                            <row>
+                                <entry>keepalive</entry>
+    
+                                <entry>Utilisation du pipelining HTTP (connexion ouverte après
+                                déconnexion du client)</entry>
+    
+                                <entry>booléen</entry>
+    
+                                <entry><code>false</code></entry>
+                            </row>
+    
+                            <row>
+                                <entry>storeresponse</entry>
+    
+                                <entry>Stockage ou non de la dernière réponse pour une récupération
+                                ultérieure avec <code>getLastResponse()</code>. Si réglez à
+                                <code>false</code>, <code>getLastResponse()</code> retournera
+                                <code>null</code>.</entry>
+    
+                                <entry>booléen</entry>
+    
+                                <entry><code>true</code></entry>
+                            </row>
+                        </tbody>
+                    </tgroup>
+                </table>
+            </para>
     </sect2>
 
     <sect2 id="zend.http.client.basic-requests">
         <title>Utilisation basique</title>
 
-        <para>Exécuter des requêtes HTTP basiques est très simple grâce à la méthode <code>request()</code>, et ceci
-        nécessite rarement plus d'une ligne de code : <example id="zend.http.client.basic-requests.example-1">
-                <title>Requête GET simple</title>
-
-                <programlisting role="php"><![CDATA[
-$client = new Zend_Http_Client('http://example.org');
-$response = $client->request();
-]]></programlisting>
-            </example> La méthode <code>request()</code> accepte un paramètre optionnel définissant la méthode HTTP, -
-        GET, POST, PUT, HEAD, DELETE, TRACE, OPTIONS ou CONNECT - comme définies dans la RFC 2616 concernant le
-        protocole HTTP <footnote>
-                <para>Voyez la RFC 2616 - <ulink url="http://www.w3.org/Protocols/rfc2616/rfc2616.html"></ulink>.</para>
-            </footnote>. Ces méthodes HTTP sont aussi définies en tant que constantes de classe, Zend_Http_Request::GET,
-        Zend_Http_Request::POST, etc...</para>
-
-        <para>Si aucune méthode de requêtage HTTP n'est définie, alors la dernière utilisée via <code>setMethod()</code>
-        sera utilisée. Si <code>setMethod()</code> n'a jamais été appelée, GET est alors utilisée par défaut. <example
-                id="zend.http.client.basic-requests.example-2">
-                <title>Requêtes d'autres types que GET</title>
-
-                <programlisting role="php"><![CDATA[
-// requête POST
-$response = $client->request('POST');
-
-// autre manière de faire :
-$client->setMethod(Zend_Http_Client::POST);
-$response = $client->request();
-]]></programlisting>
-            </example></para>
+        <para>
+            Exécuter des requêtes HTTP basiques est très simple grâce à la méthode
+            <code>request()</code>, et ceci nécessite rarement plus d'une ligne de code : <example
+                    id="zend.http.client.basic-requests.example-1">
+                    <title>Requête GET simple</title>
+    
+                    <programlisting role="php"><![CDATA[
+    $client = new Zend_Http_Client('http://example.org');
+    $response = $client->request();
+    ]]></programlisting>
+                </example> La méthode <code>request()</code> accepte un paramètre optionnel
+            définissant la méthode HTTP, - GET, POST, PUT, HEAD, DELETE, TRACE, OPTIONS ou CONNECT -
+            comme définies dans la RFC 2616 concernant le protocole HTTP <footnote>
+                <para>
+                    Voyez la RFC 2616 - <ulink
+                    url="http://www.w3.org/Protocols/rfc2616/rfc2616.html"></ulink>.
+                </para>
+            </footnote>. Ces méthodes HTTP sont aussi définies en tant que constantes de classe,
+            Zend_Http_Request::GET, Zend_Http_Request::POST, etc...
+        </para>
+
+        <para>
+            Si aucune méthode de requêtage HTTP n'est définie, alors la dernière utilisée via
+            <code>setMethod()</code> sera utilisée. Si <code>setMethod()</code> n'a jamais été
+            appelée, GET est alors utilisée par défaut. <example
+                    id="zend.http.client.basic-requests.example-2">
+                    <title>Requêtes d'autres types que GET</title>
+    
+                    <programlisting role="php"><![CDATA[
+    // requête POST
+    $response = $client->request('POST');
+    
+    // autre manière de faire :
+    $client->setMethod(Zend_Http_Client::POST);
+    $response = $client->request();
+    ]]></programlisting>
+                </example>
+            </para>
     </sect2>
 
     <sect2 id="zend.http.client.parameters">
         <title>Ajouts de paramètres GET et POST</title>
 
-        <para>Ajouter des paramètres GET à la requête HTTP est très simple. Vous pouvez les ajouter en tant que partie
-        de l'URL désirée, ou en utilisant la méthode <code>setParameterGet()</code>. Celle-ci prend en premier paramètre
-        le nom du paramètre GET, et en second sa valeur. Un tableau associatif peut aussi être utilisé. <example
-                id="zend.http.client.parameters.example-1">
-                <title>Ajouts de paramètres GET</title>
-
-                <programlisting role="php"><![CDATA[
-// Avec la méthode setParameterGet
-$client->setParameterGet('knight', 'lancelot');
-
-// Ce qui est équivalent à :
-$client->setUri('http://example.com/index.php?knight=lancelot');
-
-// Ajout de plusieurs paramètres en un appel
-$client->setParameterGet(array(
-    'first_name'  => 'Bender',
-    'middle_name' => 'Bending'
-    'made_in'     => 'Mexico',
-));
-]]></programlisting>
-            </example></para>
-
-        <para>Coté POST, c'est très similaire à GET, sauf que les paramètres POST doivent faire partie du corps de la
-        requête. Il n'est donc pas possible de les ajouter dans l'URL. Utilisez simplement
-        <code>setParameterPost()</code> de la même manière que sa soeur <code>setParameterGet()</code>. <example
-                id="zend.http.client.parameters.example-2">
-                <title>Ajout de paramètres POST</title>
-
-                <programlisting role="php"><![CDATA[
-// passage de paramètre POST simple
-$client->setParameterPost('language', 'fr');
-
-// Plusieurs paramètres, dont un avec plusieurs valeurs
-$client->setParameterPost(array(
-    'language'  => 'es',
-    'country'   => 'ar',
-    'selection' => array(45, 32, 80)
-));
-]]></programlisting>
-            </example> Notez qu'en plus de paramètres POST, vous pouvez ajouter des paramètres GET à une requête POST.
-        Le contraire n'est pas possible, ainsi les paramètres POST ajoutés à une requête GET seront acceptés certes,
-        mais ignorés.</para>
+        <para>
+            Ajouter des paramètres GET à la requête HTTP est très simple. Vous pouvez les
+            ajouter en tant que partie de l'URL désirée, ou en utilisant la méthode
+            <code>setParameterGet()</code>. Celle-ci prend en premier paramètre le nom du paramètre
+            GET, et en second sa valeur. Un tableau associatif peut aussi être utilisé. <example
+                    id="zend.http.client.parameters.example-1">
+                    <title>Ajouts de paramètres GET</title>
+    
+                    <programlisting role="php"><![CDATA[
+    // Avec la méthode setParameterGet
+    $client->setParameterGet('knight', 'lancelot');
+    
+    // Ce qui est équivalent à :
+    $client->setUri('http://example.com/index.php?knight=lancelot');
+    
+    // Ajout de plusieurs paramètres en un appel
+    $client->setParameterGet(array(
+        'first_name'  => 'Bender',
+        'middle_name' => 'Bending'
+        'made_in'     => 'Mexico',
+    ));
+    ]]></programlisting>
+                </example>
+            </para>
+
+        <para>
+            Coté POST, c'est très similaire à GET, sauf que les paramètres POST doivent faire
+            partie du corps de la requête. Il n'est donc pas possible de les ajouter dans l'URL.
+            Utilisez simplement <code>setParameterPost()</code> de la même manière que sa soeur
+            <code>setParameterGet()</code>. <example id="zend.http.client.parameters.example-2">
+                    <title>Ajout de paramètres POST</title>
+    
+                    <programlisting role="php"><![CDATA[
+    // passage de paramètre POST simple
+    $client->setParameterPost('language', 'fr');
+    
+    // Plusieurs paramètres, dont un avec plusieurs valeurs
+    $client->setParameterPost(array(
+        'language'  => 'es',
+        'country'   => 'ar',
+        'selection' => array(45, 32, 80)
+    ));
+    ]]></programlisting>
+                </example> Notez qu'en plus de paramètres POST, vous pouvez ajouter des paramètres
+            GET à une requête POST. Le contraire n'est pas possible, ainsi les paramètres POST
+            ajoutés à une requête GET seront acceptés certes, mais ignorés.
+        </para>
     </sect2>
 
     <sect2 id="zend.http.client.accessing_last">
         <title>Accéder à la dernière requête, ou réponse</title>
 
-        <para><classname>Zend_Http_Client</classname> fournit un moyen d'accéder à la dernière requête qu'il a effectuée, ainsi
-        qu'à la dernière réponse qu'il a reçue. <classname>Zend_Http_Client-&gt;getLastRequest()</classname> ne prends pas de
-        paramètres et retourne la dernière requête sous forme de chaîne de caractères.
-        <classname>Zend_Http_Client-&gt;getLastResponse()</classname> retourne elle la dernière réponse, mais sous forme d'objet
-        <link linkend="zend.http.response">Zend_Http_Response</link>.</para>
+        <para>
+            <classname>Zend_Http_Client</classname> fournit un moyen d'accéder à la dernière
+            requête qu'il a effectuée, ainsi qu'à la dernière réponse qu'il a reçue.
+            <classname>Zend_Http_Client-&gt;getLastRequest()</classname> ne prends pas de paramètres
+            et retourne la dernière requête sous forme de chaîne de caractères.
+            <classname>Zend_Http_Client-&gt;getLastResponse()</classname> retourne elle la dernière
+            réponse, mais sous forme d'objet <link
+            linkend="zend.http.response">Zend_Http_Response</link>.
+        </para>
     </sect2>
 </sect1>
 <!--

+ 340 - 209
documentation/manual/fr/module_specs/Zend_Http_Cookie-Handling.xml

@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13910 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15156 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.http.cookies">
     <title>Zend_Http_Cookie and Zend_Http_CookieJar</title>
@@ -7,33 +7,48 @@
     <sect2 id="zend.http.cookies.introduction">
         <title>Introduction</title>
 
-        <para><classname>Zend_Http_Cookie</classname>, comme son nom l'indique, est une classe qui représente un cookie HTTP. Elle
-        propose des méthodes d'analyse de la chaîne de réponse HTTP, de collection des cookies, et d'accès à leurs
-        propriétés. Il est aussi possible avec cette classe de vérifier si les paramètres d'un cookie correspondent à un
-        scénario précis, par exemple une URL spécifique, un certain temps d'expiration, la présence ou non de HTTPS,
-        etc...</para>
-
-        <para><classname>Zend_Http_CookieJar</classname> est un objet utilisé en général avec <classname>Zend_Http_Client</classname> pour
-        fournir une collection d'objets <classname>Zend_Http_Cookie</classname>. L'idée principale est d'attacher un objet
-        <classname>Zend_Http_CookieJar</classname> à un objet <classname>Zend_Http_Client</classname>, de manière à ce que toutes les
-        requêtes de celui-ci utilisent les cookies présents dans l'objet <code>CookieJar</code>. Ainsi, lorsque le
-        client enverra une autre requête, il demandera à l'objet <code>CookieJar</code> tous les cookies concernant
-        cette requête. Ceci est très pratique dans des cas comme envoyer un cookie de session entre plusieurs requêtes
-        HTTP successives. De plus, l'objet <classname>Zend_Http_CookieJar</classname> peut être sérialisé et mis en
-        session.</para>
+        <para>
+            <classname>Zend_Http_Cookie</classname>, comme son nom l'indique, est une classe
+            qui représente un cookie HTTP. Elle propose des méthodes d'analyse de la chaîne de
+            réponse HTTP, de collection des cookies, et d'accès à leurs propriétés. Il est aussi
+            possible avec cette classe de vérifier si les paramètres d'un cookie correspondent à un
+            scénario précis, par exemple une URL spécifique, un certain temps d'expiration, la
+            présence ou non de HTTPS, etc...
+        </para>
+
+        <para>
+            <classname>Zend_Http_CookieJar</classname> est un objet utilisé en général avec
+            <classname>Zend_Http_Client</classname> pour fournir une collection d'objets
+            <classname>Zend_Http_Cookie</classname>. L'idée principale est d'attacher un objet
+            <classname>Zend_Http_CookieJar</classname> à un objet
+            <classname>Zend_Http_Client</classname>, de manière à ce que toutes les requêtes de
+            celui-ci utilisent les cookies présents dans l'objet <code>CookieJar</code>. Ainsi,
+            lorsque le client enverra une autre requête, il demandera à l'objet
+            <code>CookieJar</code> tous les cookies concernant cette requête. Ceci est très pratique
+            dans des cas comme envoyer un cookie de session entre plusieurs requêtes HTTP
+            successives. De plus, l'objet <classname>Zend_Http_CookieJar</classname> peut être
+            sérialisé et mis en session.
+        </para>
     </sect2>
 
     <sect2 id="zend.http.cookies.cookie.instantiating">
         <title>Instancier des objets Zend_Http_Cookie</title>
 
-        <para>L'instanciation se fait de deux manières différentes : <itemizedlist>
-                <listitem>
-                    <para>Via son constructeur, de cette façon : <code>new Zend_Http_Cookie(string $name, string $value,
-                    string $domain, [int $expires, [string $path, [boolean $secure]]]);</code></para>
+        <para>
+            L'instanciation se fait de deux manières différentes : <itemizedlist>
+                    <listitem>
+                    <para>
+                        Via son constructeur, de cette façon : <code>new
+                        Zend_Http_Cookie(string $name, string $value, string $domain, [int $expires,
+                        [string $path, [boolean $secure]]]);</code>
+                    </para>
 
                     <itemizedlist>
                         <listitem>
-                            <para><code>$name</code>: Nom du cookie (par ex. "PHPSESSID") (requis)</para>
+                            <para>
+                                <code>$name</code>: Nom du cookie (par ex. "PHPSESSID")
+                                (requis)
+                            </para>
                         </listitem>
 
                         <listitem>
@@ -41,34 +56,47 @@
                         </listitem>
 
                         <listitem>
-                            <para><code>$domain</code>: Le domaine de validité du cookie (par ex. ".example.com")
-                            (requis)</para>
+                            <para>
+                                <code>$domain</code>: Le domaine de validité du cookie (par
+                                ex. ".example.com") (requis)
+                            </para>
                         </listitem>
 
                         <listitem>
-                            <para><code>$expires</code>: Temps d'expiration du cookie, un timestamp UNIX (optionnel,
-                            défaut à <code>null</code>). Si non fourni, le cookie sera considéré comme "cookie de
-                            session", avec pas de temps d'expiration.</para>
+                            <para>
+                                <code>$expires</code>: Temps d'expiration du cookie, un
+                                timestamp UNIX (optionnel, défaut à <code>null</code>). Si non
+                                fourni, le cookie sera considéré comme "cookie de session", avec pas
+                                de temps d'expiration.
+                            </para>
                         </listitem>
 
                         <listitem>
-                            <para><code>$path</code>: Chemin de validité du cookie, par ex. "/foo/bar/" (optionnel,
-                            défaut : "/")</para>
+                            <para>
+                                <code>$path</code>: Chemin de validité du cookie, par ex.
+                                "/foo/bar/" (optionnel, défaut : "/")
+                            </para>
                         </listitem>
 
                         <listitem>
-                            <para><code>$secure</code>: Booléen, Si le cookie doit être transmis via connexion sécurisée
-                            (HTTPS) uniquement (optionnel, défaut à <code>FALSE</code>)</para>
+                            <para>
+                                <code>$secure</code>: Booléen, Si le cookie doit être transmis
+                                via connexion sécurisée (HTTPS) uniquement (optionnel, défaut à
+                                <code>FALSE</code>)
+                            </para>
                         </listitem>
                     </itemizedlist>
                 </listitem>
 
                 <listitem>
-                    <para>En appelant la méthode statique <code>fromString()</code>, avec une chaîne de caractères
-                    représentant un cookie tel que défini dans les en-têtes HTTP "Set-Cookie" (réponse) ou "Cookie"
-                    (requête). Dans ce cas la valeur du cookie doit être encodée. Lorsque la chaîne de caractères
-                    représentant un cookie ne comporte pas de partie "domain", vous devez fournir alors un URI selon
-                    lequel le cookie cherchera son domaine et son chemin.</para>
+                    <para>
+                        En appelant la méthode statique <code>fromString()</code>, avec une
+                        chaîne de caractères représentant un cookie tel que défini dans les en-têtes
+                        HTTP "Set-Cookie" (réponse) ou "Cookie" (requête). Dans ce cas la valeur du
+                        cookie doit être encodée. Lorsque la chaîne de caractères représentant un
+                        cookie ne comporte pas de partie "domain", vous devez fournir alors un URI
+                        selon lequel le cookie cherchera son domaine et son chemin.
+                    </para>
                 </listitem>
             </itemizedlist> <example id="zend.http.cookies.cookie.instantiating.example-1">
                 <title>Créer un objet Zend_Http_Cookie</title>
@@ -93,48 +121,61 @@ $cookie = Zend_Http_Cookie::fromString(
                 'foo=bar; secure;', 'http://www.example.com/path');
 ]]></programlisting>
             </example> <note>
-                <para>Lorsque vous utilisez la méthode statique <classname>Zend_Http_Cookie::fromString()</classname>, veillez à
-                fournir un cookie URL encodé (tel que c'est le cas dans les en-têtes HTTP). Avec le constructeur en
-                revanche, il est nécessaire d'utiliser une valeur non encodée.</para>
-            </note></para>
-
-        <para>La manipulation inverse est possible. Grâce à la méthode <code>__toString()</code>, vous pouvez récupérer
-        une chaîne représentant le cookie, à partir de l'objet <classname>Zend_Http_Cookie</classname>. La chaîne alors retournée
-        est la même que celle utilisée dans l'en-tête HTTP "Cookie", à savoir une chaîne encodée, terminée par un
-        point-virgule (;) : <example id="zend.http.cookies.cookie.instantiating.example-2">
-                <title>Passer de l'objet Zend_Http_Cookie à la chaîne</title>
-
-                <programlisting role="php"><![CDATA[
-// Création d'un nouveau cookie
-$cookie = new Zend_Http_Cookie('foo',
-                               'two words',
-                               '.example.com',
-                               time() + 7200,
-                               '/path');
-
-// Va afficher 'foo=two+words;' :
-echo $cookie->__toString();
-
-// Ceci est la même chose
-echo (string) $cookie;
-
-// En PHP 5.2 et plus, ceci fonctionne aussi :
-echo $cookie;
-]]></programlisting>
-            </example></para>
+                <para>
+                    Lorsque vous utilisez la méthode statique
+                    <classname>Zend_Http_Cookie::fromString()</classname>, veillez à fournir un
+                    cookie URL encodé (tel que c'est le cas dans les en-têtes HTTP). Avec le
+                    constructeur en revanche, il est nécessaire d'utiliser une valeur non
+                    encodée.
+                </para>
+                </note>
+            </para>
+
+        <para>
+            La manipulation inverse est possible. Grâce à la méthode
+            <code>__toString()</code>, vous pouvez récupérer une chaîne représentant le cookie, à
+            partir de l'objet <classname>Zend_Http_Cookie</classname>. La chaîne alors retournée est
+            la même que celle utilisée dans l'en-tête HTTP "Cookie", à savoir une chaîne encodée,
+            terminée par un point-virgule (;) : <example
+                    id="zend.http.cookies.cookie.instantiating.example-2">
+                    <title>Passer de l'objet Zend_Http_Cookie à la chaîne</title>
+    
+                    <programlisting role="php"><![CDATA[
+    // Création d'un nouveau cookie
+    $cookie = new Zend_Http_Cookie('foo',
+                                   'two words',
+                                   '.example.com',
+                                   time() + 7200,
+                                   '/path');
+    
+    // Va afficher 'foo=two+words;' :
+    echo $cookie->__toString();
+    
+    // Ceci est la même chose
+    echo (string) $cookie;
+    
+    // En PHP 5.2 et plus, ceci fonctionne aussi :
+    echo $cookie;
+    ]]></programlisting>
+                </example>
+            </para>
     </sect2>
 
     <sect2 id="zend.http.cookies.cookie.accessors">
         <title>Zend_Http_Cookie méthodes getter</title>
 
-        <para>Une fois l'objet <classname>Zend_Http_Cookie</classname> crée, il existe des méthodes 'getter' pour accéder aux
-        différentes propriétés du cookie : <itemizedlist>
-                <listitem>
-                    <para><code>string getName()</code>: Retourne le nom du cookie</para>
-                </listitem>
-
-                <listitem>
-                    <para><code>string getValue()</code>: Retourne la valeur réelle (décodée), du cookie</para>
+        <para>
+            Une fois l'objet <classname>Zend_Http_Cookie</classname> crée, il existe des
+            méthodes 'getter' pour accéder aux différentes propriétés du cookie : <itemizedlist>
+                    <listitem>
+                        <para><code>string getName()</code>: Retourne le nom du cookie</para>
+                    </listitem>
+    
+                    <listitem>
+                    <para>
+                        <code>string getValue()</code>: Retourne la valeur réelle (décodée),
+                        du cookie
+                    </para>
                 </listitem>
 
                 <listitem>
@@ -142,90 +183,119 @@ echo $cookie;
                 </listitem>
 
                 <listitem>
-                    <para><code>string getPath()</code>: Retourne le chemin du cookie, par défaut '/'</para>
+                    <para>
+                        <code>string getPath()</code>: Retourne le chemin du cookie, par
+                        défaut '/'
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>int getExpiryTime()</code>: Retourne la date d'expiration, comme timestamp UNIX. Si pas
-                    de date, <code>NULL</code> sera retourné.</para>
+                    <para>
+                        <code>int getExpiryTime()</code>: Retourne la date d'expiration, comme
+                        timestamp UNIX. Si pas de date, <code>NULL</code> sera retourné.
+                    </para>
                 </listitem>
-            </itemizedlist></para>
-
-        <para>Voici encore quelques méthodes de vérifications booléennes : <itemizedlist>
-                <listitem>
-                    <para><code>boolean isSecure()</code>: Regarde si le cookie est un cookie sécurisé. Si c'est le cas,
-                    les navigateurs ont pour instruction de ne les envoyer que sur des connexions sécurisées
-                    (HTTPS).</para>
+                </itemizedlist>
+            </para>
+
+        <para>
+            Voici encore quelques méthodes de vérifications booléennes : <itemizedlist>
+                    <listitem>
+                    <para>
+                        <code>boolean isSecure()</code>: Regarde si le cookie est un cookie
+                        sécurisé. Si c'est le cas, les navigateurs ont pour instruction de ne les
+                        envoyer que sur des connexions sécurisées (HTTPS).
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>boolean isExpired(int $time = null)</code>: Vérifie si le cookie est expirés. Si il n'y
-                    a pas de date d'expiration, cette méthode retournera toujours <code>true</code>. Si
-                    <code>$time</code> est fourni, alors la date du cookie sera comparée à ce <code>$time</code>, et non
-                    plus au temps actuel.</para>
+                    <para>
+                        <code>boolean isExpired(int $time = null)</code>: Vérifie si le cookie
+                        est expirés. Si il n'y a pas de date d'expiration, cette méthode retournera
+                        toujours <code>true</code>. Si <code>$time</code> est fourni, alors la date
+                        du cookie sera comparée à ce <code>$time</code>, et non plus au temps
+                        actuel.
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>boolean isSessionCookie()</code>: Vérifie si le cookie est un cookie dit 'de session'.
-                    C'est un cookie sans date d'expiration, sensé être détruit à la fin de la session de travail
-                    actuelle (à la fermeture du navigateur).</para>
+                    <para>
+                        <code>boolean isSessionCookie()</code>: Vérifie si le cookie est un
+                        cookie dit 'de session'. C'est un cookie sans date d'expiration, sensé être
+                        détruit à la fin de la session de travail actuelle (à la fermeture du
+                        navigateur).
+                    </para>
                 </listitem>
-            </itemizedlist></para>
-
-        <para><example id="zend.http.cookies.cookie.accessors.example-1">
-                <title>Utilisation des méthodes getter de Zend_Http_Cookie</title>
-
-                <programlisting role="php"><![CDATA[
-// Création d'un cookie
-$cookie =
-    Zend_Http_Cookie::fromString('foo=two+words;'
-                               . ' domain=.example.com;'
-                               . ' path=/somedir;'
-                               . 'secure;'
-                               . 'expires=Wednesday, 28-Feb-05 20:41:22 UTC');
-
-echo $cookie->getName();   // Affiche 'foo'
-echo $cookie->getValue();  // Affiche 'two words'
-echo $cookie->getDomain(); // Affiche '.example.com'
-echo $cookie->getPath();   // Affiche '/'
-
-echo date('Y-m-d', $cookie->getExpiryTime());
-// Affiche '2005-02-28'
-
-echo ($cookie->isExpired() ? 'Yes' : 'No');
-// Affiche 'Yes'
-
-echo ($cookie->isExpired(strtotime('2005-01-01') ? 'Yes' : 'No');
-// Affiche 'No'
-
-echo ($cookie->isSessionCookie() ? 'Yes' : 'No');
-// Affiche 'No'
-]]></programlisting>
-            </example></para>
+                </itemizedlist>
+            </para>
+
+        <para>
+            <example id="zend.http.cookies.cookie.accessors.example-1">
+                    <title>Utilisation des méthodes getter de Zend_Http_Cookie</title>
+    
+                    <programlisting role="php"><![CDATA[
+    // Création d'un cookie
+    $cookie =
+        Zend_Http_Cookie::fromString('foo=two+words;'
+                                   . ' domain=.example.com;'
+                                   . ' path=/somedir;'
+                                   . 'secure;'
+                                   . 'expires=Wednesday, 28-Feb-05 20:41:22 UTC');
+    
+    echo $cookie->getName();   // Affiche 'foo'
+    echo $cookie->getValue();  // Affiche 'two words'
+    echo $cookie->getDomain(); // Affiche '.example.com'
+    echo $cookie->getPath();   // Affiche '/'
+    
+    echo date('Y-m-d', $cookie->getExpiryTime());
+    // Affiche '2005-02-28'
+    
+    echo ($cookie->isExpired() ? 'Yes' : 'No');
+    // Affiche 'Yes'
+    
+    echo ($cookie->isExpired(strtotime('2005-01-01') ? 'Yes' : 'No');
+    // Affiche 'No'
+    
+    echo ($cookie->isSessionCookie() ? 'Yes' : 'No');
+    // Affiche 'No'
+    ]]></programlisting>
+                </example>
+            </para>
     </sect2>
 
     <sect2 id="zend.http.cookies.cookie.matching">
         <title>Zend_Http_Cookie: Correspondance de scénario</title>
 
-        <para>La vraie valeur ajoutée d'un objet <classname>Zend_Http_Cookie</classname> est sa méthode match(). Celle-ci teste le
-        cookie en rapport avec un scénario HTTP, pour savoir ci celui-ci doit être attaché à la requête ou pas. La
-        syntaxe est la suivante : <code>boolean Zend_Http_Cookie-&gt;match(mixed $uri, [boolean $matchSessionCookies,
-        [int $now]]);</code> <itemizedlist>
-                <listitem>
-                    <para><code>mixed $uri</code> : un objet Zend_Uri_Http avec un domaine et un chemin à vérifier. Une
-                    chaîne représentant une URL peut aussi être utilisée. Le cookie sera déclaré bon si le schéma de
-                    l'URL (HTTP ou HTTPS) correspond, ainsi que le chemin (path).</para>
+        <para>
+            La vraie valeur ajoutée d'un objet <classname>Zend_Http_Cookie</classname> est sa
+            méthode match(). Celle-ci teste le cookie en rapport avec un scénario HTTP, pour savoir
+            ci celui-ci doit être attaché à la requête ou pas. La syntaxe est la suivante :
+            <code>boolean Zend_Http_Cookie-&gt;match(mixed $uri, [boolean $matchSessionCookies, [int
+            $now]]);</code> <itemizedlist>
+                    <listitem>
+                    <para>
+                        <code>mixed $uri</code> : un objet Zend_Uri_Http avec un domaine et un
+                        chemin à vérifier. Une chaîne représentant une URL peut aussi être utilisée.
+                        Le cookie sera déclaré bon si le schéma de l'URL (HTTP ou HTTPS) correspond,
+                        ainsi que le chemin (path).
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>boolean $matchSessionCookies</code> : établit ou non une correspondance pour les cookies
-                    dits de session. Par défaut : <code>true</code>. Si mis à <code>false</code>, alors les cookies sans
-                    date d'expiration seront ignorés du processus.</para>
+                    <para>
+                        <code>boolean $matchSessionCookies</code> : établit ou non une
+                        correspondance pour les cookies dits de session. Par défaut :
+                        <code>true</code>. Si mis à <code>false</code>, alors les cookies sans date
+                        d'expiration seront ignorés du processus.
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>int $now</code> : timestamp UNIX passé pour vérifier l'expiration du cookie. Si non
-                    spécifié, alors le temps actuel sera pris en considération.</para>
+                    <para>
+                        <code>int $now</code> : timestamp UNIX passé pour vérifier
+                        l'expiration du cookie. Si non spécifié, alors le temps actuel sera pris en
+                        considération.
+                    </para>
                 </listitem>
             </itemizedlist> <example id="zend.http.cookies.cookie.matching.example-1">
                 <title>Correspondance de cookies</title>
@@ -272,123 +342,184 @@ $cookie->match('http://subdomain.example.com/');
 $cookie->match('http://www.example.com/', true, time() + (3 * 3600));
 // Retournera false, car nous avons rajouter 3 heures au temps actuel
 ]]></programlisting>
-            </example></para>
+                </example>
+            </para>
     </sect2>
 
     <sect2 id="zend.http.cookies.cookiejar">
         <title>Classe Zend_Http_CookieJar : Instanciation</title>
 
-        <para>Dans la plupart des cas, il ne sera pas nécessaire d'instancier soi-même un objet
-        <classname>Zend_Http_CookieJar</classname>. Si vous voulez un conteneur de cookie (CookieJar) attaché à votre objet
-        <classname>Zend_Http_Client</classname>, appelez simplement <classname>Zend_Http_Client-&gt;setCookieJar()</classname>, et un
-        nouveau conteneur, vide, y sera attaché. Plus tard, vous pourrez utiliser la méthode
-        <classname>Zend_Http_Client-&gt;getCookieJar()</classname>, pour récupérer ce conteneur.</para>
-
-        <para>Si vous voulez tout de même instancier manuellement un objet <code>CookieJar</code>, appelez son
-        constructeur avec "<code>new Zend_Http_CookieJar()</code>", sans paramètres. Sinon il est possible aussi de
-        passer par la méthode statique <classname>Zend_Http_CookieJar::fromResponse()</classname> qui prend, elle, deux paramètres
-        : un objet <classname>Zend_Http_Response</classname> et un URI de référence (un objet <classname>Zend_Uri_Http</classname> ou une
-        chaîne). Cette méthode retourne alors un objet <classname>Zend_Http_CookieJar</classname> qui contiendra les cookies de la
-        réponse HTTP passée. L'URI de référence servira à remplir les paramètres "domain" et "path" des cookies, si
-        jamais ils n'ont pas été définis dans les en-têtes "Set-Cookie".</para>
+        <para>
+            Dans la plupart des cas, il ne sera pas nécessaire d'instancier soi-même un objet
+            <classname>Zend_Http_CookieJar</classname>. Si vous voulez un conteneur de cookie
+            (CookieJar) attaché à votre objet <classname>Zend_Http_Client</classname>, appelez
+            simplement <classname>Zend_Http_Client-&gt;setCookieJar()</classname>, et un nouveau
+            conteneur, vide, y sera attaché. Plus tard, vous pourrez utiliser la méthode
+            <classname>Zend_Http_Client-&gt;getCookieJar()</classname>, pour récupérer ce
+            conteneur.
+        </para>
+
+        <para>
+            Si vous voulez tout de même instancier manuellement un objet
+            <code>CookieJar</code>, appelez son constructeur avec "<code>new
+            Zend_Http_CookieJar()</code>", sans paramètres. Sinon il est possible aussi de passer
+            par la méthode statique <classname>Zend_Http_CookieJar::fromResponse()</classname> qui
+            prend, elle, deux paramètres : un objet <classname>Zend_Http_Response</classname> et un
+            URI de référence (un objet <classname>Zend_Uri_Http</classname> ou une chaîne). Cette
+            méthode retourne alors un objet <classname>Zend_Http_CookieJar</classname> qui
+            contiendra les cookies de la réponse HTTP passée. L'URI de référence servira à remplir
+            les paramètres "domain" et "path" des cookies, si jamais ils n'ont pas été définis dans
+            les en-têtes "Set-Cookie".
+        </para>
     </sect2>
 
     <sect2 id="zend.http.cookies.cookiejar.adding_cookies">
         <title>Ajouter des cookies à un objet Zend_Http_CookieJar</title>
 
-        <para>En temps normal, c'est l'objet <classname>Zend_Http_Client</classname> qui ajoutera des cookies dans l'objet
-        <code>CookieJar</code> que vous lui aurez attaché. Vous pouvez en ajouter manuellement aussi : <itemizedlist>
-                <listitem>
-                    <para><classname>Zend_Http_CookieJar-&gt;addCookie($cookie[, $ref_uri])</classname>: Ajoute un cookie au
-                    conteneur (Jar). $cookie peut être soit un objet <classname>Zend_Http_Cookie</classname>, soit une chaîne qui
-                    sera alors convertie de manière automatique en objet cookie. Si vous passez une chaîne, alors vous
-                    devriez aussi passer le paramètre $ref_uri qui représente l'URI de référence pour déterminer les
-                    paramètres "domain" et "path" du cookie.</para>
+        <para>
+            En temps normal, c'est l'objet <classname>Zend_Http_Client</classname> qui
+            ajoutera des cookies dans l'objet <code>CookieJar</code> que vous lui aurez attaché.
+            Vous pouvez en ajouter manuellement aussi : <itemizedlist>
+                    <listitem>
+                    <para>
+                        <classname>Zend_Http_CookieJar-&gt;addCookie($cookie[,
+                        $ref_uri])</classname>: Ajoute un cookie au conteneur (Jar). $cookie peut
+                        être soit un objet <classname>Zend_Http_Cookie</classname>, soit une chaîne
+                        qui sera alors convertie de manière automatique en objet cookie. Si vous
+                        passez une chaîne, alors vous devriez aussi passer le paramètre $ref_uri qui
+                        représente l'URI de référence pour déterminer les paramètres "domain" et
+                        "path" du cookie.
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><classname>Zend_Http_CookieJar-&gt;addCookiesFromResponse($response, $ref_uri)</classname>: Ajoute tous
-                    les cookies présents dans une réponse HTTP au conteneur. La réponse HTTP doit être un objet
-                    <classname>Zend_Http_Response</classname> contenant au moins un en-tête "Set-Cookie".
-                    <classname>$ref_uri</classname> est un URI (un objet Zend_Uri_Http ou une chaîne), servant de
-                    référence pour remplir les paramètres du cookie "domain" et "path", si ceux-ci ne sont pas trouvés
-                    dans la réponse.</para>
+                    <para>
+                        <classname>Zend_Http_CookieJar-&gt;addCookiesFromResponse($response,
+                        $ref_uri)</classname>: Ajoute tous les cookies présents dans une réponse
+                        HTTP au conteneur. La réponse HTTP doit être un objet
+                        <classname>Zend_Http_Response</classname> contenant au moins un en-tête
+                        "Set-Cookie". <classname>$ref_uri</classname> est un URI (un objet
+                        Zend_Uri_Http ou une chaîne), servant de référence pour remplir les
+                        paramètres du cookie "domain" et "path", si ceux-ci ne sont pas trouvés dans
+                        la réponse.
+                    </para>
                 </listitem>
-            </itemizedlist></para>
+                </itemizedlist>
+            </para>
     </sect2>
 
     <sect2 id="zend.http.cookies.cookiejar.getting_cookies">
         <title>Récupérer les cookies présents dans un objet Zend_Http_CookieJar</title>
 
-        <para>Comme pour l'ajout de cookies, en théorie, vous n'aurez pas besoin de récupérer des cookies du conteneur,
-        car l'objet <classname>Zend_Http_Client</classname> se chargera de les gérer lui-même et de les envoyer dans les bonnes
-        requêtes. Cependant, il existe des méthodes pour récupérer des cookies depuis un conteneur (Jar) :
-        <code>getCookie()</code>, <code>getAllCookies()</code>, et <code>getMatchingCookies()</code>. De plus, itérer
-        sur le CookieJar vous permettra d'en extraire tous les objets <classname>Zend_Http_Cookie</classname>.</para>
-
-        <para>Il est important de noter que chacune de ces trois méthodes, prend un paramètre spécial destiné à
-        déterminer le type que chaque méthode retournera. Ce paramètre peut avoir 3 valeurs: <itemizedlist>
-                <listitem>
-                    <para><classname>Zend_Http_CookieJar::COOKIE_OBJECT</classname>: Retourne un objet
-                    <classname>Zend_Http_Cookie</classname>. Si plus d'un cookie devait être retourné, il s'agira alors d'un
-                    tableau d'objets cookie.</para>
+        <para>
+            Comme pour l'ajout de cookies, en théorie, vous n'aurez pas besoin de récupérer
+            des cookies du conteneur, car l'objet <classname>Zend_Http_Client</classname> se
+            chargera de les gérer lui-même et de les envoyer dans les bonnes requêtes. Cependant, il
+            existe des méthodes pour récupérer des cookies depuis un conteneur (Jar) :
+            <code>getCookie()</code>, <code>getAllCookies()</code>, et
+            <code>getMatchingCookies()</code>. De plus, itérer sur le CookieJar vous permettra d'en
+            extraire tous les objets <classname>Zend_Http_Cookie</classname>.
+        </para>
+
+        <para>
+            Il est important de noter que chacune de ces trois méthodes, prend un paramètre
+            spécial destiné à déterminer le type que chaque méthode retournera. Ce paramètre peut
+            avoir 3 valeurs: <itemizedlist>
+                    <listitem>
+                    <para>
+                        <classname>Zend_Http_CookieJar::COOKIE_OBJECT</classname>: Retourne un
+                        objet <classname>Zend_Http_Cookie</classname>. Si plus d'un cookie devait
+                        être retourné, il s'agira alors d'un tableau d'objets cookie.
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><classname>Zend_Http_CookieJar::COOKIE_STRING_ARRAY</classname>: Retourne les cookies comme des chaînes
-                    de caractères dans un format "foo=bar", correspondant au format de l'en-tête de requête HTTP
-                    "Cookie". Si plus d'un cookie devait être retourné, il s'agira alors d'un tableau de chaînes.</para>
+                    <para>
+                        <classname>Zend_Http_CookieJar::COOKIE_STRING_ARRAY</classname>:
+                        Retourne les cookies comme des chaînes de caractères dans un format
+                        "foo=bar", correspondant au format de l'en-tête de requête HTTP "Cookie". Si
+                        plus d'un cookie devait être retourné, il s'agira alors d'un tableau de
+                        chaînes.
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><classname>Zend_Http_CookieJar::COOKIE_STRING_CONCAT</classname>: Similaire à COOKIE_STRING_ARRAY, mais
-                    si plusieurs cookies devaient être retournés, alors il ne s'agira plus d'un tableau, mais d'une
-                    chaîne concaténant tous les cookies, séparés par des point-virgule (;). Ceci est très utile pour
-                    passer tous les cookies d'un coup, dans l'en-tête HTTP "Cookie".</para>
+                    <para>
+                        <classname>Zend_Http_CookieJar::COOKIE_STRING_CONCAT</classname>:
+                        Similaire à COOKIE_STRING_ARRAY, mais si plusieurs cookies devaient être
+                        retournés, alors il ne s'agira plus d'un tableau, mais d'une chaîne
+                        concaténant tous les cookies, séparés par des point-virgule (;). Ceci est
+                        très utile pour passer tous les cookies d'un coup, dans l'en-tête HTTP
+                        "Cookie".
+                    </para>
                 </listitem>
-            </itemizedlist></para>
-
-        <para>Voici la structure des méthodes de récupération des cookies : <itemizedlist>
-                <listitem>
-                    <para><classname>Zend_Http_CookieJar-&gt;getCookie($uri, $cookie_name[, $ret_as])</classname>: Retourne un
-                    cookie depuis le conteneur, selon son URI (domain et path), et son nom. <code>$uri</code> est un
-                    objet <classname>Zend_Uri_Http</classname> ou une chaîne. $cookie_name est une chaîne identifiant le cookie en
-                    question. $ret_as spécifie le type de retour, comme vu plus haut (par défaut COOKIE_OBJECT).</para>
+                </itemizedlist>
+            </para>
+
+        <para>
+            Voici la structure des méthodes de récupération des cookies : <itemizedlist>
+                    <listitem>
+                    <para>
+                        <classname>Zend_Http_CookieJar-&gt;getCookie($uri, $cookie_name[,
+                        $ret_as])</classname>: Retourne un cookie depuis le conteneur, selon son URI
+                        (domain et path), et son nom. <code>$uri</code> est un objet
+                        <classname>Zend_Uri_Http</classname> ou une chaîne. $cookie_name est une
+                        chaîne identifiant le cookie en question. $ret_as spécifie le type de
+                        retour, comme vu plus haut (par défaut COOKIE_OBJECT).
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><classname>Zend_Http_CookieJar-&gt;getAllCookies($ret_as)</classname>: Retourne tous les cookies du
-                    conteneur. $ret_as spécifie le type de retour, comme vu plus haut (par défaut COOKIE_OBJECT).</para>
+                    <para>
+                        <classname>Zend_Http_CookieJar-&gt;getAllCookies($ret_as)</classname>:
+                        Retourne tous les cookies du conteneur. $ret_as spécifie le type de retour,
+                        comme vu plus haut (par défaut COOKIE_OBJECT).
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><classname>Zend_Http_CookieJar-&gt;getMatchingCookies($uri[, $matchSessionCookies[, $ret_as[,
-                    $now]]])</classname>: Retourne tous les cookies ayant une correspondance pour un scénario donné, à savoir
-                    un URI et une date d'expiration. <itemizedlist>
-                            <listitem>
-                                <para><code>$uri</code> est soit un objet Zend_Uri_Http soit une chaîne.</para>
+                    <para>
+                        <classname>Zend_Http_CookieJar-&gt;getMatchingCookies($uri[,
+                        $matchSessionCookies[, $ret_as[, $now]]])</classname>: Retourne tous les
+                        cookies ayant une correspondance pour un scénario donné, à savoir un URI et
+                        une date d'expiration. <itemizedlist>
+                                <listitem>
+                                <para>
+                                    <code>$uri</code> est soit un objet Zend_Uri_Http soit une
+                                    chaîne.
+                                </para>
                             </listitem>
 
                             <listitem>
-                                <para><code>$matchSessionCookies</code> est un booléen désignant si les cookies de
-                                session, c'est à dire sans date d'expiration, doivent être analysés aussi pour établir
-                                une correspondance. Par défaut : <code>true</code>.</para>
+                                <para>
+                                    <code>$matchSessionCookies</code> est un booléen désignant
+                                    si les cookies de session, c'est à dire sans date d'expiration,
+                                    doivent être analysés aussi pour établir une correspondance. Par
+                                    défaut : <code>true</code>.
+                                </para>
                             </listitem>
 
                             <listitem>
-                                <para><code>$ret_as</code> spécifie le type de retour, comme vu plus haut (par défaut
-                                COOKIE_OBJECT).</para>
+                                <para>
+                                    <code>$ret_as</code> spécifie le type de retour, comme vu
+                                    plus haut (par défaut COOKIE_OBJECT).
+                                </para>
                             </listitem>
 
                             <listitem>
-                                <para><code>$now</code> est un entier représentant un timestamp UNIX à considérer comme
-                                'maintenant'. Ainsi tous les cookies expirant avant ce temps là, ne seront pas pris en
-                                compte. Si vous ne spécifiez pas ce paramètre, alors c'est le temps actuel qui sera pris
-                                comme référence.</para>
+                                <para>
+                                    <code>$now</code> est un entier représentant un timestamp
+                                    UNIX à considérer comme 'maintenant'. Ainsi tous les cookies
+                                    expirant avant ce temps là, ne seront pas pris en compte. Si
+                                    vous ne spécifiez pas ce paramètre, alors c'est le temps actuel
+                                    qui sera pris comme référence.
+                                </para>
                             </listitem>
-                        </itemizedlist> Vous pouvez en apprendre plus sur la correspondance des cookies ici : <xref
-                    linkend="zend.http.cookies.cookie.matching" />.</para>
+                        </itemizedlist> Vous pouvez en apprendre plus sur la correspondance des
+                        cookies ici : <xref linkend="zend.http.cookies.cookie.matching" />.
+                    </para>
                 </listitem>
-            </itemizedlist></para>
+                </itemizedlist>
+            </para>
     </sect2>
 </sect1>

+ 201 - 110
documentation/manual/fr/module_specs/Zend_Http_Response.xml

@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 13571 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15156 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.http.response">
     <title>Zend_Http_Response</title>
@@ -7,58 +7,83 @@
     <sect2 id="zend.http.response.introduction">
         <title>Introduction</title>
 
-        <para><classname>Zend_Http_Response</classname> fournit un accès simplifié aux réponses HTTP d'un message, ainsi qu'un
-        ensemble de méthodes statiques pour analyser ces réponses HTTP. Habituellement <classname>Zend_Http_Response</classname>
-        est utilisé en tant qu'objet retourné par une requête <classname>Zend_Http_Client</classname>.</para>
-
-        <para>Dans la plupart des cas, un objet <classname>Zend_Http_Response</classname> sera instancié en utilisant la méthode
-        <code>factory()</code>, qui lit une chaîne contenant une réponse HTTP, et retourne un nouvel objet
-        <classname>Zend_Http_Response</classname> : <example id="zend.http.response.introduction.example-1">
-                <title>Instancier un objet Zend_Http_Response en utilisant la méthode factory</title>
-
-                <programlisting role="php"><![CDATA[
-$str = '';
-$sock = fsockopen('www.exemple.com', 80);
-$req =     "GET / HTTP/1.1\r\n" .
-        "Host: www.exemple.com\r\n" .
-        "Connection: close\r\n" .
-        "\r\n";
-
-fwrite($sock, $req);
-while ($buff = fread($sock, 1024))
-    $str .= $sock;
-
-$response = Zend_Http_Response::factory($str);
-]]></programlisting>
-            </example></para>
-
-        <para>Vous pouvez aussi utiliser le constructeur pour créer un nouvel objet de réponse HTTP, en spécifiant tous
-        les paramètres de la réponse :</para>
-
-        <para><code> public function __construct($code, $headers, $body = null, $version = '1.1', $message = null)
-        </code></para>
+        <para>
+            <classname>Zend_Http_Response</classname> fournit un accès simplifié aux réponses
+            HTTP d'un message, ainsi qu'un ensemble de méthodes statiques pour analyser ces réponses
+            HTTP. Habituellement <classname>Zend_Http_Response</classname> est utilisé en tant
+            qu'objet retourné par une requête <classname>Zend_Http_Client</classname>.
+        </para>
+
+        <para>
+            Dans la plupart des cas, un objet <classname>Zend_Http_Response</classname> sera
+            instancié en utilisant la méthode <code>factory()</code>, qui lit une chaîne contenant
+            une réponse HTTP, et retourne un nouvel objet <classname>Zend_Http_Response</classname>
+            : <example id="zend.http.response.introduction.example-1">
+                    <title>Instancier un objet Zend_Http_Response en utilisant la méthode
+                    factory</title>
+    
+                    <programlisting role="php"><![CDATA[
+    $str = '';
+    $sock = fsockopen('www.exemple.com', 80);
+    $req =     "GET / HTTP/1.1\r\n" .
+            "Host: www.exemple.com\r\n" .
+            "Connection: close\r\n" .
+            "\r\n";
+    
+    fwrite($sock, $req);
+    while ($buff = fread($sock, 1024))
+        $str .= $sock;
+    
+    $response = Zend_Http_Response::factory($str);
+    ]]></programlisting>
+                </example>
+            </para>
+
+        <para>
+            Vous pouvez aussi utiliser le constructeur pour créer un nouvel objet de réponse
+            HTTP, en spécifiant tous les paramètres de la réponse :
+        </para>
+
+        <para>
+            <code> public function __construct($code, $headers, $body = null, $version =
+            '1.1', $message = null) </code>
+        </para>
 
         <itemizedlist>
             <listitem>
-                <para><code>$code</code> : le code de la réponse HTTP (par ex. 200, 404, etc.)</para>
+                <para>
+                    <code>$code</code> : le code de la réponse HTTP (par ex. 200, 404,
+                    etc.)
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>$headers</code> : un tableau associatif d'en-têtes de réponse HTTP (par ex. "Host" =&gt;
-                "exemple.com")</para>
+                <para>
+                    <code>$headers</code> : un tableau associatif d'en-têtes de réponse HTTP
+                    (par ex. "Host" =&gt; "exemple.com")
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>$body</code> : le corps de la réponse sous la forme d'une chaîne</para>
+                <para>
+                    <code>$body</code> : le corps de la réponse sous la forme d'une
+                    chaîne
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>$version</code> : la version de la réponse HTTP (habituellement 1.0 ou 1.1)</para>
+                <para>
+                    <code>$version</code> : la version de la réponse HTTP (habituellement 1.0
+                    ou 1.1)
+                </para>
             </listitem>
 
             <listitem>
-                <para><code>$message</code> : le message de la réponse HTTP (par ex. "OK", "Internal Server Error"). Si
-                non spécifié, le message sera paramétré suivant le code de la réponse.</para>
+                <para>
+                    <code>$message</code> : le message de la réponse HTTP (par ex. "OK",
+                    "Internal Server Error"). Si non spécifié, le message sera paramétré suivant le
+                    code de la réponse.
+                </para>
             </listitem>
         </itemizedlist>
     </sect2>
@@ -66,22 +91,31 @@ $response = Zend_Http_Response::factory($str);
     <sect2 id="zend.http.response.testers">
         <title>Méthodes de tests booléennes</title>
 
-        <para>Une fois qu'un objet <classname>Zend_Http_Response</classname> est instancié, il fournit plusieurs méthodes qui
-        peuvent être utilisées pour tester le type de la réponse. Elles retournent toutes un booléen <code>true</code>
-        ou <code>false</code> : <itemizedlist>
-                <listitem>
-                    <para><code>isSuccessful()</code> : la requête est réussie ou non. Retourne <code>true </code> pour
-                    les codes de réponses HTTP 1xx et 2xx.</para>
+        <para>
+            Une fois qu'un objet <classname>Zend_Http_Response</classname> est instancié, il
+            fournit plusieurs méthodes qui peuvent être utilisées pour tester le type de la réponse.
+            Elles retournent toutes un booléen <code>true</code> ou <code>false</code> :
+            <itemizedlist>
+                    <listitem>
+                    <para>
+                        <code>isSuccessful()</code> : la requête est réussie ou non. Retourne
+                        <code>true </code> pour les codes de réponses HTTP 1xx et 2xx.
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>isError()</code> : la requête implique une erreur ou non. Retourne <code>true </code>
-                    pour les codes de réponses HTTP 4xx (erreurs du client) et 5xx (erreurs du serveur).</para>
+                    <para>
+                        <code>isError()</code> : la requête implique une erreur ou non.
+                        Retourne <code>true </code> pour les codes de réponses HTTP 4xx (erreurs du
+                        client) et 5xx (erreurs du serveur).
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>isRedirect()</code> : la requête est une redirection ou non. Retourne <code>true </code>
-                    pour les codes de réponses HTTP 3xx.</para>
+                    <para>
+                        <code>isRedirect()</code> : la requête est une redirection ou non.
+                        Retourne <code>true </code> pour les codes de réponses HTTP 3xx.
+                    </para>
                 </listitem>
             </itemizedlist> <example id="zend.http.response.testers.example-1">
                 <title>Utiliser la méthode isError() pour valider une réponse</title>
@@ -96,53 +130,77 @@ if ($response->isError()) {
 }
 // ... traiter la réponse ici ...
 ]]></programlisting>
-            </example></para>
+                </example>
+            </para>
     </sect2>
 
     <sect2 id="zend.http.response.acessors">
         <title>Méthodes accesseurs</title>
 
-        <para>Le but principal de l'objet réponse est de fournir un accès facile à divers paramètres de la réponse.
-        <itemizedlist>
-                <listitem>
-                    <para><code>int getStatus()</code> : récupère le code de la réponse HTTP (par ex. 200, 504,
-                    etc.)</para>
+        <para>
+            Le but principal de l'objet réponse est de fournir un accès facile à divers
+            paramètres de la réponse. <itemizedlist>
+                    <listitem>
+                    <para>
+                        <code>int getStatus()</code> : récupère le code de la réponse HTTP
+                        (par ex. 200, 504, etc.)
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>string getMessage()</code> : récupère le message de la réponse HTTP (par ex. "Not
-                    Found", "Authorization Required")</para>
+                    <para>
+                        <code>string getMessage()</code> : récupère le message de la réponse
+                        HTTP (par ex. "Not Found", "Authorization Required")
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>string getBody()</code> : récupère le corps complet décodé de la réponse HTTP</para>
+                    <para>
+                        <code>string getBody()</code> : récupère le corps complet décodé de la
+                        réponse HTTP
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>string getRawBody()</code> : récupère le corps brut, possiblement encodé, de la réponse
-                    HTTP. Si le corps est encodé en utilisant l'encodage GZIP par exemple, il ne sera pas décodé.</para>
+                    <para>
+                        <code>string getRawBody()</code> : récupère le corps brut,
+                        possiblement encodé, de la réponse HTTP. Si le corps est encodé en utilisant
+                        l'encodage GZIP par exemple, il ne sera pas décodé.
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>array getHeaders()</code> : récupère les en-têtes de la réponse HTTP sous la forme d'un
-                    tableau associatif (par ex. 'Content-type' =&gt; 'text/html')</para>
+                    <para>
+                        <code>array getHeaders()</code> : récupère les en-têtes de la réponse
+                        HTTP sous la forme d'un tableau associatif (par ex. 'Content-type' =&gt;
+                        'text/html')
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>string|array getHeader($header)</code> : récupère un en-tête spécifique de la réponse
-                    HTTP, spécifié par <code>$header</code></para>
+                    <para>
+                        <code>string|array getHeader($header)</code> : récupère un en-tête
+                        spécifique de la réponse HTTP, spécifié par <code>$header</code>
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>string getHeadersAsString($status_line = true, $br = "\n")</code> : récupère l'ensemble
-                    des en-têtes sous la forme d'une chaîne. Si <code>$status_line</code> est à <code>true</code>
-                    (défaut), la première ligne de statut (par ex. "HTTP/1.1 200 OK") sera aussi retournée. Les lignes
-                    sont coupées avec le paramètre <code>$br</code> (par ex. "&lt;br /&gt;")</para>
+                    <para>
+                        <code>string getHeadersAsString($status_line = true, $br =
+                        "\n")</code> : récupère l'ensemble des en-têtes sous la forme d'une chaîne.
+                        Si <code>$status_line</code> est à <code>true</code> (défaut), la première
+                        ligne de statut (par ex. "HTTP/1.1 200 OK") sera aussi retournée. Les lignes
+                        sont coupées avec le paramètre <code>$br</code> (par ex. "&lt;br
+                        /&gt;")
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>string asString($br = "\n")</code> : récupère la réponse complète sous la forme d'une
-                    chaîne. Les lignes sont coupées avec le paramètre <code>$br</code> (par ex. "&lt;br /&gt;")</para>
+                    <para>
+                        <code>string asString($br = "\n")</code> : récupère la réponse
+                        complète sous la forme d'une chaîne. Les lignes sont coupées avec le
+                        paramètre <code>$br</code> (par ex. "&lt;br /&gt;")
+                    </para>
                 </listitem>
             </itemizedlist> <example id="zend.http.response.acessors.example-1">
                 <title>Utiliser les méthodes accesseurs de Zend_Http_Response</title>
@@ -159,10 +217,13 @@ if ($response->getStatus() == 200) {
             </example> <note>
                 <title>Vérifier toujours la valeur retournée</title>
 
-                <para>Puisqu'une réponse peut contenir plusieurs exemplaires du même en-tête, la méthode
-                <code>getHeader()</code> et la méthode <code>getHeaders()</code> peuvent renvoyer l'un comme l'autre
-                soit une chaîne seule, soit un tableau de chaînes pour chaque en-tête. Vous devez donc toujours vérifier
-                si la valeur retournée est une chaîne ou un tableau.</para>
+                <para>
+                    Puisqu'une réponse peut contenir plusieurs exemplaires du même en-tête, la
+                    méthode <code>getHeader()</code> et la méthode <code>getHeaders()</code> peuvent
+                    renvoyer l'un comme l'autre soit une chaîne seule, soit un tableau de chaînes
+                    pour chaque en-tête. Vous devez donc toujours vérifier si la valeur retournée
+                    est une chaîne ou un tableau.
+                </para>
             </note> <example id="zend.http.response.acessors.example-2">
                 <title>Accéder aux en-têtes de réponse</title>
 
@@ -177,69 +238,99 @@ if ($ctype == 'text/html' || $ctype == 'text/xml') {
 
 echo $body;
 ]]></programlisting>
-            </example></para>
+                </example>
+            </para>
     </sect2>
 
     <sect2 id="zend.http.response.static_parsers">
         <title>Analyseurs statiques de réponse HTTP</title>
 
-        <para>La classe <classname>Zend_Http_Response</classname> inclut également plusieurs méthodes utilisées en interne pour
-        traiter et analyser des messages de réponse HTTP. Ces méthodes sont toutes exposées en tant que méthodes
-        statiques, ce qui permet de les utiliser extérieurement, ainsi il n'est pas nécessaire d'instancier un objet
-        réponse si vous souhaitez extraire une partie spécifique de la réponse. <itemizedlist>
-                <listitem>
-                    <para><code>int Zend_Http_Response::extractCode($response_str)</code> : extrait et retourne le code
-                    de la réponse HTTP (par ex. 200 ou 404) issu de<code>$response_str</code></para>
+        <para>
+            La classe <classname>Zend_Http_Response</classname> inclut également plusieurs
+            méthodes utilisées en interne pour traiter et analyser des messages de réponse HTTP. Ces
+            méthodes sont toutes exposées en tant que méthodes statiques, ce qui permet de les
+            utiliser extérieurement, ainsi il n'est pas nécessaire d'instancier un objet réponse si
+            vous souhaitez extraire une partie spécifique de la réponse. <itemizedlist>
+                    <listitem>
+                    <para>
+                        <code>int Zend_Http_Response::extractCode($response_str)</code> :
+                        extrait et retourne le code de la réponse HTTP (par ex. 200 ou 404) issu
+                        de<code>$response_str</code>
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>string Zend_Http_Response::extractMessage($response_str)</code> : extrait et retourne le
-                    message de la réponse HTTP (par ex. "OK" ou "File Not Found") issu de
-                    <code>$response_str</code></para>
+                    <para>
+                        <code>string Zend_Http_Response::extractMessage($response_str)</code>
+                        : extrait et retourne le message de la réponse HTTP (par ex. "OK" ou "File
+                        Not Found") issu de <code>$response_str</code>
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>string Zend_Http_Response::extractVersion($response_str)</code> : extrait et retourne la
-                    version HTTP (par ex. 1.1 or 1.0) issue de <code>$response_str</code></para>
+                    <para>
+                        <code>string Zend_Http_Response::extractVersion($response_str)</code>
+                        : extrait et retourne la version HTTP (par ex. 1.1 or 1.0) issue de
+                        <code>$response_str</code>
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>array Zend_Http_Response::extractHeaders($response_str)</code> : extrait et retourne les
-                    en-têtes de la réponse HTTP issus de <code>$response_str</code> sous la forme d'un tableau</para>
+                    <para>
+                        <code>array Zend_Http_Response::extractHeaders($response_str)</code> :
+                        extrait et retourne les en-têtes de la réponse HTTP issus de
+                        <code>$response_str</code> sous la forme d'un tableau
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>string Zend_Http_Response::extractBody($response_str)</code> : extrait et retourne le
-                    corps de la réponse HTTP issu de <code>$response_str</code></para>
+                    <para>
+                        <code>string Zend_Http_Response::extractBody($response_str)</code> :
+                        extrait et retourne le corps de la réponse HTTP issu de
+                        <code>$response_str</code>
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>string Zend_Http_Response::responseCodeAsText($code = null, $http11 = true)</code> :
-                    récupère le message standard de la réponse HTTP pour le code <code>$code</code>. Par exemple, la
-                    méthode retournera "Internal Server Error" si <code>$code</code> vaut 500. Si <code>$http11</code>
-                    vaut <code>true</code> (valeur par défaut), la méthode retournera les messages standards HTTP/1.1 -
-                    sinon les messages HTTP/1.0 seront retournés. Si <code>$code</code> n'est pas spécifié, cette
-                    méthode retournera tous les codes de réponse HTTP connus sous la forme d'un tableau associatif (code
-                    =&gt; message).</para>
+                    <para>
+                        <code>string Zend_Http_Response::responseCodeAsText($code = null,
+                        $http11 = true)</code> : récupère le message standard de la réponse HTTP
+                        pour le code <code>$code</code>. Par exemple, la méthode retournera
+                        "Internal Server Error" si <code>$code</code> vaut 500. Si
+                        <code>$http11</code> vaut <code>true</code> (valeur par défaut), la méthode
+                        retournera les messages standards HTTP/1.1 - sinon les messages HTTP/1.0
+                        seront retournés. Si <code>$code</code> n'est pas spécifié, cette méthode
+                        retournera tous les codes de réponse HTTP connus sous la forme d'un tableau
+                        associatif (code =&gt; message).
+                    </para>
                 </listitem>
-            </itemizedlist></para>
-
-        <para>Indépendamment des méthodes d'analyse, la classe inclut également un ensemble de décodeurs pour les
-        encodages de transfert de réponse HTTP communs : <itemizedlist>
-                <listitem>
-                    <para><code>string Zend_Http_Response::decodeChunkedBody($body)</code>: décode un corps complet de
-                    type "Content-Transfer-Encoding: Chunked"</para>
+                </itemizedlist>
+            </para>
+
+        <para>
+            Indépendamment des méthodes d'analyse, la classe inclut également un ensemble de
+            décodeurs pour les encodages de transfert de réponse HTTP communs : <itemizedlist>
+                    <listitem>
+                    <para>
+                        <code>string Zend_Http_Response::decodeChunkedBody($body)</code>:
+                        décode un corps complet de type "Content-Transfer-Encoding: Chunked"
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>string Zend_Http_Response::decodeGzip($body)</code> : décode un corps de type
-                    "Content-Encoding: gzip"</para>
+                    <para>
+                        <code>string Zend_Http_Response::decodeGzip($body)</code> : décode un
+                        corps de type "Content-Encoding: gzip"
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para><code>string Zend_Http_Response::decodeDeflate($body)</code> : décode un corps de type
-                    "Content-Encoding: deflate"</para>
+                    <para>
+                        <code>string Zend_Http_Response::decodeDeflate($body)</code> : décode
+                        un corps de type "Content-Encoding: deflate"
+                    </para>
                 </listitem>
-            </itemizedlist></para>
+                </itemizedlist>
+            </para>
     </sect2>
 </sect1>

+ 13 - 11
documentation/manual/fr/module_specs/Zend_Json-Basics.xml

@@ -1,15 +1,17 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 11089 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15156 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.json.basics">
     <title>Utilisation de base</title>
 
-    <para>L'utilisation de <classname>Zend_Json</classname> implique l'emploi des deux méthodes statiques publiques disponibles :
-    <classname>Zend_Json::encode()</classname> et <classname>Zend_Json::decode()</classname>. <programlisting role="php"><![CDATA[
-// Obtention d'une valeur
-$phpNatif = Zend_Json::decode($valeurCodee);
-
-// Codage pour renvoi au client :
-$json = Zend_Json::encode($phpNatif);
-]]></programlisting></para>
-</sect1>
+    <para>
+        L'utilisation de <classname>Zend_Json</classname> implique l'emploi des deux méthodes
+        statiques publiques disponibles : <classname>Zend_Json::encode()</classname> et
+        <classname>Zend_Json::decode()</classname>. <programlisting role="php"><![CDATA[
+    // Obtention d'une valeur
+    $phpNatif = Zend_Json::decode($valeurCodee);
+    
+    // Codage pour renvoi au client :
+    $json = Zend_Json::encode($phpNatif);
+    ]]></programlisting></para>
+    </sect1>

+ 24 - 15
documentation/manual/fr/module_specs/Zend_Json-Introduction.xml

@@ -1,22 +1,31 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 12116 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15103 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.json.introduction">
     <title>Introduction</title>
 
-    <para><classname>Zend_Json</classname> fournit des méthodes pratiques permettant de convertir du code PHP natif en notation
-    JSON, et vice versa. Pour plus d'informations concernant JSON, visitez le site du <ulink
-    url="http://www.json.org/">projet JSON</ulink>.</para>
+    <para>
+        <classname>Zend_Json</classname> fournit des méthodes pratiques permettant de
+        convertir du code PHP natif en notation JSON, et vice versa. Pour plus d'informations
+        concernant JSON, visitez le site du <ulink url="http://www.json.org/">projet
+        JSON</ulink>.
+    </para>
 
-    <para>La notation JSON (JavaScript Object Notation [Ndt : Notation-Objet JavaScript]) peut être utilisée comme un
-    système d'échange de données entre JavaScript et d'autres langages. Comme la notation JSON peut être évaluée
-    directement par JavaScript, c'est une alternative plus simple que XML pour les interfaces AJAX.</para>
+    <para>
+        La notation JSON (JavaScript Object Notation [Ndt : Notation-Objet JavaScript]) peut
+        être utilisée comme un système d'échange de données entre JavaScript et d'autres langages.
+        Comme la notation JSON peut être évaluée directement par JavaScript, c'est une alternative
+        plus simple que XML pour les interfaces AJAX.
+    </para>
 
-    <para>De plus, <classname>Zend_Json</classname> fournit une manière utile pour convertir n'importe quel chaîne arbitraire
-    formatée en XML en une chaîne formatée en JSON. Cette caractéristique permettra aux développeurs PHP de transformer
-    les données encodées en format XML en un format JSON avant de l'envoyer aux navigateurs basés sur des applications
-    client Ajax. <classname>Zend_Json</classname> fournit une fonction facilitant la conversion de données dynamiques du code côté
-    serveur évitant ainsi l'analyse syntaxique inutile réalisée dans les applications côté client. Il offre une fonction
-    utilitaire agréable qui aboutit aux techniques plus simples de traitement de données d'applications
-    spécifiques.</para>
+    <para>
+        De plus, <classname>Zend_Json</classname> fournit une manière utile pour convertir
+        n'importe quel chaîne arbitraire formatée en XML en une chaîne formatée en JSON. Cette
+        caractéristique permettra aux développeurs PHP de transformer les données encodées en format
+        XML en un format JSON avant de l'envoyer aux navigateurs basés sur des applications client
+        Ajax. <classname>Zend_Json</classname> fournit une fonction facilitant la conversion de
+        données dynamiques du code côté serveur évitant ainsi l'analyse syntaxique inutile réalisée
+        dans les applications côté client. Il offre une fonction utilitaire agréable qui aboutit aux
+        techniques plus simples de traitement de données d'applications spécifiques.
+    </para>
 </sect1>

+ 47 - 28
documentation/manual/fr/module_specs/Zend_Json-xml2json.xml

@@ -1,20 +1,26 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 12759 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15156 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.json.xml2json">
     <title>XML to JSON conversion</title>
 
-    <para><classname>Zend_Json</classname> fournit une méthode de convenance pour transformer des données au format XML en un
-    format JSON. Ce dispositif est inspiré <ulink
-    url="http://www.ibm.com/developerworks/xml/library/x-xml2jsonphp/">d'un article de developerWorks
-    d'IBM</ulink>.</para>
+    <para>
+        <classname>Zend_Json</classname> fournit une méthode de convenance pour transformer
+        des données au format XML en un format JSON. Ce dispositif est inspiré <ulink
+        url="http://www.ibm.com/developerworks/xml/library/x-xml2jsonphp/">d'un article de
+        developerWorks d'IBM</ulink>.
+    </para>
 
-    <para><classname>Zend_Json</classname> inclut une fonction statique appelée <classname>Zend_Json::fromXml()</classname>. Cette fonction
-    produira du JSON à partir d'une entrée au format XML. Cette fonction prend n'importe quelle chaîne arbitraire XML
-    comme paramètre d'entrée. Elle prend également un paramètre booléen facultatif d'entrée pour informer la logique de
-    conversion d'ignorer ou non les attributs XML pendant le processus de conversion. Si ce paramètre facultatif
-    d'entrée n'est pas donné, alors le comportement par défaut est d'ignorer les attributs XML. Cet appel de fonction
-    est réalisé comme ceci :</para>
+    <para>
+        <classname>Zend_Json</classname> inclut une fonction statique appelée
+        <classname>Zend_Json::fromXml()</classname>. Cette fonction produira du JSON à partir d'une
+        entrée au format XML. Cette fonction prend n'importe quelle chaîne arbitraire XML comme
+        paramètre d'entrée. Elle prend également un paramètre booléen facultatif d'entrée pour
+        informer la logique de conversion d'ignorer ou non les attributs XML pendant le processus de
+        conversion. Si ce paramètre facultatif d'entrée n'est pas donné, alors le comportement par
+        défaut est d'ignorer les attributs XML. Cet appel de fonction est réalisé comme ceci
+        :
+    </para>
 
     <programlisting role="php"><![CDATA[
 // la fonction fromXml prend simplement une chaîne
@@ -22,18 +28,26 @@
 $jsonContents = Zend_Json::fromXml($xmlStringContents, true);
 ]]></programlisting>
 
-    <para>La fonction <classname>Zend_Json::fromXml()</classname> fait la conversion du paramètre d'entrée (chaîne au format XML)
-    et renvoie le rendu équivalent sous forme de chaîne au format JSON. En cas d'erreur, de format XML ou de logique de
-    conversion, cette fonction lèvera une exception. La logique de conversion emploie également des techniques
-    récursives à travers l'arbre XML. Il supporte la récursivité jusqu'à 25 niveaux de profondeur. Au delà de cette
-    profondeur, elle lèvera une <classname>Zend_Json_Exception</classname>. Il y a plusieurs fichiers XML, avec différents niveaux
-    de complexité, fournis dans le répertoire tests de Zend Framework. Ils peuvent être utilisés pour tester la
-    fonctionnalité du dispositif xml2json.</para>
+    <para>
+        La fonction <classname>Zend_Json::fromXml()</classname> fait la conversion du
+        paramètre d'entrée (chaîne au format XML) et renvoie le rendu équivalent sous forme de
+        chaîne au format JSON. En cas d'erreur, de format XML ou de logique de conversion, cette
+        fonction lèvera une exception. La logique de conversion emploie également des techniques
+        récursives à travers l'arbre XML. Il supporte la récursivité jusqu'à 25 niveaux de
+        profondeur. Au delà de cette profondeur, elle lèvera une
+        <classname>Zend_Json_Exception</classname>. Il y a plusieurs fichiers XML, avec différents
+        niveaux de complexité, fournis dans le répertoire tests de Zend Framework. Ils peuvent être
+        utilisés pour tester la fonctionnalité du dispositif xml2json.
+    </para>
 
-    <para>Ce qui suit est un exemple simple qui montre à la fois la chaîne XML fournie et la chaîne JSON retournée en
-    résultat de la fonction <classname>Zend_Json::fromXml()</classname>. Cet exemple utilise le paramètre facultatif pour ne pas
-    ignorer les attributs XML pendant la conversion. Par conséquent, vous pouvez noter que la chaîne résultante JSON
-    inclut une représentation des attributs XML actuels de la chaîne XML fournie.</para>
+    <para>
+        Ce qui suit est un exemple simple qui montre à la fois la chaîne XML fournie et la
+        chaîne JSON retournée en résultat de la fonction
+        <classname>Zend_Json::fromXml()</classname>. Cet exemple utilise le paramètre facultatif
+        pour ne pas ignorer les attributs XML pendant la conversion. Par conséquent, vous pouvez
+        noter que la chaîne résultante JSON inclut une représentation des attributs XML actuels de
+        la chaîne XML fournie.
+    </para>
 
     <para>Chaîne XML fournie à la fonction <classname>Zend_Json::fromXml()</classname> :</para>
 
@@ -60,7 +74,10 @@ $jsonContents = Zend_Json::fromXml($xmlStringContents, true);
 </books>
 ]]></programlisting>
 
-    <para>Chaîne JSON retournée par la fonction <classname>Zend_Json::fromXml()</classname> :</para>
+    <para>
+        Chaîne JSON retournée par la fonction <classname>Zend_Json::fromXml()</classname>
+        :
+    </para>
 
     <programlisting role="php"><![CDATA[
 {
@@ -95,8 +112,10 @@ $jsonContents = Zend_Json::fromXml($xmlStringContents, true);
 }
 ]]></programlisting>
 
-    <para>Plus de détails au sujet de ce dispositif xml2json peuvent être trouvés dans la proposition originale
-    elle-même. Jetez un oeil à la <ulink
-    url="http://framework.zend.com/wiki/display/ZFPROP/Zend_xml2json+-+Senthil+Nathan">proposition
-    Zend_xml2json</ulink>.</para>
+    <para>
+        Plus de détails au sujet de ce dispositif xml2json peuvent être trouvés dans la
+        proposition originale elle-même. Jetez un oeil à la <ulink
+        url="http://framework.zend.com/wiki/display/ZFPROP/Zend_xml2json+-+Senthil+Nathan">proposition
+        Zend_xml2json</ulink>.
+    </para>
 </sect1>

+ 137 - 71
documentation/manual/fr/module_specs/Zend_Layout-Advanced.xml

@@ -1,44 +1,64 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 12891 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15343 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.layout.advanced">
     <title>Zend_Layout, utilisation avancée</title>
 
-    <para><classname>Zend_Layout</classname> permet d'être utilisé de manière plus pointu.</para>
+    <para>
+        <classname>Zend_Layout</classname> permet d'être utilisé de manière plus
+        pointu.
+    </para>
 
     <para>Vous pouvez agir sur ces éléments :</para>
 
     <itemizedlist>
         <listitem>
-            <para><emphasis>Objet de vue personnalisé.</emphasis> <classname>Zend_Layout</classname> accepte tout objet de vue
-            implémentant l'interface <classname>Zend_View_Interface</classname>.</para>
+            <para>
+                <emphasis>Objet de vue personnalisé.</emphasis>
+                <classname>Zend_Layout</classname> accepte tout objet de vue implémentant
+                l'interface <classname>Zend_View_Interface</classname>.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>Plugin contrôleur frontal personnalisé.</emphasis> <classname>Zend_Layout</classname> est livré avec
-            un plugin qui rend le layout automatiquement avant de renvoyer la réponse (utilisation MVC). Vous pouvez
-            injecter votre propre plugin.</para>
+            <para>
+                <emphasis>Plugin contrôleur frontal personnalisé.</emphasis>
+                <classname>Zend_Layout</classname> est livré avec un plugin qui rend le layout
+                automatiquement avant de renvoyer la réponse (utilisation MVC). Vous pouvez injecter
+                votre propre plugin.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>Aide d'action personnalisée.</emphasis> <classname>Zend_Layout</classname> est livrée avec une aide
-            d'action qui devrait en théorie suffire dans la majorité des cas. C'est un proxy vers l'objet
-            <classname>Zend_Layout</classname>. Vous pouvez cependant utiliser votre propre classe d'aide.</para>
+            <para>
+                <emphasis>Aide d'action personnalisée.</emphasis>
+                <classname>Zend_Layout</classname> est livrée avec une aide d'action qui devrait en
+                théorie suffire dans la majorité des cas. C'est un proxy vers l'objet
+                <classname>Zend_Layout</classname>. Vous pouvez cependant utiliser votre propre
+                classe d'aide.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>Résolveur de chemin de script personnalisé</emphasis>. <classname>Zend_Layout</classname> vous permet
-            d'utiliser votre <link linkend="zend.filter.inflector">inflecteur</link> pour la résolution des scripts de
-            layout ou de modifier l'inflecteur par défaut.</para>
+            <para>
+                <emphasis>Résolveur de chemin de script personnalisé</emphasis>.
+                <classname>Zend_Layout</classname> vous permet d'utiliser votre <link
+                linkend="zend.filter.inflector">inflecteur</link> pour la résolution des scripts de
+                layout ou de modifier l'inflecteur par défaut.
+            </para>
         </listitem>
     </itemizedlist>
 
     <sect2 id="zend.layout.advanced.view">
         <title>Objets de vue personnalisés</title>
 
-        <para><classname>Zend_Layout</classname> accepte des objets de vue implémentant <classname>Zend_View_Interface</classname> ou
-        étendant <classname>Zend_View_Abstract</classname> pour le rendu du script de layout. Passez le en paramètre au
-        constructeur ou à <code>startMvc()</code>, ou utilisez l'accesseur <code>setView()</code> :</para>
+        <para>
+            <classname>Zend_Layout</classname> accepte des objets de vue implémentant
+            <classname>Zend_View_Interface</classname> ou étendant
+            <classname>Zend_View_Abstract</classname> pour le rendu du script de layout. Passez le
+            en paramètre au constructeur ou à <code>startMvc()</code>, ou utilisez l'accesseur
+            <code>setView()</code> :
+        </para>
 
         <programlisting role="php"><![CDATA[
 $view = new My_Custom_View();
@@ -48,22 +68,32 @@ $layout->setView($view);
         <note>
             <title>Attention à vos implémentations de Zend_View</title>
 
-            <para>Même si <classname>Zend_Layout</classname> vous permet d'utiliser votre propre objet de vue (implémentant
-            <classname>Zend_View_Interface</classname>), vous pouvez rencontrer des problèmes si votre vue n'a pas accès à
-            certaines aides de vue, en particulier les aides "layout" et <link
-            linkend="zend.view.helpers.initial.placeholder">"placeholder"</link>. <classname>Zend_Layout</classname> effectue des
-            affectations de variables sur la vue via ces aides.</para>
-
-            <para>Si vous avez besoin d'un objet <classname>Zend_View</classname> personnalisé qui ne supporte pas ces aides de
-            vue, vous devrez alors trouver un moyen de passer les variables du layout à la vue. Par exemple, en étendant
-            l'objet <classname>Zend_Layout</classname> et en rédéfinissant la méthode <code>render()</code> en passant des
-            variables à la vue. Aussi, vous pouvez créer votre propre plugin qui s'occupe de passer ces variables avant
-            le rendu du layout.</para>
-
-            <para>De même, si votre implémentation de la vue permet l'extension via des plugins, vous pouvez à tout
-            moment accéder aux variables du layout grâce à l'aide <link
-            linkend="zend.view.helpers.initial.placeholder">placeholder</link> en utilisant la clé "Zend_Layout"
-            :</para>
+            <para>
+                Même si <classname>Zend_Layout</classname> vous permet d'utiliser votre propre
+                objet de vue (implémentant <classname>Zend_View_Interface</classname>), vous pouvez
+                rencontrer des problèmes si votre vue n'a pas accès à certaines aides de vue, en
+                particulier les aides "layout" et <link
+                linkend="zend.view.helpers.initial.placeholder">"placeholder"</link>.
+                <classname>Zend_Layout</classname> effectue des affectations de variables sur la vue
+                via ces aides.
+            </para>
+
+            <para>
+                Si vous avez besoin d'un objet <classname>Zend_View</classname> personnalisé
+                qui ne supporte pas ces aides de vue, vous devrez alors trouver un moyen de passer
+                les variables du layout à la vue. Par exemple, en étendant l'objet
+                <classname>Zend_Layout</classname> et en rédéfinissant la méthode
+                <code>render()</code> en passant des variables à la vue. Aussi, vous pouvez créer
+                votre propre plugin qui s'occupe de passer ces variables avant le rendu du
+                layout.
+            </para>
+
+            <para>
+                De même, si votre implémentation de la vue permet l'extension via des plugins,
+                vous pouvez à tout moment accéder aux variables du layout grâce à l'aide <link
+                linkend="zend.view.helpers.initial.placeholder">placeholder</link> en utilisant la
+                clé "Zend_Layout" :
+            </para>
 
             <programlisting role="php"><![CDATA[
 $placeholders = new Zend_View_Helper_Placeholder();
@@ -76,36 +106,55 @@ $layoutVars   = $placeholders->placeholder('Zend_Layout')
     <sect2 id="zend.layout.advanced.plugin">
         <title>Plugin de contrôleur frontal personnalisé</title>
 
-        <para>Lorsqu'utilisé avec les composants MVC, <classname>Zend_Layout</classname> enregistre un plugin de contrôleur
-        frontal qui se charge du rendu du layout juste avant la fin de la boucle de distribution. Ceci convient à la
-        majorité des cas, si cependant vous avez besoin de construire votre propre plugin, passez son nom dans l'option
-        <code>pluginClass</code> de la méthode <code>startMvc()</code>.</para>
-
-        <para>Votre plugin doit alors étendre <classname>Zend_Controller_Plugin_Abstract</classname>, et devrait accepter un objet
-        <classname>Zend_Layout</classname> lors de sa construction.</para>
-
-        <para>La classe par défaut du plugin est <classname>Zend_Layout_Controller_Plugin_Layout</classname>.</para>
+        <para>
+            Lorsqu'utilisé avec les composants MVC, <classname>Zend_Layout</classname>
+            enregistre un plugin de contrôleur frontal qui se charge du rendu du layout juste avant
+            la fin de la boucle de distribution. Ceci convient à la majorité des cas, si cependant
+            vous avez besoin de construire votre propre plugin, passez son nom dans l'option
+            <code>pluginClass</code> de la méthode <code>startMvc()</code>.
+        </para>
+
+        <para>
+            Votre plugin doit alors étendre
+            <classname>Zend_Controller_Plugin_Abstract</classname>, et devrait accepter un objet
+            <classname>Zend_Layout</classname> lors de sa construction.
+        </para>
+
+        <para>
+            La classe par défaut du plugin est
+            <classname>Zend_Layout_Controller_Plugin_Layout</classname>.
+        </para>
     </sect2>
 
     <sect2 id="zend.layout.advanced.helper">
         <title>Aide d'action personnalisée</title>
 
-        <para>Si les composants MVC sont utilisés, alors <classname>Zend_Layout</classname> enregistre une classe d'aide d'action
-        dans le gestionnaire d'aides (helper broker). Par défaut, il s'agit de
-        <classname>Zend_Layout_Controller_Action_Helper_Layout</classname>. Cette aide agit comme un proxy vers l'instance de
-        <classname>Zend_Layout</classname> et permet d'y accéder dans vos actions.</para>
-
-        <para>Si vous voulez utiliser votre propre classe, celle-ci devra alors étendre
-        <classname>Zend_Controller_Action_Helper_Abstract</classname>. Passez le nom de la classe dans l'option
-        <code>helperClass</code> de la méthode <code>startMvc()</code>.</para>
+        <para>
+            Si les composants MVC sont utilisés, alors <classname>Zend_Layout</classname>
+            enregistre une classe d'aide d'action dans le gestionnaire d'aides (helper broker). Par
+            défaut, il s'agit de <classname>Zend_Layout_Controller_Action_Helper_Layout</classname>.
+            Cette aide agit comme un proxy vers l'instance de <classname>Zend_Layout</classname> et
+            permet d'y accéder dans vos actions.
+        </para>
+
+        <para>
+            Si vous voulez utiliser votre propre classe, celle-ci devra alors étendre
+            <classname>Zend_Controller_Action_Helper_Abstract</classname>. Passez le nom de la
+            classe dans l'option <code>helperClass</code> de la méthode
+            <code>startMvc()</code>.
+        </para>
     </sect2>
 
     <sect2 id="zend.layout.advanced.inflector">
         <title>Résolution de chemin de script personnalisé (inflecteur)</title>
 
-        <para><classname>Zend_Layout</classname> utilise <classname>Zend_Filter_Inflector</classname> pour établir une chaine de filtre
-        permettant la résolution du nom du layout, vers le fichier y correspondant. Par défaut, les règles
-        "Word_CamelCaseToDash" suivie de "StringToLower" sont utilisées. Le suffixe "phtml" est ensuite ajouté :</para>
+        <para>
+            <classname>Zend_Layout</classname> utilise
+            <classname>Zend_Filter_Inflector</classname> pour établir une chaine de filtre
+            permettant la résolution du nom du layout, vers le fichier y correspondant. Par défaut,
+            les règles "Word_CamelCaseToDash" suivie de "StringToLower" sont utilisées. Le suffixe
+            "phtml" est ensuite ajouté :
+        </para>
 
         <itemizedlist>
             <listitem>
@@ -117,16 +166,22 @@ $layoutVars   = $placeholders->placeholder('Zend_Layout')
             </listitem>
         </itemizedlist>
 
-        <para>Vous pouvez personnaliser l'inflecteur de 3 manières différentes : Modifier la cible et/ou le suffixe
-        grâce à des accesseurs dans <classname>Zend_Layout</classname> ; Modifier les règles de l'inflecteur associé à
-        <classname>Zend_Layout</classname> ; Ou encore créer votre propre inflecteur et le passer à
-        <classname>Zend_Layout::setInflector()</classname>.</para>
+        <para>
+            Vous pouvez personnaliser l'inflecteur de 3 manières différentes : Modifier la
+            cible et/ou le suffixe grâce à des accesseurs dans <classname>Zend_Layout</classname> ;
+            Modifier les règles de l'inflecteur associé à <classname>Zend_Layout</classname> ; Ou
+            encore créer votre propre inflecteur et le passer à
+            <classname>Zend_Layout::setInflector()</classname>.
+        </para>
 
         <example id="zend.layout.advanced.inflector.accessors">
             <title>Utilisation des accesseurs pour modifier l'inflecteur</title>
 
-            <para>L'inflecteur par défaut de <classname>Zend_Layout</classname> utilise des marqueurs statiques pour la cible et
-            le suffixe. 2 accesseurs vous sont donc proposés :</para>
+            <para>
+                L'inflecteur par défaut de <classname>Zend_Layout</classname> utilise des
+                marqueurs statiques pour la cible et le suffixe. 2 accesseurs vous sont donc
+                proposés :
+            </para>
 
             <programlisting role="php"><![CDATA[
 // Affecte une cible à l'inflecteur:
@@ -140,13 +195,19 @@ $layout->setViewSuffix('php');
         <example id="zend.layout.advanced.inflector.directmodification">
             <title>Modification directe de l'inflecteur de Zend_Layout</title>
 
-            <para>Les inflecteurs fonctionnent avec un cible et plusieurs règles. La cible par défaut utilisée pour
-            <classname>Zend_Layout</classname> est ":script.:suffix" ; ":script" représente le nom du script de layout, et
-            ":suffix" est une règle statique.</para>
+            <para>
+                Les inflecteurs fonctionnent avec un cible et plusieurs règles. La cible par
+                défaut utilisée pour <classname>Zend_Layout</classname> est ":script.:suffix" ;
+                ":script" représente le nom du script de layout, et ":suffix" est une règle
+                statique.
+            </para>
 
-            <para>Imaginons que vous vouliez que le suffixe du script de layout soit "html", et que vous vouliez séparer
-            les mots en CasseMélangée ou en notationCamel avec des tirets-bats au lieu des tirets. De plus, vous voulez
-            chercher vos scripts dans un sous-dossier "layouts" :</para>
+            <para>
+                Imaginons que vous vouliez que le suffixe du script de layout soit "html", et
+                que vous vouliez séparer les mots en CasseMélangée ou en notationCamel avec des
+                tirets-bats au lieu des tirets. De plus, vous voulez chercher vos scripts dans un
+                sous-dossier "layouts" :
+            </para>
 
             <programlisting role="php"><![CDATA[
 $layout->getInflector()->setTarget('layouts/:script.:suffix')
@@ -158,9 +219,11 @@ $layout->getInflector()->setTarget('layouts/:script.:suffix')
         <example id="zend.layout.advanced.inflector.custom">
             <title>Inflecteur personnalisé</title>
 
-            <para>Dans la plupart des cas, modifier l'inflecteur sera suffisant. Vous pouvez cependant créer votre
-            propre inflecteur, pour l'utiliser à différents endroits par exemple, et le passer à
-            <classname>Zend_Layout</classname>:</para>
+            <para>
+                Dans la plupart des cas, modifier l'inflecteur sera suffisant. Vous pouvez
+                cependant créer votre propre inflecteur, pour l'utiliser à différents endroits par
+                exemple, et le passer à <classname>Zend_Layout</classname>:
+            </para>
 
             <programlisting role="php"><![CDATA[
 $inflector = new Zend_Filter_Inflector('layouts/:script.:suffix');
@@ -175,9 +238,12 @@ $layout->setInflector($inflector);
         <note>
             <title>L'inflecteur peut être désactivé</title>
 
-            <para>L'inflecteur peut être désactivé si vous spécifiez, par exemple, un chemin absolu pour un script
-            utilisé par <classname>Zend_Layout</classname>. Les méthodes <code>enableInflection()</code> et
-            <code>disableInflection()</code> vous y aideront.</para>
+            <para>
+                L'inflecteur peut être désactivé si vous spécifiez, par exemple, un chemin
+                absolu pour un script utilisé par <classname>Zend_Layout</classname>. Les méthodes
+                <code>enableInflection()</code> et <code>disableInflection()</code> vous y
+                aideront.
+            </para>
         </note>
     </sect2>
 </sect1>

+ 33 - 17
documentation/manual/fr/module_specs/Zend_Layout-Introduction.xml

@@ -1,44 +1,60 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 7078 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15103 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.layout.introduction">
     <title>Introduction</title>
 
-    <para><classname>Zend_Layout</classname> utilise le design pattern Two Step View, ce qui permet d'encapsuler le contenu d'une
-    vue dans une autre, généralement appelée template. D'autres projets les appellent aussi
-    <emphasis>layouts</emphasis>, ainsi Zend Framework utilise ce terme.</para>
+    <para>
+        <classname>Zend_Layout</classname> utilise le design pattern Two Step View, ce qui
+        permet d'encapsuler le contenu d'une vue dans une autre, généralement appelée template.
+        D'autres projets les appellent aussi <emphasis>layouts</emphasis>, ainsi Zend Framework
+        utilise ce terme.
+    </para>
 
     <para>Les principales caractéristiques de <classname>Zend_Layout</classname> sont :</para>
 
     <itemizedlist>
         <listitem>
-            <para>Automatiser le rendu des layouts lorsqu'ils sont utilisés avec les composants MVC de Zend
-            Framework.</para>
+            <para>
+                Automatiser le rendu des layouts lorsqu'ils sont utilisés avec les composants
+                MVC de Zend Framework.
+            </para>
         </listitem>
 
         <listitem>
-            <para>Fournir un cadre à part entière pour les variables du layout, au même titre que les variables de
-            vue.</para>
+            <para>
+                Fournir un cadre à part entière pour les variables du layout, au même titre
+                que les variables de vue.
+            </para>
         </listitem>
 
         <listitem>
-            <para>Permettre la configuration du nom des layouts, la recherche des scripts leurs correspondant
-            (inflexion), ainsi que leurs chemins d'accès.</para>
+            <para>
+                Permettre la configuration du nom des layouts, la recherche des scripts leurs
+                correspondant (inflexion), ainsi que leurs chemins d'accès.
+            </para>
         </listitem>
 
         <listitem>
-            <para>Permettre de désactiver les layouts temporairement, changer leur configuration ; tout ceci depuis les
-            contrôleurs ou les scripts de vue.</para>
+            <para>
+                Permettre de désactiver les layouts temporairement, changer leur configuration
+                ; tout ceci depuis les contrôleurs ou les scripts de vue.
+            </para>
         </listitem>
 
         <listitem>
-            <para>Utiliser les mêmes règles de résolution (inflexion) que le <link
-            linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>, mais sans empêcher de les
-            personnaliser à part.</para>
+            <para>
+                Utiliser les mêmes règles de résolution (inflexion) que le <link
+                linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>, mais sans
+                empêcher de les personnaliser à part.
+            </para>
         </listitem>
 
         <listitem>
-            <para>Une intégration sous forme d'aides/plugin dans le modèle MVC de Zend Framework.</para>
+            <para>
+                Une intégration sous forme d'aides/plugin dans le modèle MVC de Zend
+                Framework.
+            </para>
         </listitem>
     </itemizedlist>
 </sect1>

+ 97 - 48
documentation/manual/fr/module_specs/Zend_Layout-Options.xml

@@ -1,80 +1,116 @@
-<?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.layout.options">
     <title>Zend_Layout options de configuration</title>
 
-    <para><classname>Zend_Layout</classname> possède quelques options. Vous pouvez les spécifier grâce à des accesseurs.
-    Autrement, en passant un tableau ou un objet <classname>Zend_Config</classname> au constructeur, ou à <code>startMvc()</code>.
-    Un tableau d'options peut aussi être passé à <code>setOptions()</code>, un objet <classname>Zend_Config</classname> peut être
-    passé à <code>setConfig()</code>. Les options de configuration sont les suivantes :</para>
+    <para>
+        <classname>Zend_Layout</classname> possède quelques options. Vous pouvez les spécifier
+        grâce à des accesseurs. Autrement, en passant un tableau ou un objet
+        <classname>Zend_Config</classname> au constructeur, ou à <code>startMvc()</code>. Un tableau
+        d'options peut aussi être passé à <code>setOptions()</code>, un objet
+        <classname>Zend_Config</classname> peut être passé à <code>setConfig()</code>. Les options
+        de configuration sont les suivantes :
+    </para>
 
     <itemizedlist>
         <listitem>
-            <para><emphasis>layout</emphasis> : le nom du script de layout. L'inflecteur traduit alors ceci en nom de
-            fichier. Par défaut, il s'agit de "layout" traduit vers "layout.phtml". Les accesseurs sont
-            <code>setLayout()</code> et <code>getLayout()</code>.</para>
+            <para>
+                <emphasis>layout</emphasis> : le nom du script de layout. L'inflecteur traduit
+                alors ceci en nom de fichier. Par défaut, il s'agit de "layout" traduit vers
+                "layout.phtml". Les accesseurs sont <code>setLayout()</code> et
+                <code>getLayout()</code>.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>layoutPath</emphasis> : l'url de base vers les scripts de layout. Les accesseurs sont
-            <code>setLayoutPath()</code> et <code>getLayoutPath()</code>.</para>
+            <para>
+                <emphasis>layoutPath</emphasis> : l'url de base vers les scripts de layout.
+                Les accesseurs sont <code>setLayoutPath()</code> et
+                <code>getLayoutPath()</code>.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>contentKey</emphasis> : la variable de layout utilisée pour accéder au contenu par défaut
-            (lorsqu'utilisée couplée avec MVC). La valeur par défaut est "content". Pour les accesseurs :
-            <code>setContentKey()</code> et <code>getContentKey()</code>.</para>
+            <para>
+                <emphasis>contentKey</emphasis> : la variable de layout utilisée pour accéder
+                au contenu par défaut (lorsqu'utilisée couplée avec MVC). La valeur par défaut est
+                "content". Pour les accesseurs : <code>setContentKey()</code> et
+                <code>getContentKey()</code>.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>mvcSuccessfulActionOnly</emphasis> : si une action envoie une exception et que cette option
-            vaut <code>true</code>, alors le layout ne sera pas rendu. (Ceci évite un double rendu alors que le plugin
-            <link linkend="zend.controller.plugins.standard.errorhandler">ErrorHandler</link> est activé). Par défaut
-            cette option est à <code>true</code>. Ses accesseurs : <code>setMvcSuccessfulActionOnly()</code> et
-            <code>getMvcSuccessfulActionOnly()</code>.</para>
+            <para>
+                <emphasis>mvcSuccessfulActionOnly</emphasis> : si une action envoie une
+                exception et que cette option vaut <code>true</code>, alors le layout ne sera pas
+                rendu. (Ceci évite un double rendu alors que le plugin <link
+                linkend="zend.controller.plugins.standard.errorhandler">ErrorHandler</link> est
+                activé). Par défaut cette option est à <code>true</code>. Ses accesseurs :
+                <code>setMvcSuccessfulActionOnly()</code> et
+                <code>getMvcSuccessfulActionOnly()</code>.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>view</emphasis> : l'objet de vue (<classname>Zend_View</classname>) utilisée par le layout pour rendre
-            son script. Utilisé avec MVC, <classname>Zend_Layout</classname> cherchera à récupérer la vue via l'aide <link
-            linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>, si aucun objet de vue ne lui est
-            passé explicitement. Les accesseurs sont <code>setView()</code> et <code>getView()</code>.</para>
+            <para>
+                <emphasis>view</emphasis> : l'objet de vue (<classname>Zend_View</classname>)
+                utilisée par le layout pour rendre son script. Utilisé avec MVC,
+                <classname>Zend_Layout</classname> cherchera à récupérer la vue via l'aide <link
+                linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>, si aucun
+                objet de vue ne lui est passé explicitement. Les accesseurs sont
+                <code>setView()</code> et <code>getView()</code>.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>helperClass</emphasis> : la classe représentant l'aide d'action lorsque
-            <classname>Zend_Layout</classname> est utilisé avec les composants MVC. Par défaut il s'agit de
-            <classname>Zend_Layout_Controller_Action_Helper_Layout</classname>. Les accesseurs sont <code>setHelperClass()</code>
-            et <code>getHelperClass()</code>.</para>
+            <para>
+                <emphasis>helperClass</emphasis> : la classe représentant l'aide d'action
+                lorsque <classname>Zend_Layout</classname> est utilisé avec les composants MVC. Par
+                défaut il s'agit de
+                <classname>Zend_Layout_Controller_Action_Helper_Layout</classname>. Les accesseurs
+                sont <code>setHelperClass()</code> et <code>getHelperClass()</code>.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>pluginClass</emphasis> : la classe représentant le plugin de contrôleur frontal lorsque
-            <classname>Zend_Layout</classname> est utilisé avec les composants MVC. Par défaut, il s'agit de
-            <classname>Zend_Layout_Controller_Plugin_Layout</classname>. Les accesseurs sont <code>setPluginClass()</code> et
-            <code>getPluginClass()</code>.</para>
+            <para>
+                <emphasis>pluginClass</emphasis> : la classe représentant le plugin de
+                contrôleur frontal lorsque <classname>Zend_Layout</classname> est utilisé avec les
+                composants MVC. Par défaut, il s'agit de
+                <classname>Zend_Layout_Controller_Plugin_Layout</classname>. Les accesseurs sont
+                <code>setPluginClass()</code> et <code>getPluginClass()</code>.
+            </para>
         </listitem>
 
         <listitem>
-            <para><emphasis>inflector</emphasis> : l'inflecteur utilisé pour la résolution des noms de layout vers les
-            scripts de layout. Voyez <link linkend="zend.layout.advanced.inflector">la documentation spécifique pour
-            plus de détails</link>. Les accesseurs sont <code>setInflector()</code> et
-            <code>getInflector()</code>.</para>
+            <para>
+                <emphasis>inflector</emphasis> : l'inflecteur utilisé pour la résolution des
+                noms de layout vers les scripts de layout. Voyez <link
+                linkend="zend.layout.advanced.inflector">la documentation spécifique pour plus de
+                détails</link>. Les accesseurs sont <code>setInflector()</code> et
+                <code>getInflector()</code>.
+            </para>
         </listitem>
     </itemizedlist>
 
     <note>
         <title>Vous devez passer les helperClass et pluginClass à startMvc()</title>
 
-        <para>Pour que les paramètres <code>helperClass</code> et <code>pluginClass</code> agissent, vous devez les
-        passer en options à <code>startMvc()</code>. Si vous les spécifiez après, ils seront ignorés.</para>
+        <para>
+            Pour que les paramètres <code>helperClass</code> et <code>pluginClass</code>
+            agissent, vous devez les passer en options à <code>startMvc()</code>. Si vous les
+            spécifiez après, ils seront ignorés.
+        </para>
     </note>
 
     <sect2 id="zend.layout.options.examples">
         <title>Exemples</title>
 
-        <para>Les exemples sont basés sur les paramètres <code>$options</code> et <code>$config</code> suivants :</para>
+        <para>
+            Les exemples sont basés sur les paramètres <code>$options</code> et
+            <code>$config</code> suivants :
+        </para>
 
         <programlisting role="php"><![CDATA[
 $options = array(
@@ -98,8 +134,10 @@ $config = new Zend_Config_Ini('/chemin/vers/layout.ini', 'layout');
         <example id="zend.layout.options.examples.constructor">
             <title>Passer des options au constructeur ou à startMvc()</title>
 
-            <para>Le constructeur et la méthode statique <code>startMvc()</code> acceptent soit un tableau d'options,
-            soit un objet <classname>Zend_Config</classname>.</para>
+            <para>
+                Le constructeur et la méthode statique <code>startMvc()</code> acceptent soit
+                un tableau d'options, soit un objet <classname>Zend_Config</classname>.
+            </para>
 
             <para>Voyons le cas du tableau :</para>
 
@@ -123,14 +161,20 @@ $layout = new Zend_Layout($config);
 $layout = Zend_Layout::startMvc($config);
 ]]></programlisting>
 
-            <para>C'est la manière la plus simple de configurer votre objet <classname>Zend_Layout</classname>.</para>
+            <para>
+                C'est la manière la plus simple de configurer votre objet
+                <classname>Zend_Layout</classname>.
+            </para>
         </example>
 
         <example id="zend.layout.options.examples.setoptionsconfig">
             <title>Utilisation de setOptions() et setConfig()</title>
 
-            <para>Pour configurer <classname>Zend_Layout</classname> après l'avoir instanciée, utilisez les méthodes
-            <code>setOptions()</code> et <code>setConfig()</code> sur l'objet :</para>
+            <para>
+                Pour configurer <classname>Zend_Layout</classname> après l'avoir instanciée,
+                utilisez les méthodes <code>setOptions()</code> et <code>setConfig()</code> sur
+                l'objet :
+            </para>
 
             <programlisting role="php"><![CDATA[
 // Utilisation d'un tableau d'options:
@@ -140,16 +184,21 @@ $layout->setOptions($options);
 $layout->setConfig($options);
 ]]></programlisting>
 
-            <para>Notez cependant que certaines options comme <code>pluginClass</code> et <code>helperClass</code>
-            n'auront aucun effet avec ses méthodes. Elles doivent être passées au constructeur ou à la méthode
-            <code>startMvc()</code>.</para>
+            <para>
+                Notez cependant que certaines options comme <code>pluginClass</code> et
+                <code>helperClass</code> n'auront aucun effet avec ses méthodes. Elles doivent être
+                passées au constructeur ou à la méthode <code>startMvc()</code>.
+            </para>
         </example>
 
         <example id="zend.layout.options.examples.accessors">
             <title>Utilisation des accesseurs</title>
 
-            <para>Enfin, vous pouvez aussi configurer votre objet de <classname>Zend_Layout</classname> grâce à ses accesseurs.
-            Ils peuvent s'utiliser chaînés (interface fluide):</para>
+            <para>
+                Enfin, vous pouvez aussi configurer votre objet de
+                <classname>Zend_Layout</classname> grâce à ses accesseurs. Ils peuvent s'utiliser
+                chaînés (interface fluide):
+            </para>
 
             <programlisting role="php"><![CDATA[
 $layout->setLayout('foo')

+ 126 - 70
documentation/manual/fr/module_specs/Zend_Layout-QuickStart.xml

@@ -1,18 +1,25 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 12116 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15156 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.layout.quickstart">
     <title>Zend_Layout - Démarrage rapide</title>
 
-    <para>Il y a deux modes d'utilisation de <classname>Zend_Layout</classname> : avec Zend Framework MVC, et sans.</para>
+    <para>
+        Il y a deux modes d'utilisation de <classname>Zend_Layout</classname> : avec Zend
+        Framework MVC, et sans.
+    </para>
 
     <sect2 id="zend.layout.quickstart.layouts">
         <title>Scripts de layout</title>
 
-        <para>Dans tous les cas, un script de layout est nécessaire. Les scripts de layout utilisent simplement
-        Zend_View (ou une implémentation particulière personnalisée). Les variables de layout sont enregistrées dans le
-        <link linkend="zend.view.helpers.initial.placeholder">placeholder</link> <code>Layout</code>, et peuvent être
-        accédées via l'aide de vue placeholder ou directement en tant que propriétés de l'objet layout.</para>
+        <para>
+            Dans tous les cas, un script de layout est nécessaire. Les scripts de layout
+            utilisent simplement Zend_View (ou une implémentation particulière personnalisée). Les
+            variables de layout sont enregistrées dans le <link
+            linkend="zend.view.helpers.initial.placeholder">placeholder</link> <code>Layout</code>,
+            et peuvent être accédées via l'aide de vue placeholder ou directement en tant que
+            propriétés de l'objet layout.
+        </para>
 
         <para>Par exemple :</para>
 
@@ -42,10 +49,13 @@
 </html>
 ]]></programlisting>
 
-        <para>Toutes les aides de vue enregistrées sont accessibles dans <classname>Zend_Layout</classname> car il utilise
-        <classname>Zend_View</classname> pour son propre rendu. Vous pouvez aussi accéder aux variables de la vue. Les aides <link
-        linkend="zend.view.helpers.initial.placeholder">placeholder </link> sont très pratiques pour l'accès aux
-        éléments tels que &lt;head&gt;, les scripts, les méta, etc. :</para>
+        <para>
+            Toutes les aides de vue enregistrées sont accessibles dans
+            <classname>Zend_Layout</classname> car il utilise <classname>Zend_View</classname> pour
+            son propre rendu. Vous pouvez aussi accéder aux variables de la vue. Les aides <link
+            linkend="zend.view.helpers.initial.placeholder">placeholder </link> sont très pratiques
+            pour l'accès aux éléments tels que &lt;head&gt;, les scripts, les méta, etc. :
+        </para>
 
         <programlisting role="php"><![CDATA[
 <!DOCTYPE html
@@ -54,18 +64,18 @@
 <html>
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <?= $this->headTitle() ?>
-    <?= $this->headScript() ?>
-    <?= $this->headStyle() ?>
+    <?php echo $this->headTitle() ?>
+    <?php echo $this->headScript() ?>
+    <?php echo $this->headStyle() ?>
 </head>
 <body>
     <?= $this->render('header.phtml') ?>
 
-    <div id="nav"><?= $this->placeholder('nav') ?></div>
+    <div id="nav"><?php echo $this->placeholder('nav') ?></div>
 
-    <div id="content"><= $this->layout()->content ?></div>
+    <div id="content"><?php echo $this->layout()->content ?></div>
 
-    <?= $this->render('footer.phtml') ?>
+    <?php echo $this->render('footer.phtml') ?>
 </body>
 </html>
 ]]></programlisting>
@@ -74,30 +84,44 @@
     <sect2 id="zend.layout.quickstart.mvc">
         <title>Utilisation de Zend_Layout avec le système MVC de Zend Framework</title>
 
-        <para><classname>Zend_Controller</classname> propose une manière d'étendre ses fonctionnalités au travers de <link
-        linkend="zend.controller.plugins">plugins de contrôleur frontal</link> et <link
-        linkend="zend.controller.actionhelpers">d'aides d'action</link>. <classname>Zend_View</classname> propose aussi des <link
-        linkend="zend.view.helpers">aides</link>. <classname>Zend_Layout</classname> utilise toutes ces possibilités
-        lorsqu'employé avec les composants MVC.</para>
-
-        <para><classname>Zend_Layout::startMvc()</classname> crée une instance de <classname>Zend_Layout</classname> avec des paramètres de
-        configuration optionnels. Cette méthode enregistre aussi un plugin de contrôleur frontal qui s'occupe du rendu
-        du layout rempli, lorsque la boucle de distribution est terminée. Elle enregistre également une aide d'action qui
-        permet aux actions d'accéder à l'objet <code>layout</code>. Enfin, l'aide de vue layout, elle, donne accès à
-        l'objet layout depuis la vue.</para>
-
-        <para>Regardons d'abord comment initialiser Zend_Layout afin de l'utiliser dans un contexte MVC </para>
+        <para>
+            <classname>Zend_Controller</classname> propose une manière d'étendre ses
+            fonctionnalités au travers de <link linkend="zend.controller.plugins">plugins de
+            contrôleur frontal</link> et <link linkend="zend.controller.actionhelpers">d'aides
+            d'action</link>. <classname>Zend_View</classname> propose aussi des <link
+            linkend="zend.view.helpers">aides</link>. <classname>Zend_Layout</classname> utilise
+            toutes ces possibilités lorsqu'employé avec les composants MVC.
+        </para>
+
+        <para>
+            <classname>Zend_Layout::startMvc()</classname> crée une instance de
+            <classname>Zend_Layout</classname> avec des paramètres de configuration optionnels.
+            Cette méthode enregistre aussi un plugin de contrôleur frontal qui s'occupe du rendu du
+            layout rempli, lorsque la boucle de distribution est terminée. Elle enregistre également
+            une aide d'action qui permet aux actions d'accéder à l'objet <code>layout</code>. Enfin,
+            l'aide de vue layout, elle, donne accès à l'objet layout depuis la vue.
+        </para>
+
+        <para>
+            Regardons d'abord comment initialiser Zend_Layout afin de l'utiliser dans un
+            contexte MVC
+        </para>
 
         <programlisting role="php"><![CDATA[
 // Dans le fichier de démarrage (bootstrap)
 Zend_Layout::startMvc();
 ]]></programlisting>
 
-        <para><code>startMvc()</code> peut prendre en paramètre un tableau d'options ou un objet
-        <classname>Zend_Config</classname> pour personnaliser l'instance. Ces options sont détaillées dans <xref
-        linkend="zend.layout.options" />.</para>
+        <para>
+            <code>startMvc()</code> peut prendre en paramètre un tableau d'options ou un objet
+            <classname>Zend_Config</classname> pour personnaliser l'instance. Ces options sont
+            détaillées dans <xref linkend="zend.layout.options" />.
+        </para>
 
-        <para>Dans le contrôleur d'action, vous pouvez donc accéder à l'instance de layout via l'aide d'action :</para>
+        <para>
+            Dans le contrôleur d'action, vous pouvez donc accéder à l'instance de layout via
+            l'aide d'action :
+        </para>
 
         <programlisting role="php"><![CDATA[
 class FooController extends Zend_Controller_Action
@@ -117,55 +141,74 @@ class FooController extends Zend_Controller_Action
 }
 ]]></programlisting>
 
-        <para>Dans vos scripts de vue, utiliser l'aide <code>layout</code> pour accéder à l'instance de
-        <classname>Zend_Layout</classname>. Notez que cette aide est différente des autres car elle ne retourne pas une chaîne,
-        mais bien un objet. Vous pouvez donc enchaîner une méthode immédiatement :</para>
+        <para>
+            Dans vos scripts de vue, utiliser l'aide <code>layout</code> pour accéder à
+            l'instance de <classname>Zend_Layout</classname>. Notez que cette aide est différente
+            des autres car elle ne retourne pas une chaîne, mais bien un objet. Vous pouvez donc
+            enchaîner une méthode immédiatement :
+        </para>
 
         <programlisting role="php"><![CDATA[
-<?php $this->layout()->setLayout('foo'); // utilise un script de layout spécifique
+$this->layout()->setLayout('foo'); // utilise un script de layout spécifique
 ]]></programlisting>
 
-        <para>Autrement, vous pouvez n'importe où accéder à votre instance de <classname>Zend_Layout</classname> via la méthode
-        statique <code>getMvcInstance()</code> :</para>
+        <para>
+            Autrement, vous pouvez n'importe où accéder à votre instance de
+            <classname>Zend_Layout</classname> via la méthode statique <code>getMvcInstance()</code>
+            :
+        </para>
 
         <programlisting role="php"><![CDATA[
 // Retourne null si startMvc() n'a pas été appelée auparavant
 $layout = Zend_Layout::getMvcInstance();
 ]]></programlisting>
 
-        <para>Enfin, le plugin de contrôleur frontal <classname>Zend_Layout</classname> dispose d'une caractéristique annexe au
-        rendu automatique du layout : il analyse les segments de l'objet de réponse et les assigne en tant que variables
-        de layout dans vos scripts de layout. Le segment "default" est assigné à la variable "content". Ceci permet de
-        mettre la main sur le contenu rendu dans l'action principale.</para>
-
-        <para>Par exemple, supposons que votre code rencontre d'abord <code>FooController::indexAction()</code>, qui va
-        rendre du contenu dans le segment par défaut de la réponse. Ensuite il forward vers
-        <code>NavController::menuAction()</code>, qui rend son contenu dans un segment nommé 'nav'. Enfin, vous
-        forwardez vers <code>CommentController::fetchAction()</code> pour récupérer des commentaires, mais vous les
-        rendez aussi dans le segment par défaut de la réponse (ce qui va rajouter du contenu). Votre script de layout
-        peut alors rendre chaque segment de manière séparée :</para>
+        <para>
+            Enfin, le plugin de contrôleur frontal <classname>Zend_Layout</classname> dispose
+            d'une caractéristique annexe au rendu automatique du layout : il analyse les segments de
+            l'objet de réponse et les assigne en tant que variables de layout dans vos scripts de
+            layout. Le segment "default" est assigné à la variable "content". Ceci permet de mettre
+            la main sur le contenu rendu dans l'action principale.
+        </para>
+
+        <para>
+            Par exemple, supposons que votre code rencontre d'abord
+            <code>FooController::indexAction()</code>, qui va rendre du contenu dans le segment par
+            défaut de la réponse. Ensuite il forward vers <code>NavController::menuAction()</code>,
+            qui rend son contenu dans un segment nommé 'nav'. Enfin, vous forwardez vers
+            <code>CommentController::fetchAction()</code> pour récupérer des commentaires, mais vous
+            les rendez aussi dans le segment par défaut de la réponse (ce qui va rajouter du
+            contenu). Votre script de layout peut alors rendre chaque segment de manière séparée
+            :
+        </para>
 
         <programlisting role="php"><![CDATA[
 <body>
     <!-- rend /nav/menu -->
-    <div id="nav"><?= $this->layout()->nav ?></div>
+    <div id="nav"><?php echo $this->layout()->nav ?></div>
 
     <!-- rend /foo/index + /comment/fetch -->
-    <div id="content"><?= $this->layout()->content ?></div>
+    <div id="content"><?php echo $this->layout()->content ?></div>
 </body>
 ]]></programlisting>
 
-        <para>Cette approche est particulièrement utile avec <link
-        linkend="zend.controller.actionhelpers.actionstack">l'aide d'action</link> ActionStack et son <link
-        linkend="zend.controller.plugins.standard.actionstack"> plugin</link> du même nom. Vous pouvez les utiliser pour
-        gérer une pile d'actions et ainsi décomposer vos processus.</para>
+        <para>
+            Cette approche est particulièrement utile avec <link
+            linkend="zend.controller.actionhelpers.actionstack">l'aide d'action</link> ActionStack
+            et son <link linkend="zend.controller.plugins.standard.actionstack"> plugin</link> du
+            même nom. Vous pouvez les utiliser pour gérer une pile d'actions et ainsi décomposer vos
+            processus.
+        </para>
     </sect2>
 
     <sect2 id="zend.layout.quickstart.standalone">
         <title>Utilisation de Zend_Layout en composant indépendant</title>
 
-        <para>Pris indépendamment des composants MVC, Zend_Layout n'offre pas tout à fait les mêmes possibilités et la
-        même flexibilité. Cependant, vous bénéficiez de deux avantages :</para>
+        <para>
+            Pris indépendamment des composants MVC, Zend_Layout n'offre pas tout à fait les
+            mêmes possibilités et la même flexibilité. Cependant, vous bénéficiez de deux avantages
+            :
+        </para>
 
         <itemizedlist>
             <listitem>
@@ -173,12 +216,18 @@ $layout = Zend_Layout::getMvcInstance();
             </listitem>
 
             <listitem>
-                <para>Isolation du script de layout, de son contenu issu des scripts de vue.</para>
+                <para>
+                    Isolation du script de layout, de son contenu issu des scripts de
+                    vue.
+                </para>
             </listitem>
         </itemizedlist>
 
-        <para>En tant que composant indépendant, instanciez un objet <classname>Zend_Layout</classname>, configurez le au moyen
-        d'accesseurs, passez vos variables comme des propriétés de l'objet, et rendez le layout :</para>
+        <para>
+            En tant que composant indépendant, instanciez un objet
+            <classname>Zend_Layout</classname>, configurez le au moyen d'accesseurs, passez vos
+            variables comme des propriétés de l'objet, et rendez le layout :
+        </para>
 
         <programlisting role="php"><![CDATA[
 $layout = new Zend_Layout();
@@ -201,13 +250,20 @@ echo $layout->render();
     <sect2 id="zend.layout.quickstart.example">
         <title>Layout d'exemple</title>
 
-        <para>Une image valant mieux qu'un paragraphe, voyez donc celle-ci qui décrit l'utilisation :</para>
-
-        <para><inlinegraphic align="center" fileref="figures/zend.layout.quickstart.example.png" format="PNG"
-        valign="middle" /></para>
-
-        <para>Avec cette approche, vous pouvez régler vos mises en forme CSS. En positionnement absolu, par exemple,
-        vous pourriez rendre la barre de navigation plus tard, en fin. Le mécanisme d'obtention du contenu reste le même
-        cependant.</para>
+        <para>
+            Une image valant mieux qu'un paragraphe, voyez donc celle-ci qui décrit
+            l'utilisation :
+        </para>
+
+        <para>
+            <inlinegraphic align="center" fileref="figures/zend.layout.quickstart.example.png"
+            format="PNG" valign="middle" />
+        </para>
+
+        <para>
+            Avec cette approche, vous pouvez régler vos mises en forme CSS. En positionnement
+            absolu, par exemple, vous pourriez rendre la barre de navigation plus tard, en fin. Le
+            mécanisme d'obtention du contenu reste le même cependant.
+        </para>
     </sect2>
 </sect1>