I18n

Struts2国际化(i18n)

i18n,即Internationalization的简称,首尾字母+18位中间字母。
Sturts2提供了一个i18n的拦截器(属于默认拦截器),可以拦截用户请求,并查看用户浏览器的语言类型,调用服务器的对应的文字信息进行显示。
分为几步操作:

  1. 为语言配置不同资源文件
    在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">Englisha><br>

在页面中加入这两个链接,注意路径是向一个action提交了一个请求,而处理该请求的action是一个空类,不提供任何操作,只用来启动拦截器,向该空action传递语言地区参数时会被拦截器识别。
该action的execute方法:

public String execute()throws Exception {
    return "SUCCESS";
}

配置该action:

<action name="*Language">
    <result name="SUCCESS">/{1}.jspresult>
action>

利用通配符又返回到同页面,因为拦截器识别到路径后的语言地区参数,返回到页面时就转换了语言。
注意:因为Struts2默认的ActionSupport类就是一个空类,所以上面的配置为简写,原本形式为:

<action name="*Language" class="web.language">
    <result name="SUCCESS">/{1}.jspresult>
action>
  • Action读取
    Action类继承ActionSupport类;
    在方法中,通过this.getText("KEY")获取值,进而操作。

你可能感兴趣的:(struts2学习)