




已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java的i18n問題 Java 的i18n 問題,即Java 的Internationalization 問題, 指的是如何使應(yīng)用程序能夠同時(shí)支持多種語(yǔ)言的問題。對(duì)我國(guó)這樣的非英語(yǔ)國(guó)家而漢字又有多種編碼方式的情況下具有現(xiàn)實(shí)意義。本文將對(duì)用java 編制i18n 程序的方法作一介紹。一、實(shí)現(xiàn)目標(biāo)作為i18n 程序,不單是能夠識(shí)別不同編碼這么簡(jiǎn)單。它應(yīng)能解決如下問題:能識(shí)別不同的編碼方式,如GB 碼、BIG5 碼等;與編碼有關(guān)的元素,如狀態(tài)行、消息、按鈕的caption 等應(yīng)在程序之外存儲(chǔ)。使新增一種語(yǔ)言時(shí)不用修改程序;根據(jù)不同的語(yǔ)言習(xí)慣動(dòng)態(tài)調(diào)整與語(yǔ)言相關(guān)的元素,如數(shù)字、金額、日期等的顯示。二、解決方法1.不同地區(qū)碼的識(shí)別Java 中用Locale 類識(shí)別不同的地區(qū)碼。創(chuàng)建Locale 類的實(shí)例時(shí)指定了語(yǔ)言代碼和地區(qū)代碼。創(chuàng)建GB 中文和BIG5 中文資源的Locale 類實(shí)例的語(yǔ)句分別如下:zhLocale=new Locale(zh,CN);twLocale=new Locale(tw,TW)。此構(gòu)造函數(shù)第一個(gè)參數(shù)是中定義的語(yǔ)言代碼;第二個(gè)參數(shù)中定義的國(guó)家代碼。當(dāng)用戶選定了適用的語(yǔ)言后,應(yīng)將此Locale 設(shè)為默認(rèn)值:Locale.setDefault(new Locale(zh,CN). 2. 與語(yǔ)言相關(guān)的資源單獨(dú)存放Java 提供了兩種方法存放與語(yǔ)言相關(guān)的資源。一種是用文本文件;另一種是用ListResourceBundle 資源類。下面分別闡述兩者的不同之處。文本文件使用文本文件存放資源的好處是簡(jiǎn)單易用??梢杂萌魏挝谋揪庉嬈骶帉懘宋募?,而且當(dāng)修改資源時(shí)無(wú)須重新編譯程序。其格式是 鍵= 值 的列表。例子如下: WebTaxResource_zh_CN.propertiesbutton1= 稅金button2= 稅率status1= 初始化中其中以 開頭的行為注釋行。對(duì)應(yīng)每一種語(yǔ)言寫一個(gè)這樣的資源文件,但所有的資源文件都必須包含相同的鍵。ListResourceBundle 資源類雖然用文本文件存儲(chǔ)資源非常容易,但它只能存儲(chǔ)字符對(duì)象。而對(duì)于數(shù)字、自定義對(duì)象等它就無(wú)能為力了。因此Java 提供了ListResourceBundle 類。其缺點(diǎn)是每次對(duì)資源的修改都必須重新編譯程序。此類的結(jié)構(gòu)如下: /file WebTaxResource_zh_CN.java import java.util. ; public class WebTaxResource_zh_CN extends ListResourceBundle static final Object contents = frametitle, 工資、薪金所得適用, label_qizhengdian, 起征點(diǎn):, label_shuikuan, 稅款:, label_shourue, 收入額:, checkbox_qiushouru, 求收入, checkbox_qiushuie, 求稅額, lable1, 簡(jiǎn)易稅金計(jì)算器, button1, 工資、薪金個(gè)人所得稅計(jì)算, button_caculate, 計(jì)算,;public Object getContents() return contents;其中兩維的Object 數(shù)組存放的是鍵值對(duì)。每對(duì)中的第一個(gè)元素是鍵。在各個(gè)資源類中所有鍵的數(shù)量和標(biāo)識(shí)都必須完全一致。3. 資源的獲取不同語(yǔ)言的資源存放的文件名都不相同,那如何從正確的文件取得我們需要的資源呢?留意到前面例子中properties 文件名和ListResourceBundle 類名中下劃線后的部分嗎?沒錯(cuò),它們就是在創(chuàng)建Locale 實(shí)例時(shí)指定的語(yǔ)言代碼和地區(qū)代碼!剩下的問題就是要解決下劃線前面的基本類名部分了。它是由一個(gè)ResourceBundle 類的實(shí)例來(lái)指定的:ResourceBundle bundle;bundle=ResourceBundle.getBundle(WebTaxResource,currentLocale);getBundle 的第一個(gè)參數(shù)指定了資源文件和資源類的基本類名;第二個(gè)參數(shù)是你所創(chuàng)建的Locale 的實(shí)例,指定了當(dāng)前程序所有資源默認(rèn)的語(yǔ)言代碼和地區(qū)代碼??梢?,資源文件名或類名是由 基本類名_ 語(yǔ)言代碼_ 地區(qū)代碼 組成的。Java 將先查找有無(wú)此名稱的類,若沒有則查找具有此名稱的properties 文件。匹配了正確的資源文件名或類名后,要獲取某鍵對(duì)應(yīng)的值就變得相當(dāng)容易。例如,要?jiǎng)?chuàng)建標(biāo)識(shí)為 計(jì)算器 的標(biāo)簽,只要調(diào)用以下語(yǔ)句:label1=new Label(bundle.getString(label_ jisuanqi), Label.CENTER); getString 方法的參數(shù)是資源文件中的鍵名。除了getString 外,ResourceBundle 類還提供了其他方法獲取不同的對(duì)象,如getStringArray、getObject 等(因?yàn)樵贚istResourceBundle 的實(shí)例中允許存在非字符對(duì)象)。4. 轉(zhuǎn)換非Unicode 資源在Java 內(nèi)部字符是用Unicode 字符表示的。Unicode 是一種16bit 的編碼,支持大多數(shù)地區(qū)的語(yǔ)言。因此,無(wú)論是用文本文件還是用資源類的方式存儲(chǔ)資源,都應(yīng)該將非Unicode 字符轉(zhuǎn)換為Unicode 字符。Java 為我們提供了轉(zhuǎn)換的工具Native2ascii。將含有GB 編碼的漢字的WebTaxResource_zh.CN.properties 文件轉(zhuǎn)換為只含Unicode 字符的例子如下:native2ascii encoding GB2321 WebTaxResource_zh_CN.properties WebTaxResource_zh_CN.properties到此為止,一個(gè)支持i18n 的程序就已初步完成了。三、其他相關(guān)問題正如實(shí)現(xiàn)目標(biāo)中所講到,支持i18n 的程序不但要識(shí)別不同的編碼方式,還要根據(jù)不同的語(yǔ)言習(xí)慣動(dòng)態(tài)調(diào)整與語(yǔ)言相關(guān)的元素,如數(shù)字、金額、日期等的顯示。例如在法文中數(shù)值123456.78 表示為123 456,78;而在德文中應(yīng)表示為123.456,78。除了數(shù)值和貨幣之外,不同語(yǔ)言有不同表示的元素還有日期、時(shí)間和文本消息。Java 提供了NumberFormat、DateFormat、MessageFormat 類根據(jù)不同的Locale 實(shí)例動(dòng)態(tài)改變這些元素的顯示模式。下面的例子將根據(jù)不同的Locale 實(shí)例改變數(shù)值123456.78 的顯示方式。 Double amount = new Double (123456.78); NumberFormat numberFormatter; String amountOut;numberFormatter = NumberFormatgetNumber.Instance(currentLocale);amountOut = numberFormatter
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 航空航天零部件高精度加工技術(shù)2025年市場(chǎng)前景與挑戰(zhàn)報(bào)告
- 葡萄酒行業(yè)產(chǎn)區(qū)特色品牌國(guó)際化:2025年全球市場(chǎng)機(jī)遇分析報(bào)告
- 2025屆滁州鳳陽(yáng)縣聯(lián)考七下英語(yǔ)期末檢測(cè)試題含答案
- 2025年電商平臺(tái)內(nèi)容營(yíng)銷與種草經(jīng)濟(jì)在電商區(qū)塊鏈技術(shù)應(yīng)用報(bào)告
- 2025年醫(yī)藥行業(yè)合規(guī)運(yùn)營(yíng)策略與信息化建設(shè)深度分析報(bào)告
- 2025年BIM技術(shù)在建筑行業(yè)工程項(xiàng)目施工進(jìn)度調(diào)整與優(yōu)化報(bào)告
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)模式下的臨床試驗(yàn)數(shù)據(jù)安全報(bào)告
- 2025年醫(yī)藥流通行業(yè)供應(yīng)鏈優(yōu)化與成本控制策略分析報(bào)告
- 繼教培訓(xùn)課件模板
- 廣東省東莞市五校2025屆七年級(jí)英語(yǔ)第二學(xué)期期中學(xué)業(yè)水平測(cè)試模擬試題含答案
- 新疆阿克蘇地區(qū)(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)統(tǒng)編版小升初真題(下學(xué)期)試卷及答案
- 2025年初級(jí)社會(huì)工作者綜合能力全國(guó)考試題庫(kù)(含答案)
- 課程思政示范課程申報(bào)書
- 河南天一大聯(lián)考2024屆高一數(shù)學(xué)第二學(xué)期期末考試試題含解析
- 北京101中學(xué)2023-2024學(xué)年七下英語(yǔ)期末檢測(cè)試題含答案
- 國(guó)家開放大學(xué)本科《管理英語(yǔ)4》一平臺(tái)機(jī)考真題及答案(第六套)
- 2024年廣東省中考生物試卷附答案
- 合肥市瑤海區(qū)2022-2023學(xué)年七年級(jí)下學(xué)期期中歷史試題【帶答案】
- 一年級(jí)下冊(cè)口算題卡大全(口算練習(xí)題50套直接打印版)
- 2022-2023學(xué)年涼山彝族自治州數(shù)學(xué)三年級(jí)下冊(cè)期末考試試題含答案
- (高清版)JTG 5421-2018 公路瀝青路面養(yǎng)護(hù)設(shè)計(jì)規(guī)范
評(píng)論
0/150
提交評(píng)論