struts2的國際化分三種情況:前臺頁面的國際化,Action類中的國際化,配置文件的國際化。
首先指定全局的國際化資源文件:
在配置文件struts.xml中引入
<constant name="struts.custom.i18n.resources" value="message"></constant>(注意位置)
或
在struts.properties文件中指定如下一行:
struts.custom.i18n.resources=message
指定的國家化資源文件即為
xxx_語言_國家.properties
message_zh_CN.properties(簡體中文資源文件)
message_en_US.properties(美國英語資源文件)
(1).JSP頁面上的國際化(使用struts2的<s:text .../>):
<s:i18n name="message">
<s:text name="hello">
<s:param>${username}</s:param>
</s:text>
</s:i18n>
message_en_US.properties文件配置:
hello=hello world,{0}
message_zh_CN.properties文件配置:
hello=你好,{0}
(2)表單元素的Label國際化:
未國際化:
<s:textfield name="username" label="username"></s:textfield>
<s:textfield name="password" label="password"></s:textfield>
國際化后:
<s:textfield name="username" key="uname"></s:textfield>
<s:textfield name="password" key="pword"></s:textfield>
message_en_US.properties文件,配置:
uname=username
pword=password
message_zh_CN.properties文件,配置:
uname=用戶名
pword=密碼
(3).Action中的國際化:
未國際化:
this.addFieldError("username", "the username error!");
this.addFieldError("password", "the password error!");
國際化后:
this.addFieldError("username", "username.error");
this.addFieldError("password", "password.error");
message_en_US.properties文件配置:
username.error = the username error !
password.error = the password error!
message_zh_CN.properties文件配置:
username.error=用戶名錯誤!
username.error=密碼錯誤!
(4).配置文件中的國際化:
以輸入校驗的LoginAction-validation.xml為例:
未國際化:
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>username should not be empty!</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">12</param>
<message>username should be between ${minLength} and ${maxLength}!</message>
</field-validator>
</field>
國際化后:
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="username.empty !"></message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">12</param>
<message key="username.size"></message>
</field-validator>
</field>
message_en_US.properties文件配置:
username.empty = the username should not be empty !
username.size = the size of username shoule be between 6 and 12 !
message_zh_CN.properties文件配置:
username.empty =用戶名不能為空 !
username.size = 用戶名長度在6到12 !
注:message_zh_CN.properties這個國際化資源文件不允許包含非西歐字符。
Java提供了一個工具來處理該文件中的中文:native2ascii,這個工具可以在%JAVA_HOME%/bin路勁下找到。