gettext
我在我的PHP应用程序中遇到了一个奇怪的问题。它适用于我的开发机器(Ubuntu 10.10 32 位、2 x Windows 7 64 位、Windows 7 32 位,均运行 XAMPP)。
生产服务器是运行某种Linux 64 位版本的付费主机。我不知道具体是哪个。我可以试试看是否重要。
这是我初始化gettext的方法:
//just FYI:
//$this->data['language'] == 'pl'
//dirname(__FILE__).'/../language/locale' ==
//'/home/mingos/public_html/example.com/application/controllers/../language/locale'
putenv('LANGUAGE='.$this->data['language']);
putenv('LANG='.$this->data['language']);
putenv('LC_ALL='.$this->data['language']);
setlocale(LC_ALL,$this->data['language']);
bindtextdomain($this->data['language'], dirname(__FILE__).'/../language/locale');
bind_textdomain_codeset($this->data['language'],'UTF-8');
textdomain($this->data['language']);
我phpinfo()
在服务器上运行,发现它gettext
已启用并且safe_mode
已关闭,排除了LC_ALL
不可修改的可能性(我认为)。
编译后的gettext目录为:
/home/mingos/public_html/example.com/application/language/locale/pl/LC_MESSAGES/pl.mo
所以设置的路径bindtextdomain
是正确的。
我没有收到任何通知或警告,但gettext
没有从我的目录中提取翻译,只返回它输入的字符串,例如gettext('About us')
返回About us
而不是O nas
.
目录本身是使用正确编译的,poEdit
并确认可以在我的 4 台开发机器上运行。
其他可能的原因是什么?