依赖setlocale是否可行,并依赖于安装的语言环境?

时间:2009-12-21 19:04:37

标签: php localization internationalization setlocale zend-locale

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

我的问题是,我是否应该始终依赖于安装的语言环境?我知道如何在我有root权限的盒子上安装它们,但是如果我没有访问权限呢?

我相信Zend_LocaleZend_Translate完全不依赖于setlocale,而是以某种方式在内部进行,这让我觉得它对企业级应用程序来说实际上并不可行。

我知道我可以在我的应用程序中使用Zend_LocaleZend_Translate,但它也需要支持PHP4,至少在另一年,这就是为什么我不能单独依赖它们。

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:6)

您可以检查setlocale的返回值,并至少检查它是否已安装。否则你会有无声的失败:

setlocale(LC_ALL, 'en_US') or die('Locale not installed');

答案 2 :(得分:0)

可行,是的。明智,完全没有!