Gettext翻译用数字中的逗号代替小数点

问题描述:

好的,这里是我的问题,我有输入,用户可以在其中输入值,并将其传递给另一页上的变量。我使用的是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

我改变LC_ALL这改变了一切地方,数字等,以LC_MESSAGES这只是将我的文字,因为这是我所需要的固定它。我不需要本地化号码