gettext只能用PHP翻译成英语


gettext only translate to English in PHP

我是西班牙人,在测试文本宽度PHP时,我只把它翻译成英语。我得到了这样的文件结构:

locale/en_US/LC_MESSAGES/con los ficheros messages.mo y messages.po
locale/es_ES/LC_MESSAGES/con los ficheros messages.mo y messages.po
locale/fr_FR/LC_MESSAGES/con los ficheros messages.mo y messages.po

每个文件都有翻译成每种语言的关键词"Servicios"。

在PHP中,我有这样的代码:

<?php
putenv("LANG=en_US");
setlocale(LC_ALL, "en_US");
bindtextdomain("messages", "locale");
textdomain("messages");
?>

当我把代码"en_US"放进去时,显示出了良好的翻译,但当我把它改为"es_es"或"fr_fr"时:

<?php
putenv("LANG=es_ES");
setlocale(LC_ALL, "es_ES");
?>

<?php
putenv("LANG=fr_FR");
setlocale(LC_ALL, "fr_FR");
?>

仍显示英文的翻译

我正在开发Widnows 7和功能

echo $_SERVER['HTTP_ACCEPT_LANGUAGE'] ; 

返回到es es,es;q=0.8始终,

可能是哪个问题?感谢

运行脚本的服务器上很可能没有安装这些语言-您是否有访问服务器的shell权限?然后尝试

locale -a

查看安装了哪些区域设置。也可以看看这里,依赖setlocale和正在安装的locale是否可行?

注意:

小心LC_ALL设置,因为它可能会引入一些不需要的转换。例如,我使用

setlocale (LC_ALL, "Dutch");

把我平日的荷兰语写在纸上。从那一刻起(正如我在几个小时后发现的那样),MYSQL中的浮点值被解释为整数,因为荷兰语言环境希望在小数前使用逗号(,)而不是点(.)。我试过printfnumber_formatfloatval。。。。一切都无济于事。1.50始终打印为1.00:(

当我将区域设置为:时

setlocale (LC_TIME, "Dutch");

我的工作日现在很好,我的浮点值也很好。