php中使用gettext解決國際化問題的例子(i18n)
來源:易賢網(wǎng) 閱讀:949 次 日期:2014-07-31 11:14:38
溫馨提示:易賢網(wǎng)小編為您整理了“php中使用gettext解決國際化問題的例子(i18n)”,方便廣大網(wǎng)友查閱!

實現(xiàn)國際化的方式比較多,很多php framework都內(nèi)置i18n支持,但大部分是基于php的數(shù)組實現(xiàn)的,這種方法并不推薦。目前最為流行也最通用的方法是gettext。

gettext 用于系統(tǒng)的國際化(i18n)和本地化(l10n),可以在編譯程序的時候使用本國語言支持(native language support(nls)),其可以使程序的輸出使用用戶設(shè)置的語言而不是英文. 關(guān)于gettext的更多資料請參見: 下面說說如何利用gettext在你的php程序中實現(xiàn)國際化。

一、檢查環(huán)境需求 首先查看phpinfo(),確保你的php啟用了gettext擴展。如果啟用了gettext,在phpinfo頁面中應(yīng)該能看到以下信息:

如果沒有找到,請修改php.ini以啟用該擴展 

二、為你的項目新建locale文件夾 gettext涉及到兩個文件,*.po是翻譯源文件,里面儲存了項目中所有待翻譯的字符串和翻譯后的結(jié)果;*.mo文件是po文件編譯后二進(jìn)制文件,真正讀取翻譯信息的時候是從mo文件中讀取的,所以這個文件也是必不可少的。 gettext對目錄要求比較死,你必須把國際化文件放在指定目錄,大部分使用gettext不成功都是由于po文件和mo文件沒有放對位置導(dǎo)致的,下面舉例看一個典型項目目錄樹:

三、初始化i18n環(huán)境 這個主要是在程序端進(jìn)行簡單的設(shè)置,下面給個簡單的例子:

代碼如下:

< ?php

//定義要翻譯的目標(biāo)語言及po文件的編碼

$locale = zh_cn.utf8;

setlocale(lc_all, $locale);

//設(shè)置翻譯文本域,下面的代碼就會讓程序去locale/zh_cn/lc_messages/default.mo去尋找翻譯文件

bindtextdomain(default, dirname(__file__)./locale);

textdomain(default);

?>

< !doctype html public -//w3c//dtd xhtml 1.1//en http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd>

< ?php echo _(hello\n);; ?>

四、建立po文件檔

到這一步方法就比較多了,當(dāng)然可以手動建立,不過這樣子一個最大的缺點就是你不知道項目中哪些字符串需要翻譯,這里推薦下一個軟件——poedit,windows平臺和linux都是適用的。

選擇文件->新建消息目錄文檔,填好一些必要信息,注意如果目標(biāo)語言是中文的話,由于中文是雙字節(jié)字符,所以最好在“復(fù)數(shù)形式”填上 “nplurals=2; plural=(n!=1);”(沒有引號),如下圖

然后將項目所在文件夾加入到“路徑”中,設(shè)置好翻譯所用的關(guān)鍵字,poedit就會自動搜索項目中所有待翻譯的字符串,生成po文件。翻譯完成后選擇“保存”,poedit會自動生成mo文件。以后每次項目中待翻譯字符串有更新,只要打開poedit選擇類目->從源更新,就好了 這樣的思路不僅適用于php,其他語言都大同小異,前段時間做django一個項目的翻譯,也僅僅是建立po文件更加方便了,其他步驟十分類似。大家舉一反三就好了,尤其注意下目錄結(jié)構(gòu),這個是最容易出現(xiàn)問題的地方。

更多信息請查看IT技術(shù)專欄

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機網(wǎng)站地址:php中使用gettext解決國際化問題的例子(i18n)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)