有没有人碰巧知道为什么对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上运行Ubuntu12.04。
发布于 2014-12-20 22:59:55
尝试使用Session.LCID,它应该具有读写访问权限。它是一个数字,大约1034
https://stackoverflow.com/questions/26762865
复制相似问题