Я использую PHP и хотел бы узнать, как получить валюту по умолчанию для локали через расширение Internationalization (Wrapper для библиотеки ICU)?
Ниже приведен сценарий, объясняющий, что и почему.
Мне нужно что-то, чтобы заменить функцию getCurrCode()
на.
$accepted_currencies = array('USD','EUR');
$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
if( ! empty($locale)){
Locale::setDefault($locale);
$currency = getCurrCode();
if( ! in_array($currency, $accepted_currencies)){
$currency = 'USD';
}
}else{
Locale::setDefault('en_US');
}
$fmt = new NumberFormatter( $locale, NumberFormatter::CURRENCY );
$price = $fmt->formatCurrency(1234567.891234567890000, $currency);
Я знаю, я мог бы использовать setlocale(LC_MONETARY, $locale);
, но это означает, что я должен установить все локали на Linux и иметь дело с вариациями дистрибутивов Linux. Какой смысл использовать Intl на первом месте?