Цель состоит в том, чтобы обеспечить иностранным посетителям хороший пользовательский опыт (веб-сайт находится в США). Сайт использует JavaScript для создания отчетов с большим количеством содержимого c, и я хотел бы, чтобы пользователи видели данные, отформатированные с использованием их местных соглашений. Таким образом, я создаю прототип с использованием Intl.NumberFormat()
.
. Я предполагал, что смогу проверить, как пользователи из разных мест будут воспринимать сайт, изменив региональные и языковые настройки Windows 10, начиная с MDN. документы Intl.NumberFormat () :
В случае использования c без указания локали возвращается отформатированная строка в локали по умолчанию и с параметрами по умолчанию.
Однако, когда я изменил свои настройки на немецкий и немецкий, resolvedOptions()
по-прежнему возвращает значение locale
'en-US', и номер теста по-прежнему форматируется с использованием соглашений США.
В1: Почему «en-US», а не «de-DE»? Что я неправильно понимаю?
Q2: Как я могу проверить, как если бы я был международным пользователем?
Вот как я форматирую число и получение значения объекта locale
:
let n = '12345678.99';
let f = new Intl.NumberFormat();
let options = f.resolvedOptions();
console.log('locale = ', options.locale, '\t', 'n = ', f.format(n));
Отредактировано. Удален Q3.
JSFiddle для проверки нового NumberFormat ()