2011-11-01 87 views
3

我一直在與Gettext苦苦掙扎已經很久了,只是無法讓它工作。我會永遠感激,如果有人可以幫助我這個...我尋找解決方案,並嘗試了幾個變種,但沒有任何工作對我來說。無法在PHP中使用gettext,Linux

我已創建以下文件結構:

/var/www/battlestox/battlestox.com/sites/battlestox/www/locale/de_DE/LC_MESSAGE/messages.po 在/ var/WWW/battlestox/battlestox.com /網站/ battlestox /網絡/現場/ de_DE這個/ LC_MESSAGE/messages.mo

在.po文件中的數據僅僅是:

MSGID 「」

msgstr「」

「Content-Type:text/plain;字符集= UTF-8 \ n」個

「內容傳輸編碼:8位\ n」 個

MSGID 「QWERTY」

msgstr 「的翻譯作品」

的PHP文件長谷以下代碼:

putenv("LANG=de_DE.UTF-8"); 
setlocale(LC_MESSAGES, 'de_DE.UTF-8'); 
bindtextdomain('messages', 'locale'); 
bind_textdomain_codeset('messages', 'UTF-8'); 
textdomain('messages'); 

echo gettext("qwerty"); 
echo _("qwerty"); 

輸出:qwertyqwerty - 所以沒有翻譯發生 當我贊同斌dtextdomain('messages','locale');我得到:

/var/www/battlestox/battlestox.com/sites/battlestox/www/locale

所以我相信它指向正確的位置..

我有檢查發現的gettext安裝在PHP和服務器上的語言環境都可..

:區域-a

de_DE這個

de_DE.iso88591

[email protected]

de_DE.utf8

de_DE這個@歐元

我運行PHP 5.2,Apache的2.2.3, CentOS的

請溫柔,我在linux上非常基本的..

感謝您的幫助!

+0

PS我已經明顯地編譯了.po文件,使其成爲相應的mo文件.. – IanM

回答

0

我認爲你的.mo目錄應該是/var/www/..blah../locale/de_DE/LC_MESSAGES這是LC_MESSAGES,複數。

也正如John所說,你的區域名稱看起來不太正確。

如果更改.mo文件,則需要重新啓動apache。你做過了嗎?

+0

AHHH!你是一個天才。將名稱更改爲LC_MESSAGES並重新啓動Apache進行排序! 非常感謝你 - 我真的一直在桌上抨擊我的頭幾天! – IanM

2

嘗試使用由locale -a報告的確切語言環境名稱。例如setlocale(LC_MESSAGES, 'de_DE.utf8');

+0

putenv(「LANG = de_DE.utf8」); setlocale(LC_MESSAGES,'de_DE.utf8'); 試圖改變上述,但沒有喜悅... – IanM