*.JSP中使用国际化资源
创建XXX_zh_CN.properties 配置文件 XXX可以任意(放在src目录下)
#user=用户名
#password=密码
user=\u7528\u6237
password=\u5BC6\u7801
对应*.jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<s:i18n name="struts.configuration.in_zh_CN" >
<html>
<head>
<title> Internationnal </title>
</head>
<body>
<!-- text 标签在s:i18n标下面时候 将直接通过name属性获取消息 -->
<s:text name="user" />
<s:form>
<!-- 表单标签在s:i18n标下面时候 表单标签key属性将会从国际化资源文件中加载 消息 -->
<s:textfield name="users" key="user" />
<s:textfield name="users" key="password" />
</s:form>
</body>
</html>
</s:i18n>
Action范围内使用国际化资源
Action类需要继承ActionSupport类
public class International extends ActionSupport{
public String execute(){
//通过ActionSupport getText()方法的支持 获取国际化资源文件中信息
System.out.println("user:" + getText("user"));
return Action.SUCCESS;
}
}
国际化资源文件 International_zh_CN.properties 注意 开头部分必须与action类名相同 且该文件放在 Action 同一个包下面
user=\u7528\u6237\u540Dwang
password=\u5BC6\u7801
*.jsp文件
<s:text name="user" />
<s:form>
<!-- 表单标签在s:i18n标下面时候 表单标签 key属性将会从国际化资源文件中加载 消息 -->
<s:textfield name="users" key="user" />
<s:textfield name="users" key="password" />
</s:form>
与前面用法相同 只是 不需要使用<s:i18n>标签了
包范围内国际化资源 应放在对应action包下 且该包下的所有action或者子包下Action都可以使用该国际化资源文件 其中命名格式为 package_zh_CN.properties package 是固定的。(当特定action类的国际化资源与包范围内国际化资源同时存在的时候将优先使用特定的)
设置全局国际化资源文件(建议存放一些类型转换错误 ,上传文件错误等一些通用信息)
1,可以在struts.xml文件中进行配置(<constant name="struts.custom.i18n.resources" value="in" /> 其中in 文件 src/in_zh_CN.properties)
2,也可以在struts.properties 文件中加如下语句
struts.custon.i18n.resources=in
国际化文件占位符的指定
资源文件:
hello={0} 你好 {1}
*.jsp 中使用该资源:
<s:text name="hello">
<s:param>大家</s:param>
<s:param>world</s:param>
</s:text>
Action类中使用:(getText()方法中第一个参数为资源文件中的key 第二个参数为一个String数组 各个元素为 各个占位符填充)
public String execute(){
System.out.println("hello:" + getText("hello",new String[]{"wang" , "世界"}));
return Action.SUCCESS;
}
国际化资源文件也可以配置成如下形式
#配置成如下形式将不需要手动去填充占位符 该占位符将 通过表达式自动从 ValueStack中找
USER=欢迎: ${username} 用户