Seules les API standards de JavaScript sont abordées dans cette page.
Locale du navigateur
La locale préférée :
const preferredLocale = navigator.language;
La liste des locales configurées (expérimental, mais largement supporté) :
const preferredLocales = navigator.languages;
if (preferredLocales) {
const preferredLocale = preferredLocales[0];
}
Ne marche pas avec IE, mais on s’en fout. |
Dates
Le type principal pour manipuler des dates et heures est Date
.
Cet objet est universel. Au moment de sa convertion en texte, la locale et le fuseau horaire interviennent.
Pour la conversion en texte, on utilise la classe DateTimeFormat
.
let date = new Date(Date.UTC(2000, 11, 31));
let locale = 'fr-FR';
let format = { year: 'numeric', month: '2-digit', day: '2-digit' };
let textContent = new Intl.DateTimeFormat(locale, format).format(date); // 31/12/2000
let date = new Date(Date.UTC(2000, 11, 31));
let locale = 'en';
let format = { dateStyle: 'medium' };
let textContent = new Intl.DateTimeFormat(locale, format).format(date); // Dec 31, 2000
Durées
Pour la mise en forme des durées, on utilise la classe RelativeTimeFormat
.
Nombres
Pour la conversion de nombres en texte, on utilise la classe NumberFormat
.
let number = 1234.567;
let locale = 'fr';
let textContent = new Intl.NumberFormat(locale).format(number); // 1 234,567
let number = 1234.567;
let locale = 'en';
let format ={ style: 'currency', currency: 'EUR' };
let textContent = new Intl.NumberFormat(locale, format).format(number); // €1,234.57
Listes
Pour la mise en forme des énumérations, on utilise la classe ListFormat
.
let list = ['aaa', 'bbb', 'ccc'];;
let locale = 'en';
let format = { type: 'disjunction' };
let textContent = new Intl.ListFormat(locale, format).format(number); // aaa, bbb, or ccc
Pluriels
Pour les formes plurielles, on utilise la classe PluralRules
.
Ses cas d’usage sont moins évidents.
let locale = 'en';
let one = new Intl.PluralRules(locale).select(1); // one
let one = new Intl.PluralRules(locale).select(2); // other