傳智播客國際化_第1頁
傳智播客國際化_第2頁
傳智播客國際化_第3頁
傳智播客國際化_第4頁
傳智播客國際化_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 javawebjavaweb開發(fā)開發(fā)- -國際化國際化講師:講師: 方立勛方立勛 高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip1tip1:國際化開發(fā)概述國際化開發(fā)概述l軟件的國際化:軟件開發(fā)時,要使它能同時應(yīng)對世界不同地區(qū)和國家的訪問,并針對不同地區(qū)和國家的訪問,提供相應(yīng)的、符合來訪者閱讀習(xí)慣的頁面或數(shù)據(jù)。l國際化又稱為 i18n:internationalization高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip2tip2:合格的國際化軟件合格的國際化軟

2、件l軟件實現(xiàn)國際化,需具備哪些特征:對于程序中固定使用的文本元素,例如菜單欄、導(dǎo)航條等中使用的文本元素、或錯誤提示信息,狀態(tài)信息等,需要根據(jù)來訪者的地區(qū)和國家,選擇不同語言的文本為之服務(wù)。對于程序動態(tài)產(chǎn)生的數(shù)據(jù),例如(日期,貨幣等),軟件應(yīng)能根據(jù)當(dāng)前所在的國家或地區(qū)的文化習(xí)慣進(jìn)行顯示。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip3tip3:固定:固定文本元素的國際化文本元素的國際化l對于軟件中的菜單欄、導(dǎo)航條、錯誤提示信息,狀態(tài)信息等這些固定不變的文本信息,可以把它們寫在一個properties文件中,并根據(jù)不同的國家編寫不同的properties文件。這一組

3、一組properties文件稱之為一個資源包一個資源包。l在javaapi中提供了一個resourcebundle 類用于描述一個資源包,并且 resourcebundle類提供了相應(yīng)的方法getbundle,這個方法可以根據(jù)來訪者的國家地區(qū)自動獲取與之對應(yīng)的資源文件予以顯示。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip4tip4:創(chuàng)建資源包和資源文件創(chuàng)建資源包和資源文件l一個資源包中的每個資源文件都必須擁有共同的基名?;?。除了基名,每個資源文件的名稱中還必須有標(biāo)識其本地信息的附加部分。例如:一個資源包的基名是“myproperties”,則與中文、英文環(huán)境

4、相對應(yīng)的資源文件名則為: “myproperites_perties” “myproperites_perties”l每個資源包都應(yīng)有一個默認(rèn)資源文件,這個文件不帶有標(biāo)識本地信息的附加部分。若resourcebundle對象在資源包中找不到與用戶匹配的資源文件,它將選擇該資源包中與用戶最相近的資源文件,如果再找不到,則使用默認(rèn)資源文件。例如:perties高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip5tip5:資源文件的書寫格式資源文件的書寫格式l資源文件的內(nèi)容通常采用“關(guān)鍵字值”的形式,軟件根據(jù)關(guān)鍵字檢

5、索值顯示在頁面上。一個資源包中的所有資源文件的關(guān)鍵字必須相同,值則為相應(yīng)國家的文字。l并且資源文件中采用的是properties格式文件,所以文件中的所有字符都必須是ascii字碼,對于像中文這樣的非acsii字符,須先進(jìn)行編碼。(java提供了一個native2ascii命令用于編碼)。例:屬性文件是不能保存中文的username=usernamepassword=passwordsubmit=submitresource_perties文件username=u7528u6237u540dpassword=u5bc6u7801submit=u63d0u4ea4resource_z

6、perties文件高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip6tip6:編程實現(xiàn)固定:編程實現(xiàn)固定文本的國際化文本的國際化lresourcebundle類提供了一個靜態(tài)方法getbundle,該方法用于裝載資源文件,并創(chuàng)建resourcebundle實例: locale currentlocale = locale.getdefault(); resourcebundle myresources = resourcebundle.getbundle(basename, currentlocale);basename為資源包基名(且必須為完整路徑)。

7、如果與該locale對象匹配的資源包子類找不到。一般情況下,則選用默認(rèn)資源文件予以顯示。則選用默認(rèn)資源文件予以顯示。 l加載資源文件后, 程序就可以調(diào)用resourcebundle 實例對象的 getstring 方法獲取指定的資源信息名稱所對應(yīng)的值。 string value = myresources.getstring(“key);l在web應(yīng)用中實現(xiàn)固定文本的國際化高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip7tip7:動態(tài)數(shù)據(jù)的國際化動態(tài)數(shù)據(jù)的國際化l數(shù)值,貨幣,時間,日期等數(shù)據(jù)數(shù)值,貨幣,時間,日期等數(shù)據(jù)由于可能在程序運行時動態(tài)產(chǎn)生,所以無法像文字

8、一樣簡單地將它們從應(yīng)用程序中分離出來,而是需要特殊處理。java 中提供了解決這些問題的 api 類類(位于 java.util 包和 java.text 包中)llocale 類類locale 實例對象代表一個特定的地理,政治、文化區(qū)域。一個 locale 對象本身不會驗證它代表的語言和國家地區(qū)信息是否正確,只是向本地敏感的類提供國家地區(qū)信息只是向本地敏感的類提供國家地區(qū)信息,與國際化相關(guān)的格式化和解析任務(wù)由本地敏感的類去完成。(若jdk中的某個類在運行時需要根據(jù) locale 對象來調(diào)整其功能,這個類就稱為本地敏感類)高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育

9、tip8tip8:dateformatdateformat類類( (國際化日期國際化日期) )ldateformat 類可以將一個日期/時間對象格式化為表示某個國家地區(qū)的日期/時間字符串。ldateformat 類除了可按國家地區(qū)格式化輸出日期外,它還定義了一些用于描述日期/時間的顯示模式顯示模式的 int 型的常量,包括full, long, medium, default, short,實例化dateformat對象時,可以使用這些常量,控制日期/時間的顯示長度。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip9tip9:dateformatdateforma

10、t類類l例如,對于日期/時間“2005年9月15日下午4時41分20秒”,如設(shè)置了dateformat的顯示模式,則日期/時間顯示樣式分別為:short模式完全是數(shù)字的,在中文環(huán)境下顯示為“05-9-15 下午4:41”;在英文環(huán)境下為“9/15/05 4:41 pm”。medium模式比short模式長些,在中文環(huán)境顯示為“2005-9-15 16:41:20”;在英文環(huán)境下顯示為“sep 15, 2005 4:41:20 pm”。long模式比medium模式更長一些,在中文環(huán)境下顯示為“2005年9月15日 下午04時41分20秒”;在英文環(huán)境下顯示為“september 15, 200

11、5 4:41:20 pm cst”。full模式指定日期/時間的完整格式,在中文環(huán)境下顯示為“2005年9月15日 星期四 下午04時41分20秒 cst”;在英文環(huán)境下,這個日期/時間顯示為“thursday, september 15, 2005 4:41:20 pm cst”。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip10tip10:實例化:實例化dateformatdateformat類類l實例化dateformat類有九種方式,以下三種為帶參形式,下面列出的三種方式也可以分別不帶參,或只帶顯示樣式的參數(shù)。getdateinstance(int st

12、yle, locale alocale):以指定的日期顯示模式和本地信息來獲得dateformat實例對象,該實例對象不處理時間值部分。gettimeinstance(int style, locale alocale):以指定的時間顯示模式和本地信息來獲得dateformat實例對象,該實例對象不處理日期值部分。getdatetimeinstance(int datestyle, int timestyle, locale alocale):以單獨指定的日期顯示模式、時間顯示模式和本地信息來獲得dateformat實例對象。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教

13、育 tip11tip11:dateformatdateformat類類ldateformat 對象的方法:format: 將日期將日期/時間對象格式化為符合某個本地環(huán)境習(xí)慣時間對象格式化為符合某個本地環(huán)境習(xí)慣的字符串。的字符串。parse:將符合某個本地環(huán)境習(xí)慣的日期/時間字符串解析為日期/時間對象注意:parse和format完全相反,一個是把date時間轉(zhuǎn)化為相應(yīng)地區(qū)和國家的顯示樣式,一個是把相應(yīng)地區(qū)的時間日期轉(zhuǎn)化成date對象,該方法在使用時,解析的時間或日期要符合指定的國家、地區(qū)格式,否則會拋異常。ldateformat 對象通常不是線程安全的,每個線程都應(yīng)該創(chuàng)建自己的 datefor

14、mat 實例對象高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip12tip12:numberformatnumberformat類類lnumberformat 可以將一個數(shù)值格式化為符合將一個數(shù)值格式化為符合某個國家地區(qū)習(xí)慣的數(shù)值字符串某個國家地區(qū)習(xí)慣的數(shù)值字符串,也可以將符合某個國家地區(qū)習(xí)慣的數(shù)值字符串解析為對應(yīng)的數(shù)值lnumberformat 類的方法:format 方法:將一個數(shù)值格式化為符合某個國家地區(qū)習(xí)慣的數(shù)值字符串parse 方法:將符合某個國家地區(qū)習(xí)慣的數(shù)值字符串解析為對應(yīng)的數(shù)值。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育

15、 tip13tip13:numberformatnumberformat類類l實例化numberformat類時,可以使用locale對象作為參數(shù),也可以不使用,下面列出的是使用參數(shù)的。lgetnumberinstance(locale locale):以參數(shù)locale對象所標(biāo)識的本地信息來獲得具有多種用途的numberformat實例對象lgetintegerinstance(locale locale):以參數(shù)locale對象所標(biāo)識的本地信息來獲得處理整數(shù)整數(shù)的numberformat實例對象lgetcurrencyinstance(locale locale):以參數(shù)locale對象所

16、標(biāo)識的本地信息來獲得處理貨幣貨幣的numberformat實例對象lgetpercentinstance(locale locale):以參數(shù)locale對象所標(biāo)識的本地信息來獲得處理百分比數(shù)值百分比數(shù)值的numberformat實例對象高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip13tip13:練習(xí):練習(xí)l請編寫一個能國際化顯示的登陸頁面。l請創(chuàng)建一個date對象,并把date對象中表示日期部分的時間值,以及表示時間部分的時間值,分別以short、long模式進(jìn)行格式化輸出(國家設(shè)置為中國)。l請將時間值:09-11-28 上午10時25分39秒 cst,反

17、向解析成一個date對象。l請將整數(shù)198,輸出為貨幣形式:$198,并將$198反向解析成整數(shù)198。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip14tip14:messageformat(messageformat(動態(tài)文本動態(tài)文本) )l如果一個字符串中包含了多個與國際化相關(guān)的數(shù)據(jù),可以使用messageformat類對這些數(shù)據(jù)進(jìn)行批量處理。l例如:at 12:30 pm on jul 3,1998, a hurricance destroyed 99 houses and caused $1000000 of damage以上字符串中包含了時間、數(shù)字、

18、貨幣等多個與國際化相關(guān)的數(shù)據(jù),對于這種字符串,可以使用messageformat類對其國際化相關(guān)的數(shù)據(jù)進(jìn)行批量處理。lmessageformat 類如何進(jìn)行批量處理呢?1.messageformat類允許開發(fā)人員用占位符替換掉字符串中的敏感數(shù)據(jù)(即國際化相關(guān)的數(shù)據(jù))。2.messageformat類在格式化輸出包含占位符的文本時,messageformat類可以接收一個參數(shù)數(shù)組,以替換文本中的每一個占位符。高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip15tip15:模式字符串與占位符模式字符串與占位符lat 12:30 pm on jul 3,1998, a

19、hurricance destroyed 99 houses and caused $1000000 of damagel模式字符串: at 0 on 1,a destroyed 2 houses and caused 3 of damage.占位符占位符高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip16tip16:格式化模式字符串格式化模式字符串l模式字符串:模式字符串:on 0, a hurricance destroyed houses and caused of damage.lmessageformat類messageformat(string pat

20、tern) 實例化messageformat對象,并裝載相應(yīng)的模式字符串。format(object obj)格式化輸出模式字符串,參數(shù)數(shù)組中指定占位符相應(yīng)的替換對象。format(new object date, new integer(99), new double(1e7) )高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip17tip17:格式化模式字符串格式化模式字符串string pattern = on 0, a hurricance destroyed 1 houses and caused + 2 of damage.;messageformat

21、msgfmt = new messageformat(pattern,locale.us);/準(zhǔn)備參數(shù)數(shù)組string datetime = jul 3, 1998 12:30 pm;date date = dateformat.getdatetimeinstance(dateformat.medium, dateformat.short, locale.us).parse(datetime);object msgargs = date, new integer(99),new double(1e7);/執(zhí)行格式化操作string result = msgfmt.format(msgargs);system.out.println(result);高級軟件人才實作培訓(xùn)專家高級軟件人才實作培訓(xùn)專家! !北京傳智播客教育 tip18tip18:模式字符串與占位符模式字符串與占位符l占位符有三種方式書

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論