PHP Gettext不工作

Ian*_*Ian 1 php locale gettext

这是我的./locale/fr/LC_MESSAGES/messages.po档案:

msgid "NO GOOD"
msgstr "IT WORKED!"
Run Code Online (Sandbox Code Playgroud)

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

$ msgfmt -o locale/fr/LC_MESSAGES/messages.mo locale/fr/LC_MESSAGES/messages.po
Run Code Online (Sandbox Code Playgroud)

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

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

这是我的输出:

$ NO GOOD
Run Code Online (Sandbox Code Playgroud)

PHPINFO:

GetText Support => enabled
Run Code Online (Sandbox Code Playgroud)

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

Ian*_*Ian 9

原来它不工作的原因是我选择的语言环境必须是系统认可的语言环境.

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

  • 仅供参考,如果您指定的区域设置无法识别,`setlocale()`函数将返回`false`.`返回新的当前语言环境,如果您的平台上未实现语言环境功能,则指定的语言环境不存在或类别名称无效,则返回FALSE. (4认同)