国际化 , 也称为I18n,Internationalization的简写。

操作:

 

1.在struts.xml里加入配置


<span style="font-family: Arial, Helvetica, sans-serif;"><?xml version="1.0" encoding="UTF-8" ?></span>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="itheima"></constant>
<constant name="struts.devMode" value="true" />
<package name="a" extends="struts-default" namespace="/manage">
<action name="LoginAction" class="com.cn.test.hb.LoginAction">
<result name="success">/result.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>

2.在src里新增资源文件:

命名规则是基名_语言代号_区域代号.properties

 

  • Resources_en_US.properties
  • Resources_zh_CN.properties

分别添加设置system_name变量,值为 "English System" 、 "Chinese System":

system.name=Englist System
system.name=\u4E2D\u6587\u7CFB\u7EDF



语言区域查询方式:


Struts2学习5——国际化_tomcat

 

 

报错处理

 

[http-8080-2] WARN org.apache.struts2.util.TextProviderHelper - The default value expression 'system.name' was evaluated and did not match a property.  The literal value 'system.name' will be used.

这是因为system.name在资源文件里没有定义。

 

3.注意修资源文件后,要重新部署或重启Tomcat才能生效。

4.Action获取资源值


getText("")

5.jsp获取资源值



 

 

<%@ page language="java" pageEncoding="UTF-8"%>
<!-- 加载struts2标签库 -->
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<body>
s:text name=system.name
<s:i18n name="Resources">
<span style="white-space:pre"> </span><s:text name="system.name"></s:text>
</s:i18n>
<br>
<s:textfield name="username" key="login.username"></s:textfield>
</body>
</html>

标签里的键可以参数化,如:

<s:text name="label.hello">
<s:param>mytest</s:param>
</s:text>

 

6.国际化资源文件分为三种级别

  • (1) 全局资源文件,可以被整个应该程序引用,也就是struts.custom.i18n.resources=messageResource指定的文件
  • (2) 包级资源文件,每个包的根目录下可以新建资源文件,仅被当前包中的类访问.文件名格式为:package_语言代码_国家代码.
  • (3) Action级资源文件,仅被当前Action引用,名称为action名_语言代码_国家代码

查找顺序为从小范围到大范围, Action级优先级最大