2009-10-28 50 views
1

我想使用下面的代碼加載我的.mo翻譯,但它不起作用。我有php gettext分機。在我的phpinfo()中啓用並且安裝了所有必需的語言環境。 我錯過了什麼嗎?Gettext,不顯示

$locale = "en_US"; 

putenv("LC_ALL=$locale"); 

setlocale(LC_ALL, $locale); 

bindtextdomain("messages", "./locale"); 
textdomain("messages"); 

我的.mo文件位於./locale/en_US/messages.mo

回答

2

當一個Apache線程加載一個文件的.mo,直到Apache的線程回收它不會重新加載它。因此,如果您更新.mo文件,並且想確保您的php使用的是新的.mo文件,則實際上需要重新啓動apache或爲mo文件使用不同的名稱。

無論如何,我會設置LANG環境變量。

+0

這是你的意思嗎?: $ language ='en US.UTF-8'; putenv(「LANG = $ language」); 我試圖重新加載與sudo /etc/init.d/apache2重新加載Apache,但它沒有解決它。 – Roch 2009-10-28 16:18:59

+0

@mnml:不重新載入,但重新啓動Apache,即sudo /etc/init.d/apache2重啓 – Residuum 2009-10-28 17:38:38

+0

@Residuum:我剛剛嘗試過,但它仍然沒有這樣做。 – Roch 2009-10-29 08:43:25

0

您可能需要更改路徑,以便它是絕對路徑,而不是相對路徑。