i18n 国际化
时间:2021-02-18 13:29:05
收藏:0
阅读:0
什么是i18n国际化?
- 国际化(Internationalization)指的是同一个网站可以支持多种不同的语言,以方便不同国家,不同语种的用户访问。
- 关于国际化我们想到的最简单的方案就是为不同的国家创建不同的网站,比如苹果公司,他的英文官网是:http://www.apple.com 而中国官网是http://www.apple.com/cn
- 苹果公司这种方案并不适合全部公司,而我们希望相同的一个网站,而不同人访问的时候可以根据用户所在的区域显示不同的语言文字,而网站的布局样式等不发生改变。
- 于是就有了我们说的国际化,国际化总的来说就是同一个网站不同国家的人来访问可以显示出不同的语言。但实际上这种需求并不强烈,一般真的有国际化需求的公司,主流采用的依然是苹果公司的那种方案,为不同的国家创建不同的页面。所以国际化的内容我们了解一下即可。
- 国际化的英文Internationalization,但是由于拼写过长,老外想了一个简单的写法叫做I18N,代表的是Internationalization这个单词,以I 开头,以N 结尾,而中间是18 个字母,所以简写为I18N。以后我们说I18N 和国际化是一个意思。
国际化三要素
java.util.Locale对象
i18n_en_US.properties
username=username
password=password
sex=sex
age=age
regist=regist
boy=boy
email=email
girl=girl
reset=reset
submit=submit
i18n_zh_CN.properties
username=用户名
password=密码
sex=性别
age=年龄
regist=注册
boy=男
girl=女
email=邮箱
reset=重置
submit=提交
java中的Locale
import java.util.Locale;
public void test(){
//获取系统默认的语言,国家信息
Locale aDefault = Locale.getDefault();
System.out.println(aDefault);//zh_CN
//查看全部语言
for (Locale availableLocale : Locale.getAvailableLocales()) {
System.out.println(availableLocale);
}
//获取中文,中文的常量的Locale 对象
System.out.println(Locale.CHINA);//zh_CN
// 获取英文,美国的常量的Locale 对象
System.out.println(Locale.US);//en_US
}
public void test1(){
//获取中文Locale对象
Locale locale = Locale.CHINA;
//根据上面的Locale对象,加载不同的配置文件
ResourceBundle bundle = ResourceBundle.getBundle("i18n", locale);
System.out.println(bundle.getString("username"));
System.out.println(bundle.getString("password"));
}
JSP页面上实现网页中文与英文切换
<body>
<title>i18n国际化</title>
<base href="http://localhost:8080/JavaWeb4/">
<%
String language = request.getParameter("Language");
Locale locale = null;
if ("ZG".equals(language)){
locale = Locale.CHINA;
}else if ("US".equals(language)){
locale = Locale.US;
}else {
locale = request.getLocale();
}
ResourceBundle bundle = ResourceBundle.getBundle("i18n", locale);
%>
<center>
<h1><%=bundle.getString("regist")%>
</h1>
<table>
<form action="">
<tr>
<td><%=bundle.getString("username")%>
</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td><%=bundle.getString("password")%>
</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><%=bundle.getString("sex")%>
</td>
<td><input type="text" name="sex"></td>
</tr>
<tr>
<td><%=bundle.getString("age")%>
</td>
<td><input type="text" name="age"></td>
</tr>
<tr>
<td><%=bundle.getString("email")%>
</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="<%=bundle.getString("submit")%>">
<input type="reset" value="<%=bundle.getString("regist")%>"></td>
</tr>
<tr>
<td colspan="2" align="center">
<a href="jsonAjax/i18n.jsp?Language=ZG">中文</a>
<a href="jsonAjax/i18n.jsp?Language=US">English</a>
</td>
</tr>
</form>
</table>
</center>
</body>
使用JSTL库
<body>
<title>i18n国际化</title>
<base href="http://localhost:8080/JavaWeb4/">
//根据请求参数Language获取语言
<fmt:setLocale value="${param.Language}"/>
//根据语言选择不同的配置文件
<fmt:setBundle basename="i18n"/>
<center>
<h1><fmt:message key="regist"/></h1>
<table>
<form action="">
<tr>
<td><fmt:message key="username"/>
</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td><fmt:message key="password"/>
</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><fmt:message key="sex"/>
</td>
<td><input type="text" name="sex"></td>
</tr>
<tr>
<td><fmt:message key="age"/>
</td>
<td><input type="text" name="age"></td>
</tr>
<tr>
<td><fmt:message key="email"/>
</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="<fmt:message key="submit"/>">
<input type="reset" value="<fmt:message key="regist"/>"></td>
</tr>
<tr>
<td colspan="2" align="center">
<a href="jsonAjax/i18n2.jsp?Language=zh_CN">中文</a>
<a href="jsonAjax/i18n2.jsp?Language=en_US">English</a>
</td>
</tr>
</form>
</table>
</center>
</body>
评论(0)