Установка информации о локали как:
$locale = 'it_IT';
$moneyFormat = '%n';
setlocale(LC_MONETARY, $locale.'.utf8');
$optionPrice = money_format($moneyFormat, floatval($option->optionPrice));
Цена указана в виде:
€ 23
вместо
23 €
Я нашел идентификатор языкового стандарта p_sign_posn, чтобы установить положение символа валюты, но я не знаю, как его изменить, и, по-видимому, по умолчанию для ИТ-языкового стандарта установлено значение 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
.) Таким образом, проблема, с которой вы столкнулись, заключается не в позиции euroign; это скорее всего отсутствие it_IT
l10n установлен.
Других решений пока нет …