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

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);

1 ответ

Решение

На основе ответа из кода Получить валюту 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);
Другие вопросы по тегам