<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 15099 -->
<!-- Reviewed: no -->
<sect1 id="performance.localization">
    <title>Internationalisation (i18n) and Localisation (l10n)</title>

    <para>
        Internationaliser et localiser un site sont des manières fantastiques d'étendre votre
        audience et de s'assurer que tous les visiteurs peuvent trouver l'information dont ils ont
        besoin. Cependant, ceci entraîne souvent une dégradation de performance. Ci-dessous vous
        trouverez des stratégies à utiliser pour réduire la surcharge due à l'I18N et à la
        L10N.
    </para>

    <sect2 id="performance.localization.translationadapter">
        <title>Quel adaptateur de traduction dois-je utiliser&#160;?</title>

        <para>
            Tous les adaptateurs de traduction ne sont pas conçus de la même façon. Certains
            ont plus de fonctionnalités que d'autres, et certains sont plus performants que
            d'autres. De plus, vous pouvez avoir des contraintes qui vous forcent à utiliser un
            adaptateur en particulier. Cependant si vous avez le choix, quels adaptateurs sont les
            plus rapides&#160;?
        </para>

        <sect3 id="performance.localization.translationadapter.fastest">
            <title>Utiliser les adaptateurs de traduction non-XML pour plus de rapidité</title>

            <para>
                Zend Framework embarque toute une variété d'adaptateurs de traduction. Une
                moitié de ceux-ci utilisent un format XML, entraînant une surcharge mémoire et des
                pertes de performance. Heureusement, il existe plusieurs adaptateurs basés sur
                d'autres formats qui peuvent être analysés beaucoup plus rapidement. Par ordre de
                vitesse, du plus rapide au plus lent, ils sont&#160;:
            </para>

            <itemizedlist>
                <listitem>
                    <para>
                        <emphasis>Array</emphasis>&#160;: celui-ci est le plus rapide, puisqu'il
                        est, par définition, analysé dans un format natif de PHP immédiatement lors
                        de son inclusion.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>CSV</emphasis>&#160;: utilises <code>fgetcsv()</code> pour
                        analyser un fichier CSV file et le transforme en un format PHP natif.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>INI</emphasis>&#160;: utilises <code>parse_ini_file()</code> pour
                        analyser un fichier INI file et le transforme en un format PHP natif.
                        Celui-ci et l'adaptateur CSV sont équivalent en terme de performance.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>Gettext</emphasis>&#160;: l'adaptateur Gettext de Zend Framework
                        <emphasis>n'utilise pas</emphasis> l'extension gettext puisqu'elle n'est pas
                        thread safe et ne permet pas de spécifier plus d'une locale par serveur. En
                        conséquence, il est plus lent que d'utiliser l'extension Gettext
                        directement, mais comme le format Gettext est binaire, il reste plus rapide
                        à analyser qu'un format XML.
                    </para>
                </listitem>
            </itemizedlist>

            <para>
                Si l'un de vos besoins principaux est la performance, nous vous conseillons
                d'utiliser l'un des adaptateurs ci-dessus.
            </para>
        </sect3>
    </sect2>

    <sect2 id="performance.localization.cache">
        <title>
            Comment peut-on améliorer les performances de la traduction et de la localisation&#160;?
        </title>

        <para>
            Peut-être, pour certaines raisons, vous êtes limité à un adaptateur de traduction
            de type XML. Ou peut-être vous voudriez accélérer des choses encore plus. Ou peut-être
            vous voulez rendre des opérations de localisation plus rapides. Comment pouvez-vous
            faire ceci&#160;?
        </para>

        <sect3 id="performance.localization.cache.usage">
            <title>Utiliser les caches de traductions et de localisation</title>

            <para>
                A la fois <classname>Zend_Translate</classname> et
                <classname>Zend_Locale</classname> implémente une fonctionnalité de mise en cache
                qui peuvent considérablement améliorer les performances. Dans chacun des cas, le
                goulot principal est typiquement la lecture des fichiers, pas la réelle
                consultation&#160;; la mise en cache élimine la nécessité de relire de nouveau les
                fichiers de traduction ou de localisation.
            </para>

            <para>
                Vous pouvez lire plus d'informations concernant la mise en cache
                d'informations de traduction ou de localisation dans les paragraphes suivants&#160;:
            </para>

            <itemizedlist>
                <listitem>
                    <para>
                        <link linkend="zend.translate.adapter.caching">Mise en cache pour
                        <classname>Zend_Translate</classname></link>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <link linkend="zend.locale.cache">Mise en cache pour
                        <classname>Zend_Locale</classname></link>
                    </para>
                </listitem>
            </itemizedlist>
        </sect3>
    </sect2>
</sect1>