一.國際化的概念
1.1 什麼是國際化
Struts國際化是建立在java國際化的基礎上,一樣也是通過提供不同國家/語言環境的消息資源,然後通過ResourcreBundle加載指定的Locale對應的資源文件,再取得該資源文件中指定key對應的消息—整個過程與java國際化完全相同。
1.2 什麼需要國際化
- 程序:需要國際化
- 數據:不需要國際化,輸入什麼就是什麼
比如:
用戶註冊的表單,有用戶名,密碼這5個漢字,在zh_CN語言環境,顯示的就是用戶名和密碼。但是在en_US語言環境,顯示的就應該是username和password。這就是程序。
用戶名輸入的是【張三】,密碼輸入的是【test】,那無論在什麼語言環境都應該是是【張三】和【test】。這就是數據。
1.3 固定文本的國際化
例如:消息提示,錯誤提示和菜單,導航欄等等固定文本
1.3.1 創建消息資源包
一個資源包由多個文件組成,這些文件名都有命名規範:主要文件名語言代碼國家代碼.properties。 語言代碼:由iso規定的。國家代碼:有iso規定的
當文件只有主要文件名.properties時,表明它是默認資源包。瀏覽器會根據不同的語言環境找對應語言環境的資源包,當沒有時,找默認的。
每個資源包的內容都由相同的key和對應語言環境的value組成。
比如:
message_zh_CN.properties message_zh_HK.properties message_en_US.properties
1.3.2 讀取資源包文件
Action的國際化
資源文件:
jsp頁面國際化
目前不用這種方式
使用jstl庫
二.Struts2 中使用國際化
2.1 Struts2使用國際化的前提
首先,我們要知道,在Struts2中,所有的消息提示都是基於國際化的。其次,要想在Struts2中使用國際化,動作類必須繼承ActionSupport類
2.2 Struts2使用國際化
2.2.1 配置資源包
全局資源包的配置
包範圍資源包的配置
資源包名稱命名規範:package_語言代碼_國家代碼.properties(固定的)。以此種命名方式的資源包能被該包及其子包中的動作類訪問。
優先級:高於全局消息資源包- 局部消息資源包(只爲動作類服務)
資源包名稱命名規範:動作類名稱語言代碼國家代碼.properties。以此種命名方式的資源包,只爲動作類服務。
優先級最高(就近原則)。
Struts2中資源包的搜索順序:
2.2.2 讀取資源包內容
- 動作類中的讀取方式(實際開發中不用)
- 在頁面中讀取資源包內容
直接訪問jsp
通過動作類訪問jsp
自由指定讀取資源包