⑥Struts2深入淺出-國際化.ppt
《⑥Struts2深入淺出-國際化.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《⑥Struts2深入淺出-國際化.ppt(28頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第六節(jié) 國際化 韓冰cris forever 2 本章學(xué)習(xí)任務(wù) 國際化概述Java內(nèi)置的國際化 自學(xué)了解 Struts2中的國際化入門資源文件讀取順序Struts2訪問國際化信息的不同方式指定語言信息的不同方式 2020 2 29 概述 國際化 Internationalization 通俗點(diǎn)講就是讓軟件實(shí)現(xiàn)對(duì)多種語言的支持 可以通過簡(jiǎn)單的設(shè)置讓軟件支持的語言從一種切換到另一種 當(dāng)然 最直觀的就是界面顯示了 比如一個(gè)實(shí)現(xiàn)了國際化的軟件 可以很容易的從英文界面切換成中文界面 在日常工作中也常見到國際化的軟件 比如Eclipse就是多語言的 只要安裝了相應(yīng)的語言包 在啟動(dòng)的時(shí)候指定語言參數(shù)就可以實(shí)現(xiàn)軟件界面的快速轉(zhuǎn)換 在設(shè)計(jì)多語言實(shí)現(xiàn)的時(shí)候 要注意兩點(diǎn) 不能給軟件開發(fā)帶來過多的額外負(fù)擔(dān) 在改變語言或者添加一種語言的時(shí)候 不能修改已經(jīng)寫好的軟件 Struts2作為一款成熟的web框架 自然也支持國際化 使用Struts2的時(shí)候 只要把對(duì)應(yīng)的資源文件放在指定的地方 不用修改程序的主體 就可以對(duì)應(yīng)新的語言要求 具體如何實(shí)現(xiàn) 后面再詳細(xì)描述 先來看看Java內(nèi)置的國際化 2020 2 29 Java內(nèi)置的國際化 Struts2的國際化也不是無本之木 它依賴于Java內(nèi)置的國際化機(jī)制 只是在Java內(nèi)置的國際化機(jī)制的基礎(chǔ)上增加了跟Struts2其他組件的融合 使得其他組件也可以非常方便的使用國際化 2020 2 29 Java內(nèi)置的國際化 準(zhǔn)備國際化信息文件 Java內(nèi)置的國際化 以java util ResourceBundle和java util Locale兩個(gè)類為中心 其中 java util Locale負(fù)責(zé)選擇合適的語言 而java util ResourceBundle負(fù)責(zé)根據(jù)注入的java util Locale對(duì)象來選擇國際化信息的來源 返回國際化信息 如果我們的軟件支持中文和英文兩種語言 而以中文作為默認(rèn)的語言 則會(huì)出現(xiàn)三種語言 默認(rèn)的語言 中文 中文和英文 當(dāng)然 其實(shí)只有兩種語言中文和英文 但是 以中文為默認(rèn)的語言是非常必要的 有時(shí)候 軟件需要應(yīng)對(duì)的語言不一定只有中文和英文 如果法國的朋友想要使用軟件呢 由于不存在法文的信息 這時(shí)候只能返回默認(rèn)的語言 那就是中文了 在這種情況下準(zhǔn)備國際化資源文件 一般準(zhǔn)備三個(gè)文件 分別是默認(rèn)語言 中文與英文的文件 每個(gè)文件都以properties為擴(kuò)展名 內(nèi)容以key value對(duì)的形式存在 其中key是如何引用這條信息 而value就是這條信息真正要顯示的內(nèi)容了 綜上所述 可以準(zhǔn)備如下三個(gè)文件作為國際化信息的文件 2020 2 29 Java內(nèi)置的國際化 準(zhǔn)備國際化信息文件 1 默認(rèn)語言文件 message properties注意 在這個(gè)文件中 本應(yīng)該在 后面寫上中文 但是 我們沒有這樣做 這是因?yàn)镴ava內(nèi)置的國際化在處理中文的時(shí)候還需要一步特殊處理 這在后面有專門的章節(jié)處理 因此這里就沒有使用中文了 2020 2 29 Java內(nèi)置的國際化 準(zhǔn)備國際化信息文件 2 中文語言文件 message zh CN properties注意 故意在兩行之前都加了一個(gè) 這在properties文件中代表注釋的意思 也就是說這個(gè)message zh CN properties實(shí)際上是空的 2020 2 29 Java內(nèi)置的國際化 準(zhǔn)備國際化信息文件 3 英文語言文件 message en US properties先不去考慮客戶端怎么寫 觀察一下這三個(gè)文件的命名 它們擁有共通的前綴message 代表了它們是同一組國際化信息的不同語言 它們各自的后綴代表了自己的語言 其中沒有后綴 message properties 的文件 代表這是默認(rèn)語言文件 2020 2 29 Java內(nèi)置的國際化 準(zhǔn)備國際化信息文件 2 使用ResouceBundler和Locale選擇多語言信息將上面的三個(gè)文件拷貝到工程的src目錄下備用 然后就可以在Java程序中引用這些多語言信息了 在引用多語言信息的時(shí)候 要做三件事情 引用哪種語言 引用哪組多語言文件 引用這種語言的這組文件里的哪條信息 2020 2 29 Java內(nèi)置的國際化 準(zhǔn)備國際化信息文件 測(cè)試代碼看備注 Locale類里預(yù)置了許多語種 上面代碼中引用的Locale SIMPLIFIED CHINESE對(duì)應(yīng)zh CN Locale US對(duì)應(yīng)en US Locale FRANCE對(duì)應(yīng)fr FR 也就確定了前面所說的文件名后綴 ResouceBundle getBundle方法傳入的第一個(gè)參數(shù)就是要引用哪組文件 也就確定了前面所說的文件名前綴 由前綴和后綴共同作用取得的ResourceBundle對(duì)象就代表了一個(gè)文件中的所有多語言信息 它的getString方法傳入的參數(shù)就是前面所說的key 而且返回值就是實(shí)際需要的value 2020 2 29 Java內(nèi)置的國際化 準(zhǔn)備國際化信息文件 對(duì)中文的支持 Locale類里預(yù)置了許多語種 上面代碼中引用的Locale SIMPLIFIED CHINESE對(duì)應(yīng)zh CN Locale US對(duì)應(yīng)en US Locale FRANCE對(duì)應(yīng)fr FR 也就確定了前面所說的文件名后綴 ResouceBundle getBundle方法傳入的第一個(gè)參數(shù)就是要引用哪組文件 也就確定了前面所說的文件名前綴 由前綴和后綴共同作用取得的ResourceBundle對(duì)象就代表了一個(gè)文件中的所有多語言信息 它的getString方法傳入的參數(shù)就是前面所說的key 而且返回值就是實(shí)際需要的value 2020 2 29 Struts2中的國際化入門 引用國際化信息資源文件默認(rèn)語言文件 message properties中文語言文件 message zh CN properties英文語言文件 message en US properties 2020 2 29 Struts2中的國際化入門 在JSP中訪問國際化信息 在jsp中 可以直接選用Struts2的text標(biāo)簽來訪問國際化信息 其中text標(biāo)簽的name屬性就是要引用哪個(gè)key 示例如下 2020 2 29 Java內(nèi)置的國際化 指定瀏覽器使用的語種 首先 要去掉stuts xml中的對(duì)中文支持所設(shè)置的常量 以防止對(duì)運(yùn)行結(jié)果的干擾 注意 這一點(diǎn)非常重要 否則你將觀察不到語言的變化 然后 可以在瀏覽器中設(shè)置選用的語言 以筆者的瀏覽器為例 打開瀏覽器的屬性頁 如下圖所示 2020 2 29 2020 2 29 2020 2 29 2020 2 29 2020 2 29 Struts2訪問國際化信息的不同方式 只保留全局級(jí)國際化信息資源文件 并在message properteis中增加一個(gè)帶有參數(shù)的國際化信息 2020 2 29 Struts2訪問國際化信息的不同方式 Struts2的常量設(shè)置還可以使用Struts2的常量設(shè)置來覆蓋瀏覽器的語言設(shè)置 比如前面的示例 在struts xml中加上struts locale這個(gè)常量 值為需要使用的語言 示例如下 這時(shí)候 會(huì)發(fā)現(xiàn)無論怎么修改瀏覽器的語言設(shè)置 Struts2都會(huì)去訪問中文信息了 2020 2 29 Struts2訪問國際化信息的不同方式 由用戶選擇語言 以上的兩種設(shè)置 還可能滿足不了日常需求 常量設(shè)置太死板 加上了常量設(shè)置 就不方便訪問其他語言的信息了 瀏覽器語言設(shè)置太麻煩 用戶想修改訪問的語言時(shí) 必須到瀏覽器的屬性對(duì)話框去一頓勾選 對(duì)于一般用戶來講 這太繁瑣 幸好Struts2提供了最靈活的 也是級(jí)別最高的方式 那就是由用戶選擇語言 用戶只要在提交請(qǐng)求的時(shí)候加上request locale這個(gè)參數(shù) 并提供對(duì)應(yīng)的值就可以自由選擇語言了 這得力于Struts2的i18n內(nèi)建攔截器 defaultStack攔截器棧引用了i18n攔截器 因此 能很方便的由用戶來選擇語言 i18n攔截器在Action運(yùn)行之前會(huì)檢查請(qǐng)求中是否包含了一個(gè)叫做 request locale 的參數(shù) 如果存在此參數(shù) 則會(huì)用它的值建立一個(gè)Locale對(duì)象 并用這個(gè)Locale對(duì)象去覆蓋Struts2的常量設(shè)置和瀏覽器的語言設(shè)置 除此之外 i18n攔截器還會(huì)把這個(gè)Locale對(duì)象放到名為WW TRANS I18N LOCALE的Session屬性中去 而這個(gè)屬性也會(huì)覆蓋Struts2的常量設(shè)置和瀏覽器的語言設(shè)置 因此 只需要傳入一次request locale參數(shù) session就會(huì)記住用戶的選擇 整個(gè)網(wǎng)站就會(huì)都變成用戶選擇的語言了 來示例一下 第一次訪問結(jié)果頁面的時(shí)候 輸出相關(guān)的session屬性 如下 2020 2 29 Struts2訪問國際化信息的不同方式 由用戶選擇語言 由于當(dāng)前的struts xml設(shè)置常量struts locale的值為zh CN 所以 第一次訪問將會(huì)使用常量設(shè)置的中文 而且session中也沒有WW TRANS I18N LOCALE這個(gè)屬性 運(yùn)行結(jié)果如下 2020 2 29 2020 2 29 三種方式的覆蓋關(guān)系 對(duì)于這三種指定語言種類的方式 其優(yōu)先級(jí)為 用戶指定參數(shù) struts xml中配置常量 瀏覽器設(shè)置而且 用戶參數(shù)指定的方式 只需要設(shè)置一次就可以了 在整個(gè)session生命周期內(nèi) 都不用再次設(shè)置 2020 2 29 Struts2國際化的運(yùn)行機(jī)制 Struts2中 通過ActionContext getContext setLocale Localearg 設(shè)置用戶的默認(rèn)語言 不過這種方式完全是一種手動(dòng)方式 而且需要編程實(shí)現(xiàn) 為了簡(jiǎn)化設(shè)置用戶默認(rèn)語言環(huán)境 Struts2提供了一個(gè)名為i18n的攔截器 Interceptor 并將其注冊(cè)在默認(rèn)的攔截器棧中 defaultStack 2020 2 29 Struts2國際化的運(yùn)行機(jī)制 2020 2 29 創(chuàng)建下拉列表框 選擇程序語言 實(shí)現(xiàn)用戶自行選擇程序語言功能 只需提供一個(gè)下拉框列表 并且當(dāng)用戶選擇下拉框中某一項(xiàng)時(shí) 系統(tǒng)將該下拉項(xiàng)的值作為request locale參數(shù)提交給Struts2 學(xué)習(xí)是不斷的提問和總結(jié) 請(qǐng)對(duì)本章節(jié)中所遇到的問題 進(jìn)行提問和討論 讓大家一起進(jìn)步- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Struts2 深入淺出 國際化
鏈接地址:http://www.hcyjhs8.com/p-6592378.html