2014-11-05 25 views
0

有沒有人碰巧知道爲什麼對setlocale的調用會因地區包不存在以外的原因而失敗。以下代碼: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上的VMfr_CA.utf8確實在輸出中。我已嘗試列出其他變體,如簡單地fr_CA

將語言環境設置爲en_US.utf8可以很好地工作。 POSIX似乎也起作用。有沒有人遇到過這個問題?我們在VM上運行Ubuntu 12.04

+0

'fa_CA.utf8'也不適用於我。 'fra_can'起作用。 'fra_can.utf8'沒有。兩個字母的語言代碼似乎不適合我:'en_us' vs'eng_usa'。 – Halcyon 2014-11-05 17:04:20

+0

是那些在您的語言環境中可用的-a輸出? – 2014-11-05 17:08:00

+0

如果在命令行上鍵入「LC_ENV = fr_CA.utf8 date」,是以法語打印的日期嗎?如何「echo exec('locale -a');」在PHP中?這是一個簡單的Ubuntu 12.04安裝? – bgm 2014-11-14 14:15:49

回答

0

嘗試使用Session.LCID,它應具有讀取/寫入權限。這是一個數字,如1034