通常人們寫程序時都是將文字寫死在程序裡的,比如:echo "Hello World!"; ,假如要改成它國語言,寫國際化程序,就要逐個打開進行修改,程序較短時還行,若程序有上萬甚至更多,改起來就不是那麼容易了。近來隨著i18n的逐漸標准化,我也來講一講在PHP中如何實現國際化支持。跟其他程序語言一樣,在 PHP 也可以利用 gettext 套件寫作 i18n 程序,實現 NLS(Native Language Support) 國際化支持,具體請參考官方文檔( http://www.gnu.org/manual/gettext/index.html )。
實現流程:程序設計者在程序碼中寫入所要顯示的信息,在運行程序時並不會直接顯示程序設計師所寫的信息,而會先去找一個所設置語系的信息檔。如果未找到,才會去顯示程式碼中的信息。
一、安裝設置gettext套件:
1) *NIX系統:
1、從 http://www.gnu.org/software/gettext/gettext.html 下載 gettext package,進行安裝
2、編譯PHP的時候加上“--with-gettext[=DIR]”,其中DIR為gettext安裝的
目錄,缺省為:/usr/local
3、保存,然後 restart server。
2) WIN32系統:
1、需要將gnu_gettext.dll檔拷貝到系統目錄下面 (Ex: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32),PHP 4.2.3 之後文件名為 libintl-1.dll,可在 php4\dlls 下獲得。
2、打開php.ini檔,查找extension=php_gettext.dll,去掉前面的“;”
3、保存,然後restart server。
若一切順利,就可以在 phpinfo() 中看到 gettext 字樣,至此已設置完畢。
二、php_gettext.dll套件裡有好幾個函式,具體請看相關的manual。在這裡我們只用記住3個函式就行了,如下:
string bindtextdomain ( string domain, string directory)
string textdomain ( string text_domain)
string gettext ( string message)