Кто-нибудь знает, почему вызов 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, однако я запускал locale -a
на виртуальной машине, а fr_CA.utf8 действительно был на выходе. Я пробовал другие варианты, которые были перечислены, например, просто fr_CA.
Однако установка языка в en_US.utf8 отлично работает. POSIX, похоже, тоже работает. Кто-нибудь столкнулся с этой проблемой? Мы запускаем Ubuntu 12.04 на виртуальной машине.
Попробуйте использовать Session.LCID
, который должен иметь доступ для чтения/записи. Это число, например, 1034