有沒有辦法編輯/更改localeconv()
的默認區域設置?PHP更改區域設置?
我想使用money_format
函數,它工作正常,但我的語言/地區的語言環境不正確。
更確切地說,對克羅地亞來說,我們在數字之後使用貨幣符號,而不是像之前那樣在本地值中設置?
有沒有什麼方法可以編輯?或者至少手動檢查,更改值並將新值發送到setlocale()
?
工作在共享主機btw。
有沒有辦法編輯/更改localeconv()
的默認區域設置?PHP更改區域設置?
我想使用money_format
函數,它工作正常,但我的語言/地區的語言環境不正確。
更確切地說,對克羅地亞來說,我們在數字之後使用貨幣符號,而不是像之前那樣在本地值中設置?
有沒有什麼方法可以編輯?或者至少手動檢查,更改值並將新值發送到setlocale()
?
工作在共享主機btw。
如果有人有興趣,我使用我自己替換的money_format()
函數工作。 它基本上與添加的參數從here粘貼複製的forceRight和無空間
class Helper_Locales
{
public static function formatNumber($number, $isMoney=false, $forceRight=false, $noSpace=false) {
$lg = isset($lg) ? $lg : setlocale(LC_MONETARY, '0');
$ret = setLocale(LC_ALL, $lg);
setLocale(LC_TIME, 'Europe/Paris');
if ($ret===FALSE) {
echo "Language '$lg' is not supported by this system.\n";
return;
}
$LocaleConfig = localeConv();
forEach($LocaleConfig as $key => $val) $$key = $val;
// Sign specifications:
if ($number>=0) {
$sign = $positive_sign;
$sign_posn = $p_sign_posn;
$sep_by_space = $p_sep_by_space;
$cs_precedes = $p_cs_precedes;
} else {
$sign = $negative_sign;
$sign_posn = $n_sign_posn;
$sep_by_space = $n_sep_by_space;
$cs_precedes = $n_cs_precedes;
}
// Number format:
$n = number_format(abs($number), $frac_digits,
$decimal_point, $thousands_sep);
$n = str_replace(' ', ' ', $n);
switch($sign_posn) {
case 0: $n = "($n)"; break;
case 1: $n = "$sign$n"; break;
case 2: $n = "$n$sign"; break;
case 3: $n = "$sign$n"; break;
case 4: $n = "$n$sign"; break;
default: $n = "$n [error sign_posn=$sign_posn !]";
}
// Currency format:
$currency_symbol = strtolower($currency_symbol);
$m = number_format(abs($number), $frac_digits,
$mon_decimal_point, $mon_thousands_sep);
if ($sep_by_space && !$noSpace) $space = ' '; else $space = '';
if ($cs_precedes && !$forceRight) $m = "$currency_symbol$space$m";
else $m = "$m$space$currency_symbol";
$m = str_replace(' ', ' ', $m);
switch($sign_posn) {
case 0: $m = "($m)"; break;
case 1: $m = "$sign$m"; break;
case 2: $m = "$m$sign"; break;
case 3: $m = "$sign$m"; break;
case 4: $m = "$m$sign"; break;
default: $m = "$m [error sign_posn=$sign_posn !]";
}
if ($isMoney) return $m; else return $n;
}
}
的,什麼是錯http://php.net/manual/en/function.setlocale.php? – gd1 2011-04-26 13:38:03
setlocale沒有錯。只是它只接受語言字符串作爲參數。因此爲我的語言加載不正確的默認值 – ZolaKt 2011-04-26 13:44:11
您是否看過i18n PHP擴展? – Ethan 2011-04-26 14:28:23