2013-12-21 38 views
2

我試圖在我的一個PHP項目中支持繁體中文,但我無法顯示任何中文字符。這是我的gettext設置:PHP gettext簡體中文支持?

putenv("LC_ALL=zh_CN.utf8"); 
setlocale(LC_ALL, "zh_CN.utf8"); 
bindtextdomain("wpsmessages", dirname(__FILE__) . "/locale"); 
bind_textdomain_codeset("wpsmessages", 'UTF-8'); 
textdomain("wpsmessages"); 

早些時候,我創建了SSH的語言環境通過鍵入:

sudo locale-gen zh_CN.utf8 

然後返回:

Generating locales... 
zh_CN.UTF-8... done 

打字locale -a後,我得到的名單follwing (等):

zh_CN 
zh_CN.utf8 

但是,它並沒有顯示任何中文字符。我在這裏做錯了什麼?

+0

不太確定我理解你的例子。你正試圖讓PHP獲得文本來獲得中文支持,但你所有的例子都顯示了系統級別的配置。你的PHP代碼失敗了嗎?它是從數據庫中提取數據嗎?數據庫和PHP腳本UTF8是否知道? – JakeGould

+0

[無法使(UTF-8)繁體中文字符在PHP gettext擴展中工作(poEdit中創建的.po和.mo文件)](http://stackoverflow.com/questions/2264740/cant- make-utf-8-traditional-chinese-character-to-work-in-php-gettext-extensio) – JakeGould

+1

對不起,我對此不太清楚。所以我基本上有一個gettext就緒的PHP項目,調用'__('這是一些文本')',從.mo和.po文件中獲得位於'/ locale /'文件夾中的文本。 gettext對於語言環境de_DE.utf8,nl_NL.utf8,pt_BR.utf8等工作正常,但我無法得到它打印簡體中文的字符串。相反,它會打印英文默認字符串。 – Alphawolf

回答

3

有點誇張,但解決方案只是按照我自己的文件名約定將文件wpsmessages-zh_CN.mo更改爲wpsmessages.mo

基本上使用的gettext我的PHP項目的結構是這樣的:

/locale/pt_BR.utf8/LC_MESSAGES/wpsmessages.mo 
/locale/zh_CN.utf8/LC_MESSAGES/wpsmessages.mo 
... 

因此,使用bindtextdomain("wpsmessages", dirname(__FILE__) . "/locale");得到正確.mo文件由setlocale()指定的語言環境,但它無法找到該文件,因爲它的名字錯了。

希望這可以幫助任何人像我一樣愚蠢。 :)