Intl.getCanonicalLocales / supportedValuesOf în JavaScript

Formatare regională (Intl) ES2016 (supportedValuesOf: ES2022)

Corectează codurile de limbă și listează valorile suportate: monede, fusuri orare, calendare.

Sintaxă
Intl.getCanonicalLocales(coduri)
Intl.supportedValuesOf(cheie)

Ce face Intl.getCanonicalLocales / supportedValuesOf

Intl.getCanonicalLocales aduce codurile de limbă la forma standard ("RO-ro" → "ro-RO"), elimină duplicatele și aruncă RangeError pentru coduri invalide.

Intl.supportedValuesOf(cheie) returnează tabloul valorilor suportate de mediul curent pentru "calendar", "collation", "currency", "numberingSystem", "timeZone" sau "unit". Este util pentru liste de selecție (de exemplu toate fusurile orare).

Parametri

Parametru Descriere
coduri Un cod de limbă sau un tablou de coduri.
cheie Tipul de valori listate.

Ce returnează

Un tablou de texte.

Exemple

Exemplul 1: Coduri corectate și valori disponibile

console.log(Intl.getCanonicalLocales(["RO-ro", "en-us", "ro-RO"]));
try {
  Intl.getCanonicalLocales("română");
} catch (e) {
  console.log(e.name);
}

const fusuri = Intl.supportedValuesOf("timeZone");
console.log(fusuri.filter((f) => f.startsWith("Europe/B")));
console.log(Intl.supportedValuesOf("currency").includes("RON"), Intl.supportedValuesOf("unit").slice(0, 4));

Rezultat

[ 'ro-RO', 'en-US' ]
RangeError
[
  'Europe/Belgrade',
  'Europe/Berlin',
  'Europe/Bratislava',
  'Europe/Brussels',
  'Europe/Bucharest',
  'Europe/Budapest',
  'Europe/Busingen'
]
true [ 'acre', 'bit', 'byte', 'celsius' ]

Greșeli frecvente

  • Construiești o listă fixă de fusuri orare în cod. Lista se schimbă în timp; citește-o cu Intl.supportedValuesOf("timeZone").

Comenzi înrudite

  • Intl.Locale: Descrie o limbă și o regiune (ro-RO) și oferă informații despre ea: calendar, prima zi a săptămânii, fusuri orare.
  • Intl.DisplayNames: Traduce coduri de țări, limbi, monede și scripturi în nume afișabile: „DE” → „Germania”.
  • Intl.DateTimeFormat: Un formator de date și ore după regulile unei limbi, refolosibil pentru multe date.