我是西班牙人,在测试文本宽度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中的浮点值被解释为整数,因为荷兰语言环境希望在小数前使用逗号(,)而不是点(.)。我试过printf
、number_format
、floatval
。。。。一切都无济于事。1.50
始终打印为1.00
:(
当我将区域设置为:时
setlocale (LC_TIME, "Dutch");
我的工作日现在很好,我的浮点值也很好。