我已经在我的网络服务器上安装了荷兰本地(nl_NL utf8
)(当我执行locale -a
我看到nl_NL utf8
所以这是好事)。setlocale()返回false
但是,我网页上的日期是英文的(我把setlocale(LC_ALL, 'nl_NL');
放在了我的页面顶部)。我在编译php之后安装了一个语言环境包时已经阅读,我必须重新编译php。
但是,有没有其他解决方案,没有重新编译php,让它工作?
谢谢!
我已经在我的网络服务器上安装了荷兰本地(nl_NL utf8
)(当我执行locale -a
我看到nl_NL utf8
所以这是好事)。setlocale()返回false
但是,我网页上的日期是英文的(我把setlocale(LC_ALL, 'nl_NL');
放在了我的页面顶部)。我在编译php之后安装了一个语言环境包时已经阅读,我必须重新编译php。
但是,有没有其他解决方案,没有重新编译php,让它工作?
谢谢!
这可以通过设计:setlocale()
不会自动改变使用date()
和strftime()
日期输出的格式的输出。它所做的是本地化工作日和月份名称,但没有别的。
你能举例说明你如何输出日期,以及它们如何转换失败?
我正在使用Smarty(即:{$ memberdate | date_format:“%A,%d%B%Y”}),但我在另一个web服务器上使用了相同的代码,没有任何问题(在编译php之前已经安装了语言环境文件)。 – Arjen 2010-09-12 09:19:11
@Arjen啊,我明白了。然后我的回答没有排序。添加语言环境需要*重新安装* PHP对我来说听起来有点奇怪,但是:是官方信息吗? – 2010-09-12 09:25:54
见http://www.php.net/manual/en/function.setlocale.php#86246 – Arjen 2010-09-12 09:27:22
我在这里总结了我发现面临类似问题的原因,因为在这里显然没有建设性的答案(错误的答案,的确如此:setlocale()
确实会改变strftime()
的输出),并且对其他人可能有用。
返回值
返回当前新的语言环境,或FALSE如果区域功能 是不是你的平台上实现,指定的语言环境不 存在或类别名称为无效。
所以对于diagnosys,首先检查正确的区域设置安装(nl_NL,nl_NL.UTF-8等),或者使用一个壳或PHP system('locale -a')
。在一些Ubuntu系统上有一个脚本来安装一个语言环境,例如。 /usr/share/locales/install-language-pack nl_NL
,但也可以考虑使用apt-get进行安装。 (对于异国语言环境,还要检查是否支持语言环境:在某些系统/usr/share/i18n/SUPPORTED
上)。
然后你可以使用var_dump(setlocale('nl_NL'));
得到setlocale()的输出(因为setlocale()
本身不输出任何东西)。
对于固化可能是再生区域与区域设置根nl_NL,nl_NL
此后,update-locale
(和dpkg-reconfigure locales
)可以在某些系统是需要的。
在我看来,'setlocale()'是一个*灾难*,因为它没有一致的区域设置命名方案 - 它们因服务器而异。我全心全意地推荐寻找诸如Zend Framework的[本地化功能](http://framework.zend.com/manual/en/zend.locale.parsing.html)的替代方案。 – 2010-09-12 09:15:37