




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第11章國際化學習目的與要求本章重點講解SpringMVC國際化的實現方法。通過本章的學習,讀者應理解SpringMVC國際化的設計思想,掌握SpringMVC國際化的實現方法。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社目錄11.1程序國際化概述11.2SpringMVC的國際化11.3用戶自定義切換語言示例《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社11.1.1Java國際化的思想Java國際化的思想是將程序中的信息放在資源文件中,程序根據支持的國家及語言環(huán)境,讀取相應的資源文件。資源文件是key-value對,每個資源文件中的key是不變的,但value則隨不同國家/語言變化。在Java程序的國際化中主要通過兩個類來完成:
java.util.Locale:用于提供本地信息,通常稱它為語言環(huán)境。不同的語言,不同的國家和地區(qū)采用不同的Locale對象來表示。
java.util.ResourceBundle:該類稱為資源包,包含了特定于語言環(huán)境的資源對象。當程序需要一個特定于語言環(huán)境的資源時(如字符串資源),程序可以從適合當前用戶語言環(huán)境的資源包中加載它。采用這種方式,可以編寫獨立于用戶語言環(huán)境的程序代碼,而與特定語言環(huán)境相關的信息則通過資源包來提供?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社11.1.1Java國際化的思想為了實現Java程序的國際化,必須事先提供程序所需要的資源文件。資源文件的內容是由很多key-value對組成,其中key是程序使用的部分,而value則是程序界面的顯示。資源文件的命名可以有如下3種形式:
baseNperties baseName_perties baseName_language_perties
baseName是資源文件的基本名稱,由用戶自由定義。但是language和country就必須為Java所支持的語言和國家/地區(qū)代碼。例如:中國大陸:baseName_zh_CN.properties美國:baseName_en_US.properties《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社11.1.2Java支持的語言和國家java.util.Locale類的常用構造方法如下:
publicLocale(Stringlanguage)
publicLocale(Stringlanguage,Stringcountry)其中l(wèi)anguage表示語言,它的取值是由小寫的兩個字母組成的語言代碼。country表示國家或地區(qū),它的取值由大寫的兩個字母組成的國家或地區(qū)代碼。實際上,Java并不能支持所有國家和語言,如果需要獲取Java所支持的語言和國家,開發(fā)者可以通過調用Locale類的getAvailableLocales方法獲取,該方法返回一個Locale數組,數組里包含了Java所支持的語言和國家?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社11.1.3Java程序國際化為讓該程序支持國際化,需要將“我要向不同國家的人民問好:您好!”對應不同語言環(huán)境的字符串,定義在不同的資源文件中。在Web應用的src/main/java目錄下新建文件messageResource_zh_CN.properties和messageResource_en_US.properties。其次,給資源文件messageResource_zh_CN.properties添加“hello=我要向不同國家的人民問好:您好!”內容。最后,給資源文件messageResource_en_US.properties添加“hello=Iwanttosayhellotoallworld!”內容?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社11.1.3Java程序國際化publicstaticvoidmain(String[]args){ //取得系統默認的國家語言環(huán)境
Localelc=Locale.getDefault(); //Localelc=newLocale("en","US"); //根據國家語言環(huán)境加載資源文件
ResourceBundlerb=ResourceBundle.getBundle("messageResource",lc); //打印出從資源文件中取得的信息
System.out.println(rb.getString("hello"));
}上面程序中的打印語句打印的內容是從資源文件中讀取的信息。如果在中文環(huán)境下運行程序,將打印“我要向不同國家的人民問好:您好!”;如果將Locale對象實例化為Locale("en","US"),再次運行該程序,將打印“Iwanttosayhellotoallworld!”?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社11.1.4帶占位符的國際化信息在資源文件中的消息文本可以帶有參數,例如:welcome={0},歡迎學習SpringMVC。花括號中的數字是一個占位符,可以被動態(tài)的數據替換。在消息文本中的占位符可以使用0到9的數字,也就是說,消息文本的參數最多可以有10個。例如:welcome={0},歡迎學習SpringMVC,今天是星期{1}。要替換消息文本中的占位符,可以使用java.text.MessageFormat類,該類提供了一個靜態(tài)方法format(),用來格式化帶參數的文本,format()方法定義如下。publicstaticStringformat(Stringpattern,Object…arguments)其中,pattern字符串就是一個帶占位符的字符串,消息文本中的數字占位符將按照方法參數的順序(從第二個參數開始)而被替換。Stringmsg=rb.getString("welcome");//替換消息文本中的占位符,消息文本中的數字占位符將按照參數的順序(從第二個參數開始)而被替換,即“我”替換{0},“5”替換{1}StringmsgFor=MessageFormat.format(msg,"我","5");《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社目錄11.1程序國際化概述11.2SpringMVC的國際化11.3用戶自定義切換語言示例《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社11.2SpringMVC的國際化SpringMVC的國際化是建立在Java國際化的基礎之上的,SpringMVC框架的底層國際化與Java國際化是一致的,作為一個良好的MVC框架,SpringMVC將Java國際化的功能進行了封裝和簡化,開發(fā)者使用起來更加簡單快捷。國際化和本地化應用程序時,需要具備以下兩個條件:1.將文本信息放到資源屬性文件中。2.選擇和讀取正確位置的資源屬性文件?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社11.2.1SpringMVC加載資源屬性文件在SpringMVC應用中,不能直接使用ResourceBundle加載資源屬性文件,而是利用bean(messageSource)告知SpringMVC框架將從哪里加載資源屬性文件。示例代碼,具體如下。<beanid="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <!--<propertyname="basename"value="classpath:messages"/>-->
<propertyname="basename"value="/WEB-INF/resource/messages"/></bean>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社11.2.2語言區(qū)域的選擇在SpringMVC應用中,可以使用語言區(qū)域解析器bean選擇語言區(qū)域。該bean由3個常見實現:AcceptHeaderLocaleResolver、SessionLocaleResolver以及CookieLocaleResolver。如果采用基于SessionLocaleResolver和CookieLocaleResolver國際化實現,必須配置LocaleChangeInterceptor攔截器,示例代碼如下:<mvc:interceptors><beanclass="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/></mvc:interceptors>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社AcceptHeaderLocaleResolver根據瀏覽器HttpHeader中的accept-language域判定(accept-language域中一般包含了當前操作系統的語言設定,可通過HttpServletRequest.getLocale方法獲得此域的內容)。改變Locale是不支持的,即不能調用LocaleResolver接口的setLocale(HttpServletRequestrequest,HttpServletResponseresponse,Localelocale)方法設置Locale?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社SessionLocaleResolver根據用戶本次會話過程中的語言設定決定語言區(qū)域(如:用戶進入首頁時選擇語言種類,則此次會話周期內統一使用該語言設定)。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社CookieLocaleResolver根據Cookie判定用戶的語言設定(Cookie中保存著用戶前一次的語言設定參數)。由上述分析可知,SessionLocaleResolver實現,比較方便用戶選擇喜歡的語言種類。下面是使用SessionLocaleResolver實現的bean定義。<beanid="localeResolver“class="org.springframework.web.servlet.i18n.SessionLocaleResolver"><propertyname="defaultLocale"value="zh_CN"></property></bean>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社11.2.3使用message標簽顯示國際化信息在SpringMVC框架中,可以使用Spring的message標簽在JSP頁面中顯示國際化消息。使用message標簽時,需要在JSP頁面最前面使用taglib指令聲明spring標簽,代碼如下。<%@taglibprefix="spring"uri="/tags"%>message標簽有如下常用屬性:
code:獲得國際化消息的key。
arguments:代表該標簽的參數。如替換消息中的占位符,示例代碼為<spring:messagecode="third"arguments="888,999"/>,third對應的消息有兩個占位符{0}和{1}。
argumentSeparator:用來分隔該標簽參數的字符,默認為逗號。
text:如果code屬性不存在,或指定的key無法獲取消息時,所顯示的默認文本信息。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社目錄11.1程序國際化概述11.2SpringMVC的國際化11.3用戶自定義切換語言示例《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社11.3用戶自定義切換語言示例在許多成熟的商業(yè)軟件系統中,可以讓用戶自由切換語言,而不是修改程序(Locale對象實例化)或瀏覽器的語言設置。SpringMVC允許用戶自行選擇語言設置?!纠?1-1】用戶自定義切換語言設置。在該實例中使用SessionLocaleResolver實現國際化?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社1.創(chuàng)建應用創(chuàng)建應用ch11_1,并導入SpringMVC相關的JAR包,包括Spring的4個基礎JAR包、SpringCommonsLoggingBridge對應的JAR包spring-jcl-6.0.0.jar、AOP實現JAR包spring-aop-6.0.0.jar、DispatcherServlet接口所依賴的性能監(jiān)控包(micrometer-observation.jar和micrometer-commons.jar)以及兩個Web相關的JAR包?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社2.創(chuàng)建國際化資源文件在應用ch11_1的/WEB-INF/目錄下,創(chuàng)建名為resource的文件夾,并在文件夾中創(chuàng)建中英文資源文件messages_en_US.properties和messages_zh_CN.properties?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社3.創(chuàng)建視圖JSP文件在應用ch11_1的/WEB-INF/目錄下,創(chuàng)建名為jsp的文件夾,并在文件夾中創(chuàng)建3個JSP文件:first.jsp、second.jsp和third.jsp?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學出版社4.創(chuàng)建控制器類該應用有兩個控制器類,一個是I18NTestController處理語言種類選擇請求,一個是MyController進行頁面導航。在應用ch11_1的src/main/java目錄中,創(chuàng)建名為controller的包,并在該包中創(chuàng)建I18NTestController和MyController兩個控制器類。@ControllerpublicclassI18NTestController{ /** *locale接收請求參數loca
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度夫妻雙方婚內行為監(jiān)督與情感支持合同
- 二零二五年度窯廠魚塘承包及漁業(yè)資源開發(fā)合同
- 二零二五年度環(huán)保產業(yè)實習生培養(yǎng)協議
- 二零二五年度企業(yè)內部資料不得外泄保密合同范本
- 二零二五年度工地安全文明施工個人安全協議書
- 二零二五年度門面出租與共享經濟合作協議
- 2025年度電力設施延期建設合同
- 二零二五年度裝飾公司施工人員安全生產責任勞動合同
- 二零二五年度智能交通管理系統合作開發(fā)協議
- 美甲店聘用合同-二零二五年度技師崗位技能考核協議
- 2025年貴州貴安新區(qū)產業(yè)發(fā)展控股集團有限公司招聘筆試參考題庫附帶答案詳解
- 機械制造技術基礎(課程課件完整版)
- 煤礦崗位標準化作業(yè)流程
- 電力施工安全技術交底記錄表
- E4A使用手冊(DOC)
- (民法典版)離婚登記申請受理回執(zhí)單
- 食品質量控制管理方案
- ISO9001_2016年[全套]質量管理體系文件
- 普通中專畢業(yè)生登記表格模板(共4頁)
- 電子病歷及病歷信息標準化(第五講)
- 鐵路建設項目工程試驗室管理標準TB104422009
評論
0/150
提交評論