# Migrer à partir des versions précédentes

L'API de `Zend_Locale` a changé au cours du temps. Si vous avez commencé à utiliser `Zend_Locale` et ses sous-composants avec les versions précédentes, suivez les lignes directrices ci-dessous pour migrer vos scripts et ainsi utiliser la nouvelle API.

## Migrer de la version 1.8 vers 1.9 ou plus récent

### Méthodes dépréciées

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 :

#### Liste des types de mesures

Ancien appel | Nouvel appel
--- | ---
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)

## Migrer de la version 1.6 vers 1.7 ou plus récent

### Changement dans l'utilisation de isLocale()

Conformément aux standards de codage `isLocale()` 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 `isLocale()` pouvait avoir à faire n'est plus nécessaire car tous les composants de l'I18N traiteront maintenant eux-mêmes le reroutage.

Pour migrer vos scripts vers la nouvelle API, utilisez simplement la méthode décrite ci-dessous.

#### Comment changer l'appel de isLocale() de 1.6 vers 1.7 ?

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

Notez que vous pouvez utiliser le second paramètre pour voir si la locale est correcte sans nécessiter de reroutage.

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

### Changement dans l'utilisation de getDefault()

La signification de la méthode `getDefault()` a été changé étant donné que nous avons intégré une locale de framework qui peut être paramétrée avec `setDefault()`. Ceci ne renvoie plus la chaîne de la locale mais seulement la locale du framework.

Pour migrer vos scripts vers la nouvelle API, utilisez simplement la méthode décrite ci-dessous.

#### Comment changer l'appel de getDefaut() de 1.6 vers 1.7 ?

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

Notez que le second paramètre de l'ancienne implémentation de `getDefault()` n'est plus disponible non plus, mais les valeurs retournées sont les mêmes.

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é à `FALSE` ainsi aucun nouveau warning ne sera émis.