I18n
程序员文章站
2022-05-16 09:31:12
...
Struts2国际化(i18n)
i18n,即Internationalization的简称,首尾字母+18位中间字母。
Sturts2提供了一个i18n的拦截器(属于默认拦截器),可以拦截用户请求,并查看用户浏览器的语言类型,调用服务器的对应的文字信息进行显示。
分为几步操作:
- 为语言配置不同资源文件
在src目录下创建资源文件,案例使用中文和英文两种:myBaseName_en_US.properties
myBaseName_zh_CN.properties
其中,myBaseName是资源文件基础名;en_US
为语言名称规则:语言代号_国家代号
(语言代号小写,国家代号大写);后缀名:properties。
eclipse提供了两种输入方式:表格填入和语句输入。
文件内容格式为键值对:key = value
myBaseName_zh_CN.properties文件内容:
form.account=账号:
form.password=密码:
form.phone=电话:
form.submit=提交
myBaseName_en_US.properties文件内容:
form.password=account:
form.password=password:
form.phone=phone:
form.submit=submit
也就是每一个词组都有两套配置,根据用户选择加载某个资源文件,显示到页面中。
2. 注册资源文件
在配置文件struts.xml中注册:
<constant name="struts.custom.i18n.resources" value="myBaseName"/>
<constant name="struts.i18n.encoding" value="UTF-8" />
通过struts.custom.i18n.resources指定资源文件基础名;struts.i18n.encoding指定编码方式。
3. 读取资源文件内容
- 页面读取
使用struts标签进行资源读取,通过键获取:
<s:form action="loginForm" method="post">
<s:text name="form.account"/>
<input type="text" name="account" required><br>
<s:text name="form.password"/>
<input type="text" name="password" required><br>
<s:text name="form.phone"/>
<input type="text" name="phone" required><br>
<s:submit key="form.submit"/>
</s:form>
通过在浏览器中改变语言选项就可以切换语言。
当然,也可以在页面中提供切换选项达到目的:
<a href="web/indexLanguage.action?request_locale=zh_CN">中文</a>
<br>
<a href="web/indexLanguage.action?request_locale=en_US">English</a><br>
在页面中加入这两个链接,注意路径是向一个action提交了一个请求,而处理该请求的action是一个空类,不提供任何操作,只用来启动拦截器,向该空action传递语言地区参数时会被拦截器识别。
该action的execute方法:
public String execute()throws Exception {
return "SUCCESS";
}
配置该action:
<action name="*Language">
<result name="SUCCESS">/{1}.jsp</result>
</action>
利用通配符又返回到同页面,因为拦截器识别到路径后的语言地区参数,返回到页面时就转换了语言。
注意:因为Struts2默认的ActionSupport类就是一个空类,所以上面的配置为简写,原本形式为:
<action name="*Language" class="web.language">
<result name="SUCCESS">/{1}.jsp</result>
</action>
- Action读取
Action类继承ActionSupport类;
在方法中,通过this.getText("KEY")
获取值,进而操作。
上一篇: 经典电影爆笑动态GIF图片。
下一篇: 倒霉动态图片和体育场上的爆笑动态图片