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