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