Localizarea denumirilor cu Intl.DisplayNames
Obiectul Intl.DisplayNames permite localizarea denumirilor, în special, a numelor de țări și regiuni, limbi, anumite alte denumiri. Constructorul său poate accepta doi parametri:
Intl.DisplayNames([locales[, options]])
Parametrul locales reprezintă codul limbii în format BCP 47 sau un set de coduri de limbi.
Parametrul options reprezintă un set suplimentar de opțiuni:
- localeMatcher: algoritmul de potrivire. Poate fi "lookup" sau "best fit". Implicit este "best fit"
- style: lungimea șirului formatat. Valorile posibile sunt: "long", "short", și "narrow". Implicit este "long"
- type: tipul de nume care vor fi localizate. Valorile posibile:
1) "language": returnează numele limbii 2) "region": returnează numele țării/regiunii 3) "script": returnează numele scriptului scris 4) "currency": returnează numele monedei
- fallback: setează opțiunea de rezervă. Valorile posibile sunt: "code" și "none". "code" indică codul care definește numele localizat.
Numele specific care va fi localizat este specificat prin metoda of(). În această metodă se transmite codul numelui. Metoda returnează denumirea localizată.
Să examinăm câteva exemple:
const USAInEnglish = new Intl.DisplayNames("en", {type: "region"}).of("US");
const USAInRomanian = new Intl.DisplayNames("ro", {type: "region"}).of("US");
console.log(USAInEnglish); // United States
console.log(USAInRomanian); // Statele Unite
Aici obținem două denumiri pentru aceeași țară - SUA. Pentru constanta USAInEnglish se utilizează codul de cultură "en", adică vom obține numele în limba engleză. Parametrul type: "region" indică faptul că dorim să obținem numele unei țări/regiuni.
Apoi, apelăm metoda of(), în care transmitem valoarea "US" - codul care înseamnă că dorim să obținem numele pentru SUA. În final, obținem numele SUA în limba engleză - "United States".
Constanta USAInRomanian obține, de asemenea, numele țării folosind codul "US", dar în limba română.
Obținerea denumirii unei regiuni
Pentru a obține numele unei regiuni (acesta poate fi numele unei țări sau al unei regiuni geografice) se utilizează parametrul type: "region". Pentru a obține numele regiunii, în metoda of() se transmite codul regiunii. Ca cod al regiunii poate servi codul ISO-3166 de două litere (de exemplu, US, RO, DE etc.) sau codul numeric de trei cifre UN M49.
De exemplu, utilizăm codul "DE" pentru a obține numele Germaniei în diferite limbi:
const GermanyInEnglish = new Intl.DisplayNames("en", {type: "region"}).of("DE");
const GermanyInRomanian = new Intl.DisplayNames("ro", {type: "region"}).of("DE");
const GermanyInGerman = new Intl.DisplayNames("de", {type: "region"}).of("DE");
console.log(GermanyInEnglish); // Germany
console.log(GermanyInRomanian); // Germania
console.log(GermanyInGerman); // Deutschland
Obținerea denumirii unui script
Pentru a obține numele unui script scris se utilizează valoarea type: "script". Pentru a obține numele scriptului, în metoda of() se transmite codul ISO-15924 de patru litere. De exemplu:
const CyrlInEnglish = new Intl.DisplayNames("en", {type: "script"}).of("Cyrl");
const CyrlInRomanian = new Intl.DisplayNames("ro", {type: "script"}).of("Cyrl");
console.log(CyrlInEnglish); // Cyrillic
console.log(CyrlInRomanian); // chirilic
Obținerea denumirii unei limbi
Pentru a obține numele unei limbi se utilizează valoarea type: "language", iar în metoda of() se transmite codul limbii în format languageCode[-scriptCode][-regionCode](-variant), unde componenta languageCode reprezintă codul de două litere al limbii conform ISO 639-1 sau codul de trei litere conform ISO 639-2. Componentele opționale scriptCode și regionCode sunt codurile scriptului și regiunii discutate anterior.
De exemplu:
const enRomanian = new Intl.DisplayNames("en", {type: "language"}).of("ro");
const roRomanian = new Intl.DisplayNames("ro", {type: "language"}).of("ro");
const deRomanian = new Intl.DisplayNames("de", {type: "language"}).of("ro");
console.log(enRomanian); // Romanian
console.log(roRomanian); // română
console.log(deRomanian); // Rumänisch
Utilizarea codului limbii împreună cu codul regiunii:
const roLang = new Intl.DisplayNames("ro", {type: "language"});
const enUS = roLang.of("en-US");
const enGB = roLang.of("en-GB");
console.log(enUS); // engleză americană
console.log(enGB); // engleză britanică
Obținerea denumirii unei monede
Pentru a obține numele unei monede se utilizează valoarea type: "currency", iar în metoda of() se transmite codul ISO 4217 de trei litere. De exemplu:
const roLang = new Intl.DisplayNames("ro", {type: "currency"});
const usd = roLang.of("USD");
const euro = roLang.of("EUR");
const ruble = roLang.of("RON");
console.log(usd); // dolar american
console.log(euro); // euro
console.log(ron); // leu românesc