使用 Struts 2 实现国际化
https://www.cnblogs.com/likailan/p/3307409.html
struts2國際化(I18N)
國際化也叫I18N,是Internationalization的簡稱。Struts2國際化是建立在Java國際化基礎上,只是Struts2框架對Java國際化進行了進一步封裝,從而簡化了應用程序的國際化。
使用struts2 實現國際化
在上一次的”使用 Struts2 校驗器校驗用戶注冊信息“項目為基礎上實現國際化:http://www.cnblogs.com/likailan/p/3302284.html
?
一、在strute.xml中指定資源文件的基名。
在strute.xml文件的struts標簽里加入如下代碼:
<constant name="struts.custom.i18n.resources" value="message"/><constant name="struts.i18n.encoding" value="UTF-8" />通過“struts.custom.i18n.resources”屬性指定國際化資源文件的基名為“message”,位于src目錄下。如果屬性值為“cn.jbit.message”,則資源文件的基名仍是“message”,但位于“cn.jbit”包中。還可以通過“struts.i18n.encoding”屬性指定默認的編碼方案。如果要進行國際化,必須指定為“UTF-8”。
二、創建資源文件,用來存放相應的資源
資源文件為properties文件,命名規則為:基名 _語言代號_地區代號.properties。基名就是第一步里設置的“message”。語言代號和地區代號可以在IE里查看:打開IE->打開internet選項->點擊語言->點擊添加,可以看到如下“添加語言”對話框,里面就有顯示各種語言和地區的代號:
在src目錄下添加分別為 中文-中國 和 英文-美國 的資源文件。那么對應的文件名就是:
中文-中國:message_zh_CN.properties
英文-美國:message_en_US.properties
message_zh_CN.properties代碼:
title=注冊 form.email=郵箱: form.password=密碼: form.repassword=重復密碼: form.phone=電話: form.submit=提交message_en_US.properties代碼:
title=register form.email=eMail: form.password=password: form.repassword=repassword: form.phone=phone: form.submit=submit三、實現JSP頁面信息的國際化顯示
把和顯示相關的文字都替換成 ?<s:text name="對應資源文件的鍵"/> 其中屬性 name 的值為資源文件里相對應的key。如:<s:text name="title"/> ? ? ?<s:text name="form.email"/>
頁面代碼:
1 <%@ page language="java" contentType="text/html; charset=UTF-8"2 pageEncoding="UTF-8"%>3 <!-- 加載struts2標簽庫 -->4 <%@ taglib uri="/struts-tags" prefix="s"%>5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">6 <html>7 <head>8 <s:head/>9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 10 <!-- 把和顯示相關的文字都替換成 <s:text name="對應資源文件的鍵"/> --> 11 <title><s:text name="title" /></title> 12 </head> 13 <body> 14 <form action="register.action" method="post"> 15 <table> 16 <tr> 17 <!-- 把和顯示相關的文字都替換成 <s:text name="對應資源文件的鍵"/> --> 18 <td><s:text name="form.email" /></td> 19 <td><input type="text" name="email"/></td> 20 <!-- 使用<s:fielderror/>標簽輸入相應的字段錯誤信息 --> 21 <td><s:fielderror fieldName="email"/></td> 22 </tr> 23 <tr> 24 <!-- 把和顯示相關的文字都替換成 <s:text name="對應資源文件的鍵"/> --> 25 <td><s:text name="form.password" /></td> 26 <td><input type="password" name="password"/></td> 27 <td><s:fielderror fieldName="password"/></td> 28 </tr> 29 <tr> 30 <td><s:text name="form.repassword" /></td><td> 31 <input type="password" name="repassword"/></td> 32 <td><s:fielderror fieldName="repassword"/></td> 33 </tr> 34 <tr> 35 <td><s:text name="form.phone" /></td> 36 <td><input type="text" name="phone"/></td> 37 <td><s:fielderror fieldName="phone"/></td> 38 </tr> 39 <tr> 40 <td><input type="submit" value="<s:text name="form.submit" />"/></td> 41 <td></td> 42 <td></td> 43 </tr> 44 </table> 45 </form> 46 </body> 47 </html>四、測試
啟動tomcat。用IE打開register.jsp頁面。
打開internet選項->點擊語言->點擊添加,可以看到如下“添加語言”對話框。添加“英語(美國)[en-US]”項,并把該項上移到最上層
刷新頁面:
?
?實現驗證錯誤信息的國際化顯示
表單的驗證錯誤信息也需要進行國際化顯示,Struts 2 針對編碼驗證和驗證框架都提供了國際化實現,此時驗證錯誤信息以鍵值對的方式書寫在資源文件中,而無需直接書寫在validate方法或者驗證配置文件中。
一、添加相應的國際化內容到資源文件中
message_zh_CN.properties添加如下國際化內容:
######### 校驗錯誤信息 ########### form.email.null=郵箱不能為空 form.email.format=郵箱格式不正確 form.password.null=密碼不能為空 form.password.length=密碼長度不能少于6位 form.repassword.same=兩次密碼不一至 form.phone.format=電話號碼格式不正確message_en_US.properties添加如下國際化內容:
######### 校驗錯誤信息 ########### form.email.null=eMail cannot be null form.email.format=eMail format is error form.password.null=password cannot be null form.password.length=minimum password length is 6 form.repassword.same=repassword should be same with password form.phone.format=phone format is error二、修改驗證框架的配置文件
修改驗證框架的配置文件,去掉具體的驗證錯誤信息,通過 <message> 標簽的key屬性指定其對應的驗證錯誤信息。
修改后的?RegisterAction-register-validation.xml:
1 <?xml version="1.0" encoding="UTF-8"?>2 <!DOCTYPE validators PUBLIC3 "-//Apache Struts//XWork Validator 1.0.2//EN"4 "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">5 6 <validators>7 <!-- name值為需要被校驗的字段,這里對email字段進行校驗 -->8 <field name="email">9 <!-- type值為校驗器名,requiredstring:非空字符串校驗器 --> 10 <field-validator type="requiredstring"> 11 <!-- 去掉具體的驗證錯誤信息,通過 <message> 標簽的key屬性指定其對應的驗證錯誤信息。 --> 12 <message key="form.email.null" /> 13 </field-validator> 14 <!-- 一個字段可以配置多個校驗器,email:校驗郵箱格式 --> 15 <field-validator type="email"> 16 <!-- 去掉具體的驗證錯誤信息,通過 <message> 標簽的key屬性指定其對應的驗證錯誤信息。 --> 17 <message key="form.email.format" /> 18 </field-validator> 19 </field> 20 21 <field name="password"> 22 <field-validator type="requiredstring"> 23 <message key="form.password.null" /> 24 </field-validator> 25 <!-- stringlength:字符串長度校驗 --> 26 <field-validator type="stringlength"> 27 <!-- 為校驗器指定參數實現不同的校驗規則,minlength:最少長度 --> 28 <param name="minLength">6</param> 29 <message key="form.password.length"/> 30 </field-validator> 31 </field> 32 33 <!-- 校驗兩次密碼是否一致,使用 fieldexpression 校驗器。expression參數指定判斷用的表達式 --> 34 <field name="repassword"> 35 <field-validator type="fieldexpression"> 36 <!-- 表達式要寫在 <![CDATA[]]> 內 --> 37 <param name="expression"><![CDATA[repassword==password]]></param> 38 <message key="form.repassword.same"/> 39 </field-validator> 40 </field> 41 42 <!-- 校驗電話格式,使用regex正則表達示校驗,regexExpression參數指定正則表達式 --> 43 <field name="phone"> 44 <field-validator type="regex"> 45 <!-- 注意!2.3.15前的版本使用 expression 參數 --> 46 <param name="regexExpression"><![CDATA[\d{11}]]></param> 47 <message key="form.phone.format" /> 48 </field-validator> 49 </field> 50 51 </validators>四、測試
?
打開internet選項->點擊語言->點擊添加,可以看到如下“添加語言”對話框。添加“英語(美國)[en-US]”項,并把該項上移到最上層。刷新頁面:
?通過超鏈接轉換頁面 語言-地區
?一、在register.jsp頁面中添加如下超連接:
<a href="changelan.action?request_locale=zh_CN">簡體中文</a> <a href="changelan.action?request_locale=en_US">English</a>跳到一個名為changelan的action里,傳遞名為request_locale(固定寫化)的參數,值為要換轉的?語言代號_地區代號。
二、編寫相應的action類
ChangelanAction.java代碼:
1 import java.util.Locale;2 3 import com.opensymphony.xwork2.ActionContext;4 import com.opensymphony.xwork2.ActionSupport;5 6 7 public class ChangelanAction extends ActionSupport{8 9 public String execute() throws Exception { 10 //獲得本地默認的語言環境 11 Locale locale=Locale.getDefault(); 12 //存入到一個session變量中。"WW-TRANS-I18N-LOCALE"為固定寫法 13 ActionContext.getContext().getSession().put("WW-TRANS-I18N-LOCALE", locale); 14 return SUCCESS; 15 } 16 17 }三、配置struts.xml
在package標簽內添加如下action標簽:
<action name="changelan" class="ChangelanAction"><result name="success">register.jsp</result> </action>四、測試
頁面如下:
點擊簡體中文:
點擊English
總結
以上是生活随笔為你收集整理的使用 Struts 2 实现国际化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中汉字繁简体互转
- 下一篇: 音视频和图像相关知识点总结