Локализация названий и Intl.DisplayNames

Последнее обновление: 14.09.2021

Объект Intl.DisplayNames позволяет локализовать названия, в частности, названия стран и регионов, языков, некоторых других наименований. Его конструктор может принимать два параметра:

Intl.DisplayNames([locales[, options]])

Параметр locales представляет код языка в формате BCP 47 или набор языковых кодов.

Параметр options представляет дополнительный набор опций:

  • localeMatcher: алгоритм поиска соответствий. Может принимать два значения: "lookup" и "best fit". Значение по умолчанию - "best fit".

  • style: длина форматируемой строки. Возможные значения: "long", "short" и "narrow" (например, A, B,C). Значение по умолчанию - "long"

  • type: тип названий, которые будут локализованы. Возможные значения:

    • "language": возвращает название языка

    • "region": возвращает название страны/региона

    • "script": возвращает название письменного скрипта

    • "currency": возвращает название валюты

  • fallback: задает альтернативнй вариант. Возможные значения: "code" и "none". "code" задает код, который определяет локализуемое название.

Какое именно название будет локализоваться, задается с помощью метода of(). В этот метод передается код названия. Метод возвращает локализованное наименование.

Рассмотрим несколько примеров:

const USAInEnglish = new Intl.DisplayNames("en", {type: "region"}).of("US");
const USAInRussian = new Intl.DisplayNames("ru", {type: "region"}).of("US");

console.log(USAInEnglish);	// United States
console.log(USAInRussian);	// Соединенные Штаты

Здесь получаем два названия для одной и той же страны - США. Для константы USAInEnglish применяет код культуры "en", то есть мы будем получать название на английском. Параметр type: "region" указывает, что мы хотим получить название страны.региона. Далее у соданного объекта вызываем метод of(), в который передается значение "US" - это код, который означает, что мы хотим получить название для USA. В итоге мы получим название USA на английском языке - "United States".

А константа USAInRussian также получает название страны по коду "US", только на русском языке.

Получение название региона

Для получения названия региона (это может быть название страны или название географического региона) применяется параметр type: "region". Для получения названия региона в метод of() передается код региона. В качестве кода региона может выступать код ISO-3166 из двух букв (например, US, RU, DE и т.д.) или трехчисловой код UN M49.

Например, используем код "DE" для получения названия Германии на разных языках:

const GermanyInEnglish = new Intl.DisplayNames("en", {type: "region"}).of("DE");
const GermanyInRussian = new Intl.DisplayNames("ru", {type: "region"}).of("DE");
const GermanyInGerman = new Intl.DisplayNames("de", {type: "region"}).of("DE");

console.log(GermanyInEnglish);	// Germany
console.log(GermanyInRussian);	// Германия
console.log(GermanyInGerman);	// Deutschland

Получение название письменности

Для получения названия письменного скрипта применяется значение type: "script". Для получения названия письменности в метод of() передается четырехбуквенный код ISO-15924. Например:

const CyrlInEnglish = new Intl.DisplayNames("en", {type: "script"}).of("Cyrl");
const CyrlInRussian = new Intl.DisplayNames("ru", {type: "script"}).of("Cyrl");

console.log(CyrlInEnglish);	// Cyrillic
console.log(CyrlInRussian);	// кириллица

Получение название языка

Для получения названия языка применяется значение type: "language", а в метод of() передается код языка в формате languageCode[-scriptCode][-regionCode](-variant), где компонент languageCode представляет двухбуквенный код языка в формате ISO 639-1 или трехбуквенный код в формате ISO 639-2. Необязательные компоненты scriptCode и regionCode - выше рассмотренные коды письменности и региона соответственно.

Например:

const enRussian = new Intl.DisplayNames("en", {type: "language"}).of("ru");
const ruRussian = new Intl.DisplayNames("ru", {type: "language"}).of("ru");
const deRussian = new Intl.DisplayNames("de", {type: "language"}).of("ru");

console.log(enRussian);	// Russian
console.log(ruRussian);	// русский
console.log(deRussian);	// Russisch

Используем код языка вместе с кодом региона:

const ruLang = new Intl.DisplayNames("ru", {type: "language"});
const enUS = ruLang.of("en-US");
const enGB = ruLang.of("en-GB");

console.log(enUS);	// американский английский
console.log(enGB);	// британский английский

Получение название валюты

Для получения названия валюты применяется значение type: "currency", а в метод of() передается трехбуквенный код ISO 4217. Например:

const ruLang = new Intl.DisplayNames("ru", {type: "currency"});
const usd = ruLang.of("USD");
const euro = ruLang.of("EUR");
const ruble = ruLang.of("RUB");

console.log(usd);		// доллар США
console.log(euro);		// евро
console.log(ruble);	// российский рубль
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850