setlocale()返回false

Arj*_*jen 2 php linux setlocale

nl_NL utf8在我的网络服务器上安装了荷兰语local()(当我执行时,locale -a我看到nl_NL utf8这样就可以了).

但是,我网页上的日期是英文(我已放在setlocale(LC_ALL, 'nl_NL');我的页面顶部).我已经阅读了在编译php后安装locale包时,我必须重新编译php.

但有没有其他解决方案,没有重新编译PHP,让它工作?

谢谢!

mar*_*isa 10

我在这里总结了我遇到的类似问题,因为这里显然没有建设性的答案(错误的答案,确实:setlocale()确实改变了输出strftime()),这对其他人有用.

PHP手册

返回值

返回新的当前语言环境,如果平台上未实现语言环境功能,指定的语言环境不存在或类别名称无效,则返回FALSE.

所以对于诊断,首先要检查是否安装了正确的语言环境(nl_NL,nl_NL.UTF-8等),使用shell或PHP system('locale -a').在一些ubuntu系统上有一个安装语言环境的脚本,例如./usr/share/locales/install-language-pack nl_NL但也可以考虑使用apt-get进行安装.(对于异国情调的语言环境,还要检查是否支持语言环境:在某些系统上/usr/share/i18n/SUPPORTED).

然后你可以使用setlocale()的输出var_dump(setlocale('nl_NL'));(因为setlocale()单独不输出任何东西).

治愈可能是用locale-gen nl_NL,nl_NL重新生成语言环境

此后,某些系统可能需要update-locale(和dpkg-reconfigure locales).


Pek*_*ica 3

这可能是设计使然:setlocale()不会自动更改使用和的日期输出格式的输出。它的作用是本地化工作日和月份名称,但没有其他作用。date()strftime()

您能否展示一些如何输出日期以及它们如何无法转换的示例?