Php i18n有gettext但没有区域设置麻烦?

Php i18n有gettext但没有区域设置麻烦?,php,internationalization,translation,gettext,Php,Internationalization,Translation,Gettext,我正在寻找一种符合标准的方式来为Web应用程序存储多语言内容。到目前为止,我一直使用自己的“translate()”函数,从数据库中的文件或字典表中读取数据。但是,如果您使用web应用程序的不同副本,则在数据库表中保持词典的最新是非常麻烦的 我喜欢gettext,因为有很多工具可供使用。但是,我为不同的平台开发应用程序。我绝对不愿意处理setlocale()和consort的糟糕方式,也就是说,为了让它正常工作,需要为不同的系统提供几十种不同的语言环境字符串变体。从来没有。我有一组语言,比如de

我正在寻找一种符合标准的方式来为Web应用程序存储多语言内容。到目前为止,我一直使用自己的“translate()”函数,从数据库中的文件或字典表中读取数据。但是,如果您使用web应用程序的不同副本,则在数据库表中保持词典的最新是非常麻烦的

我喜欢gettext,因为有很多工具可供使用。但是,我为不同的平台开发应用程序。我绝对不愿意处理setlocale()和consort的糟糕方式,也就是说,为了让它正常工作,需要为不同的系统提供几十种不同的语言环境字符串变体。从来没有。我有一组语言,比如de、en和es,我希望加载适当的字典并在不接触setlocale()或bindtexdomain()一次的情况下使用uz()


使用gettext是否可能做到这一点?或者有人知道另一个简单、小型、快速(!)的i18n PHP解决方案,它可以处理.po/.mo文件,最好不需要PHP扩展名?

Zend_Translate可以使用它


即使在非标准地区,此方法也应适用:

$locale = 'someWeirdLocale';

putenv('LC_MESSAGES=' . $locale);
bindtextdomain('domain', './locale');
textdomain('domain');

享受吧

而且它不需要gettext扩展:)它们还为更友好的源提供了适配器——数组、xml、csv等,这看起来很有趣。我一直在寻找和Zend有一段时间了,也许我会尝试一下。如果有人知道的话,我还是更喜欢一个轻量级的独立解决方案。哦,它比看起来更轻量级。您只能使用您需要的类:对于Zend_Translate,您只需要Zend_Translate、Zend_Locale、Zend_Loader和Zend_Exception(可能我错了,您需要更多或更少,请尝试一下)谢谢,我想我会尝试一下!如果不使用gettext扩展,在PHP中使用gettext实际上是不可能的,但不要担心这是PHP的一个常见/标准扩展,大多数安装都已经激活了它。@Sorin:有可能,有一个本机PHP实现包含大多数(如果不是全部)gettext函数。@votingmeisfree wordpress和cakephp,举几个例子,使用po和mo文件而不使用gettext实现。他们直接打开文件。