# Migrieren von vorhergehenden Versionen

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

## Migrieren von 1.8 zu 1.9 oder neueren

### Abgelaufene Methoden

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.

#### List der Methodenaufrufe

Alter Aufruf | Neuer Aufruf
--- | ---
getLanguageTranslationList($locale) | getTranslationList('language', $locale)
getScriptTranslationList($locale) | getTranslationList('script', $locale)
getCountryTranslationList($locale) | getTranslationList('territory', $locale, 2)
getTerritoryTranslationList($locale) | getTranslationList('territory', $locale, 1)
getLanguageTranslation($value, $locale) | getTranslation($value, 'language', $locale)
getScriptTranslation($value, $locale) | getTranslation($value, 'script', $locale)
getCountryTranslation($value, $locale) | getTranslation($value, 'country', $locale)
getTerritoryTranslation($value, $locale) | getTranslation($value, 'territory', $locale)

## Migrieren von 1.7 zu 1.8 oder neuer

### Standard Caching

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 `Zend_Locale` kein Cache gesetzt wurde.

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 `disableCache()` Methode abgeschaltet werden.

#### Standardmäßiges Caching abschalten

    Zend_Locale::disableCache(true);

## Migrieren von 1.6 oder 1.7 zu neueren

### Änderungen bei der Verwendung von isLocale()

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.

Um die Skripte auf die neue API zu migrieren muß die Methode einfach wie anbei gezeigt verwendet werden.

#### Wie man isLocale() von 1.6 nach 1.7 ändern muß

    // 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)) {
    }

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.

    // 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
    }

### Änderungen bei der Verwendung von getDefault()

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.

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

#### Wie man getDefault() von 1.6 auf 1.7 ändert

    // 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);

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

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.