如何在Ubuntu上安装php本地化字符串

时间:2013-12-19 14:15:14

标签: php localization

我在本地计算机上运行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版本有效?

2 个答案:

答案 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');