<sect1 id="performance.localization">
    <title>גלובאליזציה (i18n) ותמיכה בשפות שונות (l10n)</title>

    <para>
        גלובאליזציה ותמיכה בשפות שונות הינם גורם הכרחי כדי לפנות לקהל יעד רחב יותר, ולוודא שכל המשתמשים מקבלים את המידע שהם צריכים.
        למרות זאת, זה בדרך כלל מגיע עם בעיות משמעותיות בביצועי המערכת. להלן כמה דרכים שניתן למנוע את בעיות הביצועים שנגרמים עקב שימוש בגלובאליזציה ותמיכה בשפות שונות בעת פיתוח המערכת.
    </para>

    <sect2 id="performance.localization.translationadapter">
        <title>באיזו מתאם תרגום כדי לי להשתמש?</title>

        <para>
            לא כל מתאמי התרגום הם שווים. לחלקם יש יותר אפשרויות מאחרים, וחלקם עובדים טוב יותר מאחרים.
            בנוסף, יתכן ומסיבות פיתוח שלכם תדרשו להשתמש במתאם תרגום מסויים. למרות שאם יש לכם את אפשרות הבחירה, איזה מתאם הוא המהיר ביותר?
        </para>

        <sect3 id="performance.localization.translationadapter.fastest">
            <title>השתמשו במתאם תרגום ללא שימוש ב XML למיטב הביצועים והמהירות</title>

            <para>
                Zend Framework מגיע עם מגוון מתאמי תרגום שונים לשימוש.
                לפחות כמחצית מהם משתמשים בפורמט XML, אשר דורשים הרבה זכרון ומציגים ביצועים פחות טובים מאחרים.
                למרבה המזל ישנם מתאמים אחרים אשר משתמשים בפורמטים אשר נטענים הרבה יותר מהר. מבחינת מהירות, מהמהיר ביותר אל האיטי ביותר, הינם:
            </para>

            <itemizedlist>
                <listitem><para>
                    <emphasis>Array</emphasis>: זהו המהיר ביותר, מאחר והוא נטען ישירות ל PHP ברגע שהקובץ נוסף.
                </para></listitem>

                <listitem><para>
                    <emphasis>CSV</emphasis>: שימוש ב <code>fgetcsv()</code> כדי לטעון את קובץ ה CSV ולהפוך אותו למערך PHP רגיל.
                </para></listitem>

                <listitem><para>
                    <emphasis>INI</emphasis>: שימוש ב
                    <code>parse_ini_file()</code> כדי לטעון ולעבד קובץ INI ולהפוך אותו לקובץ בפורמט PHP רגיל.
                    אפשרות זו וה CSV הם בערך זהים מבחינת מהירות וביצועים.
                </para></listitem>

                <listitem><para>
                    <emphasis>Gettext</emphasis>: המתאם של Zend Framework בשימוש עם gettext <emphasis>לא</emphasis> משתמש בתוסף ה gettext הנפוץ,
                    מאחר והוא לא בטוח ולא מאפשר הגדרה של יותר משפה אחת פר שרת. כתוצאה מכך הוא איטי יותר משימוש בתוסף ישירות, אבל מאחר ה gettext משתמש בקבצים בפורמט בינארי, הוא מהיר יותר
                    מעיבוד קובץ XML.
                </para></listitem>
            </itemizedlist>

            <para>
                אם הנכם דואגים לביצועי המערכת שלכם, אנו ממליצים שימוש באחד מהמתאמים המצויינים מעלה.
            </para>
        </sect3>
    </sect2>

    <sect2 id="performance.localization.cache">
        <title>כיצד ניתן להאיץ את התרגום והמתאמים אף יותר?</title>

        <para>
            אולי, מסיבות עסקיות, הנכם מוגבלים לשימוש במתאם תרגום לקבצי XML.
            או שאולי תרצו להאיץ את הדברים אף יותר. איך תוכלו לעשות זאת?
        </para>

        <sect3 id="performance.localization.cache.usage">
            <title>שימוש במטמון</title>

            <para>
                גם <code>Zend_Translate</code> ו <code>Zend_Locale</code> מאפשרים שימוש במטמון אשר מאיצים ומשפרים את הביצועים בצורה משמעותית.
                בשני המקרים, הבעיה הגדולה ביותר והבעיה שיוצרת את צוואר הבקבוק היא בדרך כלל קריאה ועיבוד הקבצים, לא הצגת הנתונים; שימוש במטמון מסיר את הדרישה של טעינה ועיבוד של קבצי השפה בכל פעם.
            </para>

            <para>
                ניתן לקרוא אודות שימוש במטמון עם קבצי התרגום השונים בקישורים הבאים:
            </para>

            <itemizedlist>
                <listitem>
                    <para>
                        <link linkend="zend.translate.adapter.caching"><code>Zend_Translate</code>
                            מתאם מטמון</link>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <link linkend="zend.locale.cache"><code>Zend_Locale</code>
                            מטמון</link>
                    </para>
                </listitem>
            </itemizedlist>
        </sect3>
    </sect2>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
