一概念
IN作為國際化的簡稱其來源是明文單詞internationlization的首末字符i和n之間的字符數為隨著全球經濟的遺體化為一種主流的趨勢軟件開發者應該開發出支持多國語言國家化的web應用程序吧也就是一個web應用程序在運行時能夠根據客戶端請求所來自的國家和語言的不同顯示不同的用戶界面這樣當需要在應用程序中添加對一種新的語言的支持時不需要對已有的軟件返工無需修改應用程序的程序代碼
二Struts對國家化的支持
在Struts框架中進行應用程序的國際化支持重點在於應用程序的文本和圖像表示最重要的工作就是准備Resurce Bundle 資源包事實上准備資源包的過程就是把對應不同語言的用戶所涉及的文本和圖片保存在多個文本文件中客戶端根據不同的環境需要進行更換這些文件被稱為屬性文件所有屬性文件合在一起被稱為資源包(Resource Bundle)
Struts建立於Java平台之上很容易建立國際化和本地化的應用程序在這裡你要熟悉的關鍵概念是
) Locale – 基礎的支持國際化的java類是javautilLocale每個Locale代表一個特別的國家和語言的選擇(加上一個可選的語言變量)以及一套格式假定例如數字和日期等等
) ResourceBundle – javautilResourceBundle類提供支持多種語言消息的基本工具查看文檔中關於ResourceBundle類以及你的JDK版本的文檔包中關於國際化的更多內容
) PropertyResourceBundle – 一個ResourceBundle類的標准實現允許你使用與初始化properties文件同樣的鍵/值的語法來定義資源這對於使用為用於一個web應用程序的消息准備資源包是非常方便的因為這寫消息通常都是面向文本的
) MessageFormat – javatextMessageFormat類允許你使用運行時的指定的參數替換一個消息字符串中的一部分(在這種情況下是一個從一個資源包得到的消息)這在你創建一個句子的場合中是有用的但是詞會以不同的語言安照不同的順序出現消息中的占位符字符串{}用第一個運行時參數替換{}用第二個運行時參數替換以此類推
) MessageResources – Struts的類orgapachestrutsutilMessageResources使你能夠將一套資源包視做一個數據庫並且允許你為一個特定的Locale(通常是與當前用戶相對應)請求一個特定的消息而不是為服務器運行在其中的缺省的Locale請求消息
三
示例
我們還在前面的登錄實例進行加工
在默認的applicationResourcesproperties文件中添加相應的消息文本
labelusername=username
labelpassword=password
buttonsubmit=submit
buttonreset=reset
創建臨時中文資源文件applicationResources_temppropertyies
labelusername=用戶名
labelpassword=密碼
buttonsubmit=確定
buttonreset=重置
對臨時資源文件進行編碼轉換
在JDK中提供了nativeascii命令它能夠實現字符編碼轉換在DOS下執行以下命令將生成按GBK以編碼的中文資源文件applicationResources_zh_CNproperties
nativeascii –encoding gbk applicationResources_tempproperties
applicationResources_zh_CNproperties
生成的applicationResources_zh_CNproperties的內容如下
labelusername=uuud
labelpassword=ubcu
buttonsubmit=ueuba
buttonreset=ucdufe
當web用戶的Locale為中文時Struts框架將自動選擇來自applicationResources_zh_CNproperties文件的消息文本
創建英文的資源文件
labelusername=username
labelpassword=password
buttonsubmit=submit
buttonreset=reset
完成以上幾個步驟後在web 應用程序的根目錄WEBINF目錄classes目錄下應該有了三個資源文件
默認資源文件applicationResourceproperties
中文資源文件applicationResource_zh_CNproperties
英文資源文件applicationResource_enproperties
創建struts的Resource Bundle
Struts配置文件中的元素定義了一個Resource BundleResource Bundle的持久化消息文本存儲在資源文件中其擴展名為properties裡面存放的都是鍵/值
在strutsconfigxml中對Resource Bundle的配置代碼
表示默認的資源文件應該是applicationResourcesproperties存放在應用程序的根目錄WEBINF目錄classes目錄下如果應用程序需要支持中文用戶要在相同目錄下創建一個包涵中文消息的資源文件文件名必須為applicationResource_zh_CNproperties
修改loginjsp頁面
<html:form action=logindo method=post>
<bean:message key=labelusername/>
<html:text property=username /><html:errors property=username/>
<br />
<bean:message key=labelpassword/>
<html:text property=userpass /><html:errors property=userpass/>
<br>
<input type=submit name=Submit value=<bean:message key=buttonsubmit/>>
<input type=reset value=<bean:message key=buttonreset/>>
</html:form>
<bean:message/>:用於訪問web應用資源的bean標簽顯示Resource Boundle中的內容
運行程序
)如果你的浏覽器默認設置為中文你鍵入地址將看到的頁面如下
)把你的浏覽器的設置為英文然後刷新頁面如下圖
總結國際化對於web應用程序來說很重要如果你的web應用程序面對多個國家的話要實現不同語言的切換如果不使用國際化的話要麼只有一種語言要麼在程序裡面改現在一切都方面了不過java對中文的支持並不好並不是什麼地方都可以使用中文的如在LookUpDispatchAction中就不能使用國際化哦
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28127.html