Как установить валюту для setlocale / money_format в PHP - PullRequest
0 голосов
/ 21 июня 2019

setlocale принимает страну и язык в качестве параметров.

'money_format' принимает сумму и другие параметры.

Но как я могу сообщить валюту PHP?

Что если я хочу использовать евро в Австралии?

как javascript может:

var formatter = new Intl.NumberFormat('en-AU', {
  style: 'currency',
  currency: 'EUR',
});
formatter.format(2500);

Chrome, очевидно, понимает, что это иностранная валюта, которую необходимо отформатировать в international currency format примерно так: "EUR 2,500.00".

IE не понимает этого, но предлагает что-то "€2,500.00"

PHP (вот как я это использую)

setlocale(LC_MONETARY, 'en-AU');
return money_format('%.2n', 2500);

дает "$2,500.00" (я знаю, что это Ubuntu следует обвинить)

Для Австралии требуется определенная валюта по умолчанию, и я не могу найти способ ее изменить. Есть ли какая-нибудь библиотека форматирования или что-то, чего мне не хватает, что может помочь?

Java-скрипт не требует отдельной установки локалей, как это делает Ubuntu. Может быть, мы должны полагаться на браузеры в этом случае?

1 Ответ

0 голосов
/ 21 июня 2019

Вместо этого вы можете использовать NumberFormatter в расширении intl.

$fmt = new NumberFormatter('en_AU.UTF8', NumberFormatter::CURRENCY);
print $fmt->formatCurrency(2500, 'EUR');

И не требуется устанавливать каждую локаль отдельно, поскольку она поставляется с собственными данными локали.

...