Struts2之國際化

Struts2之國際化 
 
[風]
 
這個世界上唯一不變的就是變化,不知道明天會發生什麼,也許這就是生命的動力吧。
 
我們不能限制我們的用戶不改變他的想法,也不能讓所有的用戶都按照我們的想法去設計項目。舉個簡單的例子,比如說登陸失敗的消息,如果用戶沒有輸入帳號就點擊了登陸按鈕。用戶甲可能會希望提示消息是“請輸入帳號!”,用戶乙可能會希望提示消息是“帳號不能爲空!”。
 
還有,用戶起初的想法可能是隻開發一個在中文環境下運行的系統,後來很有可能要一個功能相同但是在英文或者日文環境下運行的系統。怎樣讓我們的系統在最小的改動下適應用戶的需求呢?在這一點上,微軟做的很不錯,我想盡辦法都無法讓QQ在日文系統下運行,但是MSN就不用擔心這樣的問題。
 
這就是我們今天要研究的內容--國際化要解決的問題。
 
首先我們要知道什麼是屬性文件。屬性文件並不是Struts特有的東西,是Java本身就支持的一個技術。屬性文件就是以.properties爲擴展名的文本文件。屬性文件裏面保存的是屬性列表,屬性列表中每個鍵及其對應值都是一個字符串。
 
我們可以把項目要顯示給用戶的字符串保存在屬性列表中,項目中使用字符串對應的鍵。這樣,當用戶要修改字符串的時候,我們就可以直接到屬性文件裏去修改,就不用修改程序代碼了。而且,屬性文件還可以這樣命名:XXX_zh_CN.properties,XXX_en_US.properties或XXX_ja_JP.properties,這樣我們就可以把中文版的消息字符串保存在zh_CN.properties裏,把英文版的保存在en_US裏,把日文版的保存在ja_JP裏。然後,程序根據運行時環境決定加載哪個文件,這就是我們所謂的國際化。
 
這樣說好像有點難,實際上Struts爲我們做了很多工作,我們需要關心的只是定義鍵和對應的字符串,然後在顯示的地方指定鍵就可以了。
 
還有個問題得先解決,就是不同的語言編碼字符集不同,而屬性文件要求編碼相同。我們當然可以利用JDK提供的native2ascii.exe做一下轉換。不過這不是我推薦使用的方法,日本人開發了一個Eclipse插件,屬性編輯器(propedit),我下載的版本是jp.gt.java_conf.ussiy.app.propedit_3.1.1.zip,利用他我們就可以直接寫中文或日文,保存的時候它能幫我們自動轉換。
 
囉嗦了這麼多,也該辦點正事了,先用屬性編輯器建立兩個屬性文件:
globalMessages_en_US.properties
-------------------------------
username=User Name
password=Password
submit.title=submit
-------------------------------
globalMessages_zh_CN.properties
-------------------------------
username=帳號
password=密碼
submit.title=提交
-------------------------------
把它們保存在/tutorial/src下,編譯後會自動保存在tutorial/WEB-INF/classes目錄下。
 
打開struts.xml, 在<struts>的下面加如下一行配置:
<constant name="struts.custom.i18n.resources" value="globalMessages" />
幫助位置:
struts-2.0.6/docs/docs/constant-configuration.html
struts-2.0.6/docs/docs/strutsproperties.html
 
修改Login.jsp裏的Form內容如下:
<s:form action="Login" method="post" theme="simple">
    <s:text name="username"/>:<s:textfield name="username" /><br>
    <s:text name="password"/>:<s:password name="password" /><br>
    <s:submit value="%{getText('submit.title')}" />
</s:form>
幫助位置:struts-2.0.6/docs/docs/text.html
 
編譯,部署項目,啓動Tomcat在瀏覽器的地址欄裏輸入:
http://localhost:8080/tutorial/Login!input.action
如果顯示的是中文提示就表示成功了^_^
 
改變瀏覽器的語言設置([工具]->[Internet選項]->[語言]->[添加]->[英語(美國)]->[選中英語並按上移按鈕]然後確定修改)

刷新頁面,如果顯示內容從中文變成了英文就表示完全成功了^_^
 
到這裏簡單的國際化就完成了,今天的內容有點多,就先寫到這吧~
 
 

發佈了6 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章