# Utiliser Zend_Currency

## Utilisation de base

La manière la plus simple consiste à se reposer sur la locale de l'utilisateur. Lorsque vous créez une instance de `Zend_Currency` sans préciser d'options, la locale du client sera alors utilisée.

### Créer une monnaie avec les paramètres du client

Imaginons un client dont la locale est "en_US" dans son navigateur. Dans ce cas, `Zend_Currency` détectera automatiquement la monnaie à utiliser.

    $currency = new Zend_Currency();

    // Voyons les paramètres par défaut régis par la locale utilisateur
    // var_dump($currency);

L'objet crée va alors contenir une monnaie "US Dollar" car il s'agit de la monnaie affectée aux USA. D'autres options ont aussi été affectées comme le signe "$" ou l'abbréviation "USD".

### La détection automatique par locale ne fonctionne pas toujours

La détection automatique par locale ne fonctionne pas toujours car `Zend_Currency` nécessite une locale incluant la région. Si le client utilise une locale courte ("en"), `Zend_Currency` ne sait pas quelle région parmi les 30 possibles choisir. Une exception sera alors levée.

Un client peut aussi déregler la locale dans son navigateur, ou la supprimer. Ainsi le paramètre de l'environnement sera alors utilisé pour la locale, ce qui peut mener à des comportements non attendus ou des exceptions.

## Créer une monnaie basée sur une locale

Pour éviter ce genre de problème, précisez manuellement la locale à utiliser.

    $currency = new Zend_Currency('en_US');

    // Utilisation de l'option 'locale'
    // $currency = new Zend_Currency(array('locale' => 'en_US'));

    // Voir la monnaie avec les paramètres actuels fixés à 'en_US'
    // var_dump($currency);

Dans l'exemple ci-dessus, nous ne sommes plus dépendant du client.

`Zend_Currency` supporte aussi l'utilisation d'une locale globale. Mettez une instance de `Zend_Locale` dans le registre comme montré ci-après. Dans un tel cas, l'option locale n'est plus obligatoire pour chaque instance et la même locale sera utilisée partout, tout le temps.

    // dans le bootstrap
    $locale = new Zend_Locale('de_AT');
    Zend_Registry::set('Zend_Locale', $locale);

    // quelque part dans l'application
    $currency = new Zend_Currency();