<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 17175 -->
<!-- Reviewed: no -->
<sect1 id="zend.locale.migration">

    <title>Migrieren von vorhergehenden Versionen</title>

    <para>
        Die <acronym>API</acronym> von <classname>Zend_Locale</classname> wurde von Zeit zu Zeit
        verändert. Wenn man begonnen hat <classname>Zend_Locale</classname> und seine
        Unterkomponenten in früheren Versionen dann sollte man den unteren Richtlinien folgen um die
        Skripte so zu migrieren das sie die neue <acronym>API</acronym> verwenden.
    </para>

    <sect2 id="zend.locale.migration.fromoneeighttoonenine">
        <title>Migrieren von 1.8 zu 1.9 oder neueren</title>
        <sect3 id="zend.locale.migration.fromoneeighttoonenine.depreciated">
            <title>Abgelaufene Methoden</title>

            <para>
                Einige spezialisiertere Übersetzungsmethoden stehen nicht mehr zur Verfügung weil
                Sie bestehende Verhaltensweisen duplizieren. Beachten Sie das die alten Methoden
                weiterhin funktionieren, aber eine Benutzer Notiz geworfen wird, die den neuen
                Aufruf beschreibt. Diese Methoden werden mit 2.0 entfernt. Die folgende Liste zeigt
                die alten und neuen Methodenaufrufe.
            </para>

            <table id="zend.locale.migration.fromoneeighttoonenine.depreciated.table-1">

                <title>List der Methodenaufrufe</title>

                <tgroup cols="2">
                    <thead>
                        <row>
                            <entry>Alter Aufruf</entry>
                            <entry>Neuer Aufruf</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="zend.locale.migration.fromoneseventooneeight">
        <title>Migrieren von 1.7 zu 1.8 oder neuer</title>
        <sect3 id="zend.locale.migration.fromoneseventooneeight.defaultcaching">
            <title>Standard Caching</title>

            <para>
                Ab Zend Framework 1.8 wurde ein standardmäßiges Caching hinzugefügt. Der Grund
                für diese Änderung war, das die meisten Benutzer Performance Probleme hatten,
                aber kein Caching verwendet wurde. Da der I18n Core eine Engstelle ist wenn kein
                Caching verwendet wird, wurde entschieden ein standardmäßiges Caching hinzuzufügen
                wenn für <classname>Zend_Locale</classname> kein Cache gesetzt wurde.
            </para>

            <para>
                Manchmal ist es trotzdem gewünscht ein Cachen zu verhindern, selbst wenn das die
                Performance beeinträchtigt. Um das zu tun kann das Cachen durch Verwendung der
                <methodname>disableCache()</methodname> Methode abgeschaltet werden.
            </para>

            <example id="zend.locale.migration.fromoneseventooneeight.example">
                <title>Standardmäßiges Caching abschalten</title>

                <programlisting language="php"><![CDATA[
Zend_Locale::disableCache(true);
]]></programlisting>
            </example>
        </sect3>
    </sect2>

    <sect2 id="zend.locale.migration.fromonesixtooneseven">
        <title>Migrieren von 1.6 oder 1.7 zu neueren</title>
        <sect3 id="zend.locale.migration.fromonesixtooneseven.islocale">
            <title>Änderungen bei der Verwendung von isLocale()</title>

            <para>
                Bezugnehmend auf den Codingstandard mußte isLocale() so geändert werden das es ein
                Boolean zurückgibt. In vorhergehenden Releases wurde im Erfolgsfall ein String
                zurückgegeben. Für das Release 1.7 wurde ein Kompatibilitätsmodus hinzugefügt der es
                erlaubt das alte Verhalten, das ein String zurückgegeben wird, zu verwenden, aber
                das triggert auch eine User Warning die darauf hinweist das man auf das neue
                Verhalten wechseln sollte. Das Rerouting welches das alte Verhalten von isLocale()
                durchgeführt hätte ist nicht länger notwendig, da alle I18N Komponenten jetzt das
                Rerouting selbst durchführen.
            </para>

            <para>
                Um die Skripte auf die neue <acronym>API</acronym> zu migrieren muß die Methode
                einfach wie anbei gezeigt verwendet werden.
            </para>

            <example id="zend.locale.migration.fromonesixtooneseven.example">
                <title>Wie man isLocale() von 1.6 nach 1.7 ändern muß</title>

                <programlisting language="php"><![CDATA[
// Beispiel für 1.6
if ($locale = Zend_Locale::isLocale($locale)) {
    // mach was
}

// Selbes Beispiel für 1.7

// Man sollte den Kompatibilitätsmodus ändern um User Warnings zu verhindern
// Aber man kann das in der Bootstrap tun
Zend_Locale::$compatibilityMode = false;

if (Zend_Locale::isLocale($locale)) {
}
]]></programlisting>

                <para>
                    Es ist zu beachten das man den zweiten Parameter verwendet kann um zu sehen ob
                    das Gebietsschema richtig ist ohne das ein Rerouting durchgeführt wird.
                </para>

                <programlisting language="php"><![CDATA[
// Beispiel für 1.6
if ($locale = Zend_Locale::isLocale($locale, false)) {
    // mach was
}

// Selbes Beispiel für 1.7

// Man sollte den Kompatibilitätsmodus ändern um User Warnings zu verhindern
// Aber man kann das in der Bootstrap tun
Zend_Locale::$compatibilityMode = false;

if (Zend_Locale::isLocale($locale, false)) {
    if (Zend_Locale::isLocale($locale, true)) {
        // gar kein Gebietsschema
    }

    // Original String ist kein Gebietsschema, kann aber Reroutet werden
}
]]></programlisting>

            </example>

        </sect3>

        <sect3 id="zend.locale.migration.fromonesixtooneseven.getdefault">
            <title>Änderungen bei der Verwendung von getDefault()</title>

            <para>
                Die Bedeutung der getDefault() Methode wurde verändert durch den Fakt das
                Framework-weite Gebietsschemata integriert wurden welche mit setDefault() gesetzt
                werden können. Deswegen gibe es nicht mehr die Kette der Gebietsschemata zurück
                sondern nur die gesetzten Framework-weiten Gebietsschemata.
            </para>

            <para>
                Um die eigenen Skripte auf die neue <acronym>API</acronym> zu migrieren, muß einfach
                die Methode wie unten gezeigt verwendet werden.
            </para>

            <example id="zend.locale.migration.fromonesixtooneseven.getdefault.example">
                <title>Wie man getDefault() von 1.6 auf 1.7 ändert</title>

                <programlisting language="php"><![CDATA[
// Beispiel für 1.6
$locales = $locale->getDefault(Zend_Locale::BROWSER);

// Selbes Beispiel für 1.7

// Man sollte den Compatibility Mode setzen um User Notices zu verhindern
// Das kann in der Bootstrap Datei getan werden
Zend_Locale::$compatibilityMode = false;

$locale = Zend_Locale::getOrder(Zend_Locale::BROWSER);
]]></programlisting>

                <para>
                    Es ist zu beachten das der zweite Parameter der alten getDefault()
                    Implementation nicht mehr vorhanden ist, aber die zurückgegebenen Werte die
                    gleichen sind.
                </para>
            </example>

            <note>
                <para>
                    Standardmäßig ist das alte Verhalten noch immer aktiv, wirft aber eine User
                    Notice. Wenn man den eigenen Code zum neuen Verhalten geändert hat sollte man
                    auch den Compatibility Mode auf false setzen damit keine Notices mehr geworfen
                    werden.
                </para>
            </note>

         </sect3>

    </sect2>
</sect1>
