是否有人碰巧知道为什么对setlocale
的调用因语言环境包不存在而导致失败的原因。以下代码:
$language = 'fr_CA.utf8';
//putenv("LANG=" . $language);
var_dump(setlocale(LC_ALL, $language));
// Set the text domain as "messages"
$domain = "messages";
$result = bindtextdomain($domain, ROOT_DIR . "../locale/");
bind_textdomain_codeset($domain, 'UTF-8');
$result = textdomain($domain);
echo _("IAMSOMETEXT");
echo $result;die;
从bool(false)
输出var_dump
。我们在 Vagrant 中运行该网站,但我在 VM 上运行了locale -a
,而 fr_CA.utf8 确实在输出中。我尝试过列出的其他变体,例如 fr_CA 。
将语言环境设置为 en_US.utf8 可以很好地工作。 POSIX 似乎确实有用。有没有人遇到过这个问题?我们在 VM 上运行 Ubuntu 12.04 。
答案 0 :(得分:0)
尝试使用Session.LCID
,它应具有读/写访问权限。它是一个数字,如1034