Java Web應用程序開發(fā)(國際化)_第1頁
Java Web應用程序開發(fā)(國際化)_第2頁
Java Web應用程序開發(fā)(國際化)_第3頁
Java Web應用程序開發(fā)(國際化)_第4頁
Java Web應用程序開發(fā)(國際化)_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

國際化CSDN陳紅軍JavaWeb應用程序開發(fā)課程大綱國際化開發(fā)概述動態(tài)數據的國際化1.國際化開發(fā)概述國際化開發(fā)概述 軟件的國際化:軟件開發(fā)時,要使它能同時應對世界不同地區(qū)和國家的訪問,并針對不同地區(qū)和國家的訪問,提供相應的、符合來訪者閱讀習慣的頁面或數據。國際化又稱為i18n:internationalization合格的國際化軟件軟件實現國際化,需具備哪些特征:對于程序中固定使用的文本元素,例如菜單欄、導航條等使用的文本元素、或錯誤提示信息,狀態(tài)信息等,需要根據來訪者的地區(qū)和國家,選擇不同語言的文本為之服務。對于程序動態(tài)產生的數據,例如(日期,貨幣等),軟件應能根據當前所在的國家或地區(qū)的文化習慣進行顯示。固定文本元素的國際化對于軟件中的菜單欄、導航條、錯誤提示信息,狀態(tài)信息等這些固定不變的文本信息,可以把它們寫在一個properties文件中,并根據不同的國家編寫不同的properties文件。這一組properties文件稱之為一個資源包。在JavaAPI中提供了一個ResourceBundle類用于描述一個資源包,并且ResourceBundle類提供了相應的方法getBundle,這個方法可以根據來訪者的國家地區(qū)自動獲取與之對應的資源文件予以顯示。創(chuàng)建資源包和資源文件一個資源包中的每個資源文件都必須擁有共同的基名。除了基名,每個資源文件的名稱中還必須有標識其本地信息的附加部分。例如:一個資源包的基名是“myproperties”,則與中文、英文環(huán)境相對應的資源文件名則為:“myproperites_perties”“myproperites_perties”每個資源包都應有一個默認資源文件,這個文件不帶有標識本地信息的附加部分。若ResourceBundle對象在資源包中找不到與用戶匹配的資源文件,它將選擇該資源包中與用戶最相近的資源文件,如果再找不到,則使用默認資源文件。例如:perties資源文件的書寫格式資源文件的內容通常采用“關鍵字=值”的形式,軟件根據關鍵字檢索值顯示在頁面上。一個資源包中的所有資源文件的關鍵字必須相同,值則為相應國家的文字。并且資源文件中采用的是properties格式文件,所以文件中的所有字符都必須是ASCII字碼,對于像中文這樣的非ACSII字符,須先進行編碼。(java提供了一個native2ascII命令用于編碼)。例:屬性文件是不能保存中文的username=usernamepassword=passwordsubmit=submitresource_perties文件username=\u7528\u6237\u540dpassword=\u5bc6\u7801submit=\u63d0\u4ea4resource_perties文件編程實現固定文本的國際化ResourceBundle類提供了一個靜態(tài)方法getBundle,該方法用于裝載資源文件,并創(chuàng)建ResourceBundle實例:

Locale

currentLocale

=

Locale.getDefault(); ResourceBundle

myResources

= ResourceBundle.getBundle(basename,

currentLocale);basename為資源包基名(且必須為完整路徑)。如果與該locale對象匹配的資源包子類找不到。一般情況下,則選用默認資源文件予以顯示加載資源文件后,程序就可以調用ResourceBundle實例對象的getString方法獲取指定的資源信息名稱所對應的值。

Stringvalue=myResources.getString(“key");在WEB應用中實現固定文本的國際化2.動態(tài)數據的國際化動態(tài)數據的國際化數值,貨幣,時間,日期等數據由于可能在程序運行時動態(tài)產生,所以無法像文字一樣簡單地將它們從應用程序中分離出來,而是需要特殊處理。Java中提供了解決這些問題的API類(位于java.util包和java.text包中)Locale類Locale實例對象代表一個特定的地理,政治、文化區(qū)域。一個Locale對象本身不會驗證它代表的語言和國家地區(qū)信息是否正確,只是向本地敏感的類提供國家地區(qū)信息,與國際化相關的格式化和解析任務由本地敏感的類去完成。(若JDK中的某個類在運行時需要根據Locale對象來調整其功能,這個類就稱為本地敏感類)與前面的Core標簽一樣,在使用標簽前需要先導入標簽庫,在JSP頁面中導入國際化標簽庫的語法如下:<%@tagliburi="/jsp/jstl/fmt"prefix="fmt"%>幾種主要的國際化標簽在JSTL之中的國際化標簽主要包括<fmt:setLocale>、<fmt:bundle>、<fmt:setBundle>、<fmt:message>、<fmt:setLocale>:指定Locale環(huán)境。<fmt:bundle>:指定消息資源使用的文件。<fmt:setBundle>:設置消息資源文件。<fmt:message>:顯示消息資源文件中指定key的消息,支持帶參數消息。幾種主要的國際化標簽<fmt:setLocale><fmt:setLocale>標簽用于在JSP頁面中顯式地設置用戶的本地化信息,并將設置的本地化信息以Locale對象的形式保存在某個Web域中,其在Web域中的屬性名稱為“javax.servlet.jsp.jstl.fmt.locale”。使用<fmt:setLocale>標簽設置本地化信息后,國際化標簽庫中的其他標簽將使用該本地化信息,而忽略客戶端瀏覽器傳遞過來的本地信息。<fmt:setLocalevalue="locale" [variant="variant"] [scope="{page|request|session|application}"]/>幾種主要的國際化標簽<fmt:setBundle><fmt:setBundle>標簽用于根據<fmt:setLocale>標簽設置的本地化信息創(chuàng)建一個資源包(ResourceBundle)實例對象,并將其綁定到一個Web域的屬性上。標簽的語法格式如下:<fmt:setBundlebasename="basename" [var="varName"] [scope="{page|request|session|application}"]/><fmt:bundle>標簽<fmt:bundle>標簽與<fmt:setBundle>標簽的功能類似,但它創(chuàng)建的ResourceBundle實例對象只在其標簽體內有效。<fmt:bundlebasename="basename“>

bodycontent</fmt:bundle>幾種主要的國際化標簽<fmt:message>標簽<fmt:message>標簽用于從一個資源包中讀取信息并進行格式化輸出。

<fmt:messagekey="messageKey" [bundle="resourceBundle"] [var="varName"] [scope="{page|request|session|application}"]/>幾種主要的國際化標簽國際化標簽示例實現頁面的國際化效果需要按以下步驟進行。創(chuàng)建頁面需要的資源文件labels_perties、labels_perties將資源文件內容轉碼。創(chuàng)建頁面文件。將labels_perties、labels_zh_CN.properties兩個文件存放在項目的src目錄下。新建名為fmt_setbundle.jsp的頁面。國際化標簽示例采用國際化標簽的頁面國際化標簽示例發(fā)布項目,運行服務器。國際化標簽示例實現國際化效果還可以使用<fmt:bundle>標簽,通過以下步驟可以完成此效果。修改頁面文件。設置語言選項。執(zhí)行“開始”→“程序”中的“InternetExplorer”命令,打開IE瀏覽器,選擇“工具”→“瀏覽器選項”菜單命令,在彈出的“Internet選項”對話框中單擊“語言”按鈕,修改語言的首選項。啟動容器。啟動Tomcat,輸入“http://localhost:8080/jstldemo/fmt_setbundle.jsp”,如果設置的語言的首選項為英語,則顯示英文版的頁面,如果首選語言為中文,則顯示中文頁面。DateFormat類(國際化日期)DateFormat類可以將一個日期/時間對象格式化為表示某個國家地區(qū)的日期/時間字符串。DateFormat類除了可按國家地區(qū)格式化輸出日期外,它還定義了一些用于描述日期/時間的顯示模式的int型的常量,包括FULL,LONG,MEDIUM,DEFAULT,SHORT,實例化DateFormat對象時,可以使用這些常量,控制日期/時間的顯示長度。DateFormat類例如,對于日期/時間“2005年9月15日下午4時41分20秒”,如設置了DateFormat的顯示模式,則日期/時間顯示樣式分別為:SHORT模式完全是數字的,在中文環(huán)境下顯示為“05-9-15下午4:41”;在英文環(huán)境下為“9/15/054:41PM”。MEDIUM模式比SHORT模式長些,在中文環(huán)境顯示為“2005-9-1516:41:20”;在英文環(huán)境下顯示為“Sep15,20054:41:20PM”。LONG模式比MEDIUM模式更長一些,在中文環(huán)境下顯示為“2005年9月15日下午04時41分20秒”;在英文環(huán)境下顯示為“September15,20054:41:20PMCST”。FULL模式指定日期/時間的完整格式,在中文環(huán)境下顯示為“2005年9月15日星期四下午04時41分20秒CST”;在英文環(huán)境下,這個日期/時間顯示為“Thursday,September15,20054:41:20PMCST”。實例化DateFormat類實例化DateFormat類有九種方式,以下三種為帶參形式,下面列出的三種方式也可以分別不帶參,或只帶顯示樣式的參數。getDateInstance(intstyle,LocaleaLocale):以指定的日期顯示模式和本地信息來獲得DateFormat實例對象,該實例對象不處理時間值部分。getTimeInstance(intstyle,LocaleaLocale):以指定的時間顯示模式和本地信息來獲得DateFormat實例對象,該實例對象不處理日期值部分。getDateTimeInstance(intdateStyle,inttimeStyle,LocaleaLocale):以單獨指定的日期顯示模式、時間顯示模式和本地信息來獲得DateFormat實例對象。DateFormat類DateFormat對象的方法:format:將date對象格式化為符合某個本地環(huán)境習慣的字符串。parse:將字符串解析為日期/時間對象注意:parse和format完全相反,一個是把date時間轉化為相應地區(qū)和國家的顯示樣式,一個是把相應地區(qū)的時間日期轉化成date對象,該方法在使用時,解析的時間或日期要符合指定的國家、地區(qū)格式,否則會拋異常。DateFormat對象通常不是線程安全的,每個線程都應該創(chuàng)建自己的DateFormat實例對象NumberFormat類NumberFormat可以將一個數值格式化為符合某個國家地區(qū)習慣的數值字符串,也可以將符合某個國家地區(qū)習慣的數值字符串解析為對應的數值NumberFormat類的方法:format方法:將一個數值格式化為符合某個國家地區(qū)習慣的數值字符串parse方法:將符合某個國家地區(qū)習慣的數值字符串解析為對應的數值。NumberFormat類實例化NumberFormat類時,可以使用locale對象作為參數,也可以不使用,下面列出的是使用參數的。getNumberInstance(Localelocale):以參數locale對象所標識的本地信息來獲得具有多種用途的NumberFormat實例對象getIntegerInstance(Localelocale):以參數locale對象所標識的本地信息來獲得處理整數的NumberFormat實例對象getCurrencyInstance(Localelocale):以參數locale對象所標識的本地信息來獲得處理貨幣的NumberFormat實例對象getPercentInstance(Localelocale):以參數locale對象所標識的本地信息來獲得處理百分比數值的NumberFormat實例對象練習請編寫一個能國際化顯示的登陸頁面。請創(chuàng)建一個date對象,并把date對象中表示日期部分的時間值,以及表示時間部分的時間值,分別以short、long模式進行格式化輸出(國家設置為中國)。請將時間值:09-11-28上午10時25分39秒CST,反向解析成一個date對象。請將整數198,輸出為貨幣形式:$198,并將$198反向解析成整數198。

<fmt:formatDate>標簽<fmt:formatDate>標簽用于對日期和時間按本地化信息進行格式化,或對日期和時間按化為JSP頁面作者自定義的格式進行格式化。語法格式如下:<fmt:formatDatevalue="date" [type="{time|date|both}"] [dateStyle="{default|short|medium|long|full}"] [timeStyle="{default|short|medium|long|full}"] [pattern="customPattern"] [timeZone="timeZone"] [var="varName"] [scope="{page|request|session|application}"]/><fmt:parseDate>標簽<fmt:parseDate>標簽與<fmt:formatDate>標簽的作用正好相反,它用于將一個表示日期和時間的字符串解析成java.util.Date實例對象.語法1,沒有標簽體的情況:<fmt:parseDatevalue="dateString" [type="time|date|both"] [dateStyle="default|short|medium|long|full"] [timeStyle="default|short|medium|long|full"] [pattern="customPattern"] [timeZone="timeZone"] [parseLocale="parseLocale"] [var="varName"] [scope="{page|request|session|application}"]/><fmt:formatNumber>標簽<fmt:formatNumber>標簽用于將數值、貨幣或百分數按本地化信息進行格式化,或者按JSP頁面作者自定義的格式進行格式化。

沒有標簽體的情況:<fmt:formatNumbervalue="numericValue" [type="{number|currency|percent}"] [pattern="customPattern"] [currencyCode="currencyCode"] [currencySymbol="currencySymbol"] [groupingUsed="{true|false}"]

[maxIntegerDigits="maxIntegerDigits"] [minIntegerDigits="minIntegerDigits"] [maxFractionDigits="maxFractionDigits"]

[minFractionDigits="minFractionDigits"] [var="varName"] [scope="{page|request|session|application}"]/><fmt:parseNumber>標簽<fmt:parseDate>標簽與<fmt:formatNumber>標簽的作用正好相反,它用于將一個按本地化方式被格式化后的數值、貨幣或百分數解析為數值

語法1,沒有標簽體的情況:<fmt:parseNumbervalue="numericValue" [type="{number|currency|percent}"] [pattern="customPattern"] [parseLocale="parseLocale"] [integerOnly="{true|false}"] [var="varName"

[scope="{page|request|session|application}"]/>語法2,有標簽體的情況,在標簽體中指定要被解析的日期和/或時間值:<fmt:parseDate[type="time|date|both"] [dateStyle="default|short|medium|long|full"] [timeStyle="default|short|medium|long|full"] [pattern="customPattern"] [timeZone="timeZone"] [parseLocale="parseLocale"] [var="varName"] [scope="{page|request|session|application}"]>

datevaluetobeparsed</fmt:parseDate>MessageFormat(動態(tài)文本)如果一個字符串中包含了多個與國際化相關的數據,可以使用MessageFormat類對這些數據進行批量處理。例如:

At12:30pmonjul3,1998,ahurricancedestroyed99housesandcaused$1000000ofdamage以上字符串中包含了時間、數字、貨幣等多個與國際化相關的數據,對于這種字符串,可以使用MessageFormat類對其國際化相關的數據進行批量處理。MessageFormat類如何進行批量處理呢?1.MessageFormat類允許開發(fā)人員用占位符替換掉字符串中的敏感數據(即國際化相關的數據)。2.MessageFormat類在格式化輸出包含占位符的文本時,messageFormat類可以接收一個參數數組,以替換文本中的每一個占位符。模式字符串與占位符At12:30pmonjul3,1998,ahurricancedestroyed99housesandcaused$1000000ofdamage模式字符串:At{0}on{1},adestroyed{2}housesandcaused{3}ofdamage.格式化模式字符串模式字符串:On{0},ahurricancedestroyed{1}housesandcaused{2}ofdamage.MessageFormat類MessageFormat(Stringpattern)實例化MessageFormat對象,并裝載相應的模式字符串。format(objectobj[])格式化輸出模式字符串,參數數組中指定占位符相應的替換對象。format(newObject[]{date,newInteger(99),newDouble(1E7)})格式化模式字符串Stringpattern="On{0},ahurricancedestroyed{1}housesandcaused" +"{2}ofdamage.";MessageFormatmsgFmt=newMessageFormat(pattern,Locale.US);//準備參數數組Stringdatetime="Jul3,199812:30PM";Datedate=DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT,Locale.US).parse(datetime);Object[]msgArgs={date,newInteger(99),newDouble

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論