【发布时间】:2014-01-10 07:37:48
【问题描述】:
我正在尝试在我的一个 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
但是,它仍然没有显示任何中文字符。我在这里做错了什么?
【问题讨论】:
-
不太确定我是否理解您的示例。您正在尝试让 PHP 获取文本以支持中文,但您的所有示例都显示了系统级配置。失败的 PHP 代码在哪里?它是从数据库中提取数据吗?数据库和 PHP 脚本是否支持 UTF8?
-
对不起,我不太清楚这一点。所以我基本上有一个调用
__('This is some text')的gettext 就绪PHP 项目,从位于/locale/文件夹中的.mo 和.po 文件中获取文本。 gettext 适用于语言环境 de_DE.utf8、nl_NL.utf8、pt_BR.utf8 等,但我无法让它打印简体中文的字符串。相反,它会打印英文默认字符串。 -
好的,现在我似乎明白了。但更大的问题是您似乎正在使用 WordPress,因为您说您是通过
__()调用的,对吗?将其添加为标签并更改了标题。应该有助于让更多人关注这个问题。另外,看看这个额外的问题:stackoverflow.com/questions/5257519/… -
该死,很抱歉浪费了您的时间,但问题是文件名约定问题。
wpsmessages-zh_CN.mo应该被命名为wpsmessages.mo,但你不知道。请删除这个话题,烧它,烧我,随便你。 :) 这很尴尬。
标签: php gettext chinese-locale php-gettext