要求:创建一个首页,默然显示英文信息,但可以让用户选择使用英文,繁体中文或简体中文.
1.编写hello_en_US.txt,内容如下:
cc.openhome.welcome=welcome
cc.openhome.font=English
cc.openhome.name=This is your front page
2.编写hello_zh_CN.txt,内容如下:
cc.openhome.welcome=欢迎
cc.openhome.font=简中
cc.openhome.name=这是你的预设首页
3.编写hello_zh_TW.txt,内容如下:
cc.openhome.welcome=歡迎
cc.openhome.font=繁中
cc.openhome.name=這是你的預設首頁
4.文件编码需要注意:
在idea18 中 英文和简体中文 .txt文本编辑采用的UTF-8格式,编码格式使用的是:jdk自带的native2ascii 生成 .propertities
$ native2ascii -encoding utf-8 hello_en_US.txt hello_en_US.properties
中文繁体编码采用的big5 编码方式,需要把编辑器设置为Big5编码格式,类似:编码为Big5
$ native2ascii -encoding Big5 hello_zh_TW.txt hello_zh_TW.properties
5.处理请求jsp
<%--
* created by on 12/4/18
homework p282 7-1
--%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.ResourceBundle" %>
<%@ page import="java.util.Locale" %>
<%@ page import="javax.servlet.jsp.jstl.fmt.LocalizationContext" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%
ResourceBundle zh_TW = ResourceBundle.getBundle("cc.openhome.hello", new Locale("zh","TW"));
ResourceBundle zh_CN = ResourceBundle.getBundle("cc.openhome.hello",new Locale("zh","CN"));
ResourceBundle ja_JP = ResourceBundle.getBundle("cc.openhome.hello",new Locale("ja","JP"));
ResourceBundle en_US = ResourceBundle.getBundle("cc.openhome.hello",new Locale("en","US")); pageContext.setAttribute("zh_TW",new LocalizationContext(zh_TW));
pageContext.setAttribute("zh_CN",new LocalizationContext(zh_CN));
pageContext.setAttribute("ja_JP",new LocalizationContext(ja_JP));
pageContext.setAttribute("en_US",new LocalizationContext(en_US)); %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<c:choose>
<c:when test="${param.local =='en_US'}">
<title><fmt:message bundle="${en_US}" key="cc.openhome.welcome"/></title>
</c:when>
<c:when test="${param.local =='zh_CN'}">
<title><fmt:message bundle="${zh_CN}" key="cc.openhome.welcome"/></title>
</c:when>
<c:when test="${param.local =='zh_TW'}">
<title><fmt:message bundle="${zh_TW}" key="cc.openhome.welcome"/></title>
</c:when>
<c:otherwise>
<title><fmt:message bundle="${en_US}" key="cc.openhome.welcome"/></title>
</c:otherwise>
</c:choose>
<style type="text/css">
#menu li {
float: left;
border: 27px solid #fff;
line-height : 33px;
height: 10px;
list-style-type: none;
}
</style>
</head>
<body> <ul id="menu">
<li>
<a href='<c:url value="index.jsp">
<c:param name="local" value="en_US"/>
</c:url> '>
<fmt:message bundle="${en_US}" key="cc.openhome.font"/>
</a>
</li>
<li>
<a href='<c:url value="index.jsp">
<c:param name="local" value="zh_CN"/>
</c:url> '>
<fmt:message bundle="${zh_CN}" key="cc.openhome.font"/>
</a>
</li>
<li>
<a href='<c:url value="index.jsp">
<c:param name="local" value="zh_TW"/>
</c:url> '>
<fmt:message bundle="${zh_TW}" key="cc.openhome.font"/>
</a>
</li>
</ul>
<br><br><br><br>
<hr>
<c:choose>
<c:when test="${param.local =='en_US'}">
<fmt:message bundle="${en_US}" key="cc.openhome.name"/>
</c:when>
<c:when test="${param.local =='zh_CN'}">
<fmt:message bundle="${zh_CN}" key="cc.openhome.name"/>
</c:when>
<c:when test="${param.local =='zh_TW'}">
<fmt:message bundle="${zh_TW}" key="cc.openhome.name"/>
</c:when>
<c:otherwise>
<fmt:message bundle="${en_US}" key="cc.openhome.name"/>
</c:otherwise>
</c:choose>
</body>
</html>
6.运行效果
7.总结:
(1).设计 jstl核心标签库的使用.<c choose>,<c when>,<c otherwise>,<c url> <fmt bundle>,<fmt message>.
(2).国际化处理流程的简单理解.
(3).前端页面的简单调试.
(4).有待优化,重复代码写的太多.