【问题标题】:gettext() - on 3 languages 2 works one notgettext() - 在 3 种语言上 2 种有效,一种无效
【发布时间】:2013-09-10 10:09:04
【问题描述】:

我的网页包含 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");

【问题讨论】:

  • 检查locale -a | grep -i pl,看看你是否有pl_PL.UTF-8。你可能还想看这个话题:stackoverflow.com/questions/2527192/linux-locale-unset
  • 这可能是个问题,我无法访问命令行...
  • 基本调试:var_dump() 变量并检查相关函数的返回值。不要只相信。
  • setlocale(LC_ALL, $locale.'.UTF-8') 返回 false
  • @Maciej - 对,你来了。我们仍然不确定$locale 包含什么,但我们确定它不包含有效的语言环境。

标签: php gettext


【解决方案1】:

您的测试代码不是特别有用。我们将这样简化:

var_dump( setlocale(LC_ALL, 'pl_PL.UTF-8') );

你在你的 cmets 中含糊地暗示你得到了FALSE。这是什么意思?根据the documentation(我想你已经检查过了,我只是为了完整起见在这里发布):

返回新的当前语言环境,如果是语言环境功能,则返回 FALSE 未在您的平台上实现,指定的语言环境不 存在或类别名称无效。

那么,如何获得可用语言环境的列表?正如你所说:

echo `locale -a`;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2017-08-09
    • 2014-02-04
    • 1970-01-01
    • 2013-10-09
    相关资源
    最近更新 更多