8

我试图用 生成一个本地化的日期字符串strftime,我使用的占位符是%x。语言/区域设置是setlocale(LC_ALL, array('jp','japanese')),但是两个区域设置都不可用,因此它生成了一个包含不正确字符的字符串。然后我安装了ja_JP.utf8语言环境并将其指定为数组中的第一个元素,并且我遇到的日期格式问题得到了解决。

我的问题是,我应该总是依赖安装的语言环境吗?我知道如何将它们安装在我有 root 访问权限的盒子上,但是如果我没有访问权限怎么办?

我相信Zend_Locale并且Zend_Translate根本不依赖,setlocale而是以某种方式在内部进行,这给我的印象是它对于企业级应用程序实际上是不可行的。

我知道我可能会在我的应用程序中使用Zend_LocaleZend_Translate,但它也需要支持 PHP4,至少再过一年,这就是为什么我不能完全依赖这些。

4

3 回答 3

8

如果我对 setlocale() 的检查是正确的,答案是:不,不。安装的语言环境的范围各不相同,它们的名称也是如此,并且最终无法完全确定地预测某个语言环境的可用性。

于 2009-12-21T19:09:53.357 回答
7

您可以检查 setlocale 的返回值,并至少检查它是否已安装。否则,您将遇到静默失败:

setlocale(LC_ALL, 'en_US') or die('Locale not installed');
于 2015-05-07T02:42:35.907 回答
0

可行,可以。聪明,一点也不!

于 2009-12-21T19:19:01.170 回答