什么是国际化
国际化就是可以把页面中的中文变成英文。例如登陆表单
理解国际化
对于页面中的文字,不能使用硬编码把页面写死。如下面代码
<html>
<head>
<title>登陆</title>
</head>
<body>
<h1>登陆</h1><br/>
<form action="" method="post">
用户名<input type="text" name="username"/><br/>
密 码<input type="password" name="password"/><br/>
<input type="submit" value="登陆"/><br/>
</form>
</body>
</html>
将需要变化的文字使用变量来替代
<h1><%=rb.getString("login")%></h1><br/>
<form action="" method="post">
<%=rb.getString("username")%><input type="text" name="username"/><br/>
<%=rb.getString("password")%><input type="password" name="password"/><br/>
<input type="submit" value="<%=rb.getString("login")%>"/><br/>
</form>
具体做法
Locale类(语言环境)
创建Locale类对象:
- new Locale(“zh”, “CN”);
- new Locale(“en”, “US”);
zh、en表示语言,而CN、US表示国家。一个Locale对象表示的就是语言和国家。
ResourceBundle类
ResourceBundle类用来获取配置文件的内容,通过静态方法getBundle()获取实例对象
ResourceBundle的getBundle()方法需要两个参数:
- 第一个参数:配置文件的基本名称
- 第二个参数:Locale
getBundle()方法会通过两个参数来锁定配置文件。
代码实例
首先在src下建立两个配置文件
res_zh_CN.properties
username=用户名
password=密 码
login=登陆
res_en.properties
username=Username
password=Password
login=Login
测试类Demo.java
public class Demo {
@Test
public void func(){
//创建语言环境对象
Locale locale=Locale.CHINA;//中文
//Locale locale=Locale.US;//英文
/**
*资源绑定类
* 获得实例的方式通过静态方法getBundle()
* 参数1:基本名称
* 参数2:Locale对象
*/
ResourceBundle rb=ResourceBundle.getBundle("res",locale);
System.out.println(rb.getString("username"));
System.out.println(rb.getString("password"));
System.out.println(rb.getString("login"));
}
}
中文结果:
zh_CN
用户名
密 码
登陆
英文结果
en_US
Username
Password
Login
进一步优化:写一个简单的登陆表单界面
login.jsp
<%@ page import="java.util.Locale" %>
<%@ page import="java.util.ResourceBundle" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆</title>
</head>
<body>
<%
//获取客户端语言环境Locale
Locale locale=request.getLocale();
//得到对应的配置文件
ResourceBundle rb=ResourceBundle.getBundle("res",locale);
%>
<h1><%=rb.getString("login")%></h1><br/>
<form action="" method="post">
<%=rb.getString("username")%><input type="text" name="username"/><br/>
<%=rb.getString("password")%><input type="password" name="password"/><br/>
<input type="submit" value="<%=rb.getString("login")%>"/><br/>
</form>
</body>
</html>
使用谷歌浏览器测试:
中文:请求信息
英文请求头:Accept-Language: en,zh-CN;q=0.9,zh;q=0.8
页面效果见文章开头