2015-02-06 52 views
0

好的,這裏是我的問題,我有輸入,用戶可以在其中輸入值,並將其傳遞給另一頁上的變量。我使用的是gettext,所以我的語言是英文,中文,西班牙文和俄文。當我用英語我的號碼是像這樣:Gettext翻譯用數字中的逗號代替小數點

£23.50

但是,當我的用戶改變語言爲西班牙語,小數被替換爲逗號,這樣的數字是,像這樣:

£ 2350。

這兩個數字是相同的嗎?只是看着他們,看起來不像他們,但我的系統是怎麼做到的?有沒有解決辦法?當他們選擇一種語言來啓動gettext時,我通過cookie設置他們的本地人。

這裏是我的gettext翻譯代碼:

include(APP."/libs/languages/libs/streams.php"); 
include(APP."/libs/languages/libs/gettext.php"); 

define('LOCALE', 'en_GB'); 

define('SESSION_LOCALE_KEY', 'locale'); 
define('DEFAULT_LOCALE', 'en_GB'); 
define('LOCALE_REQUEST_PARAM', 'lang'); 
define('WEBSITE_DOMAIN', 'messages'); 

if (array_key_exists(LOCALE_REQUEST_PARAM, $_REQUEST)) { 
    $current_locale = $_REQUEST[LOCALE_REQUEST_PARAM]; 
    $_COOKIE[SESSION_LOCALE_KEY] = $current_locale; 
} elseif (array_key_exists(SESSION_LOCALE_KEY, $_COOKIE)) { 
    $current_locale = $_COOKIE[SESSION_LOCALE_KEY]; 
} else { 
    $current_locale = DEFAULT_LOCALE; 
} 
//will eventually stick this all in the model file 
putenv("LC_ALL=$current_locale"); 
setlocale(LC_ALL, $current_locale); 
bindtextdomain(WEBSITE_DOMAIN, $_SERVER['DOCUMENT_ROOT'] . '/lang'); 
bind_textdomain_codeset(WEBSITE_DOMAIN, 'UTF-8'); 
textdomain(WEBSITE_DOMAIN); 
+0

我想你的意思是'23,50'而不是'2,350'?如果是這樣,那麼是的,它們是相同的(當用作字符串時)。有些國家使用逗號作爲小數點分隔符,有些使用點。千位分隔符也有差異。 – enricog 2015-02-06 07:01:28

+0

沒有,它實際上改變他們爲2,350,我不知道爲什麼。 – 2015-02-06 07:02:41

+0

我幾乎可以肯定,'gettext()'不會移動小數點分隔符只是踢。再次,你沒有提到你是如何打印這些數字的。 – 2015-02-06 07:19:27

回答

0

我改變LC_ALL這改變了一切地方,數字等,以LC_MESSAGES這只是將我的文字,因爲這是我所需要的固定它。我不需要本地化號碼