PHP Gettext不工作

时间:2012-09-30 02:34:42

标签: php locale gettext

这是我的./locale/fr/LC_MESSAGES/messages.po文件:

msgid "NO GOOD"
msgstr "IT WORKED!"

用于生成.mo文件的命令:

$ msgfmt -o locale/fr/LC_MESSAGES/messages.mo locale/fr/LC_MESSAGES/messages.po

我的PHP文件(通过CLI运行,出于测试目的,以root用户身份)。

<?php 
    bindtextdomain('messages','./locale');
    textdomain('messages');
    setlocale(LC_MESSAGES, 'fr');
    echo gettext("NO GOOD");

这是我的输出:

$ NO GOOD

PHPINFO:

GetText Support => enabled

为什么这可能不起作用的任何想法?

2 个答案:

答案 0 :(得分:9)

原因是它不起作用的原因是我选择的语言环境必须是系统认可的语言环境。

在我的情况下,fr不是有效的区域设置,我必须选择系统识别的fr_FR.UTF-8 ...

答案 1 :(得分:1)

  1. 确保支持语言
  2. 安装gettext并在php.ini中启用它
  3. 检查po的正确格式(它应该有标题)
  4. 确保mbstring.internalcoding设置为UTF-8()取消注释php.ini中的utf8)
  5. 重启php和web服务器