L'objet Intl
est l'espace de noms pour l'API d'Internationalisation d'ECMAScript et fournit des outils pour la comparaison de chaînes de caractères, le formatage des nombres, des dates et de l'heure spécifiques aux langues. Intl
fournit différents constructeurs et fonctionnalités utilises à l'internationalion et à la gestion des valeurs entre différentes langues.
Propriétés
Intl.Collator
- Le constructeur pour les ordonnanceurs (collators en anglais) et les objets qui permettent la comparaison de chaînes de caractères spécifique à une langue.
Intl.DateTimeFormat
- Le constructeur pour les objets qui permettent le formatage des dates et de l'heure spécifique à une langue.
Intl.ListFormat
- Le constructeur pour les objets qui permettent le formatage des listes, spécifique à une langue.
Intl.NumberFormat
- Le constructeur pour les objets qui permettent le formatage des nombres spécifique à une langue.
Intl.PluralRules
- Le constructeur pour les objets qui permettent un formatage prenant compte du pluriel et des règles de pluriel spécifique à une langue.
Intl.RelativeTimeFormat
- Le constructeur pour les objets qui permettent un formatage spécifique à la langue pour les valeurs de temps relatives.
Méthodes
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 JavaScrip 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 à 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 Hijri 24 Muharram ,1439.
Négotiation 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 basé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.
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 4.0 (ECMA-402) La définition de 'Intl' dans cette spécification. |
Projet | Ajout de Intl.getCanonicalLocales dans la 4e édition. |
Compatibilité des navigateurs
Ordinateur | Mobile | Serveur | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Support simple | Chrome Support complet 24 | Edge Support complet Oui | Firefox Support complet 29 | IE Support complet 11 | Opera Support complet 15 | Safari Support complet 10 | WebView Android Aucun support Non | Chrome Android Support complet 26 | Edge Mobile Support complet Oui | Firefox Android Support complet 56 | Opera Android ? | Safari iOS Support complet 10 | Samsung Internet Android Support complet Oui | nodejs ? |
getCanonicalLocales | Chrome Support complet 54 | Edge Support complet 16 | Firefox Support complet 48 | IE Aucun support Non | Opera Aucun support Non | Safari Support complet 11 | WebView Android Aucun support Non | Chrome Android Aucun support Non | Edge Mobile Aucun support Non | Firefox Android Support complet 56 | Opera Android Aucun support Non | Safari iOS Support complet 11 | Samsung Internet Android Aucun support Non | nodejs Aucun support Non |
Collator | Chrome Support complet 24 | Edge Support complet Oui | Firefox Support complet 29 | IE Support complet 11 | Opera Support complet 15 | Safari Support complet 10 | WebView Android Aucun support Non | Chrome Android Support complet 26 | Edge Mobile Support complet Oui | Firefox Android Support complet 56 | Opera Android ? | Safari iOS Support complet 10 | Samsung Internet Android Support complet Oui | nodejs ? |
DateTimeFormat | Chrome Support complet 24 | Edge Support complet Oui | Firefox Support complet 29 | IE Support complet 11 | Opera Support complet 15 | Safari Support complet 10 | WebView Android Aucun support Non | Chrome Android Support complet 26 | Edge Mobile Support complet Oui | Firefox Android Support complet 56 | Opera Android ? | Safari iOS Support complet 10 | Samsung Internet Android Support complet Oui | nodejs ? |
NumberFormat | Chrome Support complet 24 | Edge Support complet Oui | Firefox Support complet 29 | IE Support complet 11 | Opera Support complet 15 | Safari Support complet 10 | WebView Android Support complet 4.4 | Chrome Android Support complet 26 | Edge Mobile Support complet Oui | Firefox Android Support complet 56 | Opera Android Support complet 37 | Safari iOS Support complet 10 | Samsung Internet Android Support complet Oui | nodejs ? |
PluralRules | Chrome Support complet 63 | Edge Support complet Oui | Firefox Support complet 58 | IE Aucun support Non | Opera Support complet 50 | Safari Aucun support Non | WebView Android Support complet 63 | Chrome Android Support complet 63 | Edge Mobile Aucun support Non | Firefox Android Support complet 58 | Opera Android Support complet 50 | Safari iOS Aucun support Non | Samsung Internet Android Aucun support Non | nodejs Aucun support Non |
RelativeTimeFormat | Chrome Support complet 71 | Edge Aucun support Non | Firefox Support complet 65 | IE Aucun support Non | Opera ? | Safari Aucun support Non | WebView Android Support complet 71 | Chrome Android Support complet 71 | Edge Mobile Aucun support Non | Firefox Android Support complet 65 | Opera Android ? | Safari iOS Aucun support Non | Samsung Internet Android ? | nodejs Aucun support Non |
Légende
- Support complet
- Support complet
- Aucun support
- Aucun support
- Compatibilité inconnue
- Compatibilité inconnue
Voir aussi
- Introduction : 'The ECMAScript Internationalisation API
- Constructeurs
- Méthodes