java--I18N

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>&nbsp;&nbsp;
    <a href="?bd=zh_CN">国语版</a>&nbsp;&nbsp;
    <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>

这里写图片描述

这里写图片描述
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章