Мое понимание проблемы до сих пор:
Я читаю этот документ MDN , в котором говорится:
Аргумент locales после удаления всех расширений Unicode интерпретируется как приоритетный запрос от приложения. Среда выполнения сравнивает его с доступными локалями и выбирает лучший из доступных. Существуют два алгоритма сопоставления: сопоставитель «lookup» следует алгоритму Lookup, указанному в BCP 47; средство наилучшего соответствия позволяет среде выполнения предоставлять языковой стандарт, который хотя бы, но, возможно, больше подходит для запроса, чем результат алгоритма «Уточняющий запрос». Если приложение не предоставляет аргумент locales или у среды выполнения нет локали, соответствующей запросу, используется локаль по умолчанию среды выполнения. Соответствующий может быть выбран с помощью свойства аргумента options (см. Ниже).
Когда я читаю это, оказывается, что я могу использовать «поиск» и «наилучшее соответствие» одинаково, иногда получая разные результаты.
Тем не менее
Я могу сделать:
new Intl.DateTimeFormat('lookup', options).format(date)
Но не:
new Intl.DateTimeFormat('best fit', options).format(date)
Я использую текущую версию Firefox (64.0-разрядная версия 65.0.1 в Ubuntu), и, насколько я могу судить, у Firefox нет открытых ошибок по этому вопросу, но я получаю RangeError, когда использую 'best fit'
.
Остальные вопросы:
Могу ли я дать 'best fit'
в качестве аргумента локали или я могу использовать его только как localeMatcher
в аргументе options
? Если я могу использовать только 'best fit'
внутри options
, то что я должен указать в качестве locale
, учитывая, что locale
требуется, когда присутствует options
?
Или мне просто открыть билет в Бугзилле?