於是我開始用gettext
瞎搞,但我仍然疑惑某些事情,將是巨大的,如果有人可以幫助我,併爲我填補空白。國際化/ gettext的:配置的setlocale在Web應用
通常大部分實現基於語言參數只調用
setlocale
。是否有任何情況下需要使用putenv
,可能是用於Windows設置的邊緣情況?我的PHP框架的默認語言爲英語,UTF-8 - 所以我設置
LC_ALL
到en_US.utf-8
,因爲en_US
是ISO-8859-1/Latin1的,顯然,這不是作爲支持爲UTF-8?是否有我應該知道的任何陷阱調用
setlocale(LC_ALL, 'en_US.utf-8')
後?由於它改變了所有這些:LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, and LC_MESSAGES
- 我將不得不更新任何腳本,例如,生成時間或類似的東西?比方說,例如一個新配置的服務器沒有配置
es_ES.utf-8
語言環境,我知道如何生成語言環境,但如果它不可用,那麼我應該在數組中提供備份嗎?將是巨大的,如果有人能提供一個實際的例子,如:setlocale(LC_ALL, array('es_ES.UTF-8', 'es_ES', 'es'))
是否有某種形式的網站,提供象這樣的例子,或者說人們通常拿出優先訂購自己?
我在某處讀到
locale
或i18n
文件夾的常見結構如下所示。是否結構真的重要嗎?好像所有發生的事情是,當你做
bindtextdomain('messages', 'locale')
它遞歸搜索,對於messages.mo
目錄,我可能不會注意到,但它可能會採取的目錄進去。
我應該對結構有多嚴格?
locale
en_US
LC_MESSAGES
messages.po
es_ES
LC_MESSAGES
messages.po
6. 我應該甚至試圖測試系統是否真正支持的語言環境或不這麼做呢?因爲例如,如果服務器沒有語言環境,我試圖用setlocale
設置不會報錯了什麼的,那就只是默默的讓它過去。
我其實*計劃使用'Zend_Translate',但我認爲我應該至少弄清楚低級別的東西,以便對它的工作方式有一個基本的瞭解(就像在使用jQuery之前學習Javascript一樣),謝謝雖然你的建議。 Zend_Translate如何爲你工作? – 2009-12-08 22:34:51
現在還沒有,我沒有時間去處理它。不過,我計劃儘快在現有的CMS上使用UTF-8,並計劃嘗試一下。我自己很擔心,因爲似乎沒有任何其他值得使用PHP進行國際化的東西! – 2009-12-08 22:38:29