Java当中 的国际化:
概念:软件的国际化:软件可以根据来访者不同去自动切换语言进行显示。
提供一组资源包:
资源包需要有相同的基本名称。
命名规则:基本的名称_语言_国家.properties
通过ResourceBundle读取资源包。
Struts2中的国际化
一、全局的国际化:
A、提供一组资源包,在项目的任意位置(因为是全局的国际化所以任意位置都可以)
在src下创建两个文件
这里创建文件以后可能会碰到输入中文乱码的问题,请参考以下解决办法
eclipse中创建.properties文件输入中文乱码,解决办法
创建这两个文件
message_en_US.properties
name=mary
message_zh_CN.properties
name=玛丽
B、需要在struts.xml当中开启常量:
<!-- 配置全局国际化文件 -->
<!-- value写,国际化文件所在位置 -->
<constant name="struts.custom.i18n.resources" value="message"></constant>
1、在JSP当中
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>国际化</h1>
<s:text name="name" />
</body>
</html>
测试
2、在Action类当中
创建I18NAction
package com.itzheng.web.action.demo7;
import com.opensymphony.xwork2.ActionSupport;
public class I18NAction extends ActionSupport {
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
String name = getText("name");
System.out.println(name);
return NONE;
}
}
配置好访问路径
测试:
根据系统的设置的语言输出对应不同语言的信息
3、在配置文件当中
(1)更改资源包
message_en_US.properties
name=mary
login.username=Username not null!
login.password=Password not null!
message_zh_CN.properties
name=玛丽
login.username=用户名不能为空!(国际化文件)
login.password=密码不能为空!(国际化文件)
(2)创建登录jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>登录页面</h1>
<h3><s:fielderror></s:fielderror></h3>
<form action="${pageContext.request.contextPath }/login2.action" method="post">
用户名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
(3)创建RegistAction
(4)LoginAction2-validation.xml
(5)配置访问
(6)测试
定义好全局的国际化,在任何地方都可以使用
二、Action范围的国际化:
在Action类使用:在Action所在的包下去创建一个属性文件。(名字要与Action的类名一致)
属性文件格式:类名_语言_国家.properties
只能在I18NAction当中使用
package com.itzheng.web.action.demo7;
import com.opensymphony.xwork2.ActionSupport;
public class I18NAction extends ActionSupport {
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
String key = getText("key");
System.out.println(key);
return NONE;
}
}
测试
三、包范围的国际化
在当前包以及当前包的子包下使用。
1、在当前包内创建属性文件:package_zh_CN.properties文件(在该包下所有的Action都可以使用)
属性文件格式:package_语言_国家.properties
测试
四、临时的国际化
在页面的JSP当中使用
读取包下的国际化文件
五、拓展:占位符
通过占位符替换值
1、JSP页面上使用
2、在Action当中使用
测试
结果