无法使gettext在PHP,Linux中工作

问题描述 投票:3回答:2

我已经和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”

“ Content-Transfer-Encoding:8bit \ 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

de_DE

de_DE.iso88591

de_DE.iso885915@euro

de_DE.utf8

de_DE @ euro

我正在运行PHP 5.2,Apache 2.2.3,CentOS

请保持温柔,我在linux上非常基础。

感谢您的帮助!

我已经和Gettext斗争了很久了,但是无法正常工作。如果有人可以帮助我,我将不胜感激。我一直在寻找解决方案,并尝试了几种变体...

php gettext
2个回答
0
投票

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


3
投票

尝试使用locale -a报告的确切语言环境名称。例如setlocale(LC_MESSAGES, 'de_DE.utf8');

© www.soinside.com 2019 - 2024. All rights reserved.