Intl

L'objet Intl est l'espace de noms pour l'API d'Internationalisation d'ECMAScript. Elle fournit des outils de comparaison de chaînes de caractères, de formatage des nombres, de dates et de l'heure selon les langues. Intl donne accès à plusieurs constructeurs et fonctionnalités communs aux constructeurs destinés à l'internationalion et à d'autres fonctions dépendantes des langues.

Propriétés constructrices

Intl.Collator
Le constructeur pour les ordonnanceurs (collators en anglais) et les objets qui permettent la comparaison de chaînes de caractères selon les règles spécifiques d'une langue.
Intl.DateTimeFormat
Le constructeur pour les objets qui permettent le formatage des dates et de l'heure selon les règles spécifiques d'une langue.
Intl.DisplayNames()
Le constructeur pour les objets qui permettent de fournir des traductions constantes de noms de langues, régions et systèmes d'écriture.
Intl.ListFormat
Le constructeur pour les objets qui permettent le formatage des listes selon les règles spécifiques d'une langue.
Intl.Locale()
Le constructeur pour les objets qui représentent un identifiant de langue Unicode.
Intl.NumberFormat
Le constructeur pour les objets qui permettent le formatage des nombres selon les règles spécifiques d'une langue.
Intl.PluralRules
Le constructeur pour les objets qui permettent le formatage prenant en compte le pluriel et les règles de pluriel spécifiques d'une langue.
Intl.RelativeTimeFormat
Le constructeur pour les objets qui permettent le formatage d'intervalles de temps spécifiques d'une langue.

Méthodes statiques

Intl.getCanonicalLocales()
Méthode renvoyant les noms canoniques des locales.

Identification et choix de la locale

Les constructeurs d'internationalisation, ainsi que plusieurs autres méthodes spécifiques à une langue dans d'autres constructeurs (voir ci-dessous Voir aussi), utilisent un schéma commun pour identifier les locales et déterminer celle qu'ils utiliseront effectivement : ils acceptent tous les arguments locales et options, et ils négocient les locales demandées face aux locales qu'ils supportent, en utilisant un algorithme spécifié dans la propriété options.localeMatcher.

Argument locales

L'argument locales peut être soit une chaîne de caractères comportant une balise de langue BCP 47, soit un tableau de telles balises. Si l'argument n'est pas fourni ou est indéfini, la locale par défaut de l'environnement d'exécution est utilisée.

Une balise de langue BCP 47 définit un langage et contient au minimum un code de langue principale. Dans sa forme la plus fréquente, elle peut contenir, dans l'ordre : un code de langue, un code de script et un code de pays ou de région, tous séparés par des tirets. Bien que la balise ne soit sensible à la casse, il est recommandé d'utiliser des initiales majuscules pour le code de script, des majuscules pour les codes de pays et de région, et des minuscules pour tout le reste.

Exemples :

  • "hi" : Hindi (langue principale).
  • "de-AT" : Allemand tel qu'utilisé en Autriche (langue principale avec un code pays).
  • "zh-Hans-CN" : Le chinois écrit en caractères simplifiés tel qu'utilisé en Chine (langue principale avec des codes de script et de pays).

Les sous balises identifiant les langues, les scripts, les pays (régions) et les variantes (rarement utilisées) dans les balises de langue BCP 47 peuvent être trouvées dans le registre IANA des Sous balises de Langues

La BCP 47 permet également des extensions. Les fonctions d'internalisation de JavaScript utilisent l'extension "u" (Unicode), qui peut utilisée pour demander une personnalisation supplémentaire des objets Collator, NumberFormat, ou DateTimeFormat. Exemples :

  • "de-DE-u-co-phonebk" : utiliser la variante annuaire de l'ordre de tri allemand, qui décompose les voyelles infléchies (à umlaut) en paires de caractères : ä → ae, ö → oe, ü → ue.
  • "th-TH-u-nu-thai" : utiliser les chiffres thaïs (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) dans le formatage des nombres.
  • "ja-JP-u-ca-japanese" : utiliser le calendrier japonais dans le formatage des dates et des heures, de sorte que 2013 soit exprimé comme l'an 25 de l'ère Heisei, ou 平成25.
  • "en-GB-u-ca-islamic" : utiliser l'anglais britannique avec le calendrier islamique (Hijri), où la date grégorienne 14 octobre 2017 est la date de l'ère de l'Hégire 24 Muharram,1439.

Négociation de la locale

L'argument locales, après retrait de toutes les extensions Unicode, est interprété comme une requête classée par priorité émanant de l'application. L'environnement d'exécution le compare aux locales dont il dispose et choisit la meilleure disponible. Il existe deux algorithmes d'association : l'apparieur "lookup" suit l'algorithme Lookup spécifié dans BCP 47; l'apparieur "meilleure correspondance" laisse l'environnement d'exécution fournir une locale qui est au moins aussi, mais possiblement mieux, adaptée à la demande que le résultat de l'algorithme Lookup. Si l'application ne fournit pas d'argument locales ou que l'environnement d'exécution ne dispose pas d'une locale qui corresponde à la requête, alors la locale par défaut de l'environnement d'exécution est utilisée. L'apparieur peut être choisi en utilisant une propriété de l'argument options (voir ci-dessous).

Si la balise de la langue choisie comporte une sous chaîne d'extension Unicode, cette extension est maintenant utilisée pour personnaliser l'objet construit ou le comportement de la fonction. Chaque constructeur ou fonction ne supporte qu'un sous-ensemble des clés définies pour le extension Unicode, et les valeurs supportées dépendent souvent de la balise de langue. Par exemple, la clé "co" (collation) n'est supportée que par le constructeur Collator, et sa valeur "phonebk" n'est supportée que pour l'allemand.

Argument options

L'argument options doit être un objet ayant des propriétés qui varient suivant qu'il s'agit des constructeurs ou des fonctions. Si l'argument options n'est pas fourni ou est indéfini, des valeurs par défaut seront utilisées pour toutes les propriétés.

Une propriété est supportée par tous les constructeurs et toutes les fonctions fondés sur les locales : la propriété localeMatcher, dont la valeur doit être la chaîne "lookup" ou "best fit", et qui sélectionne l'un des algorithmes d'appariement décrits ci-dessus.

Exemples

Formater des dates et nombres

Vous pouvez utiliser Intl pour formater des dates et nombres dans un format qui est conventionnel pour une langue et une région spécifiques :

const compte = 26254.39;
const date = new Date("2012-05-24");

function afficher (langue) {
  console.log(
    `${new Intl.DateTimeFormat(langue).format(date)} ${new Intl.NumberFormat(langue).format(compte)}`
  );
}

afficher("en-US");
// résultat attendu : 5/24/2012 26,254.39

afficher("de-DE");
// résultat attendu : 24.5.2012 26.254,39

Spécifications

Spécification État 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 (ECMA-402)
La définition de 'Intl' dans cette spécification.
Standard évolutif Ajout de Intl.getCanonicalLocales dans la 4e édition.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung InternetNode.js
IntlChrome Support complet 24Edge Support complet 12Firefox Support complet 29IE Support complet 11Opera Support complet 15Safari Support complet 10WebView Android Support complet 4.4Chrome Android Support complet 25Firefox Android Support complet 56Opera Android Support complet 14Safari iOS Support complet 10Samsung Internet Android Support complet 1.5nodejs Support complet 0.12
Notes
Support complet 0.12
Notes
Notes Before version 13.0.0, only the locale data for en-US is available by default. When other locales are specified, the Intl APIs silently fall back to en-US. To make full ICU (locale) data available for versions prior to 13, see Node.js documentation on the --with-intl option and how to provide the data.
CollatorChrome Support complet 24Edge Support complet 12Firefox Support complet 29IE Support complet 11Opera Support complet 15Safari Support complet 10WebView Android Support complet 4.4Chrome Android Support complet 25Firefox Android Support complet 56Opera Android Support complet 14Safari iOS Support complet 10Samsung Internet Android Support complet 1.5nodejs Support complet 0.12
Notes
Support complet 0.12
Notes
Notes Before version 13.0.0, only the locale data for en-US is available by default. See the Collator() constructor for more details.
DateTimeFormatChrome Support complet 24Edge Support complet 12Firefox Support complet 29IE Support complet 11Opera Support complet 15Safari Support complet 10WebView Android Support complet 4.4Chrome Android Support complet 25Firefox Android Support complet 56Opera Android Support complet 14Safari iOS Support complet 10Samsung Internet Android Support complet 1.5nodejs Support complet 0.12
Notes
Support complet 0.12
Notes
Notes Before version 13.0.0, only the locale data for en-US is available by default. See the DateTimeFormat() constructor for more details.
DisplayNamesChrome Support complet 81Edge Support complet 81Firefox Aucun support NonIE Aucun support NonOpera Support complet 68Safari Aucun support NonWebView Android Support complet 81Chrome Android Support complet 81Firefox Android Aucun support NonOpera Android Support complet 58Safari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Support complet 14.0.0
getCanonicalLocalesChrome Support complet 54Edge Support complet 16Firefox Support complet 48IE Aucun support NonOpera Aucun support NonSafari Support complet 11WebView Android Aucun support NonChrome Android Aucun support NonFirefox Android Support complet 56Opera Android Aucun support NonSafari iOS Support complet 11Samsung Internet Android Aucun support Nonnodejs Support complet 7.0.0
ListFormat
Expérimentale
Chrome Support complet 72Edge Aucun support NonFirefox Support complet 78IE Aucun support NonOpera Support complet 60Safari Aucun support NonWebView Android Support complet 72Chrome Android Support complet 72Firefox Android Aucun support NonOpera Android Support complet 51Safari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Support complet 12.0.0
Notes
Support complet 12.0.0
Notes
Notes Before version 13.0.0, only the locale data for en-US is available by default. See the ListFormat() constructor for more details.
LocaleChrome Support complet 74Edge Support complet 79Firefox Support complet 75IE Aucun support NonOpera Support complet 62Safari Support complet 14
Notes
Support complet 14
Notes
Notes Safari 14 Technology Preview 107-111 returns a string instead of a Locale object from the minimize and maximize methods.
WebView Android Support complet 74Chrome Android Support complet 74Firefox Android Aucun support NonOpera Android Support complet 53Safari iOS Support complet 14
Notes
Support complet 14
Notes
Notes Safari 14 Technology Preview 107-111 returns a string instead of a Locale object from the minimize and maximize methods.
Samsung Internet Android Support complet 11.0nodejs Support complet 12.0.0
Notes
Support complet 12.0.0
Notes
Notes Before version 13.0.0, only the locale data for en-US is available by default. See the Locale() constructor for more details.
NumberFormatChrome Support complet 24Edge Support complet 12Firefox Support complet 29IE Support complet 11Opera Support complet 15Safari Support complet 10WebView Android Support complet 4.4Chrome Android Support complet 25Firefox Android Support complet 56Opera Android Support complet 14Safari iOS Support complet 10Samsung Internet Android Support complet 1.5nodejs Support complet 0.12
Notes
Support complet 0.12
Notes
Notes Before version 13.0.0, only the locale data for en-US is available by default. See the NumberFormat() constructor for more details.
PluralRulesChrome Support complet 63Edge Support complet 18Firefox Support complet 58IE Aucun support NonOpera Support complet 50Safari Support complet 13WebView Android Support complet 63Chrome Android Support complet 63Firefox Android Support complet 58Opera Android Support complet 46Safari iOS Support complet 13Samsung Internet Android Support complet 8.0nodejs Support complet 10.0.0
Notes
Support complet 10.0.0
Notes
Notes Before version 13.0.0, only the locale data for en-US is available by default. See the PluralRules() constructor for more details.
RelativeTimeFormatChrome Support complet 71Edge Support complet 79Firefox Support complet 65IE Aucun support NonOpera Support complet 58Safari Support complet 14WebView Android Support complet 71Chrome Android Support complet 71Firefox Android Support complet 65Opera Android Support complet 50Safari iOS Support complet 14Samsung Internet Android Support complet 10.0nodejs Support complet 12.0.0
Notes
Support complet 12.0.0
Notes
Notes Before version 13.0.0, only the locale data for en-US is available by default. See the RelativeTimeFormat() constructor for more details.

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Voir les notes d'implémentation.
Voir les notes d'implémentation.

Voir aussi