Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';我不能让gettext在PHP和Linux中工作_Php_Gettext - Fatal编程技术网

Can';我不能让gettext在PHP和Linux中工作

Can';我不能让gettext在PHP和Linux中工作,php,gettext,Php,Gettext,我已经为Gettext苦苦挣扎了很长时间,但就是无法让它工作。如果有人能帮我,我将永远感激。。。我一直在寻找解决方案,并尝试了几种变体,但都不适用于我 我创建了以下文件结构: /var/www/battlestox/battlestox.com/sites/battlestox/www/locale/de_de/LC_MESSAGE/messages.po /var/www/battlestox/battlestox.com/sites/battlestox/www/locale/de_de/L

我已经为Gettext苦苦挣扎了很长时间,但就是无法让它工作。如果有人能帮我,我将永远感激。。。我一直在寻找解决方案,并尝试了几种变体,但都不适用于我

我创建了以下文件结构:

/var/www/battlestox/battlestox.com/sites/battlestox/www/locale/de_de/LC_MESSAGE/messages.po /var/www/battlestox/battlestox.com/sites/battlestox/www/locale/de_de/LC_MESSAGE/messages.mo

.po文件中的数据仅为:

msgid“”

msgstr“”

“内容类型:文本/普通;字符集=utf-8\n”

“内容传输编码:8位\n”

msgid“qwerty”

msgstr“翻译工作!”

php文件包含以下代码:

putenv("LANG=de_DE.UTF-8");
setlocale(LC_MESSAGES, 'de_DE.UTF-8');
bindtextdomain('messages', 'locale');
bind_textdomain_codeset('messages', 'UTF-8');
textdomain('messages');

echo gettext("qwerty");
echo _("qwerty");
输出:qwertyqwerty-因此没有翻译发生。 当我回显bindtextdomain('messages','locale');我得到:

/var/www/battlestox/battlestox.com/sites/battlestox/www/locale

所以我相信它指向了正确的位置

我已经检查了gettext是否安装在php中,服务器上的区域设置是否可用

:locale-a

德乌德

iso88591标准

德乌德。iso885915@euro

deu de.utf8

德_DE@euro

我正在运行PHP5.2、Apache2.2.3和CentOS

请温柔一点,我对linux非常基础


谢谢你的帮助

尝试使用
locale-a
报告的确切区域名称。e、 g.
setlocale(LC_消息,'de_de.utf8')

我认为您的.mo目录应该是/var/www/.blah../locale/de_de/LC_MESSAGES,这是LC_MESSAGES,复数形式

正如John所说,您的区域名称看起来不太正确


如果更改.mo文件,则需要重新启动apache。你这样做了吗?

PS显然我已经编译了.po文件,使之成为对应的mo文件..putenv(“LANG=de_de.utf8”);setlocale(LC_消息,'de_de.utf8');尝试更改为上述内容,但没有任何乐趣…感谢您提醒我注意这一点。事实证明,英语是我正在使用的服务器(CentOS/RHEL)上唯一受支持的语言。我安装了相应的,然后
gettext
开始完美工作。啊!你是个天才。。将名称更改为LC_消息并重新启动Apache排序!非常感谢你-我已经为这件事在桌子上捶了好几天了!