Browse Source

[DOCUMENTATION] French:
- add migration chapter

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@18802 44c647ce-9c0f-0410-b52a-842ac1e357ba

mikaelkael 16 years ago
parent
commit
51d51aeccc

+ 239 - 0
documentation/manual/fr/ref/migration-06.xml

@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 18682 -->
+<!-- Reviewed: no -->
+<sect1 id="migration.06">
+    <title>Zend Framework 0.6</title>
+
+    <para>
+        Lors de la migration d'un version précédente vers Zend Framework 0.6 ou plus récent
+        vous devriez prendre note de ce qui suit.
+    </para>
+
+    <sect2 id="migration.06.zend.controller">
+        <title>Zend_Controller</title>
+
+        <para>
+            L'utilisation de base des composants <acronym>MVC</acronym> n'a pas changé ; vous pouvez toujours
+            faire comme suit&#160;:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+Zend_Controller_Front::run('/chemin/vers/controleurs');
+]]></programlisting>
+
+        <programlisting language="php"><![CDATA[
+/* -- créer un routeur -- */
+$router = new Zend_Controller_RewriteRouter();
+$router->addRoute('user', 'user/:username', array('controller' => 'user',
+'action' => 'info'));
+
+/* -- l'affecter à un contrôleur -- */
+$ctrl = Zend_Controller_Front::getInstance();
+$ctrl->setRouter($router);
+
+/* -- régler le répertoire des contrôleurs et distribuer -- */
+$ctrl->setControllerDirectory('/chemin/vers/controleurs');
+$ctrl->dispatch();
+]]></programlisting>
+
+        <para>
+            Nous encourageons l'utilisation de l'objet Réponse pour agréger le contenu et les
+            en-têtes. Ceci permet un basculement plus flexible entre les formats d'affichage (par
+            exemple, <acronym>JSON</acronym> ou <acronym>XML</acronym> au lieu de <acronym>XHTML</acronym>) dans vos applications. Par défaut,
+            <methodname>dispatch()</methodname> va effectuer le rendu de la réponse, envoyant à la fois les
+            en-têtes et tout contenu. Vous pouvez aussi avoir le contrôleur frontal qui retourne la
+            réponse en utilisant <methodname>returnResponse()</methodname>, et qui ensuite effectue le rendu de
+            la réponse suivant votre propre logique. Une version future du contrôleur frontal peut
+            mettre en application l'utilisation de l'objet Réponse via la
+            <ulink url="http://php.net/manual/fr/ref.outcontrol.php">bufferisation de
+            sortie</ulink>.
+        </para>
+
+        <para>
+            Il existe beaucoup d'autres fonctionnalités qui étendent l'API existante, et
+            celles-ci sont décrites dans la documentation.
+        </para>
+
+        <para>
+            Le changement le plus important auquel vous devrez faire attention apparaîtra
+            quand vous tenterez de sous-classer les différents composants. La clé se trouve
+            ci-dessous&#160;:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <methodname>Zend_Controller_Front::dispatch()</methodname> intercepte par
+                    défaut les exceptions dans l'objet réponse, et ne les affiche pas, afin
+                    d'éviter l'affichage d'information sensible du système. Vous pouvez surcharger
+                    ceci de différentes manières&#160;:
+                </para>
+                <itemizedlist>
+                    <listitem>
+                        <para>
+                            Régler <methodname>throwExceptions()</methodname> dans le contrôleur frontal&#160;:
+                        </para>
+                        <programlisting language="php"><![CDATA[
+$front->throwExceptions(true);
+]]></programlisting>
+                    </listitem>
+                    <listitem>
+                        <para>
+                            Régler <methodname>renderExceptions()</methodname> dans l'objet Réponse&#160;:
+                        </para>
+                        <programlisting language="php"><![CDATA[
+$response->renderExceptions(true);
+$front->setResponse($response);
+$front->dispatch();
+// ou :
+$front->returnResponse(true);
+$response = $front->dispatch();
+$response->renderExceptions(true);
+echo $response;
+]]></programlisting>
+                    </listitem>
+                </itemizedlist>
+            </listitem>
+            <listitem>
+                <para>
+                    <methodname>Zend_Controller_Dispatcher_Interface::dispatch()</methodname>
+                    accepte maintenant et retourne un objet
+                    <xref linkend="zend.controller.request" /> au lieu d'un élément du
+                    distributeur.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <methodname>Zend_Controller_Router_Interface::route()</methodname> accepte
+                    maintenant et retourne un objet <xref linkend="zend.controller.request" /> au
+                    lieu d'un élément du distributeur.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Les changements de <classname>Zend_Controller_Action</classname>
+                    incluent&#160;:
+                </para>
+                <itemizedlist>
+                    <listitem>
+                        <para>
+                            Le constructeur accepte maintenant exactement trois arguments,
+                            <classname>Zend_Controller_Request_Abstract $request</classname>,
+                            <classname>Zend_Controller_Response_Abstract $response</classname>, et
+                            le tableau facultatif <varname>$params</varname>.
+                            <methodname>Zend_Controller_Action::__construct()</methodname> les
+                            utilise pour affecter la requête, la réponse, et les propriétés
+                            <code>invokeArgs</code> de l'objet, et si vous devez surcharger le
+                            constructeur, vous devez faire de même. La meilleure solution est
+                            d'utiliser la méthode <methodname>init()</methodname> pour réaliser toute
+                            configuration de l'instance, puisque cette méthode est appelée en tant
+                            que action finale du constructeur.
+                        </para>
+                    </listitem>
+                    <listitem>
+                        <para>
+                            <methodname>run()</methodname> n'est plus défini en tant qu'élément final,
+                            mais n'est pas non plus utilisé par le contrôleur frontal ; son seul
+                            but apparaît lors de l'utilisation de la classe en tant que contrôleur
+                            de page. Il prend maintenant deux arguments facultatifs, un
+                            <classname>Zend_Controller_Request_Abstract $request</classname> et un
+                            <classname>Zend_Controller_Response_Abstract
+                            $response</classname>.
+                        </para>
+                    </listitem>
+                    <listitem>
+                        <para>
+                            <methodname>indexAction()</methodname> ne nécessite plus d'être défini, mais
+                            est recommandé en tant qu'action par défaut. Ceci permet lors de
+                            l'utilisation de <code>RewriteRouter</code> et des contrôleurs d'action
+                            de spécifier différentes méthodes d'action par défaut.
+                        </para>
+                    </listitem>
+                    <listitem>
+                        <para>
+                            <methodname>__call()</methodname> peut être surchargé pour gérer
+                            automatiquement les actions non définies.
+                        </para>
+                    </listitem>
+                    <listitem>
+                        <para>
+                            <methodname>_redirect()</methodname> prend maintenant un second paramètre
+                            facultatif, le code <acronym>HTTP</acronym> à retourner avec la redirection, et un
+                            troisième paramètre optionnel, <varname>$prependBase</varname>, qui peut
+                            indiquer que l'URL de base enregistré avec l'objet requête peut être
+                            ajouté en tant que suffixe à l'URL spécifié.
+                        </para>
+                    </listitem>
+                    <listitem>
+                        <para>
+                            La propriété <code>_action</code> n'existe plus. Cette propriété
+                            était un <classname>Zend_Controller_Dispatcher_Token</classname>, qui
+                            n'existe plus maintenant. Le seul but de cet élément est de fournir
+                            l'information concernant le contrôleur, l'action et les paramètres
+                            d'URL de la requête. Cette information est maintenant disponible dans
+                            l'objet requête, et peut être interrogé comme ceci&#160;:
+                        </para>
+                        <programlisting language="php"><![CDATA[
+// Récupère le nom de controleur de la requête
+// L'accès se fait via : $this->_action->getControllerName().
+// L'exemple ci-dessous utilise getRequest(), bien que vous pourriez
+// accéder directement à la propriété $_request ;
+// l'utilisation de getRequest() est recommandée puisque la classe
+// parente peut surcharger l'accès à l'objet requête.
+$controller = $this->getRequest()->getControllerName();
+
+// Recupere le nom de l'action de la requete
+// L'acces se fait via : $this->_action->getActionName().
+$action = $this->getRequest()->getActionName();
+
+// Recupere les parametres de la requete
+// Ceci n'a pas changé ; les méthodes _getParams() et _getParam()
+// relaient simplement l'objet requete maintenant.
+$params = $this->_getParams();
+$foo = $this->_getParam('foo', 'default');
+// parametre de la requete 'foo', en utilisant 'default'
+// en tant que valeur par défaut si aucune valeur n'est trouvée
+]]></programlisting>
+                    </listitem>
+                    <listitem>
+                        <para>
+                            <methodname>noRouteAction()</methodname> a été effacée. La manière appropriée
+                            de gérer les méthodes d'actions non-existantes est de les router vers
+                            une action par défaut en utilisant <methodname>__call()</methodname>&#160;:
+                        </para>
+                        <programlisting language="php"><![CDATA[
+public function __call($method, $args)
+{
+    // Si la méthode requetee ne correspond a aucune methode 'Action',
+    // on renvoie vers la méthode d'action par défaut :
+    if ('Action' == substr($method, -6)) {
+        return $this->defaultAction();
+    }
+
+    throw new Zend_Controller_Exception('Appel de methode invalide');
+}
+]]></programlisting>
+                    </listitem>
+                </itemizedlist>
+            </listitem>
+            <listitem>
+                <para>
+                    <methodname>Zend_Controller_RewriteRouter::setRewriteBase()</methodname> a
+                    été effacée. Utilisez plutôt
+                    <methodname>Zend_Controller_Front::setBaseUrl()</methodname> (ou
+                    Zend_Controller_Request_Http::setBaseUrl(), si vous utilisez cette classe de
+                    requête).
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <classname>Zend_Controller_Plugin_Interface</classname> a été remplacée
+                    par <classname>Zend_Controller_Plugin_Abstract</classname>. Toutes les méthodes
+                    acceptent et retournent maintenant un objet
+                    <xref linkend="zend.controller.request" /> au lieu d'un élément du
+                    distributeur.
+                </para>
+            </listitem>
+        </itemizedlist>
+    </sect2>
+</sect1>

+ 90 - 0
documentation/manual/fr/ref/migration-08.xml

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 18682 -->
+<!-- Reviewed: no -->
+<sect1 id="migration.08">
+    <title>Zend Framework 0.8</title>
+
+    <para>
+        Lors de la migration d'un version précédente vers Zend Framework 0.8 ou plus récent
+        vous devriez prendre note de ce qui suit.
+    </para>
+
+    <sect2 id="migration.08.zend.controller">
+        <title>Zend_Controller</title>
+
+        <para>
+            Pour les versions précédentes, l'utilisation basique des composants <acronym>MVC</acronym> reste la
+            même&#160;:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+Zend_Controller_Front::run('/chemin/vers/controleurs');
+]]></programlisting>
+
+        <para>
+            Cependant, la structure des dossiers a subi une réorganisation, certains
+            composants ont été effacés, et d'autres ont été soit renommés soit ajoutés. Les
+            changements incluent&#160;:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <classname>Zend_Controller_Router</classname> a été effacé en faveur du
+                    routeur de réécriture ("rewrite router").
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <classname>Zend_Controller_RewriteRouter</classname> a été renommé en
+                    <classname>Zend_Controller_Router_Rewrite</classname>, et promu en tant que
+                    routeur standard fourni avec le framework ;
+                    <classname>Zend_Controller_Front</classname> l'utilise par défaut si aucun
+                    autre routeur n'est fourni.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Une nouvelle classe de route à utiliser avec le routeur de réécriture a
+                    été introduite, <classname>Zend_Controller_Router_Route_Module</classname> ;
+                    elle couvre la route par défaut utilisée par le <acronym>MVC</acronym>, et supporte les
+                    <link linkend="zend.controller.modular">modules de contrôleurs</link>.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <classname>Zend_Controller_Router_StaticRoute</classname> a été renommé
+                    en <classname>Zend_Controller_Router_Route_Static</classname>.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <classname>Zend_Controller_Dispatcher</classname> a été renommé en
+                    <classname>Zend_Controller_Dispatcher_Standard</classname>.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Les arguments de
+                    <methodname>Zend_Controller_Action::_forward()</methodname> ont changés. La
+                    signature est maintenant&#160;:
+                </para>
+                <programlisting language="php"><![CDATA[
+final protected function _forward($action,
+                                  $controller = null,
+                                  $module = null,
+                                  array $params = null);
+]]></programlisting>
+                <para>
+                    <varname>$action</varname> est toujours obligatoire ; si aucun contrôleur n'est
+                    spécifié, une action dans le contrôleur courant est considérée.
+                    <varname>$module</varname> est toujours ignoré à moins que <varname>$controller</varname>
+                    ne soit spécifié. Pour finir, tout <varname>$params</varname> fourni sera ajouté à
+                    l'objet requête. Si aucun contrôleur ou module n'est nécessaire, mais que des
+                    paramètres le sont, passez simplement <constant>NULL</constant> pour ces
+                    valeurs.
+                </para>
+            </listitem>
+        </itemizedlist>
+    </sect2>
+</sect1>

+ 58 - 0
documentation/manual/fr/ref/migration-09.xml

@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 18682 -->
+<!-- Reviewed: no -->
+<sect1 id="migration.09">
+    <title>Zend Framework 0.9</title>
+
+    <para>
+        Lors de la migration d'un version précédente vers Zend Framework 0.9 ou plus récent
+        vous devriez prendre note de ce qui suit.
+    </para>
+
+    <sect2 id="migration.09.zend.controller">
+        <title>Zend_Controller</title>
+
+        <para>
+            0.9.3 introduit les
+            <link linkend="zend.controller.actionhelpers">aides d'actions</link>. En lien avec ce
+            changement, les méthodes suivantes ont été effacées puisqu'elles sont maintenant
+            encapsulées dans
+            <link linkend="zend.controller.actionhelpers.redirector">l'aide d'action
+            redirector</link>&#160;:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <methodname>setRedirectCode()</methodname> à remplacer par
+                    <methodname>Zend_Controller_Action_Helper_Redirector::setCode()</methodname>.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <methodname>setRedirectPrependBase()</methodname> à remplacer par
+                    <methodname>Zend_Controller_Action_Helper_Redirector::setPrependBase()</methodname>.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <methodname>setRedirectExit()</methodname> à remplacer par
+                    <methodname>Zend_Controller_Action_Helper_Redirector::setExit()</methodname>.
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            Lisez la
+            <link linkend="zend.controller.actionhelpers">documentation des aides
+            d'actions</link>pour plus d'informations sur la récupération ou la manipulation des
+            objets "helper", et la
+            <link linkend="zend.controller.actionhelpers.redirector">documentation du helper
+            redirector</link>pour plus d'informations sur le réglage des options de redirection
+            (de même que pour les méthodes alternatives de redirection).
+        </para>
+    </sect2>
+</sect1>
+<!--
+vim:se ts=4 sw=4 et:
+-->

+ 285 - 0
documentation/manual/fr/ref/migration-10.xml

@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 18781 -->
+<!-- Reviewed: no -->
+<sect1 id="migration.10">
+    <title>Zend Framework 1.0</title>
+
+    <para>
+        Lors de la migration d'un version précédente vers Zend Framework 0.8 ou plus récent
+        vous devriez prendre note de ce qui suit.
+    </para>
+
+    <sect2 id="migration.10.zend.controller">
+        <title>Zend_Controller</title>
+
+        <para>
+            Les principaux changements introduits dans la version 1.0.0RC1 sont l'ajout et
+            l'activation par défaut du plugin
+            <link linkend="zend.controller.plugins.standard.errorhandler">ErrorHandler</link>et de
+            l'aide d'action
+            <link linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>.
+            Veuillez lire la documentation de chacun des éléments directement pour apprendre leur
+            fonctionnement et quels effets, ils peuvent avoir sur vos applications.
+        </para>
+
+        <para>
+            Le plugin <code>ErrorHandler</code> est exécuté pendant
+            <methodname>postDispatch()</methodname> vérifiant la présence d'exceptions, et redirigeant vers le
+            contrôleur de gestion d'erreur spécifié. Vous pouvez le désactiver en réglant le
+            paramètre <code>noErrorHandler</code> du contrôleur frontal&#160;:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$front->setParam('noErrorHandler', true);
+]]></programlisting>
+
+        <para>
+            L'aide d'action <code>ViewRenderer</code> automatise l'injection de vues dans les
+            contrôleurs d'action en tant qu'autogénération des scripts de vues suivant l'action
+            courante. Le principal problème que vous pourriez rencontrer intervient quand vous avez
+            des actions qui ne rendent pas de scripts de vues ni ne font suivre ou redirige, alors
+            <code>ViewRenderer</code> va tenter de rendre un script de vue basé sur le nom de
+            l'action.
+        </para>
+
+        <para>
+            Il existe plusieurs possibilités pour mettre à jour votre code. Dans un premier
+            temps, vous pouvez globalement désactiver <code>ViewRenderer</code> dans votre fichier
+            d'amorçage du contrôleur frontal avant toute distribution&#160;:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+// En considérant que $front est une instance de Zend_Controller_Front
+$front->setParam('noViewRenderer', true);
+]]></programlisting>
+
+        <para>
+            Cependant, ceci n'est pas une bonne stratégie à long terme, car il apparaît
+            aisément que vous devrez écrire plus de code.
+        </para>
+
+        <para>
+            Quand vous serez prêt à utiliser la fonctionnalité <code>ViewRenderer</code>, il
+            y a plusieurs choses à vérifier dans votre code de contrôleur. Premièrement, regardez
+            vos méthodes d'actions (les méthodes se terminant par "Action"), et déterminez ce que
+            chacune d'elle réalise. Si rien de ce qui suit n'est réalisé, vous devrez réaliser des
+            changements&#160;:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>Appel de <code>$this-&gt;render()</code></para>
+            </listitem>
+            <listitem>
+                <para>Appel de <code>$this-&gt;_forward()</code></para>
+            </listitem>
+            <listitem>
+                <para>Appel de <code>$this-&gt;_redirect()</code></para>
+            </listitem>
+            <listitem>
+                <para>Appel de l'aide d'action <code>Redirector</code></para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            Le changement le plus simple est la désactivation de l'auto-rendu pour cette
+            méthode&#160;:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$this->_helper->viewRenderer->setNoRender();
+]]></programlisting>
+
+        <para>
+            Si vous trouvez qu'aucune de vos méthodes d'actions n'effectue de rendu, ne font
+            suivre, ou redirige, vous pouvez préférer mettre la ligne suivante dans la méthode
+            <methodname>preDispatch()</methodname> ou <methodname>init()</methodname>&#160;:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+public function preDispatch()
+{
+    // désactive l'auto-rendu des scripts de vues
+    $this->_helper->viewRenderer->setNoRender()
+    // ... faire autre chose ...
+}
+]]></programlisting>
+
+        <para>
+            Si vous appelez <methodname>render()</methodname>, et que vous utilisez la
+            <link linkend="zend.controller.modular">structure de dossier modulaire
+            conventionnelle</link>, vous voudrez modifier votre code pour utiliser
+            l'auto-rendu&#160;:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    Si vous rendez de multiples scripts de vues dans une seule action, vous
+                    n'avez rien à modifier.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Si vous appelez simplement <methodname>render()</methodname> sans aucun argument,
+                    vous pouvez effacer ces lignes.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Si vous appelez <methodname>render()</methodname> avec des arguments, et que vous ne
+                    réalisez pas ensuite d'exécution de code ou effectuez le rendu de scripts de
+                    vues multiples, vous pouvez changer ces appels par
+                    <code>$this->_helper->viewRenderer()</code>.
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            Si vous n'utilisez pas la structure de dossier modulaire conventionnelle, il
+            existe une variété de méthodes pour paramétrer le chemin de base des vues et les
+            spécifications du chemin vers les scripts ainsi vous pourrez utiliser
+            <code>ViewRenderer</code>. Veuillez lire la
+            <link linkend="zend.controller.actionhelpers.viewrenderer">documentation de
+            ViewRenderer</link>pour plus d'informations sur ces méthodes.
+        </para>
+
+        <para>
+            Si vous utilisez un objet de vue issu du registre, ou que vous personnalisez
+            votre objet vue, ou que vous utilisez une implémentation de vue différente, vous pouvez
+            vouloir injecter <code>ViewRenderer</code> dans cet objet. Ceci peut être réalisé
+            facilement à tout moment.
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>Avant la distribution d'une instance de contrôleur frontal&#160;:</para>
+                <programlisting language="php"><![CDATA[
+// En considérant que $view a déjà été définie
+$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
+Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
+]]></programlisting>
+            </listitem>
+            <listitem>
+                <para>A tout moment durant le processus d'amorçage&#160;:</para>
+                <programlisting language="php"><![CDATA[
+$viewRenderer =
+    Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
+$viewRenderer->setView($view);
+]]></programlisting>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            Il existe plusieurs manières de modifier <code>ViewRenderer</code>, incluant le
+            réglage d'un script de vue différent à rendre, la spécification d'un remplaçant pour
+            tous les éléments remplaçables d'un chemin de script de vues (incluant le suffixe), le
+            choix d'un segment nommé de la réponse à utiliser, et plus encore. Si vous n'utilisez
+            pas la structure de dossier modulaire conventionnelle, vous pouvez tout de même
+            associer différentes spécifications de chemin à <code>ViewRenderer</code>.
+        </para>
+
+        <para>
+            Nous vous encourageons à adapter votre code pour utiliser
+            <code>ErrorHandler</code> et <code>ViewRenderer</code> puisqu'il s'agit maintenant de
+            fonctionnalités natives.
+        </para>
+    </sect2>
+
+    <sect2 id="migration.10.zend.currency">
+        <title>Zend_Currency</title>
+
+        <para>
+            Créer un objet <classname>Zend_Currency</classname> est devenu plus simple. Vous
+            n'avez plus besoin de passer un script ou de le mettre à <constant>NULL</constant>, le
+            paramètre script est optionnel et peut être spécifié par la méthode
+            <methodname>setFormat()</methodname>.
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$currency = new Zend_Currency($currency, $locale);
+]]></programlisting>
+
+        <para>
+            La méthode <methodname>setFormat()</methodname> prend maintenant en paramètre un tableau
+            d'options. Ces options sont permanentes et écrasent les précédentes déjà présentes. La
+            nouvelle option "precision" a été intégrée&#160;:
+            <itemizedlist mark="opencircle">
+                <listitem>
+                    <para>
+                        <emphasis>position</emphasis>&#160;: Remplacement de l'ancien
+                        paramètre "rules"
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>script</emphasis>&#160;: Remplacement de l'ancien
+                        paramètre "script"
+                    </para>
+
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>format</emphasis>&#160;: Remplacement de l'ancien
+                        paramètre "locale" qui n'affecte plus de nouvelle monnaie, mais seulement un
+                        format de nombre.
+                    </para>
+
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>display</emphasis>&#160;: Remplacement de l'ancien
+                        paramètre "rules"
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>precision</emphasis>&#160;: Nouveau paramètre
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>name</emphasis>&#160;: Remplacement de l'ancien
+                        paramètre "rules". Affecte le nom complet de la monnaie.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>currency</emphasis>&#160;: Nouveau paramètre
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para><emphasis>symbol</emphasis>&#160;: Nouveau paramètre</para>
+                </listitem>
+            </itemizedlist>
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$currency->setFormat(array $options);
+]]></programlisting>
+
+        <para>
+            La méthode <methodname>toCurrency()</methodname> ne supporte plus les paramètres optionnels
+            "script" et "locale". A la place, elle accepte un tableau d'options qui sera de la même
+            forme que celui utilisé par <code>setFormat</code>.
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$currency->toCurrency($value, array $options);
+]]></programlisting>
+
+        <para>
+            Les méthodes <methodname>getSymbol()</methodname>, <methodname>getShortName()</methodname>,
+            <methodname>getName()</methodname>, <methodname>getRegionList()</methodname> et <methodname>getCurrencyList()</methodname>
+            ne sont plus statiques. Elles retournent les valeurs affectées dans l'objet, si on ne
+            leur passe pas de paramètre.
+        </para>
+    </sect2>
+</sect1>

+ 237 - 0
documentation/manual/fr/ref/migration-110.xml

@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 18682 -->
+<!-- Reviewed: no -->
+<sect1 id="migration.110">
+    <title>Zend Framework 1.10</title>
+
+    <para>
+        Lors de la migration d'un version précédente vers Zend Framework 1.10 ou plus récent
+        vous devriez prendre note de ce qui suit.
+    </para>
+
+    <sect2 id="migration.110.zend.file.transfer">
+        <title>Zend_File_Transfer</title>
+        <sect3 id="migration.110.zend.file.transfer.count">
+            <title>Count validation</title>
+
+            <para>
+                Before release 1.10 the <classname>MimeType</classname> validator used a wrong
+                naming. For consistency the following constants have been changed:
+            </para>
+
+            <table id="migration.110.zend.file.transfer.count.table">
+                <title>Changed Validation Messages</title>
+                <tgroup cols="4">
+                    <thead>
+                        <row>
+                            <entry>Old</entry>
+                            <entry>New</entry>
+                            <entry>Value</entry>
+                        </row>
+                    </thead>
+
+                    <tbody>
+                        <row>
+                            <entry><constant>TOO_MUCH</constant></entry>
+                            <entry><constant>TOO_MANY</constant></entry>
+                            <entry>
+                                Too many files, maximum '%max%' are allowed but '%count%' are given
+                            </entry>
+                        </row>
+
+                        <row>
+                            <entry><constant>TOO_LESS</constant></entry>
+                            <entry><constant>TOO_FEW</constant></entry>
+                            <entry>
+                                Too few files, minimum '%min%' are expected but '%count%' are given
+                            </entry>
+                        </row>
+                    </tbody>
+                </tgroup>
+            </table>
+
+            <para>
+                When you are translating these messages within your code then use the new constants.
+                As benefit you don't need to translate the original string anymore to get a correct
+                spelling.
+            </para>
+        </sect3>
+
+        <sect3 id="migration.110.zend.file.transfer.mimetype">
+            <title>MimeType validation</title>
+
+            <para>
+                For security reasons we had to turn off the default fallback mechanism of the
+                <classname>MimeType</classname>, <classname>ExcludeMimeType</classname>,
+                <classname>IsCompressed</classname> and <classname>IsImage</classname> validators.
+                This means, that if the <emphasis>fileInfo</emphasis> or
+                <emphasis>magicMime</emphasis> extensions can not be found, the validation will
+                always fail.
+            </para>
+
+            <para>
+                If you are in need of validation by using the <acronym>HTTP</acronym> fields which
+                are provided by the user then you can turn on this feature by using the
+                <methodname>enableHeaderCheck()</methodname> method.
+            </para>
+
+            <note>
+                <title>Security hint</title>
+
+                <para>
+                    You should note that relying on the <acronym>HTTP</acronym> fields, which are
+                    provided by your user, is a security risk. They can easily be changed and could
+                    allow your user to provide a malcious file.
+                </para>
+            </note>
+
+            <example id="migration.110.zend.file.transfer.example">
+                <title>Allow the usage of the HTTP fields</title>
+
+                <programlisting language="php"><![CDATA[
+// at initiation
+$valid = new Zend_File_Transfer_Adapter_Http(array('headerCheck' => true);
+
+// or afterwards
+$valid->enableHeaderCheck();
+]]></programlisting>
+            </example>
+        </sect3>
+    </sect2>
+
+    <sect2 id="migration.110.zend.validate">
+        <title>Zend_Validate</title>
+
+        <sect3 id="migration.110.zend.validate.selfwritten">
+            <title>Adaptateurs personnels</title>
+
+            <para>
+                Lorsqu'une erreur apparait dans un adaptateur crée de toute pièce,
+                <methodname>_error()</methodname> doit être appelée. Avant Zend Framework 1.10, il était
+                possible d'appeler cette méthode sans aucun paramètre. Le premier template de message d'erreur
+                était alors utilisé.
+            </para>
+
+            <para>
+                Ce comportement est problématique lorsque vous avez des validateurs retournant plusieurs messages.
+                Aussi, étendre un validateur peut mener à des comportements inattendus dans une telle situation,
+                comme par exemple l'apparition du mauvais message d'erreur.
+            </para>
+
+            <programlisting language="php"><![CDATA[
+My_Validator extends Zend_Validate_Abstract
+{
+    public isValid($value)
+    {
+        ...
+        $this->_error(); // Résultat inattendu
+        ...
+    }
+}
+]]></programlisting>
+
+            <para>
+                Pour éviter ces problèmes <methodname>_error()</methodname> doit desormais
+                prendre obligatoirement un paramètre.
+            </para>
+
+            <programlisting language="php"><![CDATA[
+My_Validator extends Zend_Validate_Abstract
+{
+    public isValid($value)
+    {
+        ...
+        $this->_error(self::MY_ERROR); // Ok, erreur définie
+        ...
+    }
+}
+]]></programlisting>
+        </sect3>
+
+        <sect3 id="migration.110.zend.validate.datevalidator">
+            <title>Simplification dans le validateur des dates</title>
+
+            <para>
+                Avant Zend Framework 1.10, 2 messages identiques étaient envoyés dans le validateur
+                des dates. <constant>NOT_YYYY_MM_DD</constant> et
+                <constant>FALSEFORMAT</constant>. Depuis Zend Framework 1.10, seul
+                <constant>FALSEFORMAT</constant> sera retourné lorsque la date passée ne correspond pas
+                au format demandé.
+            </para>
+        </sect3>
+
+        <sect3 id="migration.110.zend.validate.barcodevalidator">
+            <title>Corrections dans Alpha, Alnum et Barcode</title>
+
+            <para>
+                Avant Zend Framework 1.10, les messages dans les 2 validateurs barcode, le Alpha
+                et le Alnum étaient identiques. Des problèmes pouvaient alors faire surface avec des
+                messages personnalisés, des traducteurs ou des instances multiples des validateurs.
+            </para>
+
+            <para>
+                Depuis Zend Framework 1.10, les valeurs des constantes ont changé pour être uniques.
+                Si vous utilisiez les constantes comme le manuel le recommande, aucun changement n'est nécessaire.
+                Mais si vous utilisiez les messages d'erreurs, alors il faudra les changer. Voici les changements
+                opérés:
+            </para>
+
+            <table id="migration.110.zend.validate.barcodevalidator.table">
+                <title>Messages de validation disponibles</title>
+                <tgroup cols="3">
+                    <thead>
+                        <row>
+                            <entry>Validateur</entry>
+                            <entry>Constante</entry>
+                            <entry>Valeur</entry>
+                        </row>
+                    </thead>
+
+                    <tbody>
+                        <row>
+                            <entry>Alnum</entry>
+                            <entry><constant>STRING_EMPTY</constant></entry>
+                            <entry>alnumStringEmpty</entry>
+                        </row>
+
+                        <row>
+                            <entry>Alpha</entry>
+                            <entry><constant>STRING_EMPTY</constant></entry>
+                            <entry>alphaStringEmpty</entry>
+                        </row>
+
+                        <row>
+                            <entry>Barcode_Ean13</entry>
+                            <entry><constant>INVALID</constant></entry>
+                            <entry>ean13Invalid</entry>
+                        </row>
+
+                        <row>
+                            <entry>Barcode_Ean13</entry>
+                            <entry><constant>INVALID_LENGTH</constant></entry>
+                            <entry>ean13InvalidLength</entry>
+                        </row>
+
+                        <row>
+                            <entry>Barcode_UpcA</entry>
+                            <entry><constant>INVALID</constant></entry>
+                            <entry>upcaInvalid</entry>
+                        </row>
+
+                        <row>
+                            <entry>Barcode_UpcA</entry>
+                            <entry><constant>INVALID_LENGTH</constant></entry>
+                            <entry>upcaInvalidLength</entry>
+                        </row>
+
+                        <row>
+                            <entry>Digits</entry>
+                            <entry><constant>STRING_EMPTY</constant></entry>
+                            <entry>digitsStringEmpty</entry>
+                        </row>
+                    </tbody>
+                </tgroup>
+            </table>
+        </sect3>
+    </sect2>
+</sect1>

+ 126 - 0
documentation/manual/fr/ref/migration-15.xml

@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 18682 -->
+<!-- Reviewed: no -->
+<sect1 id="migration.15">
+    <title>Zend Framework 1.5</title>
+
+    <para>
+        Lors de la migration d'un version précédente vers Zend Framework 1.5 ou plus récent
+        vous devriez prendre note de ce qui suit.
+    </para>
+
+    <sect2 id="migration.15.zend.controller">
+        <title>Zend_Controller</title>
+
+        <para>
+            Bien que la plupart des fonctionnalités de base demeurent les mêmes, et que
+            toutes les fonctionnalités documentées restent les mêmes, il existe une
+            "fonctionnalité" particulière <emphasis>non documentée</emphasis> qui a changé.
+        </para>
+
+        <para>
+            Quand vous écrivez des <acronym>URL</acronym>s, la manière documentée d'écrire les noms d'action en
+            notationCamel est d'utiliser un séparateur de mot ; ceux ci sont "." ou "-" par défaut,
+            mais ils peuvent être configurés dans le distributeur. Le distributeur en interne
+            transforme les noms d'action en minuscules, et utilise ces séparateurs de mots pour
+            ré-assembler la méthode d'action en utilisant la notationCamel. Cependant, comme les
+            fonctions <acronym>PHP</acronym> ne sont pas sensibles à la casse, vous <emphasis>pouvez</emphasis>
+            toujours écrire les <acronym>URL</acronym>s en utilisant la notationCamel, et le distributeur les résoudra
+            de la même manière. Par exemple, "notation-camel" deviendra "notationCamelAction" dans
+            le distributeur, tandis que "notationCamel" deviendra "notationcamelAction" ;
+            cependant, à cause de l'insensibilité à la casse de <acronym>PHP</acronym>, dans les deux cas cela
+            exécutera la même méthode.
+        </para>
+
+        <para>
+            Ceci pose des problèmes avec le <code>ViewRenderer</code> lors de la résolution
+            des scripts de vue. La manière canonique et documentée est que tous les séparateurs de
+            mot sont convertis en tirets, et les mots en minuscules. Ceci crée un lien sémantique
+            entre les actions et les scripts de vue, et la normalisation s'assure que les scripts
+            peuvent être trouvés. Cependant, si l'action "notationCamel" est appelée et est
+            résolue, le séparateur de mot n'est pas pour autant présent, et le
+            <code>ViewRenderer</code> tente de résoudre un emplacement différent -
+            "notationcamel.phtml" au lieu de "notation-camel.phtml".
+        </para>
+
+        <para>
+            Quelques développeurs se sont fondés sur ce "dispositif", qui n'a jamais été
+            prévu. Plusieurs changements de l'arbre 1.5.0, cependant, l'ont fait de sorte que le
+            <code>ViewRenderer</code> ne résout plus ces chemins&#160;; le lien sémantique est
+            maintenant imposé. A partir de maintenant, le distributeur impose la sensibilité à la
+            casse dans les noms d'action. Ceci veut dire que la référence vers vos actions dans
+            l'URL en utilisant la notationCamel ne résoudra plus les mêmes méthodes qu'en utilisant
+            les séparateurs de mots (par ex., "notation-camel"). Ceci entraîne qu'à partir de
+            maintenant le <code>ViewRenderer</code> honorera seulement les actions en
+            "mots-séparés" lors de la résolution des scripts de vue.
+        </para>
+
+        <para>
+            Si vous constatez que vous comptiez sur ce "dispositif", vous avez plusieurs
+            options&#160;:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    Meilleure option : renommez vos scripts de vue. Pour&#160;: compatibilité
+                    ascendante. Contre&#160;: si vous avez beaucoup de scripts de vue basés sur
+                    l'ancien, comportement fortuit, vous aurez beaucoup de renommage à
+                    faire.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Seconde meilleure option&#160;: le <code>ViewRenderer</code> délégue
+                    maintenant la résolution des scripts de vue à
+                    <classname>Zend_Filter_Inflector</classname> ; vous pouvez modifier les règles
+                    de l'inflecteur pour ne plus séparer les mots d'une action avec un tiret&#160;:
+                </para>
+                <programlisting language="php"><![CDATA[
+$viewRenderer =
+    Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
+$inflector = $viewRenderer->getInflector();
+$inflector->setFilterRule(':action', array(
+    new Zend_Filter_PregReplace(
+        '#[^a-z0-9' . preg_quote(DIRECTORY_SEPARATOR, '#') . ']+#i',
+        ''
+    ),
+    'StringToLower'
+));
+]]></programlisting>
+                <para>
+                    Le code ci-dessus modifiera l'inflecteur pour ne plus séparer les mots
+                    avec un tiret&#160;; vous pouvez aussi vouloir supprimer le filtre
+                    <code>StringToLower</code> si vous <emphasis>voulez</emphasis> que vos scripts
+                    de vues utilisent aussi la notationCamel.
+                </para>
+                <para>
+                    Si le renommage de vos scripts de vue est trop fastidieux ou nécessite
+                    trop de temps, ceci est la meilleure option avant de trouver le temps de le
+                    faire.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Option la moins souhaitable&#160;: vous pouvez forcer le distributeur à
+                    distribuer les noms d'action écrits en notationCamel avec un nouveau drapeau du
+                    contrôleur frontal, <code>useCaseSensitiveActions</code>&#160;:
+                </para>
+                <programlisting language="php"><![CDATA[
+$front->setParam('useCaseSensitiveActions', true);
+]]></programlisting>
+                <para>
+                    Ceci vous permettra d'utiliser la notationCamel dans l'URL et de toujours
+                    faire résoudre la même action que si vous utilisez les séparateurs de mots.
+                    Cependant, ceci signifiera que les problèmes décrits ci-dessus interviendront
+                    tôt ou tard ; vous devrez probablement utiliser la deuxième option ci-dessus en
+                    plus de celle-ci pour que tout fonctionne correctement.
+                </para>
+                <para>
+                    Notez, de plus, que l'utilisation de ce drapeau déclenchera une
+                    <code>notice</code> indiquant que cette utilisation est dépréciée.
+                </para>
+            </listitem>
+        </itemizedlist>
+    </sect2>
+</sect1>

+ 107 - 0
documentation/manual/fr/ref/migration-16.xml

@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 18682 -->
+<!-- Reviewed: no -->
+<sect1 id="migration.16">
+    <title>Zend Framework 1.6</title>
+
+    <para>
+        Lors de la migration d'un version précédente vers Zend Framework 1.6 ou plus récent
+        vous devriez prendre note de ce qui suit.
+    </para>
+
+    <sect2 id="migration.16.zend.controller">
+        <title>Zend_Controller</title>
+
+        <sect3 id="migration.16.zend.controller.dispatcher">
+            <title>Changement dans l'interface Dispatcher</title>
+
+            <para>
+                Les utilisateurs ont porté à notre connaissance le fait que
+                <classname>Zend_Controller_Front</classname> et
+                <classname>Zend_Controller_Router_Route_Module</classname> utilisent tous les deux
+                des méthodes du distributeur qui ne sont pas dans l'interface associée. Nous avons
+                donc ajouté les trois méthodes suivantes pour s'assurer que les distributeurs
+                personnalisés continueront à fonctionner avec les implémentations embarquées&#160;:
+            </para>
+
+            <itemizedlist>
+                <listitem>
+                    <para>
+                        <methodname>getDefaultModule()</methodname>&#160;: retourne le nom du module par
+                        défaut.
+                    </para>
+                </listitem>
+                <listitem>
+                    <para>
+                        <methodname>getDefaultControllerName()</methodname>&#160;: retourne le nom du
+                        contrôleur par défaut.
+                    </para>
+                </listitem>
+                <listitem>
+                    <para>
+                        <methodname>getDefaultAction()</methodname>&#160;: retourne le nom de l'action par
+                        défaut.
+                    </para>
+                </listitem>
+            </itemizedlist>
+        </sect3>
+    </sect2>
+
+    <sect2 id="migration.16.zend.file.transfer">
+        <title>Zend_File_Transfer</title>
+
+        <sect3 id="migration.16.zend.file.transfer.validators">
+            <title>Changements quand vous utilisez des validateurs</title>
+
+            <para>
+                Certaines remarques des utilisateurs indiquaient que les validateurs de
+                <classname>Zend_File_Transfer</classname> ne fonctionnaient pas comme ceux par
+                défaut fournis avec <classname>Zend_Form</classname>.
+                <classname>Zend_Form</classname> permet par exemple l'utilisation du paramètre
+                <code>breakChainOnFailure</code> qui stoppe la validation de tous les validateurs
+                suivants dès qu'une erreur de validation apparaît.
+            </para>
+
+            <para>
+                Nous avons donc ajouter ce paramètre à tous les validateurs existants pour
+                <classname>Zend_File_Transfer</classname>.
+            </para>
+
+            <itemizedlist>
+                <listitem>
+                    <para>
+                        Ancienne <acronym>API</acronym>&#160;: <code>addValidator($validator, $options,
+                        $files)</code>.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        Nouvelle <acronym>API</acronym>&#160;: <code>addValidator($validator, $breakChainOnFailure,
+                        $options, $files)</code>.
+                    </para>
+                </listitem>
+            </itemizedlist>
+
+            <para>
+                Pour migrer vos scripts vers la nouvelle <acronym>API</acronym>, ajoutez simplement un a
+                <constant>FALSE</constant> après voir défini le validateur souhaité.
+            </para>
+
+            <example id="migration.16.zend.file.transfer.example">
+                <title>Changer les validateurs de fichiers de 1.6.1 vers 1.6.2</title>
+
+                <programlisting language="php"><![CDATA[
+// Exemple pour 1.6.1
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('FilesSize', array('1B', '100kB'));
+
+// Même exemple pour 1.6.2 et plus récent
+// Notez l'ajout du booléen false
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('FilesSize', false, array('1B', '100kB'));
+]]></programlisting>
+            </example>
+        </sect3>
+    </sect2>
+</sect1>

+ 619 - 0
documentation/manual/fr/ref/migration-17.xml

@@ -0,0 +1,619 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 18682 -->
+<!-- Reviewed: no -->
+<sect1 id="migration.17">
+    <title>Zend Framework 1.7</title>
+
+    <para>
+        Lors de la migration d'un version précédente vers Zend Framework 1.7 ou plus récent
+        vous devriez prendre note de ce qui suit.
+    </para>
+
+    <sect2 id="migration.17.zend.controller">
+        <title>Zend_Controller</title>
+
+        <sect3 id="migration.17.zend.controller.dispatcher">
+            <title>Changement dans l'interface Dispatcher</title>
+
+            <para>
+                Les utilisateurs ont portés l'attention sur le fait que
+                <classname>Zend_Controller_Action_Helper_ViewRenderer</classname> utilisait une
+                méthode de la classe abstraite du distributeur standard qui n'était pas présente
+                dans l'interface Dispatcher.La méthode suivante a donc été ajoutée pour s'assurer
+                que les distributeurs personnalisés continueront à fonctionner avec les
+                implémentations embarquées&#160;:
+            </para>
+
+            <itemizedlist>
+                <listitem>
+                    <para>
+                        <methodname>formatModuleName()</methodname>&#160;: devrait être utilisé pour prendre
+                        un nom de contrôleur brut, comme un qui aurait été embarqué dans un objet
+                        requête, et pour le formater en un nom de classe approprié qu'une classe
+                        étendant <classname>Zend_Controller_Action</classname> pourra
+                        utiliser.
+                    </para>
+                </listitem>
+            </itemizedlist>
+        </sect3>
+    </sect2>
+
+    <sect2 id="migration.17.zend.file.transfer">
+        <title>Zend_File_Transfer</title>
+
+        <sect3 id="migration.17.zend.file.transfer.validators">
+            <title>Changements quand vous utilisez des filtres ou des validateurs</title>
+
+            <para>
+                Certaines remarques des utilisateurs indiquaient que les validateurs de
+                <classname>Zend_File_Transfer</classname> ne fonctionnaient pas correctement avec
+                <classname>Zend_Config</classname> dû au fait qu'ils n'utilisait pas de tableaux
+                nommés.
+            </para>
+
+            <para>
+                De plus, tous les filtres et validateurs de
+                <classname>Zend_File_Transfer</classname> ont été réécrits. Même si les anciennes
+                signatures continuent à fonctionner, elles ont été marqués comme dépréciées et
+                émettent une notice <acronym>PHP</acronym> vous informant de faire le changement.
+            </para>
+
+            <para>
+                La liste suivante vous montre les changements à réaliser pour une utilisation
+                appropriée des paramètres.
+            </para>
+
+            <sect4 id="migration.17.zend.file.transfer.validators.rename">
+                <title>Filtre Rename</title>
+
+                <itemizedlist>
+                    <listitem>
+                        <para>
+                            Ancienne <acronym>API</acronym>&#160;: <classname>Zend_Filter_File_Rename($oldfile,
+                            $newfile, $overwrite)</classname>
+                        </para>
+                    </listitem>
+
+                    <listitem>
+                        <para>
+                            Nouvelle <acronym>API</acronym>&#160;:
+                            <methodname>Zend_Filter_File_Rename($options)</methodname> où
+                            <varname>$options</varname> accepte un tableau avec les clés suivantes :
+                            <emphasis>source</emphasis> est équivalent à <varname>$oldfile</varname>,
+                            <emphasis>target</emphasis> est équivalent à <varname>$newfile</varname>,
+                            <emphasis>overwrite</emphasis> est équivalent à
+                            <code>$overwrite.</code>
+                        </para>
+                    </listitem>
+                </itemizedlist>
+
+                <example id="migration.17.zend.file.transfer.validators.rename.example">
+                    <title>Changer le filtre rename entre 1.6 et 1.7</title>
+
+                    <programlisting language="php"><![CDATA[
+// Exemple pour 1.6
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addFilter('Rename',
+                   array('/path/to/oldfile', '/path/to/newfile', true));
+
+// Même exemple pour 1.7
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addFilter('Rename',
+                   array('source' => '/path/to/oldfile',
+                         'target' => '/path/to/newfile',
+                         'overwrite' => true));
+]]></programlisting>
+                </example>
+            </sect4>
+
+            <sect4 id="migration.17.zend.file.transfer.validators.count">
+                <title>Validateur Count</title>
+
+                <itemizedlist>
+                    <listitem>
+                        <para>
+                            Ancienne <acronym>API</acronym>&#160;: <classname>Zend_Validate_File_Count($min,
+                            $max)</classname>
+                        </para>
+                    </listitem>
+
+                    <listitem>
+                        <para>
+                            Nouvelle <acronym>API</acronym>&#160;:
+                            <methodname>Zend_Validate_File_Count($options)</methodname> où
+                            <varname>$options</varname> accepte un tableau avec les clés suivantes :
+                            <emphasis>min</emphasis> est équivalent à <varname>$min</varname>,
+                            <emphasis>max</emphasis> est équivalent à <varname>$max</varname>.
+                        </para>
+                    </listitem>
+                </itemizedlist>
+
+                <example id="migration.17.zend.file.transfer.validators.count.example">
+                    <title>Changer le validateur count entre 1.6 et 1.7</title>
+
+                    <programlisting language="php"><![CDATA[
+// Exemple pour 1.6
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('Count',
+                      array(2, 3));
+
+// Même exemple pour 1.7
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('Count',
+                      false,
+                      array('min' => 2,
+                            'max' => 3));
+]]></programlisting>
+                </example>
+            </sect4>
+
+            <sect4 id="migration.17.zend.file.transfer.validators.extension">
+                <title>Validateur Extension</title>
+
+                <itemizedlist>
+                    <listitem>
+                        <para>
+                            Ancienne <acronym>API</acronym>&#160;: <classname>Zend_Validate_File_Extension($extension,
+                            $case)</classname>
+                        </para>
+                    </listitem>
+
+                    <listitem>
+                        <para>
+                            Nouvelle <acronym>API</acronym>&#160;:
+                            <methodname>Zend_Validate_File_Extension($options)</methodname> où
+                            <varname>$options</varname> accepte un tableau avec les clés suivantes :
+                            <emphasis>*</emphasis> est équivalent à <varname>$extension</varname> et peut
+                            avoir tout autre clé, <emphasis>case</emphasis> est équivalent à
+                            <varname>$case</varname>.
+                        </para>
+                    </listitem>
+                </itemizedlist>
+
+                <example id="migration.17.zend.file.transfer.validators.extension.example">
+                    <title>Changer le validateur extension entre 1.6 et 1.7</title>
+
+                    <programlisting language="php"><![CDATA[
+// Exemple pour 1.6
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('Extension',
+                   array('jpg,gif,bmp', true));
+
+// Même exemple pour 1.7
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('Extension',
+                      false,
+                      array('extension1' => 'jpg,gif,bmp',
+                            'case' => true));
+]]></programlisting>
+                </example>
+            </sect4>
+
+            <sect4 id="migration.17.zend.file.transfer.validators.filessize">
+                <title>Validateur FilesSize</title>
+
+                <itemizedlist>
+                    <listitem>
+                        <para>
+                            Ancienne <acronym>API</acronym>&#160;: <classname>Zend_Validate_File_FilesSize($min, $max,
+                            $bytestring)</classname>
+                        </para>
+                    </listitem>
+
+                    <listitem>
+                        <para>
+                            Nouvelle <acronym>API</acronym>&#160;:
+                            <methodname>Zend_Validate_File_FilesSize($options)</methodname> où
+                            <varname>$options</varname> accepte un tableau avec les clés suivantes :
+                            <emphasis>min</emphasis> est équivalent à <varname>$min</varname>,
+                            <emphasis>max</emphasis> est équivalent à <varname>$max</varname>,
+                            <emphasis>bytestring</emphasis> est équivalent à
+                            <varname>$bytestring</varname>.
+                        </para>
+                    </listitem>
+                </itemizedlist>
+
+                <para>
+                    De plus la signature de la méthode <methodname>useByteString()</methodname> a changé.
+                    Elle peut être seulement utilisée pour tester si le validateur prévoie
+                    d'utiliser les chaînes lisibles ou la valeur brute dans les messages générées.
+                    Pour paramétrer la valeur de cette option, utilisez la méthode
+                    <methodname>setUseByteString()</methodname>.
+                </para>
+
+                <example id="migration.17.zend.file.transfer.validators.filessize.example">
+                    <title>Changer le validateur filessize entre 1.6 et 1.7</title>
+
+                    <programlisting language="php"><![CDATA[
+// Exemple pour 1.6
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('FilesSize',
+                      array(100, 10000, true));
+
+// Même exemple pour 1.7
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('FilesSize',
+                      false,
+                      array('min' => 100,
+                            'max' => 10000,
+                            'bytestring' => true));
+
+// Exemple pour 1.6
+$upload->useByteString(true); // set flag
+
+// Même exemple pour 1.7
+$upload->setUseByteSting(true); // set flag
+]]></programlisting>
+                </example>
+            </sect4>
+
+            <sect4 id="migration.17.zend.file.transfer.validators.hash">
+                <title>Validateur Hash</title>
+
+                <itemizedlist>
+                    <listitem>
+                        <para>
+                            Ancienne <acronym>API</acronym>&#160;: <classname>Zend_Validate_File_Hash($hash,
+                            $algorithm)</classname>
+                        </para>
+                    </listitem>
+
+                    <listitem>
+                        <para>
+                            Nouvelle <acronym>API</acronym>&#160;:
+                            <methodname>Zend_Validate_File_Hash($options)</methodname> où
+                            <varname>$options</varname> accepte un tableau avec les clés suivantes :
+                            <emphasis>*</emphasis> est équivalent à <varname>$hash</varname> et peut avoir
+                            tout autre clé, <emphasis>algorithm</emphasis> est équivalent à
+                            <varname>$algorithm</varname>.
+                        </para>
+                    </listitem>
+                </itemizedlist>
+
+                <example id="migration.17.zend.file.transfer.validators.hash.example">
+                    <title>Changer le validateur hash entre 1.6 et 1.7</title>
+
+                    <programlisting language="php"><![CDATA[
+// Exemple pour 1.6
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('Hash',
+                      array('12345', 'md5'));
+
+// Même exemple pour 1.7
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('Hash',
+                      false,
+                      array('hash1' => '12345',
+                            'algorithm' => 'md5'));
+]]></programlisting>
+                </example>
+            </sect4>
+
+            <sect4 id="migration.17.zend.file.transfer.validators.imagesize">
+                <title>Validateur ImageSize</title>
+
+                <itemizedlist>
+                    <listitem>
+                        <para>
+                            Ancienne <acronym>API</acronym>&#160;: <classname>Zend_Validate_File_ImageSize($minwidth,
+                            $minheight, $maxwidth, $maxheight)</classname>
+                        </para>
+                    </listitem>
+
+                    <listitem>
+                        <para>
+                            Nouvelle <acronym>API</acronym>&#160;:
+                            <methodname>Zend_Validate_File_FilesSize($options)</methodname> où
+                            <varname>$options</varname> accepte un tableau avec les clés suivantes&#160;:
+                            <emphasis>minwidth</emphasis> est équivalent à <varname>$minwidth</varname>,
+                            <emphasis>maxwidth</emphasis> est équivalent à <varname>$maxwidth</varname>,
+                            <emphasis>minheight</emphasis> est équivalent à <varname>$minheight</varname>,
+                            <emphasis>maxheight</emphasis> est équivalent à
+                            <varname>$maxheight</varname>.
+                        </para>
+                    </listitem>
+                </itemizedlist>
+
+                <example id="migration.17.zend.file.transfer.validators.imagesize.example">
+                    <title>Changer le validateur imagesize entre 1.6 et 1.7</title>
+
+                    <programlisting language="php"><![CDATA[
+// Exemple pour 1.6
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('ImageSize',
+                      array(10, 10, 100, 100));
+
+// Même exemple pour 1.7
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('ImageSize',
+                      false,
+                      array('minwidth' => 10,
+                            'minheight' => 10,
+                            'maxwidth' => 100,
+                            'maxheight' => 100));
+]]></programlisting>
+                </example>
+            </sect4>
+
+            <sect4 id="migration.17.zend.file.transfer.validators.size">
+                <title>Validateur Size</title>
+
+                <itemizedlist>
+                    <listitem>
+                        <para>
+                            Ancienne <acronym>API</acronym>&#160;: <classname>Zend_Validate_File_Size($min, $max,
+                            $bytestring)</classname>
+                        </para>
+                    </listitem>
+
+                    <listitem>
+                        <para>
+                            Nouvelle <acronym>API</acronym>&#160;:
+                            <methodname>Zend_Validate_File_Size($options)</methodname> où
+                            <varname>$options</varname> accepte un tableau avec les clés suivantes&#160;:
+                            <emphasis>min</emphasis> est équivalent à <varname>$min</varname>,
+                            <emphasis>max</emphasis> est équivalent à <varname>$max</varname>,
+                            <emphasis>bytestring</emphasis> est équivalent à
+                            <varname>$bytestring</varname>
+                        </para>
+                    </listitem>
+                </itemizedlist>
+
+                <example id="migration.17.zend.file.transfer.validators.size.example">
+                    <title>Changer le validateur size entre 1.6 et 1.7</title>
+
+                    <programlisting language="php"><![CDATA[
+// Exemple pour 1.6
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('Size',
+                      array(100, 10000, true));
+
+// Même exemple pour 1.7
+$upload = new Zend_File_Transfer_Adapter_Http();
+$upload->addValidator('Size',
+                      false,
+                      array('min' => 100,
+                            'max' => 10000,
+                            'bytestring' => true));
+]]></programlisting>
+                </example>
+            </sect4>
+        </sect3>
+    </sect2>
+
+    <sect2 id="migration.17.zend.locale">
+        <title>Zend_Locale</title>
+
+        <sect3 id="migration.17.zend.locale.islocale">
+            <title>Changement dans l'utilisation de isLocale()</title>
+
+            <para>
+                Conformément aux standards de codage <methodname>isLocale()</methodname> a été changé pour
+                retourner un booléen. Dans les versions précédentes une chaîne était retournée lors
+                du succès. Pour la version 1.7 un mode de compatibilité a été ajouté qui vous permet
+                d'utiliser l'ancien comportement (avec une chaîne retournée), mais ceci émet un
+                warning pour vous informer de changer vers le nouveau comportement. Le reroutage que
+                l'ancien comportement de <methodname>isLocale()</methodname> pouvait avoir à faire n'est plus
+                nécessaire car tous les composants de l'I18N traiteront maintenant eux-mêmes le
+                reroutage.
+            </para>
+
+            <para>
+                Pour migrer vos scripts vers la nouvelle <acronym>API</acronym>, utilisez simplement la méthode
+                décrite ci-dessous.
+            </para>
+
+            <example id="migration.17.zend.locale.example">
+                <title>Comment changer l'appel de isLocale() de 1.6 vers 1.7 ?</title>
+
+                <programlisting language="php"><![CDATA[
+// Exemple pour ZF 1.6
+if ($locale = Zend_Locale::isLocale($locale)) {
+    // faire qqch
+}
+
+// Même exemple pour ZF 1.7
+
+// Vous devez changer le mode de compatibilité pour empêcher l'émission de warning
+// Mais ceci peut être fait dans votre bootstrap
+Zend_Locale::$compatibilityMode = false;
+
+if (Zend_Locale::isLocale($locale)) {
+}
+]]></programlisting>
+
+                <para>
+                    Notez que vous pouvez utiliser le second paramètre pour voir si la locale
+                    est correcte sans nécessiter de reroutage.
+                </para>
+
+                <programlisting language="php"><![CDATA[
+// Exemple pour ZF 1.6
+if ($locale = Zend_Locale::isLocale($locale, false)) {
+    // do something
+}
+
+// Même exemple pour ZF 1.7
+
+// Vous devez changer le mode de compatibilité pour empêcher l'émission de warning
+// Mais ceci peut être fait dans votre bootstrap
+Zend_Locale::$compatibilityMode = false;
+
+if (Zend_Locale::isLocale($locale, false)) {
+    if (Zend_Locale::isLocale($locale, true)) {
+        // pas de locale du tout
+    }
+
+    // original string is no locale but can be rerouted
+}
+]]></programlisting>
+            </example>
+        </sect3>
+
+        <sect3 id="migration.17.zend.locale.getdefault">
+            <title>Changement dans l'utilisation de getDefault()</title>
+
+            <para>
+                La signification de la méthode <methodname>getDefault()</methodname> a été changé étant
+                donné que nous avons intégré une locale de framework qui peut être paramétrée avec
+                <methodname>setDefault()</methodname>. Ceci ne renvoie plus la chaîne de la locale mais
+                seulement la locale du framework.
+            </para>
+
+            <para>
+                Pour migrer vos scripts vers la nouvelle <acronym>API</acronym>, utilisez simplement la méthode
+                décrite ci-dessous.
+            </para>
+
+            <example id="migration.17.zend.locale.getdefault.example">
+                <title>Comment changer l'appel de getDefaut() de 1.6 vers 1.7 ?</title>
+
+                <programlisting language="php"><![CDATA[
+// Exemple pour ZF 1.6
+$locales = $locale->getDefault(Zend_Locale::BROWSER);
+
+// Même exemple pour ZF 1.7
+
+// Vous devez changer le mode de compatibilité pour empêcher l'émission de warning
+// Mais ceci peut être fait dans votre bootstrap
+Zend_Locale::$compatibilityMode = false;
+
+$locale = Zend_Locale::getOrder(Zend_Locale::BROWSER);
+]]></programlisting>
+
+                <para>
+                    Notez que le second paramètre de l'ancienne implémentation de
+                    <methodname>getDefault()</methodname> n'est plus disponible non plus, mais les valeurs
+                    retournées sont les mêmes.
+                </para>
+            </example>
+
+            <note>
+                <para>
+                    Par défaut l'ancien comportement est toujours actif, mais émet un warning.
+                    Quand vous avez changé votre code vers le nouveau comportement, vous devriez
+                    aussi changer le mode de compatibilité à <constant>FALSE</constant> ainsi aucun nouveau
+                    warning ne sera émis.
+                </para>
+            </note>
+        </sect3>
+    </sect2>
+
+    <sect2 id="migration.17.zend.translate">
+        <title>Zend_Translate</title>
+
+        <sect3 id="migration.17.zend.translate.languages">
+            <title>Paramétrer les langues</title>
+
+            <para>
+                Lors de l'utilisation de la détection automatique des langues, ou du réglage
+                manuel des langues de <classname>Zend_Translate</classname>, vous avez peut-être
+                remarqué que de temps en temps une notice est envoyée concernant le non-ajout de
+                traductions vides. Dans certaines versions précédentes, une exception était levée
+                dans certains cas.
+            </para>
+
+            <para>
+                Ceci intervient quand un utilisateur requête une langue non existante, vous
+                n'avez alors aucun moyen simple de détecter ce qui ne va pas. Nous avons donc ajouté
+                ces notices qui apparaîtront dans votre historisation et qui vous diront qu'un
+                utilisateur a requêté une langue que vous ne supportez pas. Notez bien que votre
+                code, même si une notice est déclenchée, fonctionnera sans problèmes.
+            </para>
+
+            <para>
+                Mais quand vous utilisez votre propre gestionnaire d'erreur ou d'exception,
+                comme xDebug, toutes les notices vous seront retournées, même si ce n'est pas votre
+                intention initiale. Ceci est du au fait, que ces gestionnaires surchargent tous les
+                réglages internes de <acronym>PHP</acronym>.
+            </para>
+
+            <para>
+                Pour vous affranchir de ces notices, vous pouvez simplement paramétrer la
+                nouvelle option <code>disableNotices</code> à <constant>TRUE</constant>, sa valeur par
+                défaut étant <constant>FALSE</constant>.
+            </para>
+
+            <example id="migration.17.zend.translate.example">
+                <title>Paramétrer les langues sans avoir de notices</title>
+
+                <para>
+                    Assumons que "<code>fr</code>" soit disponible et qu'un utilisateur
+                    requête pour "<code>de</code>" qui ne fait pas partie de votre portefeuille de
+                    traductions.
+                </para>
+
+                <programlisting language="php"><![CDATA[
+$language = new Zend_Translate('gettext',
+                               '/chemin/vers/les/traductions',
+                               'auto');
+]]></programlisting>
+
+                <para>
+                    Dans ce cas nous aurons une notice indiquant la non-disponibilité de la
+                    langue "<code>de</code>". Ajoutez simplement l'option et les notices seront
+                    désactivées.
+                </para>
+
+                <programlisting language="php"><![CDATA[
+$language = new Zend_Translate('gettext',
+                               '/chemin/vers/les/traductions',
+                               'auto',
+                               array('disableNotices' => true));
+]]></programlisting>
+            </example>
+        </sect3>
+    </sect2>
+
+    <sect2 id="migration.17.zend.view">
+        <title>Zend_View</title>
+
+        <note>
+            <para>
+                Les changements de l'API de <classname>Zend_View</classname> sont seulement
+                notables pour vous si vous mettez à jour vers les version 1.7.5 ou plus récent.
+            </para>
+        </note>
+
+        <para>
+            Avant la version 1.7.5, l'équipe de Zend Framework a été avertie d'une faille
+            potentielle d'inclusion de fichier local ("Local File Inclusion" (LFI)) dans la méthode
+            <methodname>Zend_View::render()</methodname>. Avant 1.7.5, la méthode acceptait par défaut
+            la possibilité de spécifier des scripts de vue comportant des indications de dossier
+            parent (comme, "../" ou "..\"). Ceci ouvre la possibilité à une attaque LFI si des
+            données utilisateurs non filtrées sont passées directement à la méthode
+            <methodname>render()</methodname>:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+// Ici, $_GET['foobar'] = '../../../../etc/passwd'
+echo $view->render($_GET['foobar']); // inclusion LFI
+]]></programlisting>
+
+        <para>
+            <classname>Zend_View</classname> émet maintenant une exception dans un tel
+            cas.
+        </para>
+
+        <sect3 id="zend.view.migration.zf5748.disabling">
+            <title>Désactiver la protection LFI de render()</title>
+
+            <para>
+                Comme des développeurs utilisaient de telles notations, mais qui n'étaient
+                <emphasis>pas</emphasis> des données en provenance de l'extérieur, un drapeau
+                spécial a été crée, il permet de désactiver la protection. Pour manipuler ce
+                drapeau, il existe 2 moyens&#160;: le paramètre 'lfiProtectionOn' du constructeur de
+                votre vue, ou encore la méthode <methodname>setLfiProtection()</methodname>.
+            </para>
+
+            <programlisting language="php"><![CDATA[
+// Désactivation de la protection par le constructeur
+$view = new Zend_View(array('lfiProtectionOn' => false));
+
+// Désactivation de la protection par la méthode dédiée
+$view = new Zend_View();
+$view->setLfiProtection(false);
+]]></programlisting>
+        </sect3>
+    </sect2>
+</sect1>

+ 56 - 0
documentation/manual/fr/ref/migration-18.xml

@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 18682 -->
+<!-- Reviewed: no -->
+<sect1 id="migration.18">
+    <title>Zend Framework 1.8</title>
+
+    <para>
+        Lors de la migration d'un version précédente vers Zend Framework 1.8 ou plus récent
+        vous devriez prendre note de ce qui suit.
+    </para>
+
+    <sect2 id="migration.18.zend.controller">
+        <title>Zend_Controller</title>
+
+        <sect3 id="migration.18.zend.controller.router">
+            <title>Changement de la route standard</title>
+
+            <para>
+                Comme les segments traduits ont été ajoutés dans la nouvelle route standard, le
+                caractère <code>@</code> est maintenant un caractère spécial au début d'un segment
+                de route. Pour être capable de l'utiliser dans un segment statique, vous devez
+                l'échapper en le préfixant avec un second <code>@</code>. La même règle s'applique
+                aussi au caractère <code>:</code>.
+            </para>
+        </sect3>
+    </sect2>
+
+    <sect2 id="migration.18.zend.locale">
+        <title>Zend_Locale</title>
+
+        <sect3 id="migration.18.zend.locale.defaultcaching">
+            <title>Default caching</title>
+
+            <para>
+                As with Zend Framework 1.8 a default caching was added. The reason behind this
+                change was, that most users had performance problems but did not add caching at
+                all. As the I18n core is a bottleneck when no caching is used we decided to add
+                a default caching when no cache has been set to <classname>Zend_Locale</classname>.
+            </para>
+
+            <para>
+                Sometimes it is still wanted to prevent caching at all even if this decreases
+                performance. To do so you can simply disable caching by using the
+                <methodname>disableCache()</methodname> method.
+            </para>
+
+            <example id="migration.18.zend.locale.defaultcaching.example">
+                <title>Disabling default caching</title>
+
+                <programlisting language="php"><![CDATA[
+Zend_Locale::disableCache(true);
+]]></programlisting>
+            </example>
+        </sect3>
+    </sect2>
+</sect1>

+ 254 - 0
documentation/manual/fr/ref/migration-19.xml

@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 18682 -->
+<!-- Reviewed: no -->
+<sect1 id="migration.19">
+    <title>Zend Framework 1.9</title>
+
+    <para>
+        Lors de la migration d'un version précédente vers Zend Framework 1.9 ou plus récent
+        vous devriez prendre note de ce qui suit.
+    </para>
+
+    <sect2 id="migration.19.zend.filter">
+        <title>Zend_Filter</title>
+
+        <para>
+            Avant la version 1.9, <classname>Zend_Filter</classname> permettait l'utilisation
+            de la méthode statique <methodname>get()</methodname>. Avec la version 1.9 cette
+            méthode a été renommée en <methodname>filterStatic()</methodname> afin d'être plus
+            descriptive. L'ancienne méthode <methodname>get()</methodname> est marquée comme
+            dépréciée.
+        </para>
+    </sect2>
+
+    <sect2 id="migration.19.zend.http.client">
+        <title>Zend_Http_Client</title>
+
+        <sect3 id="migration.19.zend.http.client.fileuploadsarray">
+            <title>Changement dans le stockage interne des fichiers d'upload</title>
+
+            <para>
+                Dans la version 1.9 de Zend Framework, il y a eu un changement dans la manière dont
+                <classname>Zend_Http_Client</classname> stocke en interne les informations concernant les
+                fichiers ayant été uploadés, affectés grâce à <methodname>Zend_Http_Client::setFileUpload()</methodname>
+            </para>
+
+            <para>
+                Ce changement a été mis en place de manière à permettre l'envoi de plusieurs fichiers
+                avec le même nom dans le formulaire, en tant que tableau de fichiers. Plus d'informations à
+                ce sujet peuvent être trouvées dans ce
+                <ulink url="http://framework.zend.com/issues/browse/ZF-5744">rapport de bug</ulink>.
+            </para>
+
+            <example id="migration.19.zend.http.client.fileuploadsarray.example">
+                <title>Stockage interne des informations sur les fichiers uploadés</title>
+
+                <programlisting language="php"><![CDATA[
+// Uploade 2 fichiers avec le même nom d'élément de formulaire, en tant que tableau
+$client = new Zend_Http_Client();
+$client->setFileUpload('file1.txt', 'userfile[]', 'some raw data', 'text/plain');
+$client->setFileUpload('file2.txt', 'userfile[]', 'some other data', 'application/octet-stream');
+
+// Dans Zend Framework <=1.8, la valeur de l'attribut protégé $client->files est:
+// $client->files = array(
+//     'userfile[]' => array('file2.txt', 'application/octet-stream', 'some other data')
+// );
+
+// Dans Zend Framework >=1.9, la valeur de $client->files est:
+// $client->files = array(
+//     array(
+//         'formname' => 'userfile[]',
+//         'filename' => 'file1.txt,
+//         'ctype'    => 'text/plain',
+//         'data'     => 'some raw data'
+//     ),
+//     array(
+//         'formname' => 'userfile[]',
+//         'filename' => 'file2.txt',
+//         'formname' => 'application/octet-stream',
+//         'formname' => 'some other data'
+//     )
+// );
+]]></programlisting>
+            </example>
+
+            <para>
+                Comme vous le voyez, ce changement permet l'utilisation du même élément de formulaire avec plusieurs
+                fichiers. Cependant ceci introduit un changement subtile dans l'API interne, il est donc signalé ici.
+            </para>
+        </sect3>
+
+        <sect3 id="migration.19.zend.http.client.getparamsrecursize">
+            <title>Deprecation of Zend_Http_Client::_getParametersRecursive()</title>
+
+            <para>
+                Starting from version 1.9, the protected method <methodname>_getParametersRecursive()</methodname>
+                is no longer used by <classname>Zend_Http_Client</classname> and is deprecated.
+                Using it will cause an E_NOTICE message to be emitted by <acronym>PHP</acronym>.
+            </para>
+
+            <para>
+                If you subclass <classname>Zend_Http_Client</classname> and call this method, you
+                should look into using the <methodname>Zend_Http_Client::_flattenParametersArray()</methodname>
+                static method instead.
+            </para>
+
+            <para>
+                Again, since this <classname>_getParametersRecursive</classname> is a protected method,
+                this change will only affect users who subclass <classname>Zend_Http_Client</classname>.
+            </para>
+        </sect3>
+    </sect2>
+
+    <sect2 id="migration.19.zend.locale">
+        <title>Zend_Locale</title>
+
+        <sect3 id="migration.19.zend.locale.depreciated">
+            <title>Méthodes dépréciées</title>
+
+            <para>
+                Quelques méthodes de traductions spéciales ont été dépréciées car elles dupliquaient
+                un comportement existant. Notez cependant que les anciens appels vont toujours
+                fonctionner, mais une notice utilisateur, qui décrira le nouvel appel, sera émise.
+                Ces méthodes seront effacées en 2.0. Ci-dessous la liste des anciens et nouveaux
+                appels&#160;:
+            </para>
+
+            <table id="migration.19.zend.locale.depreciated.table-1">
+                <title>Liste des types de mesures</title>
+
+                <tgroup cols="2">
+                    <thead>
+                        <row>
+                            <entry>Ancien appel</entry>
+                            <entry>Nouvel appel</entry>
+                        </row>
+                    </thead>
+                    <tbody>
+                        <row>
+                            <entry>getLanguageTranslationList($locale)</entry>
+                            <entry>getTranslationList('language', $locale)</entry>
+                        </row>
+                        <row>
+                            <entry>getScriptTranslationList($locale)</entry>
+                            <entry>getTranslationList('script', $locale)</entry>
+                        </row>
+                        <row>
+                            <entry>getCountryTranslationList($locale)</entry>
+                            <entry>getTranslationList('territory', $locale, 2)</entry>
+                        </row>
+                        <row>
+                            <entry>getTerritoryTranslationList($locale)</entry>
+                            <entry>getTranslationList('territory', $locale, 1)</entry>
+                        </row>
+                        <row>
+                            <entry>getLanguageTranslation($value, $locale)</entry>
+                            <entry>getTranslation($value, 'language', $locale)</entry>
+                        </row>
+                        <row>
+                            <entry>getScriptTranslation($value, $locale)</entry>
+                            <entry>getTranslation($value, 'script', $locale)</entry>
+                        </row>
+                        <row>
+                            <entry>getCountryTranslation($value, $locale)</entry>
+                            <entry>getTranslation($value, 'country', $locale)</entry>
+                        </row>
+                        <row>
+                            <entry>getTerritoryTranslation($value, $locale)</entry>
+                            <entry>getTranslation($value, 'territory', $locale)</entry>
+                        </row>
+                    </tbody>
+                </tgroup>
+            </table>
+        </sect3>
+    </sect2>
+
+    <sect2 id="migration.19.zend.view.helper.navigation">
+        <title>Zend_View_Helper_Navigation</title>
+
+        <para>
+            Prior to the 1.9 release, the menu helper
+            (<classname>Zend_View_Helper_Navigation_Menu</classname>) did not
+            render sub menus correctly. When the <code>onlyActiveBranch</code>
+            was <constant>TRUE</constant> and the option <code>renderParents</code>
+            <constant>FALSE</constant>, nothing would be rendered if the deepest active
+            page was at a depth lower than the <code>minDepth</code> option.
+        </para>
+
+        <para>
+            In simpler words; if <code>minDepth</code> was set to <code>1</code>
+            and the active page was at one of the first level pages, nothing
+            would be rendered, as the following example shows.
+        </para>
+
+        <para>
+            Consider the following container setup:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$container = new Zend_Navigation(array(
+    array(
+        'label' => 'Home',
+        'uri'   => '#'
+    ),
+    array(
+        'label'  => 'Products',
+        'uri'    => '#',
+        'active' => true,
+        'pages'  => array(
+            array(
+                'label' => 'Server',
+                'uri'   => '#'
+            ),
+            array(
+                'label' => 'Studio',
+                'uri'   => '#'
+            )
+        )
+    ),
+    array(
+        'label' => 'Solutions',
+        'uri'   => '#'
+    )
+));
+]]></programlisting>
+
+        <para>
+            The following code is used in a view script:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+echo $this->navigation()->menu()->renderMenu($container, array(
+    'minDepth'         => 1,
+    'onlyActiveBranch' => true,
+    'renderParents'    => false
+));
+]]></programlisting>
+
+        <para>
+            Before release 1.9, the code snippet above would output nothing.
+        </para>
+
+        <para>
+            Since release 1.9, the <methodname>_renderDeepestMenu()</methodname> method in
+            <classname>Zend_View_Helper_Navigation_Menu</classname> will accept
+            active pages at one level below <code>minDepth</code>, as long as
+            the page has children.
+        </para>
+
+        <para>
+            The same code snippet will now output the following:
+        </para>
+
+        <programlisting language="html"><![CDATA[
+<ul class="navigation">
+    <li>
+        <a href="#">Server</a>
+    </li>
+    <li>
+        <a href="#">Studio</a>
+    </li>
+</ul>
+]]></programlisting>
+    </sect2>
+</sect1>

+ 32 - 0
documentation/manual/fr/ref/migration-introduction.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 18682 -->
+<!-- Reviewed: no -->
+<sect1 id="migration.introduction">
+    <title>Introduction</title>
+
+    <para>
+        Quand vous travaillez depuis longtemps avec Zend Framework, vous pouvez souhaiter
+        mettre à jour avec les nouvelles versions puuisque de nouvelles fonctionnalités
+        sont ajoutées et que des bogues sont corrigés.
+    </para>
+
+    <para>
+        Nous essayons avec Zend Framework d'empêcher au maximum les problèmes qui peuvent
+        apparaitre quand vous devez mettre à jour. La rétro-compatibilité est un de nos buts
+        primordiaux.
+    </para>
+
+    <para>
+        Cependant, de temps en temps, il n'est pas possible ou parfois nécessaire de faire des
+        changements qui vont avoir des effets sur votre code, pour empêcher ou résoudre d'autres
+        problèmes. Pour vous aider à détecter les possibles changements que vous pourriez avoir
+        à faire lors de la mise à jour d'une nouvelle version de Zend Framework, vous pouvez
+        lire attentivement la section suivante.
+    </para>
+
+    <para>
+        Ci-dessous vous trouverez des informations concernant les changements connus qui peuvent
+        avoir un effet sur votre code et des exemples sur les changements nécessaires que vous
+        aurez à faire lors de la mise à jour.
+    </para>
+</sect1>