程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Struts從零開始四、Struts中的國際化

Struts從零開始四、Struts中的國際化

編輯:關於JAVA

一、概念

I18N作為“國際化”的簡稱,其來源是明文單詞“internationlization”的首末字符“i”和“n”之間的字符數為18。隨著全球經濟的遺體化為一種主流的趨勢,軟件開發者應該開發出支持多國語言、國家化的web應用程序吧。也就是一個web應用程序在運行時能夠根據客戶端請求所來自的國家和語言的不同顯示不同的用戶界面。這樣,當需要在應用程序中添加對一種新的語言的支持時,不需要對已有的軟件返工,無需修改應用程序的程序代碼。

二、Struts對國家化的支持

在Struts框架中進行應用程序的國際化,支持重點在於應用程序的文本和圖像表示。最重要的工作就是准備Resurce Bundle 資源包。事實上,准備資源包的過程,就是把對應不同語言的用戶所涉及的文本和圖片保存在多個文本文件中,客戶端根據不同的環境需要進行更換。這些文件被稱為“屬性文件”,所有屬性文件合在一起被稱為資源包(Resource Bundle)。

Struts建立於Java平台之上,很容易建立國際化和本地化的應用程序。在這裡你要熟悉的關鍵概念是:

1) Locale – 基礎的支持國際化的java類是java.util.Locale。每個Locale代表一個特別的國家和語言的選擇(加上一個可選的語言變量),以及一套格式假定,例如數字和日期等等。

2) ResourceBundle – java.util.ResourceBundle類提供支持多種語言消息的基本工具。查看文檔中關於ResourceBundle類以及你的JDK版本的文檔包中關於國際化的更多內容。

3) PropertyResourceBundle – 一個ResourceBundle類的標准實現允許你使用與初始化properties文件同樣的鍵/值的語法來定義資源。這對於使用為用於一個web應用程序的消息准備資源包是非常方便的,因為這寫消息通常都是面向文本的。

4) MessageFormat – java.text.MessageFormat類允許你使用運行時的指定的參數替換一個消息字符串中的一部分(在這種情況下,是一個從一個資源包得到的消息)。這在你創建一個句子的場合中是有用的,但是詞會以不同的語言安照不同的順序出現。消息中的占位符,字符串{0}用第一個運行時參數替換,{1}用第二個運行時參數替換,以此類推。

5) MessageResources – Struts的類org.apache.struts.util.MessageResources使你能夠將一套資源包視做一個數據庫,並且允許你為一個特定的Locale(通常是與當前用戶相對應)請求一個特定的消息,而不是為服務器運行在其中的缺省的Locale請求消息。

三、示例

1、我們還在前面的登錄實例進行加工。

2、在默認的applicationResources.properties文件中添加相應的消息文本。

label.username=username
label.password=password
button.submit=submit
button.reset=reset

3、創建臨時中文資源文件:applicationResources_temp.propertyies

label.username=用戶名

label.password=密碼

button.submit=確定

button.reset=重置

4、對臨時資源文件進行編碼轉換:

在JDK中提供了native2ascii命令,它能夠實現字符編碼轉換。在DOS下執行以下命令,將生成按GBK以編碼的中文資源文件:applicationResources_zh_CN.properties

native2ascii –encoding gbk applicationResources_temp.properties

applicationResources_zh_CN.properties

生成的applicationResources_zh_CN.properties的內容如下:

label.username="u7528"u6237"u540d
label.password="u5bc6"u7801
button.submit="u786e"u5b9a
button.reset="u91cd"u7f6e

當web用戶的Locale為中文時,Struts框架將自動選擇來自applicationResources_zh_CN.properties文件的消息文本。

5、創建英文的資源文件:

label.username=username
label.password=password
button.submit=submit
button.reset=reset

完成以上幾個步驟後,在web 應用程序的根目錄"WEB-INF目錄"classes目錄下應該有了三個資源文件:

默認資源文件:applicationResource.properties

中文資源文件:applicationResource_zh_CN.properties

英文資源文件:applicationResource_en.properties

6、創建struts的Resource Bundle

Struts配置文件中的元素定義了一個Resource Bundle。Resource Bundle的持久化消息文本存儲在資源文件中,其擴展名為“.properties”,裡面存放的都是“鍵/值”。

在struts-config.xml中對Resource Bundle的配置代碼:

表示默認的資源文件應該是applicationResources.properties,存放在應用程序的根目錄"WEB-INF目錄"classes目錄下。如果應用程序需要支持中文用戶,要在相同目錄下創建一個包涵中文消息的資源文件,文件名必須為applicationResource_zh_CN.properties。

7、修改login.jsp頁面

<html:form action="login.do" method="post">
<bean:message key="label.username"/>
<html:text property="username" /><html:errors property="username"/>
<br />
<bean:message key="label.password"/>
<html:text property="userpass" /><html:errors property="userpass"/>
<br>
<input type="submit" name="Submit" value="<bean:message key="button.submit"/>">
<input type="reset" value="<bean:message key="button.reset"/>">
</html:form>
<bean:message/>:

用於訪問web應用資源的bean標簽,顯示Resource Boundle中的內容。

8、運行程序

1)如果你的浏覽器默認設置為中文,你鍵入地址,將看到的頁面如下:

2)把你的浏覽器的設置為英文,然後刷新頁面,如下圖:

總結:國際化對於web應用程序來說很重要,如果你的web應用程序面對多個國家的話,要實現不同語言的切換,如果不使用國際化的話要麼只有一種語言,要麼在程序裡面改,現在一切都方面了,不過java對中文的支持並不好,並不是什麼地方都可以使用中文的,如在LookUpDispatchAction中就不能使用國際化哦。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved