Php gettext()-在3种语言上2适用于1种不适用

Php gettext()-在3种语言上2适用于1种不适用,php,gettext,Php,Gettext,我有一个网页,包含3种语言-波尔西语,英语和德语。英语和德语的翻译很完美,但波兰语根本不起作用。问题出在哪里?下面是gettext的配置: $locale = "pl_PL"; if (isSet($_GET["lg"])) $locale = $_GET['lg']."_". strtoupper($_GET['lg']); putenv("LC_ALL=$locale"); setlocale(LC_ALL, $locale.'.UTF-8'); b

我有一个网页,包含3种语言-波尔西语,英语和德语。英语和德语的翻译很完美,但波兰语根本不起作用。问题出在哪里?下面是gettext的配置:

    $locale = "pl_PL";
    if (isSet($_GET["lg"])) $locale = $_GET['lg']."_".  strtoupper($_GET['lg']);
    putenv("LC_ALL=$locale");
    setlocale(LC_ALL, $locale.'.UTF-8');
    bindtextdomain("messages", "./locale");
    bind_textdomain_codeset("messages", 'UTF-8');
    textdomain("messages");

您的测试代码不是特别有用。我们将通过以下方式对其进行简化:

var_dump( setlocale(LC_ALL, 'pl_PL.UTF-8') );
你在评论中含糊不清地暗示你得到了
FALSE
。这是什么意思?根据(我想你已经检查过了,我只是为了完整性把它贴在这里):

返回新的当前区域设置,如果区域设置功能不可用,则返回
FALSE
未在您的平台上实现,指定的区域设置不存在 存在或类别名称无效

那么,如何获得可用区域设置的列表?正如你所说:

echo `locale -a`;

检查
locale-a | grep-ipl
以查看是否有
pl.UTF-8
。您可能还想看看这个主题:这可能是个问题,我没有访问命令行的权限…基本调试:var_dump()检查变量并检查相关函数的返回值。不要只信任.setlocale(LC_ALL,$locale.'.UTF-8')返回false@Maciej-好的,给你。我们仍然不确定
$locale
包含什么,但我们确定它不包含有效的locale。