国际化资源文件包括:全局范围(在src目录下)、包范围、action范围
一.全局范围(在src目录下):
资源文件的命名格式如下:
baseName_language_country.properties
baseName_language.properties
baseName.properties
其中baseName为资源文件的基本名,我们可以自定义,但
language和country必须是java支持度的语言和国家。如:中国
大陆:baseName_zh_CN.properties
美国:baseName_en_US.properties
对于中文的属性文件,应该使用jdk提供的native2ascii命令把
文件转换为ascii编码的文件,命令使用方式如下:
native2ascii 源文件.properties 目标文件.properties
接下来在struts.xml文件中定义为全局资源文件,语句为
<constant name="struts.custom.i18n.resources" value="chao"></constant> chao为baseName
访问国际化信息:
1 在JSP页面中使用<S:text name=""/>标签输出国际化信息
2 在action类中可以继承ActionSupport,使用getText()方法得到国际化信息
3 在表单标签通过key属性制定资源文件的key,如<s:textfild
name="realname" key="user"/>
输出带有占位符的国际化信息:
资源文件内容如下:
welcome={0},欢迎来到这里{1}
在jsp中输出国际化信息:
<s:text name="welcome">
<s:param>小明</s:param>
<s:param>学习</s:param>
</s:text>
在action类中可以继承ActionSupport,使用getText(key,
args)方法得到国际化信息
二.包范围:放在包中,可以被包中和子包中类访问。首先在包中寻找国际化内容,寻找不到到默认资源文件寻找
<s:i18n name="chao">
<s:text name="welcome"/>
</s:i18n>
chao 为类路径下资源文件基本名
如果要访问的资源文件在某个人包下,则可以
<s:i18n name="chao/package">
<s:text name="welcome">
<s:param>小明</s:param>
<s:param>学习</s:param>
<s:text>
</s:i18n>
上面访问package包下的资源文件,package为baseName
一.全局范围(在src目录下):
资源文件的命名格式如下:
baseName_language_country.properties
baseName_language.properties
baseName.properties
其中baseName为资源文件的基本名,我们可以自定义,但
language和country必须是java支持度的语言和国家。如:中国
大陆:baseName_zh_CN.properties
美国:baseName_en_US.properties
对于中文的属性文件,应该使用jdk提供的native2ascii命令把
文件转换为ascii编码的文件,命令使用方式如下:
native2ascii 源文件.properties 目标文件.properties
接下来在struts.xml文件中定义为全局资源文件,语句为
<constant name="struts.custom.i18n.resources" value="chao"></constant> chao为baseName
访问国际化信息:
1 在JSP页面中使用<S:text name=""/>标签输出国际化信息
2 在action类中可以继承ActionSupport,使用getText()方法得到国际化信息
3 在表单标签通过key属性制定资源文件的key,如<s:textfild
name="realname" key="user"/>
输出带有占位符的国际化信息:
资源文件内容如下:
welcome={0},欢迎来到这里{1}
在jsp中输出国际化信息:
<s:text name="welcome">
<s:param>小明</s:param>
<s:param>学习</s:param>
</s:text>
在action类中可以继承ActionSupport,使用getText(key,
args)方法得到国际化信息
二.包范围:放在包中,可以被包中和子包中类访问。首先在包中寻找国际化内容,寻找不到到默认资源文件寻找
三.action范围:只会对某一个action有效,baseName为ActionClassName,即类名。当类访问key时访问顺序向上转。
<s:i18n name="chao">
<s:text name="welcome"/>
</s:i18n>
chao 为类路径下资源文件基本名
如果要访问的资源文件在某个人包下,则可以
<s:i18n name="chao/package">
<s:text name="welcome">
<s:param>小明</s:param>
<s:param>学习</s:param>
<s:text>
</s:i18n>
上面访问package包下的资源文件,package为baseName
下面代码为全局范围资源文件访问实例代码:
chao_en_US.properties:
welcome={0},welcome to here{1}
chao_zh_CN.properties:
welcome={0}\uFF0C\u6b22\u8fce\u5149\u4e34{1}
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="chao"></constant><!-- value为baseName -->
<package name="chao" extends="struts-default">
<action name="hello_*" class="chao.ChaoAction" method="{1}">
<result>/WEB-INF/page/message.jsp</result>
</action>
</package>
</struts>
ChaoAction.java:
package chao;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class ChaoAction extends ActionSupport {
private static final long serialVersionUID = 1L;
@Override
public String execute() {
/*ActionContext.getContext().put("message", this.getText("welcome"));*/
ActionContext.getContext().put("message", this.getText("welcome",new String[]{"xiaoming","study"}));
return "success";
}
}
index.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<%-- <s:text name="welcome"></s:text> --%>
<s:text name="welcome">
<s:param>小明</s:param>
<s:param>学习</s:param>
</s:text>
</body>
</html>
message.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>${message }
</body>
</html>