i18n
i18n国际化
i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。
国际化是指在设计软件,将软件与特定语言及地区脱钩的过程。当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正。
实现国际化步骤
- 用Locale类获取获取不同的位置和语言
- 配置.properties文件,命名规则:baseName_locale.properties
- 根据ResourceBundle类的getBundle(baseName,locale)方法获取配置文件的内容
比如创建配置文件: i18n_zh_CN.properties
@Test
public void testI18n(){
//得到我们需要的Locale对象
Locale cn= Locale.CHINA;//zh_CN
//通过指定的basename和Locale对象,读取相应的配置文件
ResourceBundle bundle = ResourceBundle.getBundle("i18n", cn);
//获取配置文件的内容
System.out.println(bundle.getString("username"));
System.out.println(bundle.getString("password"));
}
浏览器页面实现国际化
<body>
<%
//从请求头中获取Locale信息(语言)
// Locale locale = request.getLocale();
// System.out.println(locale);
Locale locale = null;
String country = request.getParameter("country");
if ("cn".equals(country)){
locale = Locale.CHINA;
}else if ("usa".equals(country)){
locale = Locale.US;
}else {
locale = request.getLocale();
}
//获取资源包(根据指定的baseName和Locale读取语言信息)
ResourceBundle i18n = ResourceBundle.getBundle("i18n", locale);
%>
<a href="i18n.jsp?country=cn">中文</a>|
<a href="i18n.jsp?country=usa">english</a>
<h1><%=i18n.getString("regist")%></h1>
</body>
使用taglib.jar包
<body>
<%--使用标签设置Locale信息--%>
<fmt:setLocale value="${param.locale}"/>
<%--使用标签设置baseName--%>
<fmt:setBundle basename="i18n"/>
<%--使用标签输出国际化信息--%>
<%-- <fmt:message key="username"/>--%>
<a href="i18n_fmt.jsp?locale=zh_CN">中文</a>|
<a href="i18n_fmt.jsp?locale=en_US">english</a>
<h1><fmt:message key="regist"/></h1>
</body>