我正在尝试在我的一个PHP项目中支持繁体中文,但我不能让它显示任何中文字符。这是我的gettext设置:
putenv("LC_ALL=zh_CN.utf8");
setlocale(LC_ALL, "zh_CN.utf8");
bindtextdomain("wpsmessages", dirname(__FILE__) . "/locale");
bind_textdomain_codeset("wpsmessages", 'UTF-8');
textdomain("wpsmessages");
之前我通过输入以下内容在SSH中创建了语言环境:
sudo locale-gen zh_CN.utf8
然后返回:
Generating locales...
zh_CN.UTF-8... done
输入locale -a
后,我会在列表中找到以下内容:
zh_CN
zh_CN.utf8
但是,它仍然没有显示任何中文字符。我在这里做错了什么?
答案 0 :(得分:3)
有点讽刺,但解决方案只是按照我自己的文件名约定将文件wpsmessages-zh_CN.mo
重命名为wpsmessages.mo
。
基本上我使用gettext的PHP项目结构如下:
/locale/pt_BR.utf8/LC_MESSAGES/wpsmessages.mo
/locale/zh_CN.utf8/LC_MESSAGES/wpsmessages.mo
...
因此,使用bindtextdomain("wpsmessages", dirname(__FILE__) . "/locale");
获取.mo
指定的区域设置的正确setlocale()
文件,但由于名称错误而无法找到该文件。
希望这有助于任何人像我一样愚蠢。 :)