Przeglądaj źródła

[DOCUMENTATION] French: sync manual

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@20092 44c647ce-9c0f-0410-b52a-842ac1e357ba
mikaelkael 16 lat temu
rodzic
commit
96d393eb25

+ 5 - 15
documentation/manual/fr/html/dbstyle.css

@@ -1,5 +1,4 @@
 body {
 body {
-    background: url("images/bkg_top.gif") repeat-x;
     font-family: Tahoma, Arial, sans-serif;
     font-family: Tahoma, Arial, sans-serif;
 }
 }
 
 
@@ -16,26 +15,22 @@ h3, h4, h5 {
     margin: 0.2em;
     margin: 0.2em;
 }
 }
 
 
-a {
-    color:#009EEB;
-}
-
 div.note, div.warning, div.tip {
 div.note, div.warning, div.tip {
     margin-left: 0.3in;
     margin-left: 0.3in;
     margin-right: 0.5in;
     margin-right: 0.5in;
-    /*border: solid 1px green;*/
-    background-color: #EEEEEE;
+    border: solid 1px blue;
+    background-color: #e0e0e0;
     padding: 0.1in;
     padding: 0.1in;
 }
 }
 
 
 div.note img, div.warning img, div.tip img {
 div.note img, div.warning img, div.tip img {
     margin-right: 0.1in;
     margin-right: 0.1in;
-    /*border: solid 1px green;*/
+    border: solid 1px blue;
 }
 }
 
 
 pre.programlisting {
 pre.programlisting {
-    border: 1px solid #D3E0EB;
-    background-color: #EDF7FF;
+    border: solid 1px #444;
+    background-color: #e0e0e0;
     padding: 0.1in;
     padding: 0.1in;
     margin: 0.2in;
     margin: 0.2in;
     clear: right;
     clear: right;
@@ -82,8 +77,3 @@ div.revinfo {
 code.code {
 code.code {
     font-family: "Lucida Console", monospace;
     font-family: "Lucida Console", monospace;
 }
 }
-
-div.chapter > div.titlepage {
-    background: url("./images/logo_small.gif") no-repeat;
-    padding-left: 125px;
-}

+ 8 - 7
documentation/manual/fr/module_specs/Zend_Json-Basics.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 19911 -->
+<!-- EN-Revision: 19912 -->
 <!-- Reviewed: no -->
 <!-- Reviewed: no -->
 <sect1 id="zend.json.basics">
 <sect1 id="zend.json.basics">
     <title>Utilisation de base</title>
     <title>Utilisation de base</title>
@@ -27,12 +27,13 @@ $json = Zend_Json::encode($phpNatif);
         </para>
         </para>
         
         
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
-    // Encode it to return to the client:
-    $json = Zend_Json::encode($phpNative);
-    if($debug) {
-    echo Zend_Json::prettyPrint($json, array("indent" => " "));
-    }
-    ]]></programlisting>
+// Encode it to return to the client:
+$json = Zend_Json::encode($phpNative);
+if($debug) {
+echo Zend_Json::prettyPrint($json, array("indent" => " "));
+}
+]]></programlisting>
+
         <para>
         <para>
             Second optional argument of <methodname>Zend_Json::prettyPrint()</methodname> is an option array. 
             Second optional argument of <methodname>Zend_Json::prettyPrint()</methodname> is an option array. 
             Option <code>indent</code> allows to set indentation string - by default it's a single tab character.
             Option <code>indent</code> allows to set indentation string - by default it's a single tab character.

+ 42 - 7
documentation/manual/fr/module_specs/Zend_Paginator-Advanced.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 17133 -->
+<!-- EN-Revision: 17632 -->
 <!-- Reviewed: no -->
 <!-- Reviewed: no -->
 <sect1 id="zend.paginator.advanced">
 <sect1 id="zend.paginator.advanced">
     <title>Utilisation avancée</title>
     <title>Utilisation avancée</title>
@@ -114,10 +114,10 @@ $prefix = 'Mon_Paginator_StyleDefilement';
 $path   = 'Mon/Paginator/StyleDefilement/';
 $path   = 'Mon/Paginator/StyleDefilement/';
 Zend_Paginator::addScrollingStylePrefixPath($prefix, $path);
 Zend_Paginator::addScrollingStylePrefixPath($prefix, $path);
 ]]></programlisting></para>
 ]]></programlisting></para>
-        </sect2>
+    </sect2>
 
 
-        <sect2 id="zend.paginator.advanced.caching">
-            <title>Fonctionnalité de mise en cache</title>
+    <sect2 id="zend.paginator.advanced.caching">
+        <title>Fonctionnalité de mise en cache</title>
 
 
         <para>
         <para>
             <classname>Zend_Paginator</classname> peut mettre en cache les données qu'il a
             <classname>Zend_Paginator</classname> peut mettre en cache les données qu'il a
@@ -210,6 +210,41 @@ $otherItems = $paginator->getItemsPerPage(4);
 
 
 // voir ces éléments sous la forme d'un tableau à 2-dimensions :
 // voir ces éléments sous la forme d'un tableau à 2-dimensions :
 var_dump($paginator->getPageItemCache());
 var_dump($paginator->getPageItemCache());
-]]></programlisting></para>
-        </sect2>
-    </sect1>
+]]></programlisting>
+        </para>
+    </sect2>
+        
+    <sect2 id="zend.paginator.advanced.aggregator">
+        <title>Zend_Paginator_AdapterAggregate Interface</title>
+
+        <para>
+            Depending on your application you might want to paginate objects, whose internal data-structure
+            is equal to existing adapters, but you don't want to break up your encapsulation to allow access
+            to this data. In other cases an object might be in a "has-an adapter" relationship, rather than
+            the "is-an adapter" relationsship that <classname>Zend_Paginator_Adapter_Abstract</classname> promotes.
+            For this cases you can use the <classname>Zend_Paginator_AdapterAggregate</classname> interface that
+            behaves much like the <classname>IteratorAggregate</classname> interface of the PHP SPL extension.
+        </para>
+
+        <para>
+            <programlisting language="php"><![CDATA[
+interface Zend_Paginator_AdapterAggregate
+{
+    /**
+     * Return a fully configured Paginator Adapter from this method.
+     *
+     * @return Zend_Paginator_Adapter_Abstract
+     */
+    public function getPaginatorAdapter();
+}
+]]></programlisting>
+        </para>
+
+        <para>
+            The interface is fairly small and only expects you to return an instance of
+            <classname>Zend_Paginator_Adapter_Abstract</classname>. An Adapter Aggregate instance is then
+            recognized by both <code>Zend_Paginator::factory</code> and the constructor of Zend_Paginator and
+            handled accordingly.
+        </para>
+    </sect2>
+</sect1>

+ 54 - 40
documentation/manual/fr/module_specs/Zend_Paginator-Usage.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 17274 -->
+<!-- EN-Revision: 19418 -->
 <!-- Reviewed: no -->
 <!-- Reviewed: no -->
 <sect1 id="zend.paginator.usage">
 <sect1 id="zend.paginator.usage">
     <title>Utilisation</title>
     <title>Utilisation</title>
@@ -166,30 +166,42 @@ $paginator->setCurrentPageNumber($this->_getParam('page'));
         <para>
         <para>
             <programlisting language="php"><![CDATA[
             <programlisting language="php"><![CDATA[
 $this->view->paginator = $paginator;
 $this->view->paginator = $paginator;
-]]></programlisting></para>
-        </sect2>
+]]></programlisting>
+        </para>
+    </sect2>
 
 
-        <sect2 id="zend.paginator.usage.dbselect">
-            <title>The DbSelect and DbTableSelect adapter</title>
-            <para>
-                The usage of most adapters is pretty straight-forward. However, the
-                database adapters require a more detailed explanation. Contrary to popular
-                believe, these adapters do NOT fetch all records from the database in order to count them.
-                Instead, the adapters manipulates the original query to produce the corresponding
-                COUNT query. Paginator then executes that COUNT query to get the number of rows.
-                This does require an extra round-trip to the database, but this is many times
-                faster than fetching an entire result set and using count(). Especially with
-                large collections of data.
-            </para>
+    <sect2 id="zend.paginator.usage.dbselect">
+        <title>The DbSelect and DbTableSelect adapter</title>
+        <para>
+            The usage of most adapters is pretty straight-forward. However, the
+            database adapters require a more detailed explanation regarding
+            the retrieval and count of the data from the database.
+        </para>
 
 
-            <para>
-                The database adapters will try and build the most efficient query that will execute
-                on pretty much all modern databases. However, depending on your database or even your
-                own schema setup, there might be more efficient ways to get a rowcount. For this scenario
-                the database adapters allow you to set a custom COUNT query. For example,
-                if you keep track of the count of blog posts in a separate table, you could achieve a
-                faster count query with the following setup:
-            </para>
+        <para>
+            To use the DbSelect and DbTableSelect adapters you don't have to retrieve the data upfront from
+            the database. Both adapters do the retrieval for you, aswell as the counting of the total pages.
+            If additional work has to be done on the database results the adapter <methodname>getItems()</methodname> method
+            has to be extended in your application.
+        </para>
+
+        <para>
+            Additionally these adapters do <emphasis>not</emphasis> fetch all records from the database
+            Instead, the adapters manipulates the original query to produce the corresponding
+            COUNT query. Paginator then executes that COUNT query to get the number of rows.
+            This does require an extra round-trip to the database, but this is many times
+            faster than fetching an entire result set and using count(). Especially with
+            large collections of data.
+        </para>
+
+        <para>
+            The database adapters will try and build the most efficient query that will execute
+            on pretty much all modern databases. However, depending on your database or even your
+            own schema setup, there might be more efficient ways to get a rowcount. For this scenario
+            the database adapters allow you to set a custom COUNT query. For example,
+            if you keep track of the count of blog posts in a separate table, you could achieve a
+            faster count query with the following setup:
+        </para>
 
 
             <programlisting language="php"><![CDATA[
             <programlisting language="php"><![CDATA[
 $adapter = new Zend_Paginator_Adapter_DbSelect($db->select()->from('posts'));
 $adapter = new Zend_Paginator_Adapter_DbSelect($db->select()->from('posts'));
@@ -200,16 +212,16 @@ $adapter->setRowCount(
 $paginator = new Zend_Paginator($adapter);
 $paginator = new Zend_Paginator($adapter);
 ]]></programlisting>
 ]]></programlisting>
 
 
-            <para>
-                This approach will probably not give you a huge performance gain on
-                small collections and/or simple select queries. However, with complex
-                queries and large collections, a similar approach could give you a
-                significant performance boost.
-            </para>
-        </sect2>
+        <para>
+            This approach will probably not give you a huge performance gain on
+            small collections and/or simple select queries. However, with complex
+            queries and large collections, a similar approach could give you a
+            significant performance boost.
+        </para>
+    </sect2>
 
 
-        <sect2 id="zend.paginator.rendering">
-            <title>Rendre des pages avec les scripts de vue</title>
+    <sect2 id="zend.paginator.rendering">
+        <title>Rendre des pages avec les scripts de vue</title>
 
 
         <para>
         <para>
             Le script de vue va être utilisé pour rendre les éléments de la page (bien sûr si
             Le script de vue va être utilisé pour rendre les éléments de la page (bien sûr si
@@ -231,7 +243,7 @@ $paginator = new Zend_Paginator($adapter);
 <?php if (count($this->paginator)): ?>
 <?php if (count($this->paginator)): ?>
 <ul>
 <ul>
 <?php foreach ($this->paginator as $item): ?>
 <?php foreach ($this->paginator as $item): ?>
-  <li><?= $item; ?></li>
+  <li><?php echo $item; ?></li>
 <?php endforeach; ?>
 <?php endforeach; ?>
 </ul>
 </ul>
 <?php endif; ?>
 <?php endif; ?>
@@ -399,7 +411,7 @@ Voir http://developer.yahoo.com/ypatterns/pattern.php?pattern=searchpagination
 <?php foreach ($this->pagesInRange as $page): ?>
 <?php foreach ($this->pagesInRange as $page): ?>
   <?php if ($page != $this->current): ?>
   <?php if ($page != $this->current): ?>
     <a href="<?php echo $this->url(array('page' => $page)); ?>">
     <a href="<?php echo $this->url(array('page' => $page)); ?>">
-        <?= $page; ?>
+        <?php echo $page; ?>
     </a> |
     </a> |
   <?php else: ?>
   <?php else: ?>
     <?php echo $page; ?> |
     <?php echo $page; ?> |
@@ -465,7 +477,8 @@ of <?= $this->totalItemCount; ?>
 
 
 </div>
 </div>
 <?php endif; ?>
 <?php endif; ?>
-]]></programlisting></para>
+]]></programlisting>
+            </para>
 
 
             <para>
             <para>
                 Pagination Dropdown :<programlisting language="php"><![CDATA[
                 Pagination Dropdown :<programlisting language="php"><![CDATA[
@@ -474,7 +487,7 @@ of <?= $this->totalItemCount; ?>
 <?php foreach ($this->pagesInRange as $page): ?>
 <?php foreach ($this->pagesInRange as $page): ?>
   <?php $selected = ($page == $this->current) ? ' selected="selected"' : ''; ?>
   <?php $selected = ($page == $this->current) ? ' selected="selected"' : ''; ?>
   <option value="<?php echo $this->url(array('page' => $page)); ?>"
   <option value="<?php echo $this->url(array('page' => $page)); ?>"
-          <?= $selected ?>>
+          <?php echo $selected ?>>
     <?php echo $page; ?>
     <?php echo $page; ?>
   </option>
   </option>
 <?php endforeach; ?>
 <?php endforeach; ?>
@@ -489,11 +502,12 @@ $('paginationControl').observe('change', function() {
     window.location = this.options[this.selectedIndex].value;
     window.location = this.options[this.selectedIndex].value;
 })
 })
 </script>
 </script>
-]]></programlisting></para>
-            </sect3>
+]]></programlisting>
+            </para>
+        </sect3>
 
 
-            <sect3 id="zend.paginator.usage.rendering.properties">
-                <title>Liste des propriétés</title>
+        <sect3 id="zend.paginator.usage.rendering.properties">
+            <title>Liste des propriétés</title>
 
 
             <para>
             <para>
                 Les options suivantes sont disponibles pour contrôler la pagination dans les
                 Les options suivantes sont disponibles pour contrôler la pagination dans les

+ 18 - 10
documentation/manual/fr/module_specs/Zend_Rest.xml

@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 17175 -->
+<!-- EN-Revision: 19162 -->
 <!-- Reviewed: no -->
 <!-- Reviewed: no -->
 <sect1 id="zend.rest.introduction">
 <sect1 id="zend.rest.introduction">
     <title>Introduction</title>
     <title>Introduction</title>
 
 
     <para>
     <para>
-        Les services Web REST utilisent des formats <acronym>XML</acronym> spécifiques. Ces normes ad-hoc
-        signifient que la façon d'accéder à un service Web REST est différente pour chaque service.
-        Les services Web REST utilise typiquement les paramètres <acronym>URL</acronym> (données GET) ou les
-        informations du chemin pour demander des données, et les données POST pour envoyer des
-        données.
+        Les services Web REST utilisent des formats <acronym>XML</acronym> spécifiques. Ces normes
+        ad-hoc signifient que la façon d'accéder à un service Web REST est différente pour chaque
+        service. Les services Web REST utilise typiquement les paramètres <acronym>URL</acronym>
+        (données GET) ou les informations du chemin pour demander des données, et les données POST
+        pour envoyer des données.
     </para>
     </para>
 
 
     <para>
     <para>
@@ -17,9 +17,17 @@
         utilisées ensemble tiennent compte de beaucoup plus d'expérience d'interface "locale" par
         utilisées ensemble tiennent compte de beaucoup plus d'expérience d'interface "locale" par
         l'intermédiaire de l'accès aux propriétés d'objet virtuel. Le composant serveur comporte
         l'intermédiaire de l'accès aux propriétés d'objet virtuel. Le composant serveur comporte
         l'exposition automatique des fonctions et des classes employant un format compréhensible et
         l'exposition automatique des fonctions et des classes employant un format compréhensible et
-        simple de <acronym>XML</acronym>. En accédant à ces services via le client, il est possible de rechercher
-        facilement les données retournées lors de l'appel à distance. Si vous souhaitez employer le
-        client avec un service non basé sur le service Zend_Rest_Server, il fournira un accès plus
-        facile aux données.
+        simple de <acronym>XML</acronym>. En accédant à ces services via le client, il est possible
+        de rechercher facilement les données retournées lors de l'appel à distance. Si vous
+        souhaitez employer le client avec un service non basé sur le service Zend_Rest_Server, il
+        fournira un accès plus facile aux données.
+    </para>
+
+    <para>
+        En plus des composants <classname>Zend_Rest_Server</classname> et
+        <classname>Zend_Rest_Client</classname>, les classes <link
+            linkend="zend.controller.router.routes.rest"><classname>Zend_Rest_Route</classname> et
+            <classname>Zend_Rest_Controller</classname></link> sont fournies pour aider lors du
+        routage des requêtes vers les contrôleurs.
     </para>
     </para>
 </sect1>
 </sect1>

+ 129 - 5
documentation/manual/fr/module_specs/Zend_Service-ReCaptcha.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 17133 -->
+<!-- EN-Revision: 18840 -->
 <!-- Reviewed: no -->
 <!-- Reviewed: no -->
 <sect1 id="zend.service.recaptcha">
 <sect1 id="zend.service.recaptcha">
     <title>Zend_Service_ReCaptcha</title>
     <title>Zend_Service_ReCaptcha</title>
@@ -11,7 +11,7 @@
             <classname>Zend_Service_ReCaptcha</classname> fournit un client pour le <ulink
             <classname>Zend_Service_ReCaptcha</classname> fournit un client pour le <ulink
             url="http://recaptcha.net/">Service Web reCAPTCHA</ulink>. D'après le site de reCAPTCHA,
             url="http://recaptcha.net/">Service Web reCAPTCHA</ulink>. D'après le site de reCAPTCHA,
             "reCAPTCHA est un service gratuit de CAPTCHA qui aide à la numérisation de livres."
             "reCAPTCHA est un service gratuit de CAPTCHA qui aide à la numérisation de livres."
-            Chaque reCAPTCHA requière que l'utilisateur saisisse 2 mots, le premier est le captcha,
+            Chaque reCAPTCHA requière que l'utilisateur saisisse 2 mots, le premier est le CAPTCHA,
             et le second est issu de texte scanné que les OCR (Optical Character Recognition) ne
             et le second est issu de texte scanné que les OCR (Optical Character Recognition) ne
             peuvent identifier.
             peuvent identifier.
         </para>
         </para>
@@ -32,18 +32,26 @@
             vos clés publique et privée :
             vos clés publique et privée :
         </para>
         </para>
 
 
-        <programlisting language="php"><![CDATA[
+        <example id="zend.service.recaptcha.example-1">
+            <title>Créer une instance de service ReCaptcha</title>
+
+            <programlisting language="php"><![CDATA[
 $recaptcha = new Zend_Service_ReCaptcha($pubKey, $privKey);
 $recaptcha = new Zend_Service_ReCaptcha($pubKey, $privKey);
 ]]></programlisting>
 ]]></programlisting>
+        </example>
 
 
         <para>
         <para>
             Pour rendre le reCAPTCHA, appelez simplement la méthode <methodname>getHTML()</methodname>
             Pour rendre le reCAPTCHA, appelez simplement la méthode <methodname>getHTML()</methodname>
             :
             :
         </para>
         </para>
 
 
-        <programlisting language="php"><![CDATA[
+        <example id="zend.service.recaptcha.example-2">
+            <title>Afficher le ReCaptcha</title>
+
+            <programlisting language="php"><![CDATA[
 echo $recaptcha->getHTML();
 echo $recaptcha->getHTML();
 ]]></programlisting>
 ]]></programlisting>
+        </example>
 
 
         <para>
         <para>
             Lorsque le formulaire est envoyé, vous devriez recevoir 2 champs
             Lorsque le formulaire est envoyé, vous devriez recevoir 2 champs
@@ -64,11 +72,15 @@ $result = $recaptcha->verify(
             <methodname>isValid()</methodname>.
             <methodname>isValid()</methodname>.
         </para>
         </para>
 
 
-        <programlisting language="php"><![CDATA[
+        <example id="zend.service.recaptcha.example-3">
+            <title>Vérifier les champs de formulaire</title>
+
+            <programlisting language="php"><![CDATA[
 if (!$result->isValid()) {
 if (!$result->isValid()) {
     // Validation échouée
     // Validation échouée
 }
 }
 ]]></programlisting>
 ]]></programlisting>
+        </example>
 
 
         <para>
         <para>
             Encore plus simple : utilisez <link
             Encore plus simple : utilisez <link
@@ -78,4 +90,116 @@ if (!$result->isValid()) {
             ces 2 cas, le rendu et la validation du reCAPTCHA sont assurés pour vous.
             ces 2 cas, le rendu et la validation du reCAPTCHA sont assurés pour vous.
         </para>
         </para>
     </sect2>
     </sect2>
+
+    <sect2 id="zend.service.recaptcha.mailhide">
+        <title>Hiding email addresses</title>
+        
+        <para>
+            <classname>Zend_Service_ReCaptcha_MailHide</classname> can be used to hide email 
+            addresses. It will replace a part of an email address with a link that opens a popup 
+            window with a ReCaptcha challenge. Solving the challenge will reveal the complete 
+            email address. 
+        </para>
+        <para>
+            In order to use this component you will need 
+            <ulink url="http://recaptcha.net/whyrecaptcha.html">an account</ulink>, and generate 
+            public and private keys for the mailhide API.
+        </para>
+        <example id="zend.service.recaptcha.mailhide.example-1">
+            <title>Using the mail hide component</title>
+            <programlisting language="php"><![CDATA[
+// The mail address we want to hide
+$mail = 'mail@example.com';
+
+// Create an instance of the mailhide component, passing it your public and private keys as well as 
+// the mail address you want to hide
+$mailHide = new Zend_Service_ReCaptcha_Mailhide();
+$mailHide->setPublicKey($pubKey);
+$mailHide->setPrivateKey($privKey);
+$mailHide->setEmail($mail);
+
+// Display it
+print($mailHide);
+]]></programlisting>
+        </example>
+        <para>
+            The example above will display "m...@example.com" where "..." has a link that opens up 
+            a popup windows with a ReCaptcha challenge.
+        </para>
+        <para>
+            The public key, private key and the email address can also be specified in the 
+            constructor of the class. A fourth argument also exists that enables you to set some
+            options for the component. The available options are listed in the following table:
+            <table id="zend.service.recaptcha.mailhide.options.table">
+                <title>Zend_Service_ReCaptcha_MailHide options</title>
+                <tgroup cols="4">
+                    <thead>
+                        <row>
+                            <entry>Option</entry>
+                            <entry>Description</entry>
+                            <entry>Expected Values</entry>
+                            <entry>Default Value</entry>
+                        </row>
+                    </thead>
+                    <tbody>
+                        <row>
+                            <entry>linkTitle</entry>
+                            <entry>The title attribute of the link</entry>
+                            <entry>string</entry>
+                            <entry>'Reveal this e-mail address'</entry>
+                        </row>
+                        <row>
+                            <entry>linkHiddenText</entry>
+                            <entry>The text that includes the popup link</entry>
+                            <entry>string</entry>
+                            <entry>'...'</entry>
+                        </row>
+                        <row>
+                            <entry>popupWidth</entry>
+                            <entry>The width of the popup window</entry>
+                            <entry>int</entry>
+                            <entry>500</entry>
+                        </row>
+                        <row>
+                            <entry>popupHeight</entry>
+                            <entry>The height of the popup window</entry>
+                            <entry>int</entry>
+                            <entry>300</entry>
+                        </row>
+                    </tbody>
+                </tgroup>
+            </table>
+        </para>
+        <para>
+            The configuration options can be set by sending it as the fourth argument to the 
+            constructor or by calling the <methodname>setOptions($options)</methodname> which takes 
+            an associative array or an instance of <link linkend="zend.config">Zend_Config</link>.
+        </para>
+        <example id="zend.service.recaptcha.mailhide.example-2">
+            <title>Generating many hidden email addresses</title>
+            <programlisting language="php"><![CDATA[
+// Create an instance of the mailhide component, passing it your public and private keys as well as 
+// well the mail address you want to hide
+$mailHide = new Zend_Service_ReCaptcha_Mailhide();
+$mailHide->setPublicKey($pubKey);
+$mailHide->setPrivateKey($privKey);
+$mailHide->setOptions(array(
+    'linkTitle' => 'Click me',
+    'linkHiddenText' => '+++++',
+));
+
+// The addresses we want to hide
+$mailAddresses = array(
+    'mail@example.com',
+    'johndoe@example.com',
+    'janedoe@example.com',
+);
+
+foreach ($mailAddresses as $mail) {
+    $mailHide->setEmail($mail);
+    print($mailHide);
+}
+]]></programlisting>
+        </example>
+    </sect2>
 </sect1>
 </sect1>

+ 1 - 1
documentation/manual/fr/ref/language-snippets.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 19887 -->
+<!-- EN-Revision: 19995 -->
 <!-- Reviewed: no -->
 <!-- Reviewed: no -->
 
 
 <!-- links -->
 <!-- links -->