1

这是我的./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

PHP信息:

GetText Support => enabled

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

4

2 回答 2

9

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

就我而言,fr这不是有效的语言环境,我必须选择fr_FR.UTF-8系统识别的...

于 2012-09-30T18:58:27.997 回答
1
  1. 确保支持语言
  2. 安装 gettext 并在 php.ini 中启用它
  3. 检查 po 的正确格式(它应该有标题)
  4. 确保 mbstring.internalcoding 设置为 UTF-8()取消注释 php.ini 中的 utf8)
  5. 重启 php 和 web 服务器
于 2015-10-05T12:10:15.517 回答