我在本地计算机上运行apache webserver,并且php内置日期本地化在那里不起作用。 如strftime documentation中所述,以下代码应以不同语言显示当天:
setlocale(LC_TIME, "C");
echo strftime("%A translates to ");
setlocale(LC_TIME, "fr_FR");
echo strftime("%A in French");
但我得到:“星期四用法语翻译成星期四”。
在另一个(配置良好的)服务器上,相同的代码返回:“Thursday转换为法语中的jeudi”。我认为我的语言环境机器缺少一些php法语字符串,但我找不到如何安装它。
我使用PHP版本5.3.10-1ubuntu3.9。 这是locale -a命令的(截断的)输出:
C
C.UTF-8
...
fr_FR.utf8
...
POSIX
fr_FR
缺席但fr_FR.utf8
已存在。
修改:
我必须使用setlocale(LC_TIME, "fr_FR.utf8");
才能使其正常运行。如何使fr_FR
版本有效?
答案 0 :(得分:1)
法语语言包似乎尚未安装。您可以添加任意数量的语言包:
sudo dpkg-reconfigure locales
答案 1 :(得分:0)
它认为语言包在不同的服务器上没有完全相同的名称(取决于操作系统,版本,已安装的软件包,......?)。对于法语,有时它只是fr_FR
,有时是fr_FR.utf8
,有时是fr_FR.UTF8
,...
幸运的是,php setlocale函数负责处理这种情况,并接受语言环境名称列表。因此,您可以指定所有这些不同的名称,php将获得第一个正确的名称。
setlocale('fr_FR', 'fr_FR.utf8', 'fr_FR.UTF8', 'French');