Java.util.ResourceBundle类,用于管理和Locale相关的资源的功能。
ResourceBundle类提供了两个方法,用于创建ResourceBundle对像的静态工厂方法:
getBundle(String baseName)—通过此方法获取资源文件的名称
getBundle(String baseName,Locale locale);
参数中的baseName是资源文件的名称,资源文件通常以properties为扩展名。
资源文件的命名规则如下:
默认资源文件:resources.properties
英文资源文件:resources_en_US.properties
中文资源文件:resources_zh_CN.properties
ResourceBundle示例:
步骤如下:
1、在classpath目录下建立一个资源文件为message.properties。
2、内容如下:name=Jack
3、书写一个main方法的类,并输入以下代码:
4、ResourceBundle b = ResourceBundle.getBundle(“message”);
String name = b.getString(“name”);
System.err.println(name);
此时你看到的输出是Jack.
5、在classpath目录下,再建立一个文件message_zh_CN.properties
并输入以下内容:name=杰克 (注意转码)
6、重新执行第4步的代码,你将会看到输出的结果变成了:杰克。
7、这是因为它使用本地语言查找相关的资源文件,如果找不到就使用默认的,如果找到就使用本地的资源文件。
MessageFormat类:
MessageFormat类,也是重要的国际化信息的类。它与ResourceBundle的区别是:
ResourceBundle类只可以使用静态文本,即在编译时已经确定的文本。
而MessageFormat可以使用动态文本。如String str = MessageFormat.format(“Hello {0}”,”Jack”);
System.err.println(str);
MessageFormat类,不能读取资源文件,它只能借助于ResourceBundle已经读取的信息再进行格式化输出。
示例:资源文件中的信息为greeting=Hello {0}
ResourceBundle b = ResourceBundle.getBundle(“message”);
String greeting = b.getString(“greeting”);
greeting = MessageFormat.format(greeting,”北京”);
System.err.println(greeting);
JSTL的国际化标签:
< fmt:setLocale/> - 设置Locale关将它保存在某个范围内,默认为page范围。
如:< fmt:setLocale value=“zh_CN” scope=“session”/>它的作用相当于:
Locale locale = new Locale(“zh”,”CN”);
Session.setAttribute(“javax.servlet.jsp.jstl.fmt.locale.session”,locale);
< fmt:setBundle/>
用于设置要使用的资源文件。如:
< fmt:setBundle basename=“message” var=“变量名” scope=“session”/>
< fmt:message/>
读取资源文件中key所对应的值。
设置支持国际化的网页1:
第一步:建立三个资源文件为:
msg.properties
msg_zh_CN.properties
msg_en_US.properties
第二步:使用jstl标签。
< fmt:setLocale value=“${param.locale}” scope=“session”/>
< fmt:setBundle basename=“message” scope=“session”/>
<%@ page language="java" import="java.util.*,cn.hncu.domain.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!-- prefix前缀,相当于xml的命名空间,名字可以随便取,一般用c -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JSTL用法演示</title>
</head>
<body>
<span>
内容格式:<br/>
欢迎你,xxx<br/>
现在时间是:2016-10-18 10:27<br/>
</span><br/>
<font color='red' size='6'>I18N--国际化技术演示1</font><br/>
<font style="font-weight: bold;">1,设置本地信息(哪个国家的什么语言)</font><br/>
<!-- 国语
<fmt:setLocale value="zh-CN"/>
-->
<!-- 美式英语
<fmt:setLocale value="en-US"/>
-->
<!-- 默认语言
-->
<fmt:setLocale value="e"/>
<font style="font-weight: bold;">2,指定资源文件名</font><br/>
<fmt:setBundle basename="msg" scope="session"/>
<font style="font-weight: bold;">3,显示信息</font><br/>
<fmt:message key="welcom"></fmt:message>,xxx<br/>
<fmt:message key="time"></fmt:message>:2016-10-18 10:27
</body>
</html>
设置支持国际化的网页2:
多文件(src下的resource资源文件夹中)
第三步:切换。
< a href=”index.jsp?locale=zh_CN”>中文< /a>
< a href=”index.jsp?locale=en_US”>English< /a>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!-- prefix前缀,相当于xml的命名空间,名字可以随便取,一般用fmt -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JSTL用法演示</title>
</head>
<body>
<span>
内容格式:<br/>
欢迎你,xxx<br/>
现在时间是:2016-10-18 10:27<br/>
</span><br/>
<font color='red' size='6'>I18N--国际化技术演示2</font><br/>
<a href="?bd=no_NO">默认版</a>
<a href="?bd=zh_CN">国语版</a>
<a href="?bd=en_US">美式英语版</a><br/>
<font style="font-weight: bold;">1,设置本地信息(哪个国家的什么语言)</font><br/>
<fmt:setLocale value="${param.bd}"/>
<font style="font-weight: bold;">2,指定资源文件名</font><br/>
<fmt:setBundle basename="msg" scope="session"/>
<!--指定第2个及之后的资源文件,含路径的资源名,第2个及之后的资源一定要取别名 -->
<fmt:setBundle basename="cn.resources.a" scope="session" var="aa"/>
<font style="font-weight: bold;">3,显示信息</font><br/>
<fmt:message key="welcom"></fmt:message>,xxx<br/>
<fmt:message key="time"></fmt:message>:2016-10-18 10:27<br/>
<!-- 第2个及之后的资源,要指定别名 -->
<fmt:message key="address" bundle="${aa}"></fmt:message><br/>
<br/><br/>
<a href="a.jsp">转到另一个页面</a>
<!-- 把数据存储在session中,所以另一个页面也会和本页面一样的语言风格 -->
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!-- prefix前缀,相当于xml的命名空间,名字可以随便取,一般用fmt -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>显示用户信息</title>
</head>
<body>
<fmt:message key="welcom"></fmt:message>,xxx<br/>
<fmt:message key="time"></fmt:message>:2016.10.16 17:33 <br/>
<fmt:message key="address" bundle="${aa}"/><br/>
</body>
</html>