原文地址:http://www.cnblogs.com/bjzhanghao/archive/2004/08/08/31262.aspx
記得幾年前漢化軟件一般是用二進(jìn)制編輯工具在編譯后的文件中查找和替換英文單詞,這個(gè)過程需要使用很多技巧,非常的麻煩。而現(xiàn)在,在開發(fā)時(shí)對(duì)應(yīng)用程序進(jìn)行國(guó)際化處理已經(jīng)越來越成為一個(gè)必不可少的步驟了。例如這次我參與的項(xiàng)目是給臺(tái)灣客戶做的,他們要求英文和繁體中文兩個(gè)版本,幸好我們使用的開發(fā)工具是Eclipse,利用它的國(guó)際化功能可以很方便的將寫在代碼里的字符串提出到獨(dú)立的資源文件中,這里用一個(gè)簡(jiǎn)單的例子說明一下這個(gè)過程。
在Eclipse里建立一個(gè)名為nls-test的工程(也可以國(guó)際化已有工程),新建一個(gè)類NLSTest,內(nèi)容如下:









現(xiàn)在,這個(gè)類的輸出是在代碼里寫死的,如果要改變就必須修改代碼然后重新編譯。下面我們利用Eclipse解決這個(gè)問題。在導(dǎo)航器(Package Explorer)里右鍵單擊這個(gè)文件,選擇Source -> Externalize Strings,就會(huì)打開一個(gè)對(duì)話框,在這里列出了該類中尚未國(guó)際化的字符串,見下圖。
圖1 國(guó)際化向?qū)У谝徊?/FONT>
單擊每個(gè)字符串前面的小方塊可以選擇對(duì)該串1、進(jìn)行國(guó)際化處理2、永不進(jìn)行國(guó)際化處理3、這次不處理。我們選擇要對(duì)這個(gè)字符串進(jìn)行國(guó)際化處理,并把它的Key修改為比較好理解的名稱hello,注意在對(duì)話框最上方可以指定一個(gè)通用的前綴,這個(gè)值會(huì)加在每個(gè)Key前面作為最終寫在資源文件(擴(kuò)展名是.properties)里的Key名稱。好,按下一步繼續(xù)。
在這里要指定properties文件的名稱,如果需要的話要指定一個(gè)用于從properties文件中取資源的類,一般是XXXMessages的格式,再按下一步,會(huì)顯示一個(gè)所作更改的確認(rèn)列表,確認(rèn)后按Finish按鈕完成向?qū)А?/P>
可以看到Eclipse為我們生成了NLSTestMessages.java和NLSTest.properties,打開后者會(huì)看到里面只有這么一句:

而前者NLSTestMessages的作用是根據(jù)參數(shù)Key從后者取對(duì)應(yīng)的字符串值,看一看現(xiàn)在的NLSTest.java就知道了,它的內(nèi)容現(xiàn)在是這樣的(只列出構(gòu)造方法,main方法同上):




后面的注釋是Eclipse自己用的,標(biāo)有這個(gè)注釋的字符串在國(guó)際化將被忽略。注釋中的數(shù)字1表示要忽略的是該行中第一個(gè)字符串,如果一行語句里有多個(gè)字符串被忽略,將會(huì)有多個(gè)這樣的注釋,但數(shù)字會(huì)各不相同,像這樣:



好了,現(xiàn)在這個(gè)類的國(guó)際化處理就算完成了。要想讓這個(gè)類可以根據(jù)用戶所在地區(qū)輸出不同語言的結(jié)果,可以在NLSTest.properties同一目錄下創(chuàng)建名為NLSTest_XX.properties的文件,其中XX表示國(guó)家名稱,例如中國(guó)是zh_CN或tw_CN,法國(guó)是FR等等。新創(chuàng)建的文件里也要有和原來文件相同的名值對(duì),但值是不同語言的,NLSTestMessages類會(huì)根據(jù)用戶機(jī)器的地區(qū)設(shè)置值自動(dòng)從不同的資源文件里取值,這樣就達(dá)到了國(guó)際化的目的。要在自己的機(jī)器上測(cè)試運(yùn)行結(jié)果,可以在Eclipse的運(yùn)行設(shè)置里面加上這樣的參數(shù):-nl tw_CN,這樣就不用費(fèi)力氣設(shè)置區(qū)域了。
國(guó)際化的原理很簡(jiǎn)單,Eclipse提供的這個(gè)功能使國(guó)際化變得更容易了。不過關(guān)于國(guó)際化還有一些細(xì)節(jié)問題,包括對(duì)含參數(shù)資源的處理,字符編碼處理等等,下篇將對(duì)它們進(jìn)行討論。