Метод resolvedOptions() присутствует у большинства
форматирующих и локализационных объектов в Intl и
возвращает фактически применённую конфигурацию после всех этапов
разрешения локали, включая выбор языка, нормализацию параметров и
применение значений по умолчанию.
Возвращаемый объект является «снимком» итоговой конфигурации экземпляра и не отражает исходные аргументы конструктора напрямую, поскольку между входными параметрами и финальным состоянием могут происходить значительные преобразования, связанные с алгоритмом выбора локали и доступными данными среды выполнения.
Метод определён на прототипах большинства объектов
Intl.* и имеет одинаковую базовую цель: вернуть объект,
содержащий реальные параметры форматирования, выбранные движком после
обработки всех входных значений.
Ключевые свойства поведения:
ResolveLocaleresolvedOptions()
Метод не принимает аргументов. Вызов всегда возвращает объект с конкретными свойствами, зависящими от типа Intl-класса.
Один из наиболее информативных примеров — числовое форматирование.
const nf = new Intl.NumberFormat('ru-RU', {
style: 'currency',
currency: 'RUB'
});
nf.resolvedOptions();
Типичный результат:
{
locale: "ru-RU",
numberingSystem: "latn",
style: "currency",
currency: "RUB",
currencyDisplay: "symbol",
minimumFractionDigits: 2,
maximumFractionDigits: 2,
useGrouping: true,
notation: "standard",
signDisplay: "auto"
}
Фактически применённая локаль после fallback-механизма.
Система счисления, выбранная движком ("latn",
"arab", "deva" и др.).
Итоговый режим форматирования: decimal,
currency, percent, unit.
Присутствуют только при соответствующих стилях, даже если входной объект содержал дополнительные параметры.
Наиболее сложный по количеству скрытых преобразований вариант.
const dtf = new Intl.DateTimeFormat('en-US', {
year: 'numeric',
month: 'long',
day: '2-digit',
timeZone: 'UTC'
});
dtf.resolvedOptions();
Пример результата:
{
locale: "en-US",
calendar: "gregory",
numberingSystem: "latn",
timeZone: "UTC",
year: "numeric",
month: "long",
day: "2-digit",
hourCycle: "h23",
hour12: false
}
Может быть заменён системой локали, если явно не указан.
Нормализуется и возвращается в каноническом виде.
Часто выводится даже при использовании hour12, поскольку
движок приводит параметры к единой модели.
Используется для лексикографического сравнения строк с учётом локали.
const collator = new Intl.Collator('de-DE', {
sensitivity: 'base',
numeric: true
});
collator.resolvedOptions();
Пример результата:
{
locale: "de-DE",
usage: "sort",
sensitivity: "base",
ignorePunctuation: false,
numeric: true,
caseFirst: "false"
}
Определяет режим работы: sort или
search.
Может быть изменена движком в зависимости от локали и ICU правил.
Форматирование относительного времени (например, «через 2 дня»).
const rtf = new Intl.RelativeTimeFormat('ru', {
numeric: 'auto',
style: 'long'
});
rtf.resolvedOptions();
Пример:
{
locale: "ru",
numeric: "auto",
style: "long"
}
numeric может быть нормализованstyle всегда приводится к одному из допустимых
значенийИспользуется для правил множественного числа.
const pr = new Intl.PluralRules('en-US', {
type: 'ordinal'
});
pr.resolvedOptions();
Результат:
{
locale: "en-US",
type: "ordinal",
minimumIntegerDigits: 1,
minimumFractionDigits: 0,
maximumFractionDigits: 3,
pluralCategories: ["one", "two", "few", "other"]
}
Формируются на основе локали и ICU-таблиц, а не входных данных.
Форматирование списков.
const lf = new Intl.ListFormat('en-GB', {
style: 'long',
type: 'conjunction'
});
lf.resolvedOptions();
Результат:
{
locale: "en-GB",
style: "long",
type: "conjunction"
}
type влияет на синтаксис соединения элементовstyle определяет уровень формальностиСегментация текста (предложения, слова, графемы).
const seg = new Intl.Segmenter('ja', {
granularity: 'grapheme'
});
seg.resolvedOptions();
Пример результата:
{
locale: "ja",
granularity: "grapheme"
}
Фиксируется строго после нормализации:
graphemewordsentenceНесмотря на различия между классами, набор характеристик имеет общие закономерности.
Возвращаемый объект:
Почти все параметры проходят этап приведения:
en →
en-US)В итоговом объекте:
calendar)new Intl.NumberFormat('en', {
style: 'currency',
currency: 'usd'
});
{
locale: "en-US",
style: "currency",
currency: "USD",
currencyDisplay: "symbol",
numberingSystem: "latn",
minimumFractionDigits: 2,
maximumFractionDigits: 2,
useGrouping: true
}
Отличие проявляется в:
usd → USD)en → en-US)Если объект создаётся без опций:
const nf = new Intl.NumberFormat();
nf.resolvedOptions();
Результат:
Все значения формируются на основе ICU (International Components for Unicode), что определяет:
Движки часто кэшируют результат resolvedOptions,
поскольку:
Несмотря на различия классов, структура обычно включает:
localeМетод фактически отражает:
Это делает его источником точного состояния Intl-объекта после инициализации.