




已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java的i18n問題 Java 的i18n 問題,即Java 的Internationalization 問題, 指的是如何使應(yīng)用程序能夠同時(shí)支持多種語言的問題。對我國這樣的非英語國家而漢字又有多種編碼方式的情況下具有現(xiàn)實(shí)意義。本文將對用java 編制i18n 程序的方法作一介紹。一、實(shí)現(xiàn)目標(biāo)作為i18n 程序,不單是能夠識別不同編碼這么簡單。它應(yīng)能解決如下問題:能識別不同的編碼方式,如GB 碼、BIG5 碼等;與編碼有關(guān)的元素,如狀態(tài)行、消息、按鈕的caption 等應(yīng)在程序之外存儲。使新增一種語言時(shí)不用修改程序;根據(jù)不同的語言習(xí)慣動態(tài)調(diào)整與語言相關(guān)的元素,如數(shù)字、金額、日期等的顯示。二、解決方法1.不同地區(qū)碼的識別Java 中用Locale 類識別不同的地區(qū)碼。創(chuàng)建Locale 類的實(shí)例時(shí)指定了語言代碼和地區(qū)代碼。創(chuàng)建GB 中文和BIG5 中文資源的Locale 類實(shí)例的語句分別如下:zhLocale=new Locale(zh,CN);twLocale=new Locale(tw,TW)。此構(gòu)造函數(shù)第一個(gè)參數(shù)是中定義的語言代碼;第二個(gè)參數(shù)中定義的國家代碼。當(dāng)用戶選定了適用的語言后,應(yīng)將此Locale 設(shè)為默認(rèn)值:Locale.setDefault(new Locale(zh,CN). 2. 與語言相關(guān)的資源單獨(dú)存放Java 提供了兩種方法存放與語言相關(guān)的資源。一種是用文本文件;另一種是用ListResourceBundle 資源類。下面分別闡述兩者的不同之處。文本文件使用文本文件存放資源的好處是簡單易用??梢杂萌魏挝谋揪庉嬈骶帉懘宋募耶?dāng)修改資源時(shí)無須重新編譯程序。其格式是 鍵= 值 的列表。例子如下: WebTaxResource_zh_CN.propertiesbutton1= 稅金button2= 稅率status1= 初始化中其中以 開頭的行為注釋行。對應(yīng)每一種語言寫一個(gè)這樣的資源文件,但所有的資源文件都必須包含相同的鍵。ListResourceBundle 資源類雖然用文本文件存儲資源非常容易,但它只能存儲字符對象。而對于數(shù)字、自定義對象等它就無能為力了。因此Java 提供了ListResourceBundle 類。其缺點(diǎn)是每次對資源的修改都必須重新編譯程序。此類的結(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, 簡易稅金計(jì)算器, button1, 工資、薪金個(gè)人所得稅計(jì)算, button_caculate, 計(jì)算,;public Object getContents() return contents;其中兩維的Object 數(shù)組存放的是鍵值對。每對中的第一個(gè)元素是鍵。在各個(gè)資源類中所有鍵的數(shù)量和標(biāo)識都必須完全一致。3. 資源的獲取不同語言的資源存放的文件名都不相同,那如何從正確的文件取得我們需要的資源呢?留意到前面例子中properties 文件名和ListResourceBundle 類名中下劃線后的部分嗎?沒錯(cuò),它們就是在創(chuàng)建Locale 實(shí)例時(shí)指定的語言代碼和地區(qū)代碼!剩下的問題就是要解決下劃線前面的基本類名部分了。它是由一個(gè)ResourceBundle 類的實(shí)例來指定的:ResourceBundle bundle;bundle=ResourceBundle.getBundle(WebTaxResource,currentLocale);getBundle 的第一個(gè)參數(shù)指定了資源文件和資源類的基本類名;第二個(gè)參數(shù)是你所創(chuàng)建的Locale 的實(shí)例,指定了當(dāng)前程序所有資源默認(rèn)的語言代碼和地區(qū)代碼。可見,資源文件名或類名是由 基本類名_ 語言代碼_ 地區(qū)代碼 組成的。Java 將先查找有無此名稱的類,若沒有則查找具有此名稱的properties 文件。匹配了正確的資源文件名或類名后,要獲取某鍵對應(yīng)的值就變得相當(dāng)容易。例如,要創(chuàng)建標(biāo)識為 計(jì)算器 的標(biāo)簽,只要調(diào)用以下語句:label1=new Label(bundle.getString(label_ jisuanqi), Label.CENTER); getString 方法的參數(shù)是資源文件中的鍵名。除了getString 外,ResourceBundle 類還提供了其他方法獲取不同的對象,如getStringArray、getObject 等(因?yàn)樵贚istResourceBundle 的實(shí)例中允許存在非字符對象)。4. 轉(zhuǎn)換非Unicode 資源在Java 內(nèi)部字符是用Unicode 字符表示的。Unicode 是一種16bit 的編碼,支持大多數(shù)地區(qū)的語言。因此,無論是用文本文件還是用資源類的方式存儲資源,都應(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 的程序不但要識別不同的編碼方式,還要根據(jù)不同的語言習(xí)慣動態(tài)調(diào)整與語言相關(guān)的元素,如數(shù)字、金額、日期等的顯示。例如在法文中數(shù)值123456.78 表示為123 456,78;而在德文中應(yīng)表示為123.456,78。除了數(shù)值和貨幣之外,不同語言有不同表示的元素還有日期、時(shí)間和文本消息。Java 提供了NumberFormat、DateFormat、MessageFormat 類根據(jù)不同的Locale 實(shí)例動態(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省南充市2025年中考英語真題附答案
- 2025年中國顆粒積木行業(yè)市場全景分析及前景機(jī)遇研判報(bào)告
- 2025年中國模塊電源行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y方向研究報(bào)告
- 2025年中國馬飼料市場運(yùn)行態(tài)勢及行業(yè)發(fā)展前景預(yù)測報(bào)告
- 泌尿外科??浦R
- 細(xì)化培訓(xùn)課件
- 倉庫作業(yè)培訓(xùn)課件
- 2025年 重慶兩江新區(qū)雁啟幼兒園招聘考試筆試試題附答案
- 2025-2031年中國農(nóng)村網(wǎng)購行業(yè)市場全景監(jiān)測及投資戰(zhàn)略咨詢報(bào)告
- 2025年中國烘手器市場運(yùn)行態(tài)勢及行業(yè)發(fā)展前景預(yù)測報(bào)告
- 數(shù)據(jù)標(biāo)注教學(xué)課件
- 涉密項(xiàng)目保密管理制度
- 東莞市招聘事業(yè)編制教職員筆試真題2024
- 小學(xué)數(shù)學(xué)老師德育論文
- CJ/T 303-2008穩(wěn)壓補(bǔ)償式無負(fù)壓供水設(shè)備
- JG/T 346-2011合成樹脂裝飾瓦
- 腎性高血壓健康教育
- T/CAEPI 70-2023水泥窯協(xié)同處置生活垃圾焚燒飛灰水洗除鹽工藝技術(shù)要求
- 2025至2030年中國電梯能量回饋單元數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024年全國工會財(cái)務(wù)知識大賽備賽試題庫500(含答案)
- 四川省成都市青羊區(qū)2024-2025學(xué)年數(shù)學(xué)五下期末統(tǒng)考試題含答案
評論
0/150
提交評論