Posted on 2005-12-19 17:26
小明 阅读(1122)
评论(1) 编辑 收藏 所属分类:
开发日志
Here is my some recommendations for java i18n .
1. The correct way to handle text-based resource files for localization
Use java.util.ResourceBoundle to read resource from file.
e.g.
Local local = Local.CHINA;
ResourceBundle rb = ResourceBundle.getBundle("test", local);
String title = rb.getString("helloworld.title");
System.out.println(title);
//The program will read file: test_zh.properties
# This locale is zh_CN
# helloworld.title=中文1234
and the file should use native2ascii program to convert (native2ascii.exe is in JDK)
# This locale is zh_CN
helloworld.title=\u4f60\u597d1234
if you don't use native2ascii to covert,you must covert it in the java program,like this:
ResourceBundle rb = ResourceBundle.getBundle("test", Locale.CHINA);
String title = rb.getString("helloworld.title");
System.out.println(new String(title.getBytes("8859_1"))); //covert to os/jvm default charset
2. Locale driven date and time display
Use java.text.DateFormat to format date string
e.g.
DateFormat df = DateFormat.getDateInstance(DateFormat.FULL,Locale.CHINA);
String date = df.format(new Date());
System.out.println(date);
DateFormat df2 = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.DEFAULT,Locale.CHINA);
String datetime = df2.format(new Date());
System.out.println(datetime);
3. JSP localization method.
1) native method:
use "Local local = request.getLocale();" to get the page accessor's local info
then use ResourceBoundle to read local resource
and page should use utf-8 charset
e.g.
<%@ page contentType="text/html; charset=utf-8" %>
<%
Local local = request.getLocale();
ResourceBundle rb = ResourceBundle.getBundle("test", local);
String title = rb.getString("helloworld.title");
%>
<html>
<head>
<title>test</title>
</head>
<body bgcolor="#ffffff">
<h1><%=title%></h1>
</body>
</html>
notice:put the test_zh.properties into directionary WEB_INF/classes
2)use jsp taglib to simplify the page
the Jakarta i18n taglib is a good choice. http://jakarta.apache.org/taglibs/doc/i18n-doc/index.html
e.g.
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib uri="http://jakarta.apache.org/taglibs/i18n-1.0" prefix="i18n" %>
<i18n:bundle baseName="test" id="test" localeRef="userLocale"
scope="request"
changeResponseLocale="false"/>
<html>
<head>
<title>test</title>
</head>
<body bgcolor="#ffffff">
<h1><i18n:message key="helloworld.title" /></h1>
</body>
</html>
3)use j2ee web framework(Struts) to simplify
the Struts web framework supply i18n support
Please refer: http://www.allapplabs.com/struts/struts_internationalization.htm