05年開始用Eclipse的時候,才知道Eclipse(Java)的國際化編程是這樣的:每個字串都有一個固定的ID,在不同的語言套件裡,這個ID對應不同的字串。程式運行時,它會根據當前的作業系統的語言(或者指定的語言)得到對應的語言套件中的字串。這樣,我們運行程式時,在英文環境下看到的“hello”,到了中文環境下可能就變成了“你好”。(當然,這隻是基本原理,日期/時間的格式之類、文字顯示的美觀等等這兒暫且不提)
在此之前,我從沒想到支援多語言會是這樣簡單。記得02年某國內著名的軟體公司到學校去招聘的時候,在他們演講會上,演講者提到,“我們作開發的時候,一般的都是先開發英文版的,再開發中文版”的。”那個時候,我基本沒什麼項目經驗,專業課我們只學理論知識,也不可能學這些項目中的細節。因而,可能他說的這句話沒有錯,但是我卻產生了誤解,以為是先開發好英文的,然後在這個英文的基礎上把所有的語言相關的內容全部漢化,就成了中文版。
這幾天,項目臨近發布,項目重要的bug基本沒有,不重要的移到下一個milestone,手上的活不多。在這個空當時間學習下IPMSG的原始碼。呵呵,儘管看懂的部分不是很多,不過它的國際化的問題倒是讓我高度興趣。
在VC6中開啟IPMSG項目,當選擇Debug_English的時候,編譯出來的可執行檔是英文的,而選擇Debug_Japanese的時候,編譯出來的是中文(我下載的這個版本是在日文版的基礎上漢化的,實際上Debug_Japanese就是中文)的。
其實,這兩個選項使用了不同的資源檔不過兩個資源檔中使用的資源使用的ID及其屬性倒是一樣的,只是顯示的內容不一樣,各自對應一種語言。
假設兩個資源檔分別為ipmsg_cn.res和ipmsg_en.res。可以在Debug_English的時候,選中ipmsg_en.res作為資源檔,而在Debug_Chinese.res的時候選擇另外一個,這樣我們在選擇不同語言的debug/run模式,它就會出現相應的語言介面。
(完)