Quellcode durchsuchen

DOCUMENTATION French: sync manual

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@15489 44c647ce-9c0f-0410-b52a-842ac1e357ba
mikaelkael vor 16 Jahren
Ursprung
Commit
49796c4b89

+ 1 - 1
documentation/manual/fr/module_specs/Zend_Controller-Migration.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 15156 -->
+<!-- EN-Revision: 15467 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.controller.migration">
     <title>Migrer depuis des versions précédentes</title>

+ 370 - 241
documentation/manual/fr/module_specs/Zend_Http_Client-Adapters.xml

@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 12739 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15343 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.http.client.adapters">
     <title>Zend_Http_Client - Adaptateurs de connexion</title>
@@ -7,129 +7,158 @@
     <sect2 id="zend.http.client.adapters.overview">
         <title>Présentation globale</title>
 
-        <para><classname>Zend_Http_Client</classname> accepte des objets adaptateurs. Ces objets ont la responsabilité de soutenir
-        la connexion vers un serveur, à savoir écrire des requêtes et lire des réponses L'adaptateur peut donc être
-        changé, et même écrit ou réécrit pour correspondre à vos besoins, sans avoir l'obligation de toucher à toute la
-        classe dite "client". Vous vous connectez et manipulez votre connexion toujours de la même manière quelque soit
-        l'adaptateur situé dessous.</para>
-
-        <para>Actuellement, la classe cliente <classname>Zend_Http_Client</classname> est fournie avec trois adaptateurs :
-        <itemizedlist>
-                <listitem>
-                    <para><classname>Zend_Http_Client_Adapter_Socket</classname> (défaut)</para>
-                </listitem>
-
-                <listitem>
-                    <para><classname>Zend_Http_Client_Adapter_Proxy</classname></para>
-                </listitem>
-
-                <listitem>
-                    <para><classname>Zend_Http_Client_Adapter_Test</classname></para>
-                </listitem>
-            </itemizedlist></para>
-
-        <para>L'objet Zend_Http_Client se voit spécifié un adaptateur via son constructeur avec le tableau d'options, à
-        l'index 'adapter'. Fournissez alors une chaîne représentant la classe d'adaptateur à utiliser (par exemple
-        'Zend_Http_Client_Adapter_Socket'), ou un objet directement (par exemple <code> new
-        Zend_Http_Client_Adapter_Test</code>). Vous pouvez de même passer un adaptateur plus tard, avec la méthode
-        <classname>Zend_Http_Client-&gt;setConfig()</classname>.</para>
+        <para>
+            <classname>Zend_Http_Client</classname> accepte des objets adaptateurs. Ces objets
+            ont la responsabilité de soutenir la connexion vers un serveur, à savoir écrire des
+            requêtes et lire des réponses L'adaptateur peut donc être changé, et même écrit ou
+            réécrit pour correspondre à vos besoins, sans avoir l'obligation de toucher à toute la
+            classe dite "client". Vous vous connectez et manipulez votre connexion toujours de la
+            même manière quelque soit l'adaptateur situé dessous.
+        </para>
+
+        <para>
+            Actuellement, la classe cliente <classname>Zend_Http_Client</classname> est
+            fournie avec trois adaptateurs : <itemizedlist>
+                    <listitem>
+                        <para><classname>Zend_Http_Client_Adapter_Socket</classname> (défaut)</para>
+                    </listitem>
+    
+                    <listitem>
+                        <para><classname>Zend_Http_Client_Adapter_Proxy</classname></para>
+                    </listitem>
+    
+                    <listitem>
+                        <para><classname>Zend_Http_Client_Adapter_Test</classname></para>
+                    </listitem>
+    
+                    <listitem>
+                        <para><classname>Zend_Http_Client_Adapter_Curl</classname></para>
+                    </listitem>
+                </itemizedlist>
+            </para>
+
+        <para>
+            L'objet Zend_Http_Client se voit spécifié un adaptateur via son constructeur avec
+            le tableau d'options, à l'index 'adapter'. Fournissez alors une chaîne représentant la
+            classe d'adaptateur à utiliser (par exemple 'Zend_Http_Client_Adapter_Socket'), ou un
+            objet directement (par exemple <code> new Zend_Http_Client_Adapter_Test</code>). Vous
+            pouvez de même passer un adaptateur plus tard, avec la méthode
+            <classname>Zend_Http_Client-&gt;setConfig()</classname>.
+        </para>
     </sect2>
 
     <sect2 id="zend.http.client.adapters.socket">
         <title>Adaptateur Socket</title>
 
-        <para>L'adaptateur par défaut est Zend_Http_Client_Adapter_Socket. Il est basé sur les fonctions PHP
-        <code>fsockopen()</code> et soeurs. Il ne nécessite donc aucune extension particulière ni option de compilation
-        de PHP.</para>
-
-        <para>L'adaptateur Socket peut être configuré avec des options, passées par
-        <classname>Zend_Http_Client-&gt;setConfig()</classname> ou au constructeur du client. <table
-                id="zend.http.client.adapter.socket.configuration.table">
-                <title>Zend_Http_Client_Adapter_Socket configuration</title>
-
-                <tgroup cols="4">
-                    <thead>
-                        <row>
-                            <entry>Paramètre</entry>
-
-                            <entry>Description</entry>
-
-                            <entry>Types attendus</entry>
-
-                            <entry>Valeur par défaut</entry>
-                        </row>
-                    </thead>
-
-                    <tbody>
-                        <row>
-                            <entry>persistent</entry>
-
-                            <entry>Utilise ou non les connexions TCP persistantes</entry>
-
-                            <entry>booléen</entry>
-
-                            <entry>false</entry>
-                        </row>
-
-                        <row>
-                            <entry>ssltransport</entry>
-
-                            <entry>Couche de transport SSL ('sslv2', 'tls')</entry>
-
-                            <entry>chaîne</entry>
-
-                            <entry>ssl</entry>
-                        </row>
-
-                        <row>
-                            <entry>sslcert</entry>
-
-                            <entry>Chemin vers le certificat SSL encodé PEM</entry>
-
-                            <entry>chaîne</entry>
-
-                            <entry>null</entry>
-                        </row>
-
-                        <row>
-                            <entry>sslpassphrase</entry>
-
-                            <entry>Phrase de passe pour le fichier de certificat SSL</entry>
-
-                            <entry>chaîne</entry>
-
-                            <entry>null</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </table> <note>
-                <title>Connexions TCP persistantes</title>
-
-                <para>L'utilisation de connexions TCP persistantes peut potentiellement accélérer vos requêtes HTTP mais
-                n'a, dans la plupart des cas, qu'un petit effet positif et peut surcharger le serveur HTTP auquel vous
-                êtes connecté.</para>
-
-                <para>Il est recommandé d'utiliser les connexions TCP persistantes seulement si vous vous connectez au
-                même serveur très fréquemment, et que vous êtes sûr que le serveur est capable de gérer un nombre élevé
-                de connections concurrentes. Dans tous les cas vous êtes encouragés à tester l'effet des connections
-                persistantes à la fois sur l'accélération du client et sur la charge du serveur avant d'activer cette
-                option.</para>
-
-                <para>De plus, quand vous utilisez des connexions persistantes, il est recommandé d'activer l'option
-                "Keep-Alive" décrite dans <xref linkend="zend.http.client.configuration" />, sinon les connexions
-                persistantes n'auront que peu ou pas d'effet.</para>
+        <para>
+            L'adaptateur par défaut est Zend_Http_Client_Adapter_Socket. Il est basé sur les
+            fonctions PHP <code>fsockopen()</code> et soeurs. Il ne nécessite donc aucune extension
+            particulière ni option de compilation de PHP.
+        </para>
+
+        <para>
+            L'adaptateur Socket peut être configuré avec des options, passées par
+            <classname>Zend_Http_Client-&gt;setConfig()</classname> ou au constructeur du client.
+            <table id="zend.http.client.adapter.socket.configuration.table">
+                    <title>Zend_Http_Client_Adapter_Socket configuration</title>
+    
+                    <tgroup cols="4">
+                        <thead>
+                            <row>
+                                <entry>Paramètre</entry>
+    
+                                <entry>Description</entry>
+    
+                                <entry>Types attendus</entry>
+    
+                                <entry>Valeur par défaut</entry>
+                            </row>
+                        </thead>
+    
+                        <tbody>
+                            <row>
+                                <entry>persistent</entry>
+    
+                                <entry>Utilise ou non les connexions TCP persistantes</entry>
+    
+                                <entry>booléen</entry>
+    
+                                <entry>false</entry>
+                            </row>
+    
+                            <row>
+                                <entry>ssltransport</entry>
+    
+                                <entry>Couche de transport SSL ('sslv2', 'tls')</entry>
+    
+                                <entry>chaîne</entry>
+    
+                                <entry>ssl</entry>
+                            </row>
+    
+                            <row>
+                                <entry>sslcert</entry>
+    
+                                <entry>Chemin vers le certificat SSL encodé PEM</entry>
+    
+                                <entry>chaîne</entry>
+    
+                                <entry>null</entry>
+                            </row>
+    
+                            <row>
+                                <entry>sslpassphrase</entry>
+    
+                                <entry>Phrase de passe pour le fichier de certificat SSL</entry>
+    
+                                <entry>chaîne</entry>
+    
+                                <entry>null</entry>
+                            </row>
+                        </tbody>
+                    </tgroup>
+                </table> <note>
+                    <title>Connexions TCP persistantes</title>
+    
+                <para>
+                    L'utilisation de connexions TCP persistantes peut potentiellement
+                    accélérer vos requêtes HTTP mais n'a, dans la plupart des cas, qu'un petit effet
+                    positif et peut surcharger le serveur HTTP auquel vous êtes connecté.
+                </para>
+
+                <para>
+                    Il est recommandé d'utiliser les connexions TCP persistantes seulement si
+                    vous vous connectez au même serveur très fréquemment, et que vous êtes sûr que
+                    le serveur est capable de gérer un nombre élevé de connections concurrentes.
+                    Dans tous les cas vous êtes encouragés à tester l'effet des connections
+                    persistantes à la fois sur l'accélération du client et sur la charge du serveur
+                    avant d'activer cette option.
+                </para>
+
+                <para>
+                    De plus, quand vous utilisez des connexions persistantes, il est
+                    recommandé d'activer l'option "Keep-Alive" décrite dans <xref
+                    linkend="zend.http.client.configuration" />, sinon les connexions persistantes
+                    n'auront que peu ou pas d'effet.
+                </para>
             </note> <note>
                 <title>HTTPS SSL Paramètres de flux</title>
 
-                <para><code>ssltransport, sslcert</code> and <code>sslpassphrase</code> sont seulement appropriées lors
-                de l'utilisation d'HTTPS.</para>
-
-                <para>Bien que les réglages par défaut du mode SSL fonctionneront pour la plupart des applications, vous
-                pourrez avoir besoin de les changer si le serveur, auquel vous vous connectez, requière un paramétrage
-                particulier du client. Dans ce cas, vous devriez lire les sections sur la couche de transport SSL et ses
-                options à cette <ulink
-                url="http://www.php.net/manual/en/transports.php#transports.inet">adresse</ulink>.</para>
-            </note></para>
+                <para>
+                    <code>ssltransport, sslcert</code> and <code>sslpassphrase</code> sont
+                    seulement appropriées lors de l'utilisation d'HTTPS.
+                </para>
+
+                <para>
+                    Bien que les réglages par défaut du mode SSL fonctionneront pour la
+                    plupart des applications, vous pourrez avoir besoin de les changer si le
+                    serveur, auquel vous vous connectez, requière un paramétrage particulier du
+                    client. Dans ce cas, vous devriez lire les sections sur la couche de transport
+                    SSL et ses options à cette <ulink
+                    url="http://www.php.net/manual/en/transports.php#transports.inet">adresse</ulink>.
+                </para>
+                </note>
+            </para>
 
         <example id="zend.http.client.adapters.socket.example-1">
             <title>Changer la couche de transport HTTPS</title>
@@ -149,8 +178,10 @@ $response = $client->request();
 ]]></programlisting>
         </example>
 
-        <para>Le résultat ci-dessus sera similaire à l'ouverture d'une connexion TCP avec la commande PHP suivante
-        :</para>
+        <para>
+            Le résultat ci-dessus sera similaire à l'ouverture d'une connexion TCP avec la
+            commande PHP suivante :
+        </para>
 
         <para><code>fsockopen('tls://www.example.com', 443)</code></para>
     </sect2>
@@ -158,91 +189,104 @@ $response = $client->request();
     <sect2 id="zend.http.client.adapters.proxy">
         <title>Adaptateur Proxy</title>
 
-        <para>L'adaptateur Zend_Http_Client_Adapter_Proxy est identique à celui par défaut, Socket, sauf que Proxy se
-        connectera au serveur via un serveur Proxy (mandataire). Cette utilisation peut être rencontrée pour des raisons
-        de performances ou de sécurité.</para>
-
-        <para>En utilisant l'adaptateur Proxy, quelques paramètres de configuration seront nécessaires en plus du
-        paramètre 'adapter' : <table id="zend.http.client.adapters.proxy.table">
-                <title>Zend_Http_Client paramètres de configuration</title>
-
-                <tgroup cols="4">
-                    <thead>
-                        <row>
-                            <entry>Paramètre</entry>
-
-                            <entry>Description</entry>
-
-                            <entry>Valeurs attendues</entry>
-
-                            <entry>Valeur par défaut</entry>
-                        </row>
-                    </thead>
-
-                    <tbody>
-                        <row>
-                            <entry>proxy_host</entry>
-
-                            <entry>Adresse du serveur Proxy</entry>
-
-                            <entry>chaîne</entry>
-
-                            <entry>'proxy.myhost.com' ou '10.1.2.3'</entry>
-                        </row>
-
-                        <row>
-                            <entry>proxy_port</entry>
-
-                            <entry>Port du serveur Proxy</entry>
-
-                            <entry>entier</entry>
-
-                            <entry>8080 (défaut) ou 81</entry>
-                        </row>
-
-                        <row>
-                            <entry>proxy_user</entry>
-
-                            <entry>nom d'utilisateur pour le Proxy, si requis</entry>
-
-                            <entry>chaîne</entry>
-
-                            <entry>'shahar' ou '' pour aucun (défaut)</entry>
-                        </row>
-
-                        <row>
-                            <entry>proxy_pass</entry>
-
-                            <entry>Mot de passe du Proxy, si requis</entry>
-
-                            <entry>chaîne</entry>
-
-                            <entry>'secret' ou '' pour aucun (défaut)</entry>
-                        </row>
-
-                        <row>
-                            <entry>proxy_auth</entry>
-
-                            <entry>Type d'authentification HTTP du Proxy</entry>
-
-                            <entry>chaîne</entry>
-
-                            <entry>Zend_Http_Client::AUTH_BASIC (défaut)</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </table></para>
-
-        <para><code>proxy_host</code> devrait toujours être fourni. Si ça n'est pas le cas, alors le client retournera
-        sur une connexion Socket par défaut. <code>proxy_port</code> est par défaut à "8080".</para>
-
-        <para><code>proxy_user</code> et <code>proxy_pass</code> ne sont requis que si le serveur Proxy demande une
-        authentification. Si vous remplissez ces options, alors un champ d'en-tête HTTP "Proxy-Authentication" sera
-        ajouté à vos requêtes, via votre client.</para>
-
-        <para><code>proxy_auth</code> définit le type d'authentification à utiliser, si le serveur Proxy demande une
-        authentification. Actuellement, seule la méthode "basic" (<classname>Zend_Http_Client::AUTH_BASIC</classname>) est
-        supportée.</para>
+        <para>
+            L'adaptateur Zend_Http_Client_Adapter_Proxy est identique à celui par défaut,
+            Socket, sauf que Proxy se connectera au serveur via un serveur Proxy (mandataire). Cette
+            utilisation peut être rencontrée pour des raisons de performances ou de sécurité.
+        </para>
+
+        <para>
+            En utilisant l'adaptateur Proxy, quelques paramètres de configuration seront
+            nécessaires en plus du paramètre 'adapter' : <table
+                    id="zend.http.client.adapters.proxy.table">
+                    <title>Zend_Http_Client paramètres de configuration</title>
+    
+                    <tgroup cols="4">
+                        <thead>
+                            <row>
+                                <entry>Paramètre</entry>
+    
+                                <entry>Description</entry>
+    
+                                <entry>Valeurs attendues</entry>
+    
+                                <entry>Valeur par défaut</entry>
+                            </row>
+                        </thead>
+    
+                        <tbody>
+                            <row>
+                                <entry>proxy_host</entry>
+    
+                                <entry>Adresse du serveur Proxy</entry>
+    
+                                <entry>chaîne</entry>
+    
+                                <entry>'proxy.myhost.com' ou '10.1.2.3'</entry>
+                            </row>
+    
+                            <row>
+                                <entry>proxy_port</entry>
+    
+                                <entry>Port du serveur Proxy</entry>
+    
+                                <entry>entier</entry>
+    
+                                <entry>8080 (défaut) ou 81</entry>
+                            </row>
+    
+                            <row>
+                                <entry>proxy_user</entry>
+    
+                                <entry>nom d'utilisateur pour le Proxy, si requis</entry>
+    
+                                <entry>chaîne</entry>
+    
+                                <entry>'shahar' ou '' pour aucun (défaut)</entry>
+                            </row>
+    
+                            <row>
+                                <entry>proxy_pass</entry>
+    
+                                <entry>Mot de passe du Proxy, si requis</entry>
+    
+                                <entry>chaîne</entry>
+    
+                                <entry>'secret' ou '' pour aucun (défaut)</entry>
+                            </row>
+    
+                            <row>
+                                <entry>proxy_auth</entry>
+    
+                                <entry>Type d'authentification HTTP du Proxy</entry>
+    
+                                <entry>chaîne</entry>
+    
+                                <entry>Zend_Http_Client::AUTH_BASIC (défaut)</entry>
+                            </row>
+                        </tbody>
+                    </tgroup>
+                </table>
+            </para>
+
+        <para>
+            <code>proxy_host</code> devrait toujours être fourni. Si ça n'est pas le cas,
+            alors le client retournera sur une connexion Socket par défaut. <code>proxy_port</code>
+            est par défaut à "8080".
+        </para>
+
+        <para>
+            <code>proxy_user</code> et <code>proxy_pass</code> ne sont requis que si le
+            serveur Proxy demande une authentification. Si vous remplissez ces options, alors un
+            champ d'en-tête HTTP "Proxy-Authentication" sera ajouté à vos requêtes, via votre
+            client.
+        </para>
+
+        <para>
+            <code>proxy_auth</code> définit le type d'authentification à utiliser, si le
+            serveur Proxy demande une authentification. Actuellement, seule la méthode "basic"
+            (<classname>Zend_Http_Client::AUTH_BASIC</classname>) est supportée.
+        </para>
 
         <example id="zend.http.client.adapters.proxy.example-1">
             <title>Utiliser Zend_Http_Client derrière un serveur Proxy</title>
@@ -264,26 +308,36 @@ $client = new Zend_Http_Client('http://www.example.com', $config);
 ]]></programlisting>
         </example>
 
-        <para>Comme déjà dit, si proxy_host n'est pas rempli ou défini en tant que chaîne vide, alors le client
-        utilisera l'adaptateur Socket par défaut. Ceci est utile si le proxy est utilisé optionnellement, ou par
-        intermittence.</para>
+        <para>
+            Comme déjà dit, si proxy_host n'est pas rempli ou défini en tant que chaîne vide,
+            alors le client utilisera l'adaptateur Socket par défaut. Ceci est utile si le proxy est
+            utilisé optionnellement, ou par intermittence.
+        </para>
     </sect2>
 
     <sect2 id="zend.http.client.adapters.test">
         <title>Adaptateur Test</title>
 
-        <para>Il est quelque fois difficile de tester une application qui a besoin d'une connexion HTTP. Par exemple,
-        une application qui est en charge de lire un flux RSS aura besoin d'une connexion, qui n'est pas tout le temps
-        disponible.</para>
-
-        <para>C'est pour cette raison que l'adaptateur <classname>Zend_Http_Client_Adapter_Test</classname> est présent. Vous
-        pouvez de cette manière écrire vos applications, et lors de la phase de tests, passer votre connexion sur
-        l'adaptateur Test (objet mock).</para>
-
-        <para>La classe <classname>Zend_Http_Client_Adapter_Test</classname> possède une méthode supplémentaire,
-        <code>setResponse()</code>. Elle prend en paramètre un objet <classname>Zend_Http_Response</classname> ou une chaîne. Une
-        fois cet objet de réponse déterminé, l'adaptateur de Test retournera toujours cette réponse, sans effectuer de
-        réelle requête HTTP.</para>
+        <para>
+            Il est quelque fois difficile de tester une application qui a besoin d'une
+            connexion HTTP. Par exemple, une application qui est en charge de lire un flux RSS aura
+            besoin d'une connexion, qui n'est pas tout le temps disponible.
+        </para>
+
+        <para>
+            C'est pour cette raison que l'adaptateur
+            <classname>Zend_Http_Client_Adapter_Test</classname> est présent. Vous pouvez de cette
+            manière écrire vos applications, et lors de la phase de tests, passer votre connexion
+            sur l'adaptateur Test (objet mock).
+        </para>
+
+        <para>
+            La classe <classname>Zend_Http_Client_Adapter_Test</classname> possède une méthode
+            supplémentaire, <code>setResponse()</code>. Elle prend en paramètre un objet
+            <classname>Zend_Http_Response</classname> ou une chaîne. Une fois cet objet de réponse
+            déterminé, l'adaptateur de Test retournera toujours cette réponse, sans effectuer de
+            réelle requête HTTP.
+        </para>
 
         <example id="zend.http.client.adapters.test.example-1">
             <title>Tester avec un objet de réponse HTTP unique</title>
@@ -314,13 +368,19 @@ $response = $client->request('GET');
 ]]></programlisting>
         </example>
 
-        <para>L'exemple ci dessus montre comment préconfigurer la réponse qui sera retournée lors d'une requête de votre
-        objet client. Ainsi lors des tests, votre application continuera de se comporter normalement, elle aura tout
-        simplement été trompée (mock). Aucune connexion HTTP n'est dans ce cas là nécessaire.</para>
+        <para>
+            L'exemple ci dessus montre comment préconfigurer la réponse qui sera retournée
+            lors d'une requête de votre objet client. Ainsi lors des tests, votre application
+            continuera de se comporter normalement, elle aura tout simplement été trompée (mock).
+            Aucune connexion HTTP n'est dans ce cas là nécessaire.
+        </para>
 
-        <para>Quelques fois, plusieurs transactions HTTP peuvent être nécessaires. Une réponse peut demander une
-        redirection, vers une autre. Dans ce cas, utiliser <code>setResponse()</code> toute seule n'est pas possible car
-        il ne sera pas possible de spécifier les réponses suivantes, nécessaires alors à l'application.</para>
+        <para>
+            Quelques fois, plusieurs transactions HTTP peuvent être nécessaires. Une réponse
+            peut demander une redirection, vers une autre. Dans ce cas, utiliser
+            <code>setResponse()</code> toute seule n'est pas possible car il ne sera pas possible de
+            spécifier les réponses suivantes, nécessaires alors à l'application.
+        </para>
 
         <example id="zend.http.client.adapters.test.example-2">
             <title>Tester avec plusieurs réponses HTTP</title>
@@ -358,30 +418,99 @@ $adapter->addResponse(
 ]]></programlisting>
         </example>
 
-        <para>La méthode <code>setResponse()</code> détruit toutes les réponses dans le buffer de
-        <classname>Zend_Http_Client_Adapter_Test</classname> et définit la première réponse qui sera retournée. La méthode
-        <code>addResponse()</code> définit les réponses suivantes.</para>
+        <para>
+            La méthode <code>setResponse()</code> détruit toutes les réponses dans le buffer
+            de <classname>Zend_Http_Client_Adapter_Test</classname> et définit la première réponse
+            qui sera retournée. La méthode <code>addResponse()</code> définit les réponses
+            suivantes.
+        </para>
 
         <para>Les réponses seront rejouées dans leur ordre d'ajout.</para>
 
-        <para>Dans l'exemple ci-dessus, l'adaptateur est configuré pour un scénario de test de redirections 302. En
-        fonction de votre application, le suivi d'une redirection peut être ou non désiré. Dans notre exemple, nous nous
-        attendons à ce que la redirection soit suivie et nous configurons notre adaptateur de tests pour ceci. La
-        réponse de redirection originelle (302) est définie avec la méthode <code>setResponse()</code>, quant à la
-        réponse non redirigeante (200) suivante, elles est définie avec la méthode <code>addResponse()</code>. Lorsque
-        votre objet client est configuré, vous pouvez l'injecter dans votre application à tester, et voir le résultat et
-        les comportements.</para>
+        <para>
+            Dans l'exemple ci-dessus, l'adaptateur est configuré pour un scénario de test de
+            redirections 302. En fonction de votre application, le suivi d'une redirection peut être
+            ou non désiré. Dans notre exemple, nous nous attendons à ce que la redirection soit
+            suivie et nous configurons notre adaptateur de tests pour ceci. La réponse de
+            redirection originelle (302) est définie avec la méthode <code>setResponse()</code>,
+            quant à la réponse non redirigeante (200) suivante, elles est définie avec la méthode
+            <code>addResponse()</code>. Lorsque votre objet client est configuré, vous pouvez
+            l'injecter dans votre application à tester, et voir le résultat et les
+            comportements.
+        </para>
+    </sect2>
+
+    <sect2 id="zend.http.client.adapters.curl">
+        <title>The cURL Adapter</title>
+
+        <para>
+            cURL is a standard HTTP client library that is distributed with many
+            operating systems and can be used in PHP via the cURL extension. It
+            offers functionality for many special cases which can occur for a HTTP
+            client and make it a perfect choice for a HTTP adapter. It supports
+            secure connections, proxy, all sorts of authentication mechanisms
+            and shines in applications that move large files around between servers.
+        </para>
+
+        <example id="zend.http.client.adapters.curl.example-1">
+            <title>Setting cURL options</title>
+
+            <programlisting role="php"><![CDATA[
+$config = array(
+    'adapter'   => 'Zend_Http_Client_Adapter_Curl',
+    'curloptions' => array(CURLOPT_FOLLOWLOCATION => true),
+);
+$client = new Zend_Http_Client($uri, $config);
+]]>
+            </programlisting>
+        </example>
+
+        <para>
+            By default the cURL adapter is configured to behave exactly like
+            the Socket Adapter. You can change the cURL options by either specifying
+            the 'curloptions' key in the constructor of the adapter or by calling
+            <code>setCurlOption($name, $value)</code>. The <code>$name</code> key
+            corresponds to the CURL_* constants of the cURL extension.
+        </para>
+
+        <example id="zend.http.client.adapters.curl.example-2">
+            <title>Transfering Files by Handle</title>
+
+            <para>
+                You can use cURL to transfer very large files over HTTP by filehandle.
+            </para>
+
+            <programlisting role="php"><![CDATA[
+$putFileSize   = filesize("filepath");
+$putFileHandle = fopen("filepath", "r");
+
+$adapter = new Zend_Http_Client_Adapter_Curl();
+$client = new Zend_Http_Client();
+$client->setAdapter($adapter);
+$adapter->setConfig(array(
+    'curloptions' => array(CURLOPT_INFILE => $putFileHandle,
+                           CURLOPT_INFILESIZE => $putFileSize)
+));
+$client->request("PUT");
+]]>
+            </programlisting>
+        </example>
     </sect2>
 
     <sect2 id="zend.http.client.adapters.extending">
         <title>Créer vos propres adaptateurs de connexion</title>
 
-        <para>Vous pouvez créer vos propres adaptateurs, si vous avez un besoin spécial à utiliser. Par exemple, des
-        possibilités de cache, ou des sockets persistantes.</para>
-
-        <para>Pour ceci, votre classe d'adaptateur doit implémenter l'interface
-        <classname>Zend_Http_Client_Adapter_Interface</classname>. L'exemple suivant montre un squelette de classe. Toutes les
-        méthodes publiques, ici, sont indispensables à la classe, elles sont issues de l'interface :</para>
+        <para>
+            Vous pouvez créer vos propres adaptateurs, si vous avez un besoin spécial à
+            utiliser. Par exemple, des possibilités de cache, ou des sockets persistantes.
+        </para>
+
+        <para>
+            Pour ceci, votre classe d'adaptateur doit implémenter l'interface
+            <classname>Zend_Http_Client_Adapter_Interface</classname>. L'exemple suivant montre un
+            squelette de classe. Toutes les méthodes publiques, ici, sont indispensables à la
+            classe, elles sont issues de l'interface :
+        </para>
 
         <example id="zend.http.client.adapters.extending.example-1">
             <title>Création de votre propre adaptateur de connexion</title>

+ 119 - 28
documentation/manual/fr/module_specs/Zend_Json-Objects.xml

@@ -1,31 +1,122 @@
-<?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.objects">
-    <title>Objets JSON</title>
-
-    <para>Lorsque vous encodez des objets PHP en tant que JSON, toutes les propriétés publiques de cet objet sont
-    encodées dans un objet JSON.</para>
-
-    <para>JSON ne vous permet pas de référencer des objets, donc le soin devra être pris pour ne pas coder des objets
-    avec des références récursives. Si vous avez des problèmes de récursivité, <classname>Zend_Json::encode()</classname> et
-    <classname>Zend_Json_Encoder::encode()</classname> autorisent un deuxième paramètre facultatif afin de vérifier la récursivité
-    ; si un objet est sérialisé deux fois, une exception sera levée.</para>
-
-    <para>Bien que les objets Javascript correspondent de très près aux tableau associatifs de PHP, décoder des objets
-    JSON pose une légère difficulté. Certains suggèrent qu'un identifiant de classe soit passé, et qu'une instance de
-    cette classe soit créée et définie avec les paires clé/valeur des objets JSON ; d'autres pensent que cela pourrait
-    poser un risque de sécurité potentiel.</para>
-
-    <para>Par défaut, <classname>Zend_Json</classname> décodera des objets JSON comme en tableaux associatifs. Cependant, si vous
-    désirez avoir un objet en retour, vous pouvez le spécifier : <programlisting role="php"><![CDATA[
-// Décode des objets JSON en tant qu'objets PHP
-$phpNatif = Zend_Json::decode($valeurEncodee, Zend_Json::TYPE_OBJECT);
-]]></programlisting> Tous les objets sont ainsi
-    décodés et retournés comme des objets de type <code>StdClass</code>, avec leurs propriétés correspondantes aux
-    paires clé/valeur de la notation JSON.</para>
-
-    <para>La recommandation de Zend Framework est que le développeur doit décider comment décoder les objets JSON. Si un
-    objet d'un type spécifié doit être créé, il peut être créé dans le code du développeur et définit avec les valeurs
-    décodées en utilisant <classname>Zend_Json</classname>.</para>
+    <title>Utilisation avancée de Zend_Json</title>
+    
+    <sect2 id="zend.json.advanced.objects1">
+        <title>Objets JSON</title>
+
+        <para>
+            Lorsque vous encodez des objets PHP en tant que JSON, toutes les propriétés publiques
+            de cet objet sont encodées dans un objet JSON.
+        </para>
+
+        <para>
+            JSON ne vous permet pas de référencer des objets, donc le soin devra être pris pour ne
+            pas coder des objets avec des références récursives. Si vous avez des problèmes de
+            récursivité, <classname>Zend_Json::encode()</classname> et
+            <classname>Zend_Json_Encoder::encode()</classname> autorisent un deuxième paramètre
+            facultatif afin de vérifier la récursivité ; si un objet est sérialisé deux fois, une
+            exception sera levée.
+        </para>
+
+        <para>
+            Bien que les objets Javascript correspondent de très près aux tableau associatifs de
+            PHP, décoder des objets JSON pose une légère difficulté. Certains suggèrent qu'un
+            identifiant de classe soit passé, et qu'une instance de cette classe soit créée et
+            définie avec les paires clé/valeur des objets JSON ; d'autres pensent que cela pourrait
+            poser un risque de sécurité potentiel.
+        </para>
+
+        <para>
+            Par défaut, <classname>Zend_Json</classname> décodera des objets JSON comme en
+            tableaux associatifs. Cependant, si vous désirez avoir un objet en retour, vous pouvez le
+            spécifier : <programlisting role="php"><![CDATA[
+        // Décode des objets JSON en tant qu'objets PHP
+        $phpNatif = Zend_Json::decode($valeurEncodee, Zend_Json::TYPE_OBJECT);
+        ]]></programlisting> Tous les objets sont ainsi décodés et retournés comme des objets de type
+            <code>StdClass</code>, avec leurs propriétés correspondantes aux paires clé/valeur de la
+            notation JSON.
+        </para>
+
+        <para>
+            La recommandation de Zend Framework est que le développeur doit décider comment
+            décoder les objets JSON. Si un objet d'un type spécifié doit être créé, il peut être créé
+            dans le code du développeur et définit avec les valeurs décodées en utilisant
+            <classname>Zend_Json</classname>.
+        </para>
+    </sect2>
+
+    <sect2 id="zend.json.advanced.objects2">
+        <title>Encoding PHP objects</title>
+
+        <para>
+            If you are encoding PHP objects by default the encoding mechanism
+            can only access public properties of these objects. When a method
+            <code>toJson()</code> is implemented on an object to encode,
+            <classname>Zend_Json</classname> calls this method and expects the object to return a
+            JSON representation of its internal state.
+        </para>
+    </sect2>
+
+    <sect2 id="zend.json.advanced.internal">
+        <title>Internal Encoder/Decoder</title>
+
+        <para>
+            Zend_Json has two different modes depending if ext/json is enabled in
+            your PHP installation or not. If ext/json is installed by default
+            <code>json_encode()</code> and <code>json_decode()</code> functions
+            are used for encoding and decoding JSON. If ext/json is not installed
+            a Zend Framework implementation in PHP code is used for en-/decoding.
+            This is considerably slower than using the php extension, but behaves
+            exactly the same.
+        </para>
+
+        <para>
+            Still sometimes you might want to use the internal encoder/decoder even
+            if you have ext/json installed. You can achieve this by calling:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+Zend_Json::$useBuiltinEncoderDecoder = true:
+]]></programlisting>
+    </sect2>
+
+    <sect2 id="zend.json.advanced.expr">
+        <title>JSON Expressions</title>
+
+        <para>
+            Javascript makes heavy use of anonymnous function callbacks, which
+            can be saved within JSON object variables. Still they only work if not
+            returned inside double qoutes, which <classname>Zend_Json</classname> naturally does.
+            With the Expression support for Zend_Json support you can encode JSON
+            objects with valid javascript callbacks. This works for both <code>json_encode()</code>
+            or the internal encoder.
+        </para>
+
+        <para>
+            A javascript callback is represented using the <classname>Zend_Json_Expr</classname>
+            object. It implements the value object pattern and is immutable. You can set the
+            javascript expression as the first constructor argument. By default
+            <classname>Zend_Json::encode</classname> does not encode javascript callbacks, you have
+            to pass the option <code>'enableJsonExprFinder' = true</code> into the
+            <code>encode</code> function. If enabled the expression support works for all nested
+            expressions in large object structures. A usage example would look like:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+$data = array(
+    'onClick' => new Zend_Json_Expr('function() {'
+              . 'alert("I am a valid javascript callback '
+              . 'created by Zend_Json"); }'),
+    'other' => 'no expression',
+);
+$jsonObjectWithExpression = Zend_Json::encode(
+    $data,
+    false,
+    array('enableJsonExprFinder' => true)
+);
+]]></programlisting>
+    </sect2>
 </sect1>

+ 420 - 273
documentation/manual/fr/module_specs/Zend_Search_Lucene-Overview.xml

@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 14448 -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 15225 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.search.lucene.overview">
     <title>Vue d'ensemble</title>
@@ -7,60 +7,87 @@
     <sect2 id="zend.search.lucene.introduction">
         <title>Introduction</title>
 
-        <para><classname>Zend_Search_Lucene</classname> est un moteur de recherche de contenus principalement textuels écrit
-        entièrement en PHP 5. Comme il stocke ses index sur le système de fichiers et qu'il ne requiert pas de base de
-        données, il peut offrir des fonctionnalités de recherche à presque n'importe quel site écrit en PHP.
-        <classname>Zend_Search_Lucene</classname> dispose des caractéristiques suivantes : <itemizedlist>
-                <listitem>
-                    <para>"Ranked searching" - les meilleurs résultats sont retournés en premier.</para>
+        <para>
+            <classname>Zend_Search_Lucene</classname> est un moteur de recherche de contenus
+            principalement textuels écrit entièrement en PHP 5. Comme il stocke ses index sur le
+            système de fichiers et qu'il ne requiert pas de base de données, il peut offrir des
+            fonctionnalités de recherche à presque n'importe quel site écrit en PHP.
+            <classname>Zend_Search_Lucene</classname> dispose des caractéristiques suivantes :
+            <itemizedlist>
+                    <listitem>
+                    <para>
+                        "Ranked searching" - les meilleurs résultats sont retournés en
+                        premier.
+                    </para>
                 </listitem>
 
                 <listitem>
-                    <para>Plusieurs puissants types de requêtes : phrase, booléen, astérisque, proximité, intervalle et
-                    bien d'autres.</para>
+                    <para>
+                        Plusieurs puissants types de requêtes : phrase, booléen, astérisque,
+                        proximité, intervalle et bien d'autres.
+                    </para>
                 </listitem>
 
                 <listitem>
                     <para>Recherche par champ spécifique (p. ex. titre, auteur, contenus)</para>
                 </listitem>
-            </itemizedlist> <classname>Zend_Search_Lucene</classname> est dérivé du projet Apache Lucene. Les versions actuelles
-        de format d'index Lucene supportées (à partir de Zend Framework 1.6) sont 1.4 à 2.3. Pour plus d'informations
-        sur Lucene, rendez-vous sur <ulink url="http://lucene.apache.org/java/docs/"></ulink>.</para>
+            </itemizedlist> <classname>Zend_Search_Lucene</classname> est dérivé du projet
+        Apache Lucene. Les versions actuelles de format d'index Lucene supportées (à partir de
+        Zend Framework 1.6) sont 1.4 à 2.3. Pour plus d'informations sur Lucene, rendez-vous sur
+            <ulink url="http://lucene.apache.org/java/docs/"></ulink>.
+        </para>
 
         <note>
             <title></title>
 
-            <para>Les implémentations précédentes de <classname>Zend_Search_Lucene</classname> supportent les formats d'indexation
-            Lucene 1.4 (1.9) à 2.1.</para>
-
-            <para>A partir de Zend Framework 1.5, tout index créé en utilisant une version antérieure à la 2.1 et
-            automatiquement mis à niveau au format Lucene 2.1 après la mise à jour de <classname>Zend_Search_Lucene</classname> et
-            ne sera pas compatible avec les implémentations de <classname>Zend_Search_Lucene</classname> incluses dans Zend
-            Framework 1.0.x.</para>
+            <para>
+                Les implémentations précédentes de <classname>Zend_Search_Lucene</classname>
+                supportent les formats d'indexation Lucene 1.4 (1.9) à 2.1.
+            </para>
+
+            <para>
+                A partir de Zend Framework 1.5, tout index créé en utilisant une version
+                antérieure à la 2.1 et automatiquement mis à niveau au format Lucene 2.1 après la
+                mise à jour de <classname>Zend_Search_Lucene</classname> et ne sera pas compatible
+                avec les implémentations de <classname>Zend_Search_Lucene</classname> incluses dans
+                Zend Framework 1.0.x.
+            </para>
         </note>
     </sect2>
 
     <sect2 id="zend.search.lucene.index-creation.documents-and-fields">
         <title>Objet "Document" and "Field"</title>
 
-        <para><classname>Zend_Search_Lucene</classname> travaille avec des documents comme objets de base pour
-        l'indexation. Un document est divisé en champs possédant un nom et du contenu dans lequel on pourra
-        chercher.</para>
-
-        <para>Un document est représenté par la classe <classname>Zend_Search_Lucene_Document</classname>. Les objets de cette
-        classe contiennent des instances de <classname>Zend_Search_Lucene_Field</classname> qui représentent les champs du
-        document.</para>
-
-        <para>Il est important de noter que n'importe quelle information peut être ajoutée à l'index. Des informations
-        propres à l'application ou des métadonnées peuvent être stockées dans le document, puis récupérées durant la
-        recherche.</para>
-
-        <para>Il est de la responsabilité de votre application de gérer l'indexation. Cela signifie que les données
-        peuvent être indexées depuis n'importe quelle source accessible par votre application. Par exemple, elles
-        peuvent provenir du système de fichier, d'une base de données, d'un formulaire HTML, etc.</para>
-
-        <para>La classe <classname>Zend_Search_Lucene_Field</classname> fournit plusieurs méthodes statiques pour créer des champs
-        avec différentes caractéristiques :</para>
+        <para>
+            <classname>Zend_Search_Lucene</classname> travaille avec des documents comme
+            objets de base pour l'indexation. Un document est divisé en champs possédant un nom et
+            du contenu dans lequel on pourra chercher.
+        </para>
+
+        <para>
+            Un document est représenté par la classe
+            <classname>Zend_Search_Lucene_Document</classname>. Les objets de cette classe
+            contiennent des instances de <classname>Zend_Search_Lucene_Field</classname> qui
+            représentent les champs du document.
+        </para>
+
+        <para>
+            Il est important de noter que n'importe quelle information peut être ajoutée à
+            l'index. Des informations propres à l'application ou des métadonnées peuvent être
+            stockées dans le document, puis récupérées durant la recherche.
+        </para>
+
+        <para>
+            Il est de la responsabilité de votre application de gérer l'indexation. Cela
+            signifie que les données peuvent être indexées depuis n'importe quelle source accessible
+            par votre application. Par exemple, elles peuvent provenir du système de fichier, d'une
+            base de données, d'un formulaire HTML, etc.
+        </para>
+
+        <para>
+            La classe <classname>Zend_Search_Lucene_Field</classname> fournit plusieurs
+            méthodes statiques pour créer des champs avec différentes caractéristiques :
+        </para>
 
         <programlisting role="php"><![CDATA[
 $doc = new Zend_Search_Lucene_Document();
@@ -88,40 +115,58 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents',
                                                   'My document content'));
 ]]></programlisting>
 
-        <para>Chacune de ces méthodes (à l'exception de <classname>Zend_Search_Lucene_Field::Binary()</classname>) possède un
-        paramètre optionnel <code>$encoding</code> servant à spécifier l'encodage de la chaîne entrée.</para>
-
-        <para>L'encodage peut différer par document, voire par champ au sein d'un même document : <programlisting
-        role="php"><![CDATA[
-$doc = new Zend_Search_Lucene_Document();
-$doc->addField(Zend_Search_Lucene_Field::Text('title',
-                                              $title,
-                                              'iso-8859-1'));
-$doc->addField(Zend_Search_Lucene_Field::UnStored('contents',
-                                                  $contents,
-                                                  'utf-8'));
-]]></programlisting></para>
-
-        <para>Si le paramètre d'encodage est omis, la locale courante est alors utilisée pour le déterminer à
-        l'exécution. Par exemple : <programlisting role="php"><![CDATA[
-setlocale(LC_ALL, 'de_DE.iso-8859-1');
-...
-$doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
-]]></programlisting></para>
-
-        <para>Les champs sont toujours stockés et retournés depuis l'index en UTF-8. Toute conversion requise vers UTF-8
-        est effectuée automatiquement.</para>
-
-        <para>Les analyseurs de texte (<link linkend="zend.search.lucene.extending.analysis">voir plus bas</link>)
-        peuvent également convertir du texte vers d'autres encodages. Actuellement, l'analyseur par défaut convertit le
-        texte au format "ASCII/TRANSLIT". Soyez prudent, cependant; cette conversion peut déprendre de la locale.</para>
-
-        <para>Le nom des champs est défini par vous dans la méthode <code>addField()</code>.</para>
-
-        <para>Java Lucene utilise le champ "contents" comme champ de recherche par défaut.
-        <classname>Zend_Search_Lucene</classname> cherche par défaut dans tous les champs. Cela dit, ce comportement est
-        configurable. Consultez le chapitre <link linkend="zend.search.lucene.query-language.fields">"Champ de recherche
-        par défaut"</link> pour plus de détails.</para>
+        <para>
+            Chacune de ces méthodes (à l'exception de
+            <classname>Zend_Search_Lucene_Field::Binary()</classname>) possède un paramètre
+            optionnel <code>$encoding</code> servant à spécifier l'encodage de la chaîne
+            entrée.
+        </para>
+
+        <para>
+            L'encodage peut différer par document, voire par champ au sein d'un même document
+            : <programlisting role="php"><![CDATA[
+    $doc = new Zend_Search_Lucene_Document();
+    $doc->addField(Zend_Search_Lucene_Field::Text('title',
+                                                  $title,
+                                                  'iso-8859-1'));
+    $doc->addField(Zend_Search_Lucene_Field::UnStored('contents',
+                                                      $contents,
+                                                      'utf-8'));
+    ]]></programlisting></para>
+    
+        <para>
+            Si le paramètre d'encodage est omis, la locale courante est alors utilisée pour le
+            déterminer à l'exécution. Par exemple : <programlisting role="php"><![CDATA[
+    setlocale(LC_ALL, 'de_DE.iso-8859-1');
+    ...
+    $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
+    ]]></programlisting></para>
+    
+        <para>
+            Les champs sont toujours stockés et retournés depuis l'index en UTF-8. Toute
+            conversion requise vers UTF-8 est effectuée automatiquement.
+        </para>
+
+        <para>
+            Les analyseurs de texte (<link
+            linkend="zend.search.lucene.extending.analysis">voir plus bas</link>) peuvent également
+            convertir du texte vers d'autres encodages. Actuellement, l'analyseur par défaut
+            convertit le texte au format "ASCII/TRANSLIT". Soyez prudent, cependant; cette
+            conversion peut déprendre de la locale.
+        </para>
+
+        <para>
+            Le nom des champs est défini par vous dans la méthode
+            <code>addField()</code>.
+        </para>
+
+        <para>
+            Java Lucene utilise le champ "contents" comme champ de recherche par défaut.
+            <classname>Zend_Search_Lucene</classname> cherche par défaut dans tous les champs. Cela
+            dit, ce comportement est configurable. Consultez le chapitre <link
+            linkend="zend.search.lucene.query-language.fields">"Champ de recherche par
+            défaut"</link> pour plus de détails.
+        </para>
     </sect2>
 
     <sect2 id="zend.search.lucene.index-creation.understanding-field-types">
@@ -129,41 +174,57 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
 
         <itemizedlist>
             <listitem>
-                <para>Les champs <code>Keyword</code> (mot-clé) sont stockés ET indexés. Cela signifie qu'ils peuvent
-                être aussi bien cherchés dans l'index qu'affichés dans les résultats de la recherche. Ils ne sont pas
-                divisés en plusieurs mots par "tokenization". Les champs d'énumérations dans une base de donnée se
-                transposent généralement assez bien en champs de type Keyword dans
-                <classname>Zend_Search_Lucene</classname>.</para>
+                <para>
+                    Les champs <code>Keyword</code> (mot-clé) sont stockés ET indexés. Cela
+                    signifie qu'ils peuvent être aussi bien cherchés dans l'index qu'affichés dans
+                    les résultats de la recherche. Ils ne sont pas divisés en plusieurs mots par
+                    "tokenization". Les champs d'énumérations dans une base de donnée se transposent
+                    généralement assez bien en champs de type Keyword dans
+                    <classname>Zend_Search_Lucene</classname>.
+                </para>
             </listitem>
 
             <listitem>
-                <para>Les champs <code>UnIndexed</code> (non-indexé) ne peuvent pas être utilisés dans la recherche. En
-                revanche, ils peuvent être retournés dans les résultats. Des timestamps de base de données, des clés
-                primaires, des chemins de fichiers et d'autres identifiants externes sont autant de bons exemples
-                d'utilisation des champs de type UnIndexed.</para>
+                <para>
+                    Les champs <code>UnIndexed</code> (non-indexé) ne peuvent pas être
+                    utilisés dans la recherche. En revanche, ils peuvent être retournés dans les
+                    résultats. Des timestamps de base de données, des clés primaires, des chemins de
+                    fichiers et d'autres identifiants externes sont autant de bons exemples
+                    d'utilisation des champs de type UnIndexed.
+                </para>
             </listitem>
 
             <listitem>
-                <para>Les champs <code>Binary</code> (binaire) ne sont ni "tokenizés", ni indexés, mais ils sont stockés
-                dans le but d'être retournés dans les résultats de recherche. Ils peuvent être utilisés pour stocker
-                n'importe quelle donnée encodée en chaîne binaire, telle qu'une icône par exemple.</para>
+                <para>
+                    Les champs <code>Binary</code> (binaire) ne sont ni "tokenizés", ni
+                    indexés, mais ils sont stockés dans le but d'être retournés dans les résultats
+                    de recherche. Ils peuvent être utilisés pour stocker n'importe quelle donnée
+                    encodée en chaîne binaire, telle qu'une icône par exemple.
+                </para>
             </listitem>
 
             <listitem>
-                <para>Les champs <code>Text</code> (texte) sont stockés, indexés et "tokenizés". Les champs de type Text
-                sont appropriés pour stocker des informations telles que sujets et titres sur lesquels on veut pouvoir
-                effectuer des recherches, mais également les utiliser dans l'affichage des résultats.</para>
+                <para>
+                    Les champs <code>Text</code> (texte) sont stockés, indexés et "tokenizés".
+                    Les champs de type Text sont appropriés pour stocker des informations telles que
+                    sujets et titres sur lesquels on veut pouvoir effectuer des recherches, mais
+                    également les utiliser dans l'affichage des résultats.
+                </para>
             </listitem>
 
             <listitem>
-                <para>Les champs <code>UnStored</code> sont "tokenizés" et indexés, mais pas stockés dans l'index. Il
-                est recommandé d'utiliser ce type de champ pour indexer les textes conséquents. Stocker des données
-                implique la création d'index plus volumineux sur le disque. Donc si vous disposez de données sur
-                lesquelles vous voulez uniquement effectuer des recherches sans nécessairement afficher ces données dans
-                les résultats, utilisez un champ de type UnStored. Le type UnStored est pratique lorsque vous utilisez
-                un index Zend_Search_Lucene en combinaison avec une base de données relationnelle. Vous pouvez indexer
-                des gros champs de données dans des champs de type UnStored et les extraire de la base de données
-                relationnelle en utilisant un champ séparé en tant qu'identifiant.</para>
+                <para>
+                    Les champs <code>UnStored</code> sont "tokenizés" et indexés, mais pas
+                    stockés dans l'index. Il est recommandé d'utiliser ce type de champ pour indexer
+                    les textes conséquents. Stocker des données implique la création d'index plus
+                    volumineux sur le disque. Donc si vous disposez de données sur lesquelles vous
+                    voulez uniquement effectuer des recherches sans nécessairement afficher ces
+                    données dans les résultats, utilisez un champ de type UnStored. Le type UnStored
+                    est pratique lorsque vous utilisez un index Zend_Search_Lucene en combinaison
+                    avec une base de données relationnelle. Vous pouvez indexer des gros champs de
+                    données dans des champs de type UnStored et les extraire de la base de données
+                    relationnelle en utilisant un champ séparé en tant qu'identifiant.
+                </para>
 
                 <table id="zend.search.lucene.index-creation.understanding-field-types.table">
                     <title>Les types Zend_Search_Lucene_Field</title>
@@ -253,85 +314,128 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
     <sect2 id="zend.search.lucene.index-creation.html-documents">
         <title>Documents HTML</title>
 
-        <para><classname>Zend_Search_Lucene</classname> offre une fonctionnalité d'analyse HTML. Les documents peuvent être créés
-        directement à d'un fichier ou d'une chaîne HTML : <programlisting role="php"><![CDATA[
-$doc = Zend_Search_Lucene_Document_Html::loadHTMLFile($filename);
-$index->addDocument($doc);
-...
-$doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
-$index->addDocument($doc);
-]]></programlisting></para>
-
-        <para>La classe <classname>Zend_Search_Lucene_Document_Html</classname> utilise les méthodes
-        <code>DOMDocument::loadHTML()</code> et <code>DOMDocument::loadHTMLFile()</code> pour analyser la source HTML,
-        ainsi il n'est pas nécessaire que le HTML soit bien formé ou au format XHTML. Par contre, ces méthodes prennent
-        en compte l'encodage spécifié dans la balise méta "http-equiv".</para>
-
-        <para>La classe <classname>Zend_Search_Lucene_Document_Html</classname> reconnaît le titre d'une page HTML, son corps
-        ("body"), ainsi que les métadonnées de son entête.</para>
-
-        <para>Le champ "title" correspond au contenu de la balise /html/head/title. Il est stocké dans l'index,
-        "tokenizé" et disponible pour la recherche.</para>
-
-        <para>Le champ "body" correspond au contenu de la balise "body" du fichier ou de la chaîne HTML. Il ne prend pas
-        en compte les scripts, les commentaires ou les attributs.</para>
-
-        <para>Les méthodes <code>loadHTML()</code> et <code>loadHTMLFile()</code> de la classe
-        <classname>Zend_Search_Lucene_Document_Html</classname> possèdent également un deuxième argument optionnel. Si sa valeur
-        est true, le body sera alors stocké dans l'index et pourra être retourné dans les résultats de recherche. Par
-        défaut, le body est "tokenizé", indexé, mais pas stocké.</para>
-
-        <para>Les autres métadonnées génèrent des champs additionnels dans le document. Le champ "name" prend sa valeur
-        dans l'attribut "name" de la métadonnées. Le champ "value" prend sa valeur dans l'attribut "content" de la
-        métadonnées. Ces deux champs sont "tokenizés", indexés et stockés. Ainsi les documents peuvent être cherchés à
-        travers leurs métadonnées (p. ex. par mots-clés).</para>
-
-        <para>Les documents analysés peuvent être enrichis par le programmeur avec d'autres champs : <programlisting
-        role="php"><![CDATA[
-$doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
-$doc->addField(Zend_Search_Lucene_Field::UnIndexed('created',
-                                                   time()));
-$doc->addField(Zend_Search_Lucene_Field::UnIndexed('updated',
-                                                   time()));
-$doc->addField(Zend_Search_Lucene_Field::Text('annotation',
-                                              'Document annotation text'));
-$index->addDocument($doc);
-]]></programlisting></para>
-
-        <para>Les liens des documents ne sont pas inclus dans le document généré, mais ils peuvent être récupérés avec
-        les méthodes <classname>Zend_Search_Lucene_Document_Html::getLinks()</classname> et
-        <classname>Zend_Search_Lucene_Document_Html::getHeaderLinks()</classname> : <programlisting role="php"><![CDATA[
-$doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
-$linksArray = $doc->getLinks();
-$headerLinksArray = $doc->getHeaderLinks();
-]]></programlisting></para>
-
-        <para>A partir de Zend Framework 1.6, il est également possible d'exclure les balises "link" dont l'attribut
-        <code>rel</code> vaut <code>'nofollow'</code>. Utilisez
-        <classname>Zend_Search_Lucene_Document_Html::setExcludeNoFollowLinks($true)</classname> pour activer cette option.</para>
-
-        <para>La méthode <classname>Zend_Search_Lucene_Document_Html::getExcludeNoFollowLinks()</classname> retourne la valeur
-        courante du flag "Exclude nofollow links".</para>
+        <para>
+            <classname>Zend_Search_Lucene</classname> offre une fonctionnalité d'analyse HTML.
+            Les documents peuvent être créés directement à d'un fichier ou d'une chaîne HTML :
+            <programlisting role="php"><![CDATA[
+    $doc = Zend_Search_Lucene_Document_Html::loadHTMLFile($filename);
+    $index->addDocument($doc);
+    ...
+    $doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
+    $index->addDocument($doc);
+    ]]></programlisting></para>
+    
+        <para>
+            La classe <classname>Zend_Search_Lucene_Document_Html</classname> utilise les
+            méthodes <code>DOMDocument::loadHTML()</code> et
+            <code>DOMDocument::loadHTMLFile()</code> pour analyser la source HTML, ainsi il n'est
+            pas nécessaire que le HTML soit bien formé ou au format XHTML. Par contre, ces méthodes
+            prennent en compte l'encodage spécifié dans la balise méta "http-equiv".
+        </para>
+
+        <para>
+            La classe <classname>Zend_Search_Lucene_Document_Html</classname> reconnaît le
+            titre d'une page HTML, son corps ("body"), ainsi que les métadonnées de son
+            entête.
+        </para>
+
+        <para>
+            Le champ "title" correspond au contenu de la balise /html/head/title. Il est
+            stocké dans l'index, "tokenizé" et disponible pour la recherche.
+        </para>
+
+        <para>
+            Le champ "body" correspond au contenu de la balise "body" du fichier ou de la
+            chaîne HTML. Il ne prend pas en compte les scripts, les commentaires ou les
+            attributs.
+        </para>
+
+        <para>
+            Les méthodes <code>loadHTML()</code> et <code>loadHTMLFile()</code> de la classe
+            <classname>Zend_Search_Lucene_Document_Html</classname> possèdent également un deuxième
+            argument optionnel. Si sa valeur est true, le body sera alors stocké dans l'index et
+            pourra être retourné dans les résultats de recherche. Par défaut, le body est
+            "tokenizé", indexé, mais pas stocké.
+        </para>
+
+        <para>
+            The third parameter of <code>loadHTML()</code> and <code>loadHTMLFile()</code> methods
+            optionally specifies source HTML document encoding. It's used if encoding is not
+            specified using Content-type HTTP-EQUIV meta tag.
+        </para>
+
+        <para>
+            Les autres métadonnées génèrent des champs additionnels dans le document. Le champ
+            "name" prend sa valeur dans l'attribut "name" de la métadonnées. Le champ "value" prend
+            sa valeur dans l'attribut "content" de la métadonnées. Ces deux champs sont "tokenizés",
+            indexés et stockés. Ainsi les documents peuvent être cherchés à travers leurs
+            métadonnées (p. ex. par mots-clés).
+        </para>
+
+        <para>
+            Les documents analysés peuvent être enrichis par le programmeur avec d'autres
+            champs : <programlisting role="php"><![CDATA[
+    $doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
+    $doc->addField(Zend_Search_Lucene_Field::UnIndexed('created',
+                                                       time()));
+    $doc->addField(Zend_Search_Lucene_Field::UnIndexed('updated',
+                                                       time()));
+    $doc->addField(Zend_Search_Lucene_Field::Text('annotation',
+                                                  'Document annotation text'));
+    $index->addDocument($doc);
+    ]]></programlisting></para>
+    
+        <para>
+            Les liens des documents ne sont pas inclus dans le document généré, mais ils
+            peuvent être récupérés avec les méthodes
+            <classname>Zend_Search_Lucene_Document_Html::getLinks()</classname> et
+            <classname>Zend_Search_Lucene_Document_Html::getHeaderLinks()</classname> :
+            <programlisting role="php"><![CDATA[
+    $doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
+    $linksArray = $doc->getLinks();
+    $headerLinksArray = $doc->getHeaderLinks();
+    ]]></programlisting></para>
+    
+        <para>
+            A partir de Zend Framework 1.6, il est également possible d'exclure les balises
+            "link" dont l'attribut <code>rel</code> vaut <code>'nofollow'</code>. Utilisez
+            <classname>Zend_Search_Lucene_Document_Html::setExcludeNoFollowLinks($true)</classname>
+            pour activer cette option.
+        </para>
+
+        <para>
+            La méthode
+            <classname>Zend_Search_Lucene_Document_Html::getExcludeNoFollowLinks()</classname>
+            retourne la valeur courante du flag "Exclude nofollow links".
+        </para>
     </sect2>
 
     <sect2 id="zend.search.lucene.index-creation.docx-documents">
         <title>Documents Word 2007</title>
 
-        <para><classname>Zend_Search_Lucene</classname> offre une fonctionnalité d'analyse de documents Word 2007. On peut créer
-        directement un document depuis un fichier Word 2007 : <programlisting role="php"><![CDATA[
-$doc = Zend_Search_Lucene_Document_Docx::loadDocxFile($filename);
-$index->addDocument($doc);
-]]></programlisting></para>
-
-        <para>La classe <classname>Zend_Search_Lucene_Document_Docx</classname> utilise la classe <code>ZipArchive</code> et les
-        méthodes de <code>simplexml</code> pour analyser le document source. Si la classe <code>ZipArchive</code> (issue
-        du module php_zip) n'est pas disponible, <classname>Zend_Search_Lucene_Document_Docx</classname> ne sera pas non plus
-        disponible dans le Zend Framework.</para>
-
-        <para>La classe <classname>Zend_Search_Lucene_Document_Docx</classname> reconnaît les métadonnées et le texte des
-        documents. Les métadonnées sont constituées, suivant le contenu du document, du nom de fichier (filename), sujet
-        (subject), créateur (creator), mots-clés (keywords), description, auteur de la dernière modification
-        (lastModifiedBy), révision (revision), date de modification (modified), date de création (created).</para>
+        <para>
+            <classname>Zend_Search_Lucene</classname> offre une fonctionnalité d'analyse de
+            documents Word 2007. On peut créer directement un document depuis un fichier Word 2007 :
+            <programlisting role="php"><![CDATA[
+    $doc = Zend_Search_Lucene_Document_Docx::loadDocxFile($filename);
+    $index->addDocument($doc);
+    ]]></programlisting></para>
+    
+        <para>
+            La classe <classname>Zend_Search_Lucene_Document_Docx</classname> utilise la
+            classe <code>ZipArchive</code> et les méthodes de <code>simplexml</code> pour analyser
+            le document source. Si la classe <code>ZipArchive</code> (issue du module php_zip) n'est
+            pas disponible, <classname>Zend_Search_Lucene_Document_Docx</classname> ne sera pas non
+            plus disponible dans le Zend Framework.
+        </para>
+
+        <para>
+            La classe <classname>Zend_Search_Lucene_Document_Docx</classname> reconnaît les
+            métadonnées et le texte des documents. Les métadonnées sont constituées, suivant le
+            contenu du document, du nom de fichier (filename), sujet (subject), créateur (creator),
+            mots-clés (keywords), description, auteur de la dernière modification (lastModifiedBy),
+            révision (revision), date de modification (modified), date de création (created).
+        </para>
 
         <para>Le champ "filename" correspond au nom du fichier Word 2007.</para>
 
@@ -345,7 +449,10 @@ $index->addDocument($doc);
 
         <para>Le champ "description" correspond à la description du document.</para>
 
-        <para>Le champ "lastModifiedBy" correspond au nom de l'utilisateur qui a modifié en dernier le document.</para>
+        <para>
+            Le champ "lastModifiedBy" correspond au nom de l'utilisateur qui a modifié en
+            dernier le document.
+        </para>
 
         <para>Le champ "revision" correspond au numéro actuel de la version du document.</para>
 
@@ -353,47 +460,61 @@ $index->addDocument($doc);
 
         <para>Le champ "created" contient la date de création du document.</para>
 
-        <para>Le champ "body" contient le véritable contenu du document Word 2007. Il n'inclut que le texte normal. Les
-        commentaires et révisions ne sont pas inclus.</para>
-
-        <para>La méthode <code>loadDocxFile()</code> de la classe <classname>Zend_Search_Lucene_Document_Docx</classname> possède
-        également un second argument optionnel. S'il est défini à <code>true</code>, le champ "body" sera alors
-        également stocké dans l'index et pourra être affiché dans les résultats de recherche. Par défaut, le champ
-        "body" est "tokenizé" et indexé, mais pas stocké.</para>
-
-        <para>Les documents parsés peuvent être étendus par le programmeur avec d'autres champs : <programlisting
-        role="php"><![CDATA[
-$doc = Zend_Search_Lucene_Document_Docx::loadDocxFile($filename);
-$doc->addField(Zend_Search_Lucene_Field::UnIndexed(
-    'indexTime',
-    time())
-);
-$doc->addField(Zend_Search_Lucene_Field::Text(
-    'annotation',
-    'Document annotation text')
-);
-$index->addDocument($doc);
-]]></programlisting></para>
-    </sect2>
-
-    <sect2 id="zend.search.lucene.index-creation.pptx-documents">
-        <title>Document Powerpoint 2007</title>
-
-        <para><classname>Zend_Search_Lucene</classname> offre une fonctionnalité d'analyse de documents Powerpoint 2007. On peut
-        créer directement un document depuis un fichier Powerpoint 2007 : <programlisting role="php"><![CDATA[
-$doc = Zend_Search_Lucene_Document_Pptx::loadPptxFile($filename);
-$index->addDocument($doc);
-]]></programlisting></para>
-
-        <para>La classe <classname>Zend_Search_Lucene_Document_Pptx</classname> utilise la classe <code>ZipArchive</code> et les
-        méthodes de <code>simplexml</code> pour analyser le document source. Si la classe <code>ZipArchive</code> (issue
-        du module php_zip) n'est pas disponible, <classname>Zend_Search_Lucene_Document_Pptx</classname> ne sera pas non plus
-        disponible dans le Zend Framework.</para>
-
-        <para>La classe <classname>Zend_Search_Lucene_Document_Pptx</classname> reconnaît les métadonnées et le texte des
-        documents. Les métadonnées sont constituées, suivant le contenu du document, du nom de fichier (filename), sujet
-        (subject), créateur (creator), mots-clés (keywords), description, auteur de la dernière modification
-        (lastModifiedBy), révision (revision), date de modification (modified), date de création (created).</para>
+        <para>
+            Le champ "body" contient le véritable contenu du document Word 2007. Il n'inclut
+            que le texte normal. Les commentaires et révisions ne sont pas inclus.
+        </para>
+
+        <para>
+            La méthode <code>loadDocxFile()</code> de la classe
+            <classname>Zend_Search_Lucene_Document_Docx</classname> possède également un second
+            argument optionnel. S'il est défini à <code>true</code>, le champ "body" sera alors
+            également stocké dans l'index et pourra être affiché dans les résultats de recherche.
+            Par défaut, le champ "body" est "tokenizé" et indexé, mais pas stocké.
+        </para>
+
+        <para>
+            Les documents parsés peuvent être étendus par le programmeur avec d'autres champs
+            : <programlisting role="php"><![CDATA[
+    $doc = Zend_Search_Lucene_Document_Docx::loadDocxFile($filename);
+    $doc->addField(Zend_Search_Lucene_Field::UnIndexed(
+        'indexTime',
+        time())
+    );
+    $doc->addField(Zend_Search_Lucene_Field::Text(
+        'annotation',
+        'Document annotation text')
+    );
+    $index->addDocument($doc);
+    ]]></programlisting></para>
+        </sect2>
+    
+        <sect2 id="zend.search.lucene.index-creation.pptx-documents">
+            <title>Document Powerpoint 2007</title>
+    
+        <para>
+            <classname>Zend_Search_Lucene</classname> offre une fonctionnalité d'analyse de
+            documents Powerpoint 2007. On peut créer directement un document depuis un fichier
+            Powerpoint 2007 : <programlisting role="php"><![CDATA[
+    $doc = Zend_Search_Lucene_Document_Pptx::loadPptxFile($filename);
+    $index->addDocument($doc);
+    ]]></programlisting></para>
+    
+        <para>
+            La classe <classname>Zend_Search_Lucene_Document_Pptx</classname> utilise la
+            classe <code>ZipArchive</code> et les méthodes de <code>simplexml</code> pour analyser
+            le document source. Si la classe <code>ZipArchive</code> (issue du module php_zip) n'est
+            pas disponible, <classname>Zend_Search_Lucene_Document_Pptx</classname> ne sera pas non
+            plus disponible dans le Zend Framework.
+        </para>
+
+        <para>
+            La classe <classname>Zend_Search_Lucene_Document_Pptx</classname> reconnaît les
+            métadonnées et le texte des documents. Les métadonnées sont constituées, suivant le
+            contenu du document, du nom de fichier (filename), sujet (subject), créateur (creator),
+            mots-clés (keywords), description, auteur de la dernière modification (lastModifiedBy),
+            révision (revision), date de modification (modified), date de création (created).
+        </para>
 
         <para>Le champ "filename" correspond au nom du fichier Powerpoint 2007.</para>
 
@@ -407,7 +528,10 @@ $index->addDocument($doc);
 
         <para>Le champ "description" correspond à la description du document.</para>
 
-        <para>Le champ "lastModifiedBy" correspond au nom de l'utilisateur qui a modifié en dernier le document.</para>
+        <para>
+            Le champ "lastModifiedBy" correspond au nom de l'utilisateur qui a modifié en
+            dernier le document.
+        </para>
 
         <para>Le champ "revision" correspond au numéro actuel de la version du document.</para>
 
@@ -415,45 +539,59 @@ $index->addDocument($doc);
 
         <para>Le champ "created" contient la date de création du document.</para>
 
-        <para>Le champ "body" contient le véritable contenu de toutes les slides, ainsi que les notes dans le document
-        Powerpoint 2007.</para>
-
-        <para>La méthode <code>loadPptxFile()</code> de la classe <classname>Zend_Search_Lucene_Document_Pptx</classname> possède
-        également un second argument optionnel. S'il est défini à true, le champ "body" sera alors également stocké dans
-        l'index et pourra être affiché dans les résultats de recherche. Par défaut, le champ "body" est "tokenizé" et
-        indexé, mais pas stocké.</para>
-
-        <para>Les documents analysés peuvent être étendus par le programmeur avec d'autres champs : <programlisting
-        role="php"><![CDATA[
-$doc = Zend_Search_Lucene_Document_Pptx::loadPptxFile($filename);
-$doc->addField(Zend_Search_Lucene_Field::UnIndexed(
-    'indexTime',
-    time()));
-$doc->addField(Zend_Search_Lucene_Field::Text(
-    'annotation',
-    'Document annotation text'));
-$index->addDocument($doc);
-]]></programlisting></para>
-    </sect2>
-
-    <sect2 id="zend.search.lucene.index-creation.xlsx-documents">
-        <title>Documents Excel 2007</title>
-
-        <para><classname>Zend_Search_Lucene</classname> offre une fonctionnalité d'analyse de documents Excel 2007. On peut créer
-        directement un document depuis un fichier Excel 2007 : <programlisting role="php"><![CDATA[
-$doc = Zend_Search_Lucene_Document_Xlsx::loadXlsxFile($filename);
-$index->addDocument($doc);
-]]></programlisting></para>
-
-        <para>La classe <classname>Zend_Search_Lucene_Document_Xlsx</classname> utilise la classe <code>ZipArchive</code> et les
-        méthodes de <code>simplexml</code> pour analyser le document source. Si la classe <code>ZipArchive</code> (issue
-        du module php_zip) n'est pas disponible, <classname>Zend_Search_Lucene_Document_Xlsx</classname> ne sera pas non plus
-        disponible dans le Zend Framework.</para>
-
-        <para>La classe <classname>Zend_Search_Lucene_Document_Xlsx</classname> reconnaît les métadonnées et le texte des
-        documents. Les métadonnées sont constituées, suivant le contenu du document, du nom de fichier (filename), sujet
-        (subject), créateur (creator), mots-clés (keywords), description, auteur de la dernière modification
-        (lastModifiedBy), révision (revision), date de modification (modified), date de création (created).</para>
+        <para>
+            Le champ "body" contient le véritable contenu de toutes les slides, ainsi que les
+            notes dans le document Powerpoint 2007.
+        </para>
+
+        <para>
+            La méthode <code>loadPptxFile()</code> de la classe
+            <classname>Zend_Search_Lucene_Document_Pptx</classname> possède également un second
+            argument optionnel. S'il est défini à true, le champ "body" sera alors également stocké
+            dans l'index et pourra être affiché dans les résultats de recherche. Par défaut, le
+            champ "body" est "tokenizé" et indexé, mais pas stocké.
+        </para>
+
+        <para>
+            Les documents analysés peuvent être étendus par le programmeur avec d'autres
+            champs : <programlisting role="php"><![CDATA[
+    $doc = Zend_Search_Lucene_Document_Pptx::loadPptxFile($filename);
+    $doc->addField(Zend_Search_Lucene_Field::UnIndexed(
+        'indexTime',
+        time()));
+    $doc->addField(Zend_Search_Lucene_Field::Text(
+        'annotation',
+        'Document annotation text'));
+    $index->addDocument($doc);
+    ]]></programlisting></para>
+        </sect2>
+    
+        <sect2 id="zend.search.lucene.index-creation.xlsx-documents">
+            <title>Documents Excel 2007</title>
+    
+        <para>
+            <classname>Zend_Search_Lucene</classname> offre une fonctionnalité d'analyse de
+            documents Excel 2007. On peut créer directement un document depuis un fichier Excel 2007
+            : <programlisting role="php"><![CDATA[
+    $doc = Zend_Search_Lucene_Document_Xlsx::loadXlsxFile($filename);
+    $index->addDocument($doc);
+    ]]></programlisting></para>
+    
+        <para>
+            La classe <classname>Zend_Search_Lucene_Document_Xlsx</classname> utilise la
+            classe <code>ZipArchive</code> et les méthodes de <code>simplexml</code> pour analyser
+            le document source. Si la classe <code>ZipArchive</code> (issue du module php_zip) n'est
+            pas disponible, <classname>Zend_Search_Lucene_Document_Xlsx</classname> ne sera pas non
+            plus disponible dans le Zend Framework.
+        </para>
+
+        <para>
+            La classe <classname>Zend_Search_Lucene_Document_Xlsx</classname> reconnaît les
+            métadonnées et le texte des documents. Les métadonnées sont constituées, suivant le
+            contenu du document, du nom de fichier (filename), sujet (subject), créateur (creator),
+            mots-clés (keywords), description, auteur de la dernière modification (lastModifiedBy),
+            révision (revision), date de modification (modified), date de création (created).
+        </para>
 
         <para>Le champ "filename" correspond au nom du fichier Excel 2007.</para>
 
@@ -467,7 +605,10 @@ $index->addDocument($doc);
 
         <para>Le champ "description" correspond à la description du document.</para>
 
-        <para>Le champ "lastModifiedBy" correspond au nom de l'utilisateur qui a modifié en dernier le document.</para>
+        <para>
+            Le champ "lastModifiedBy" correspond au nom de l'utilisateur qui a modifié en
+            dernier le document.
+        </para>
 
         <para>Le champ "revision" correspond au numéro actuel de la version du document.</para>
 
@@ -475,24 +616,30 @@ $index->addDocument($doc);
 
         <para>Le champ "created" contient la date de création du document.</para>
 
-        <para>Le champ "body" contient le véritable contenu de toutes les cellules de toutes les feuilles de calcul du
-        document Excel 2007.</para>
-
-        <para>La méthode <code>loadXlsxFile()</code> de la classe <classname>Zend_Search_Lucene_Document_Xlsx</classname> possède
-        également un second argument optionnel. S'il est défini à true, le champ "body" sera alors également stocké dans
-        l'index et pourra être affiché dans les résultats de recherche. Par défaut, le champ "body" est "tokenizé" et
-        indexé, mais pas stocké.</para>
-
-        <para>Les documents analysés peuvent être étendus par le programmeur avec d'autres champs : <programlisting
-        role="php"><![CDATA[
-$doc = Zend_Search_Lucene_Document_Xlsx::loadXlsxFile($filename);
-$doc->addField(Zend_Search_Lucene_Field::UnIndexed(
-    'indexTime',
-    time()));
-$doc->addField(Zend_Search_Lucene_Field::Text(
-    'annotation',
-    'Document annotation text'));
-$index->addDocument($doc);
-]]></programlisting></para>
-    </sect2>
-</sect1>
+        <para>
+            Le champ "body" contient le véritable contenu de toutes les cellules de toutes les
+            feuilles de calcul du document Excel 2007.
+        </para>
+
+        <para>
+            La méthode <code>loadXlsxFile()</code> de la classe
+            <classname>Zend_Search_Lucene_Document_Xlsx</classname> possède également un second
+            argument optionnel. S'il est défini à true, le champ "body" sera alors également stocké
+            dans l'index et pourra être affiché dans les résultats de recherche. Par défaut, le
+            champ "body" est "tokenizé" et indexé, mais pas stocké.
+        </para>
+
+        <para>
+            Les documents analysés peuvent être étendus par le programmeur avec d'autres
+            champs : <programlisting role="php"><![CDATA[
+    $doc = Zend_Search_Lucene_Document_Xlsx::loadXlsxFile($filename);
+    $doc->addField(Zend_Search_Lucene_Field::UnIndexed(
+        'indexTime',
+        time()));
+    $doc->addField(Zend_Search_Lucene_Field::Text(
+        'annotation',
+        'Document annotation text'));
+    $index->addDocument($doc);
+    ]]></programlisting></para>
+        </sect2>
+    </sect1>