gettext只能在PHP中翻译成英文

时间:2014-10-01 12:55:42

标签: php gettext

我是西班牙语,并且正在测试文本宽度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");
?>

当我把代码&#39; en_US&#39;显示良好的翻译,但当我将其更改为&#39; es_ES&#39;或者&#39; fr_FR&#39;那样:

<?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'] ; 

返回 &#34; ES-ES,ES; Q = 0.8&#34; 总是,

可能是哪个问题? 谢谢

1 个答案:

答案 0 :(得分:0)

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

locale -a

查看安装了哪些区域设置。另请查看Is it feasible to rely on setlocale, and rely on locales being installed?

注意:

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

setlocale (LC_ALL, "Dutch");

在页面上用荷兰语获得我的工作日。从那一刻起(我发现很多小时后)我的MYSQL中的浮点值被解释为整数,因为荷兰语语言环境需要逗号(,)而不是小数点前的点(。)。我尝试了printfnumber_formatfloatval ....但都无济于事。 1.50始终打印为1.00 :(

当我将我的语言环境设置为:

setlocale (LC_TIME, "Dutch");

我的工作日现在很好,我的浮点价值也是如此。