2012-09-30 53 views
1

这是我的./locale/fr/LC_MESSAGES/messages.po文件:PHP Gettext的不工作

msgid "NO GOOD" 
msgstr "IT WORKED!" 

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

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

我的PHP文件(通过CLI中运行,用于测试目的,如根)。

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

这里是我的输出:

$ NO GOOD 

PHPINFO:

GetText Support => enabled 

任何想法,为什么这可能无法正常工作?

+0

提示使用gettext时,总是检查函数的返回值。 –

回答

8

原因是它不工作是我选择的区域必须是系统认可的区域。

在我而言,fr是不是一个有效的语言环境,我不得不选择fr_FR.UTF-8该系统识别...

+3

仅供参考,如果您指定的语言环境未被识别,'setlocale()'函数将返回'false'。 '返回新的当前语言环境,如果语言环境功能未在您的平台上实现,则指定的语言环境不存在或类别名称无效,则返回FALSE。 – Gavin

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