国际化

<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 basename=“message” var=“变量名” scope=“session”/>
<fmt:bundle/>

用于设置主体使用的资源。即setBundle设置的资源。

<fmt:message/>

读取资源文件中key所对应的值。

<fmt:param/>

嵌套在message中,用户动态的传递参数。

<fmt:requestEncoding/>

用于设置请求的编码字符。<fmt:requestEncoding value=“GBK”/>等同于
Request.setCharacterEncoding(“GBK”);

设置支持国际化的网页:
第一步:建立两个资源文件为:
message.properties
message_zh_CN.properties
第二步:使用jstl标签。

<fmt:setLocale value=“${param.locale}” scope=“session”/>
<fmt:setBundle basename=“message” scope=“session”/>

第三步:切换。

<a href="index.jsp?locale=zh_CN">中文</a><br/>
 <a href="index.jsp?locale=en_US">English</a>

一、Java版国际化

import java.util.Locale;
import java.util.ResourceBundle;

public class I18nDemo {

    public static void main(String[] args) {
        //参数是:baseName-- 本例指的是资源文件名是: msg**.properties
        //ResourceBundle rd = ResourceBundle.getBundle("msg");//读取的是:msg_zh_CN.properties
        //ResourceBundle rd = ResourceBundle.getBundle("msg",Locale.US);
         //读取的是:msg_en_US.properties
//本例读取的是:msg_zh_CN.properties ---因为是中文系统。按原理,如果没找到对应国家语种的资源文件(如果不存在时,还会根据系统的国家语种再找一次,如果还没有),则是读取的是默认的msg.properties
        String str1 = rd.getString("welcome");
        String str2 = rd.getString("time");
        System.out.println(str1+"----"+str2);
    }
}

二、JSP版国际化

<%@page import="cn.hncu.elWeb.domain.User"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
     <fmt:setLocale value="zh_CN"/>
     <fmt:setBundle basename="msg"/>
     <!-- 真正搞国际,应该要把设置Locale和Bundle的代码放在head标签中,页面只负责显示。 -->
  </head>

  <body>
             张三,<fmt:message key="welcome"/><br/>
     <fmt:message key="time"/>fddfdfdfdfdfdf
     <hr/>
     <!-- 相比上一版本,把国家语种用参数进行传递 -->
     <a href="?loc=en_US">English</a>
     <a href="?loc=zh_CN">中文</a>
     <fmt:setLocale value="${param.loc}"/>
     <fmt:setBundle basename="msg"/>
           张三,<fmt:message key="welcome"/><br/>
     <fmt:message key="time"/>fddfdfdfdfdfdf

     <hr/>
     <!-- 再演示一下多个资源的情况,第二个资源及以后都必须取别名(变量名)。前面(第一个)没取变量名的那个叫默认资源  -->
     <fmt:setBundle basename="a" var="aaa" scope="session"/>
     <!-- 如果多个页面都要使用,那么得把作用域设成session -->      

           张三,<fmt:message key="welcome"/><br/>
     <fmt:message key="time"/>fd8888dfdf
     <br/>
     <!-- 如果是从非默认资源中读取,那么得指定资源名称即aaa。如果没有指定名称,那么就是从默认的读取 -->
     <fmt:message key="address" bundle="${aaa}"></fmt:message>
     <br/>
  </body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值