當前位置:
首頁 > 知識 > SpringMVC項目國際化(i18n)實現方法

SpringMVC項目國際化(i18n)實現方法

按照作息規律,每周五晚必須是分享知識的時間(^o^)/~,這周講點兒啥呢,項目需要逼格,咱們國際化吧(* ̄rǒ ̄)~,項目中碰到這類需求的童鞋可能並不多,但偶爾用到也會比較費時間滴;-),不如駐足本帖片刻吧︿( ̄︶ ̄)︿

記得一開始從事軟體開發時在一個很輕量級的項目中碰到了一個貌似叼炸天的需求,什麼?國際化?沒聽說過,不知道怎麼玩兒。。。,谷歌翻帖快一周,大神們的神貼也看了許久,可就是解決不了我的項目需求,怎麼辦。

我們的需求其實很簡單,就是客戶為方便歪果仁使用他們的系統,在界面上設置兩個用於語言切換的link(中文|EN),切換後當前頁面功能保持不變(就是不跳轉),需要的時候手動切換,默認基於語言和位置的國際化就直接pass了(切換瀏覽器語言位置以切換頁面語言),當然也不能在每個視圖解析時讓每個controller都順帶切換語言邏輯,這樣可行,但對寫代碼來說~太過冗餘!

遂,比較可行的辦法是基於關鍵字請求的頁面切換,憋了老久,容我先上圖哈~,如圖>>>just like this to that--->

SpringMVC項目國際化(i18n)實現方法

SpringMVC項目國際化(i18n)實現方法

SpringMVC自身是支持(這裡使用的是spring-3.2),不用單獨寫代碼來 實現頁面的語言切換,看似很靠譜,但~,請注意,由於這個項目是內網使用的不涉及到增刪改,所以之前把頁面都放在WEB-INF外部,就像這樣:

SpringMVC項目國際化(i18n)實現方法

(所有controller只做數據處理)導致的一個問題是點到其他頁面後頁面語言又被還原了!為這個問題翻帖搞了許久許久,一直不明白為什麼,在這裡我總結下:所有不經過controller視圖解析的目標頁面都不會應用指定的語言區域!!!,切記,這個很重要很重要。

已看過以上至理名言後,解決的辦法其實很簡單,在每個目標頁面對應的controller裡面加上一個默認的頁面跳轉,這樣:

SpringMVC項目國際化(i18n)實現方法

這樣,只要切換語言,就不會出現上面提到的問題,明白以上的問題所在,以下就按部就班的配置:

首先,需要在web-context.xml裡面將i18n的bean配置到攔截器內(只需看第二行),以便在每個視圖解析的時候都能應用到國際化--->SpringMVC項目國際化(i18n)實現方法

然~,在WEB-INF下面的resources內增加這兩個文件:

SpringMVC項目國際化(i18n)實現方法

這裡是中英文切換,如果有其它語言,則每種語言都單獨寫一個properties語言配置文件,請注意文件的命名。

再~,在jsp頁面眉頭聲明spring的標籤庫:

SpringMVC項目國際化(i18n)實現方法

再~,將以前每個頁面顯示的中文文本的地方用spring的message標籤替換:

SpringMVC項目國際化(i18n)實現方法

別忘記 :每個標籤內的code的值是前面properties中對應的key,回頭看看properties的內容就明了~--->

SpringMVC項目國際化(i18n)實現方法

SpringMVC項目國際化(i18n)實現方法

如此,就差最後一步,也是最簡單的一步:界面添加link,一般只需要在主jsp裡面添加就可以了,位置自定哈~,告訴你個小秘密,你只需要這樣就OK (~ ̄▽ ̄)~

SpringMVC項目國際化(i18n)實現方法

OK~終於完成~,分享知識是快樂的,祝大家周末愉快玩兒得happyヾ(o???)?ヾ

======小建議======

properties文件裡面的中文默認只顯示成Unicode編碼,如有大量的文本需要添加,建議使用properties editor插件



500萬就業基金助力,2017大學生就業扶助計劃:http://www.ujiuye.com/zt/jyfc/?wt.bd=zt36716tt

更多精彩內容,訪問中公優就業官網:http://xue.ujiuye.com/?wt.bd=zt36716tt

IT學習、就業交流互動群:http://www.ujiuye.com/zt/qqhdjlpt/?wt.bd=zt36716tt

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

es6的一些基本語法
他隱瞞父母,背井離鄉三年,原來竟是為了……

TAG:IT優就業 |

您可能感興趣

亞泰國際EPC項目獲 iF Design Award 2018酒店設計冠軍
歐貳國際 International O2 Design 建築設計項目部
使用Centos7.5+Nginx+Gunicorn+Django+Python3部署blog項目
AT&T聯合SKT和Intel啟動Airship OpenStack項目
國際 | Trump International Hotel & Tower New York(紐約)酒店翻新項目
Pitti Uomo 宣布啟動 Guest Nation China 中國嘉賓國項目
亞馬遜FBA新推項目Supply Chain Connect
Github 項目推薦 用PyTorch 實現 OpenNMT
2018 Design by Shanghai設計師海外推廣項目將於紐約啟航
2018 Design by Shanghai設計師海外推廣項目將於紐約啟航在即
瑞士區塊鏈項目DFINITY獲6100萬美元新一輪融資,Andreessen Horowitz領投
潮聞快食 | KITH x Bergdorf Goodman 2018秋冬系列發布;NSW 開啟特別項目 ISPA
FIT2CLOUD入選Gartner Cool Vendor;浪潮4897萬元中標「智慧固原」項目
區塊鏈項目 Dfinity 獲得由 Andreessen Horowitz 和 Polychain 領投的 6100 萬美元融資
max 項目上線Jenkins Pipeline2.0
Blazor正式成為Microsoft官方.NET 和WebAssembly項目
Servlet+MyBatis項目轉Spring Cloud微服務,多數據配置修改建議
700 Manhattan Development項目在Koreatown開工建設
曼谷新CBD,火熱地段新項目Knightsbridge Space RAMA9
蘋果MFi授權項目更新 涵蓋USB-C/Lighitng轉3.5mm轉接線