Intl.supportedValuesOf()
========================

**Expérimental:** **Cette fonction est expérimentale**  
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.  
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

La méthode **`Intl.supportedValuesOf()`** renvoie un tableau qui contient le calendrier, la collation, la devise, les systèmes de numérations ou les unités prises en charge par l'implémentation.

Les doublons sont omis et le tableau est trié selon l'ordre lexicographique (plus précisément par `Array.prototype.sort()` avec `undefined` comme fonction de comparaison).

 Cette méthode peut être utilisée afin de tester les fonctionnalités prises en charge par une implémentation donnée afin de les surcharger par une prothèse d'implémentation si nécessaire.
 Elle peut également être utilisée pour construire des interfaces utilisateur permettant aux personnes de choisir leurs préférences pour la localisation (par exemple lorsque l'interface est construite dynamiquement en WebGL ou côté serveur).

Exemple interactif
------------------

Syntaxe
-------


```js
Intl.supportedValuesOf(cle);
```

### Paramètres

`cle`

Une clé qui indique la catégorie de valeurs à renvoyer. Il peut s'agir de : `"calendar"`, `"collation"`, `"currency"`,`"numberingSystem"`, `"timeZone"`, `"unit"`.

### Valeur de retour

Un tableau trié, contenant des chaînes de caractères uniques indiquant les valeurs prises en charge par l'implémentation pour la clé demandée.

### Exceptions

`RangeError`

Une clé non prise en charge a été passée en paramètre.

Exemples
--------

### Test de fonctionnalité

On peut vérifier que la méthode est prise en charge en la comparant à `undefined` :


```js
if (typeof Intl.supportedValuesOf !== "undefined") {
  // la méthode est prise en charge
}
```

### Obtenir toutes les valeurs d'une clé donnée

Pour obtenir les valeurs prises en charge pour les représentations calendaires, on pourra appeler la méthode avec la clé `"calendar"` et parcourir le tableau obtenu :


```js
Intl.supportedValuesOf("calendar").forEach(function (calendar) {
  // "buddhist", "chinese", "coptic", "dangi", ...
});
```


**Note :** Le tableau renvoyé pour les calendriers contiendra toujours la valeur "gregory" (calendrier grégorien).

Les autres valeurs peuvent être obtenues de la même façon :


```js
Intl.supportedValuesOf("collation").forEach(function (collation) {
  // "big5han", "compat", "dict", "emoji", ...
});

Intl.supportedValuesOf("currency").forEach(function (currency) {
  // "ADP", "AED", "AFA", "AFN", "ALK", "ALL", "AMD", ...
});

Intl.supportedValuesOf("numberingSystem").forEach(function (numberingSystem) {
  // "adlm", "ahom", "arab", "arabext", "bali", ...
});

Intl.supportedValuesOf("timeZone").forEach(function (timeZone) {
  // "Africa/Abidjan", "Africa/Accra", "Africa/Addis\_Ababa", "Africa/Algiers", ...
});

Intl.supportedValuesOf("unit").forEach(function (unit) {
  // "acre", "bit", "byte", "celsius", "centimeter", ...
});
```

### Exception à l'utilisation d'une clé invalide


```js
try {
  Intl.supportedValuesOf("uneCleInvalide");
} catch (err) {
  // Error: RangeError: invalid key: "uneCleInvalide"
}
```

Prothèse d'émulation (*polyfill*)
---------------------------------

Prothèse pour `Intl.supportedValuesOf()` dans la proposition TC39

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Internationalization API Specification # sec-intl.supportedvaluesof |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Intl`