我尝试使用strftime
生成本地化日期字符串,我使用的占位符为%x
。语言/区域设置为setlocale(LC_ALL, array('jp','japanese'))
,但这两种语言环境都不可用,因此它生成了一个包含不正确字符的字符串。然后我安装了ja_JP.utf8
语言环境,并指定它作为数组中的第一个元素,并解决了我的日期格式问题。
我的问题是,我是否应该始终依赖于安装的语言环境?我知道如何在我有root权限的盒子上安装它们,但是如果我没有访问权限呢?
我相信Zend_Locale
和Zend_Translate
完全不依赖于setlocale
,而是以某种方式在内部进行,这让我觉得它对企业级应用程序来说实际上并不可行。
我知道我可以在我的应用程序中使用Zend_Locale
和Zend_Translate
,但它也需要支持PHP4,至少在另一年,这就是为什么我不能单独依赖它们。
答案 0 :(得分:6)
如果我对setlocale()的检查是正确的,答案是:不,不。安装的语言环境的范围和名称不同,并且最终无法完全确定某个语言环境的可用性。
答案 1 :(得分:6)
您可以检查setlocale的返回值,并至少检查它是否已安装。否则你会有无声的失败:
setlocale(LC_ALL, 'en_US') or die('Locale not installed');
答案 2 :(得分:0)
可行,是的。明智,完全没有!