猿问

PHP setlocale无效


该setlocale()功能未设置所需的语言(德语)。


目标是输出月份名称。


这是我到目前为止的测试代码:


<?php


date_default_timezone_set('Europe/Berlin');

setlocale(LC_ALL, 'de_DE.utf8');

// Or

setlocale(LC_ALL, 'de_DE@euro');

// Or

setlocale(LC_ALL, 'de_DE');

// Or

setlocale(LC_ALL, 'de');

// Or

setlocale(LC_ALL, 'ge');



echo strftime('%B');

输出:


六月


代替


朱尼


有什么建议么?


我没有SSH或其他Shell访问权限。

该脚本在Linux服务器上运行。

PHP 5.6版


aluckdog
浏览 539回答 3
3回答

30秒到达战场

运行脚本的服务器上很可能未安装德语语言环境-您是否具有对服务器的Shell访问权限?然后尝试locale -a查看安装了哪些语言环境。在这里也可以看看依靠setlocale和依靠所安装的语言环境是否可行?

MMTTMM

您的代码是正确的。您可能只需要在运行脚本的服务器上安装正确的语言包即可。在终端中,如果在运行命令后未列出要使用的语言sudo locale -a,则必须通过运行以下命令来安装缺少的语言:sudo /usr/share/locales/install-language-pack de_DE&nbsp;(sudo如果您的用户具有root权限,则这是可选的)然后,如果您仔细检查,sudo locale -a应该会看到de_DE.utf8。如果要安装法语包运行sudo /usr/share/locales/install-language-pack fr_FR然后,您将被允许使用setlocale(...)与您完全相同的方式在PHP中为这些语言设置语言。注意: 如果您位于非utf8项目中,则需要从已安装的软件包中生成其他格式。这是在ubuntu上进行的方法(在debian上也是如此):编辑/var/lib/locales/supported.d/cs并添加以下行&nbsp; fr_FR.iso88591 ISO-8859-1&nbsp; fr_CA.iso88591 ISI-8859-1并运行&nbsp;sudo dpkg-reconfigure locales然后通过再次运行,sudo locale -a您应该在列表中同时看到fr_FR.iso88591和fr_CA.iso88591,您可以通过调用在php中使用它setlocale(LC_ALL, 'fr_FR.iso88591');
随时随地看视频慕课网APP
我要回答