Хотите получить региональные настройки пользователя для валюты в JavaScript или jQuery?

Я пытаюсь отформатировать некоторые числа с помощью jQuery. Я хотел бы получить региональные настройки пользователя для валюты и числа, чтобы реализовать правильный формат (получить десятичный разделитель).

Можно ли получить эти параметры с помощью jQuery или JavaScript?


person coeurdange57    schedule 06.11.2015    source источник
comment
2343.4 .toLocaleString() покажет вам десятичное число в большинстве браузеров и тысячи, по крайней мере, в Chrome...   -  person dandavis    schedule 06.11.2015


Ответы (2)


Используйте Number.toLocaleString() с style:'currency':

(73.57).toLocaleString('de-DE',{style:'currency',currency:'EUR'}); // German: 73,57 €
(73.57).toLocaleString('en-US',{style:'currency',currency:'EUR'}); // American: €73.57

Обратите внимание, что:

  • Это не получает региональные настройки, а обеспечивает вывод в региональных настройках.
  • Если вы хотите, чтобы ваш язык определялся динамически, используйте navigator.language. .
  • Помимо этого нативного подхода существует множество других средств; для начала взгляните на accounting.js или ответы Stack Overflow как этот.

Как Дэниел Джексон прокомментировал:

Использование Intl.NumberFormat.format()< /a>, вы можете добиться идентичных результатов с помощью NumberFormat и общий Intl объекты, предлагающие универсальные варианты и методы с основным акцентом на языковую чувствительность.

new Intl.NumberFormat('de-DE',{style:'currency',currency:'EUR'}).format(73.57); // DE: 73,57 €
new Intl.NumberFormat('en-US',{style:'currency',currency:'EUR'}).format(73.57); // US: €73.57
person dakab    schedule 06.11.2015
comment
святая корова, когда это пробралось в JS? даже имеет поддержку IE11. супер, просто супер. - person dandavis; 06.11.2015
comment
Это не отвечает на вопрос. Вопрос заключался в том, как получить настройки валюты, а не в том, как отформатировать валюту. - person raarts; 30.06.2017
comment
@raarts: Форматирование было фактической целью («отформатировать некоторые числа»), и, поскольку нет (собственного) способа вывода применимых параметров, это было первое замечание, которое я дал. Кроме того, если вам нужны эти «региональные параметры» любой ценой, вы всегда можете их извлечь: let decimalSeparator = (1.23).toLocaleString(navigator.language,{style:'currency',currency:'EUR'}).match(/1(.)23/)[1];. Однако обратите внимание, что я уже рассматривал это в перспективе, просто прочитайте «Обратите внимание». - person dakab; 30.06.2017
comment
Я делаю, "$250".toLocaleLowerCase('en-GB', { style: 'currency', currency: 'EUR' }) но независимо от того, что я пытаюсь ввести, на выходе всегда 250 долларов. Я также пробовал toLocaleString() и получил тот же результат. - person Daniel Jackson; 15.01.2020
comment
Однако я заставил это работать var formatter = new Intl.NumberFormat('en-GB', { style: 'currency', currency: 'EUR', }); console.log(formatter.format('2500')); - person Daniel Jackson; 15.01.2020
comment
Параметры NumberFormat требуют, чтобы если style:currency, то currency:<something>. Теперь, как найти ‹что-то› текущего пользователя? Это должен быть код валюты ISO 4217. developer.mozilla.org/en- США/документы/Интернет/JavaScript/Справочник/ - person Juan Lanus; 26.02.2020

Для этого есть плагин jQuery — https://github.com/dansingerman/jQuery-Browser-Language

См. этот ответ SO для получения дополнительной информации JavaScript для определения предпочтения языка браузера

person David Votrubec    schedule 06.11.2015