我還是個青蘋果呀!
原文地址:http://www.cnblogs.com/bjzhanghao/archive/2004/08/08/31262.aspx 記得幾年前漢化軟件一般是用二進制編輯工具在編譯后的文件中查找和替換英文單詞,這個過程需要使用很多技巧,非常的麻煩。而現在,在開發時對應用程序進行國際化處理已經越來越成為一個必不可少的步驟了。例如這次我參與的項目是給臺灣客戶做的,他們要求英文和繁體中文兩個版本,幸好我們使用的開發工具是Eclipse,利用它的國際化功能可以很方便的將寫在代碼里的字符串提出到獨立的資源文件中,這里用一個簡單的例子說明一下這個過程。
在Eclipse里建立一個名為nls-test的工程(也可以國際化已有工程),新建一個類NLSTest,內容如下:
現在,這個類的輸出是在代碼里寫死的,如果要改變就必須修改代碼然后重新編譯。下面我們利用Eclipse解決這個問題。在導航器(Package Explorer)里右鍵單擊這個文件,選擇Source -> Externalize Strings,就會打開一個對話框,在這里列出了該類中尚未國際化的字符串,見下圖。
圖1 國際化向導第一步
單擊每個字符串前面的小方塊可以選擇對該串1、進行國際化處理2、永不進行國際化處理3、這次不處理。我們選擇要對這個字符串進行國際化處理,并把它的Key修改為比較好理解的名稱hello,注意在對話框最上方可以指定一個通用的前綴,這個值會加在每個Key前面作為最終寫在資源文件(擴展名是.properties)里的Key名稱。好,按下一步繼續。
在這里要指定properties文件的名稱,如果需要的話要指定一個用于從properties文件中取資源的類,一般是XXXMessages的格式,再按下一步,會顯示一個所作更改的確認列表,確認后按Finish按鈕完成向導。
可以看到Eclipse為我們生成了NLSTestMessages.java和NLSTest.properties,打開后者會看到里面只有這么一句:
而前者NLSTestMessages的作用是根據參數Key從后者取對應的字符串值,看一看現在的NLSTest.java就知道了,它的內容現在是這樣的(只列出構造方法,main方法同上):
后面的注釋是Eclipse自己用的,標有這個注釋的字符串在國際化將被忽略。注釋中的數字1表示要忽略的是該行中第一個字符串,如果一行語句里有多個字符串被忽略,將會有多個這樣的注釋,但數字會各不相同,像這樣:
好了,現在這個類的國際化處理就算完成了。要想讓這個類可以根據用戶所在地區輸出不同語言的結果,可以在NLSTest.properties同一目錄下創建名為NLSTest_XX.properties的文件,其中XX表示國家名稱,例如中國是zh_CN或tw_CN,法國是FR等等。新創建的文件里也要有和原來文件相同的名值對,但值是不同語言的,NLSTestMessages類會根據用戶機器的地區設置值自動從不同的資源文件里取值,這樣就達到了國際化的目的。要在自己的機器上測試運行結果,可以在Eclipse的運行設置里面加上這樣的參數:-nl tw_CN,這樣就不用費力氣設置區域了。
國際化的原理很簡單,Eclipse提供的這個功能使國際化變得更容易了。不過關于國際化還有一些細節問題,包括對含參數資源的處理,字符編碼處理等等,下篇將對它們進行討論。
Powered by: BlogJava Copyright © 蘋果