[英]LC_MONETARY it_IT@utf8 shows euro symbol before amount with PHP
將語言環境信息設置為:
$locale = 'it_IT';
$moneyFormat = '%n';
setlocale(LC_MONETARY, $locale.'.utf8');
$optionPrice = money_format($moneyFormat, floatval($option->optionPrice));
價格顯示為:
€ 23
代替
23 €
我已經找到了語言環境標識符p_sign_posn來設置貨幣符號的位置,但是我不知道如何修改它,顯然,對於IT語言環境,它默認設置為1。
誰能啟發我找到一個聰明的解決方案?
提前致謝。
編輯:意大利的語言環境顯然已安裝在系統上
vmamp@AMP30:~> locale -a | grep it
it_CH
it_CH.utf8
it_IT
it_IT.utf8
it_IT@euro
要使用支持區域設置的功能,您必須在計算機上安裝請求的區域設置。 如果未顯示請求的語言環境,則對setlocale
的調用將失敗,並且不會進行任何更改。
例如,我安裝了es_ES
語言環境,但沒有it_IT
:
setlocale(LC_MONETARY, 'es_ES.utf8');
echo money_format($moneyFormat, floatval(12))
// ⇒ 12,00 €
setlocale(LC_MONETARY, 'en_US.utf8');
echo money_format($moneyFormat, floatval(12))
// ⇒ $12.00
setlocale(LC_MONETARY, 'it_IT.utf8');
echo money_format($moneyFormat, floatval(12))
// FAIL!!!
// ⇒ $12.00
如您所見,后面的調用被忽略了( setlocale
返回0
)因此,您遇到的問題不是eurosign的位置;而是您的問題。 可能缺少安裝的it_IT
l10n。
對於意大利貨幣模式,您可以執行以下操作:
$ money = substr(money_format('%。2n',$ number),4)。 €';
給定$ number = 77500
你得到
77.500,00€
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.