Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

Intl

L'objet Intl est utilisé comme point d'entrée pour l'API d'internationalisation d'ECMAScript. Cet objet a pour but de fournir des opérations dédiées à chaque langage pour la comparaison de chaînes de caractères, le formatage des nombres, des dates et de l'heure. Les constructeurs Collator, NumberFormat, et DateTimeFormat sont des propriétés de l'objet Intl. Cette page documente ces propriétés ainsi que les fonctionnalités liées à ces constructeurs dans le cadre de l'internationalisation et des opérations dédiées à chaque langue.

Propriétés

Intl.Collator
Le constructeur de collecteurs (collators en anglais), des objets qui permettent de comparer des chaînes de caractères en prenant en compte la langue utilisée.
Intl.DateTimeFormat
Le constructeur des objets qui permettent de gérer les formats de dates et heure en prenant en compte la locale.
Intl.NumberFormat
Le constructeur des objets qui permettent de gérer les formats des nombres en prenant en compte la locale.

Méthodes

Intl.getCanonicalLocales()
Une méthode qui renvoie les noms canoniques des locales.

L'identification et le choix de la locale

Les constructeurs liés à l'internationalisation ainsi que d'autres méthodes (voir ci-après les liens du dernier paragraphe) utilisent une manière commune pour identifier les locales et déterminer celle qu'ils utiliseront. Ils acceptent tous les arguments locales et options et choisissent (ou négocient) entre les locales demandées et les locales supportées en utilisant un algorithme défini grâce à la propriété options.localeMatcher.

L'argument locales

L'argument locales peut être une chaîne de caractères avec une balise de langue BCP 47, ou un tableau contenant de telles chaînes. Si l'argument est omis ou est undefined, ce sera la locale définie à l'exécution qui sera utilisée.

Une balise de langue BCP 47 identifie une locale. Les formes les plus fréquentes sont composées (dans l'ordre) : d'un code de langue, d'un code de script et d'un code de pays, chacun séparé par des tirets. Par exemple, on aura :

  • "hi" : Hindi.
  • "de-AT" : Allemand autrichien (« de » provient de « Deutsch »).
  • "zh-Hans-CN" : Le chinois écrit (zh) avec des caractères simplifiés (Hans), de la façon dont il est utilisé en Chine (CN).

Les composantes de langues, scripts, pays et variantes dans les balises BCP 47 sont définies dans le registre IANA des composantes des balises de langues

BCP 47 permet également d'utiliser des extensions et notamment l'extension "u" (Unicode). Elle peut être utilisée pour spécifier un comportement adapté à la locale. Par exemple :

  • "de-DE-u-co-phonebk" : On utilise la variante allemande pour l'annuaire qui décompose les lettres accentuées par un umlaut en une paire de caractères : ä → ae, ö → oe, ü → ue.
  • "th-TH-u-nu-thai" : On utilise les chiffres Thai (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) pour le formatage des nombres.
  • "ja-JP-u-ca-japanese" : On utilise le calendrier japonais pour représenter les dates et les heures, 2013 est donc exprimé comme l'an 25 de la période Heisei : 平成25.

Choix de la locale

L'argument locales, une fois qu'on a retiré les extensions Unicode, est interprété comme une requête prioritaire de l'application. L'environnement d'exécution le compare avec les locales disponibles et choisit la meilleure. Il existe deux algorithmes de correspondance : une correspondance basée sur un algorithme de recherche défini avec BCP 47 ou une correspondance « au mieux » qui permet à l'environnement d'exécution de fournir une locale potentiellement différente et au moins aussi adaptée (voire meilleure) que celle proposée par l'algorithme précédent. Si l'application ne fournit pas d'argument locales ou que l'environnement ne dispose pas d'une locale correspondant à la requête, la locale par défaut de l'environnement sera utilisée. Il est possible d'indiquer l'algorithme de correspondance à utiliser grâce à l'argument options (voir ci-après).

Si la balise de langue utilisée comportait une extension Unicode, on utilisera cette extension pour adapter l'objet construit ou le comportement de la fonction. Chaque constructeur ou fonction ne supporte qu'un sous-ensemble des clés possibles pour les extensions. Les extensions supportées dépendent souvent de la locale choisie. Ainsi la clé "co" (pour collation) n'est supportée que par le constructeur Collator, et la valeur "phonebk" de cette clé n'est supportée que pour l'allemand.

L'argument options

L'argument options est un objet dont les propriétés attendues seront différentes entre les constructeurs ou fonctions avec lesquels on veut l'utiliser. Si l'argument options n'est pas fourni, les valeurs par défaut des propriétés attendues seront utilisées.

Malgré cela, il existe une propriété commune aux constructeurs et fonctions basées sur les locales. La propriété localeMatcher, dont la valeur doit être la chaîne de caractères "lookup" ou "best fit" permet de choisir entre les algorithmes présentés précédemment  ("lookup" correspond au premier algorithme de recherche BCP 47 et "best fit" correspond à l'algorithme donnant plus de latitude à l'environnement).

Spécifications

Spécification Statut Commentaires
ECMAScript Internationalization API 1.0 (ECMA-402)
La définition de 'Intl' dans cette spécification.
Standard Définition initiale.
ECMAScript Internationalization API 2.0 (ECMA-402)
La définition de 'Intl' dans cette spécification.
Standard  
ECMAScript Internationalization API 4.0 (ECMA-402)
La définition de 'Intl' dans cette spécification.
Projet  

Compatibilité des navigateurs

 
Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Support simple 24 29 (29) 11 15 Pas de support
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Support simple Pas de support 26 Pas de support [1] Pas de support Pas de support Pas de support

[1] À partir de Gecko 44 (Firefox 44 / Thunderbird 44 / SeaMonkey 2.41), l'API Intl est disponible avec b2gdroid.

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight, Goofy
 Dernière mise à jour par : SphinxKnight,