欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

I18n

程序员文章站 2022-05-16 09:31:12
...
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">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")获取值,进而操作。
相关标签: I18n