Как получить код валюты из локали?

PHP имеет intl модуль, который позволяет некоторые интересные вещи, такие как получение символа валюты при использовании NumberFormatter учебный класс. Но это делает огромное предположение — у вас уже есть код валюты той валюты, для которой вы хотите получить символ.

Как получить код валюты для какой-либо конкретной локали?

Например: en_gb => gbp, en_us => usd, es_es => eur

Я делаю это, чтобы я мог использовать currencyFormat просмотр помощника в ZendFramework 2:

$locale = 'en_gb'; //from get parameter
$symbol = 'GBP'; //How do get this?

$this->serviceManager
->get('viewhelpermanager')
->get('currencyFormat')
->setLocale($locale)
->setCurrencyCode($symbol);

2

Решение

На основании ответа от Получить валютный код ISO 4217 на основе локали (Спасибо @avy за ссылку в комментарии),

$locale = 'en_gb'; //from $_GET parameter

//get symbol for this locale
$symbol = \NumberFormatter::create(
$locale,
\NumberFormatter::CURRENCY
)->getTextAttribute(\NumberFormatter::CURRENCY_CODE);

//Add locale to currency formatter so we get correct symbol and formatting
$this->serviceManager
->get('viewhelpermanager')
->get('currencyFormat')
->setLocale($locale)
->setCurrencyCode($symbol);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]