2

我试图在我的一个 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

但是,它仍然没有显示任何中文字符。我在这里做错了什么?

4

1 回答 1

3

有点尴尬,但解决方案只是将文件重命名wpsmessages-zh_CN.mowpsmessages.mo遵循我自己的文件名约定。

基本上我的 PHP 项目使用 gettext 的结构是这样的:

/locale/pt_BR.utf8/LC_MESSAGES/wpsmessages.mo
/locale/zh_CN.utf8/LC_MESSAGES/wpsmessages.mo
...

因此 using为 指定的语言环境bindtextdomain("wpsmessages", dirname(__FILE__) . "/locale");获取正确的文件,但由于名称错误而找不到该文件。.mosetlocale()

希望这可以帮助任何像我一样愚蠢的人。:)

于 2013-12-21T16:20:51.707 回答