小明思考

Just a software engineer
posts - 124, comments - 36, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

java i18n kit

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


评论

# re: java i18n kit  回复  更多评论   

2005-12-19 23:03 by no name(anonimous)
Hi,budy.
Your recommendation is very convenion for I have been disturbing by these damned localization problems at every forum about java technology.

只有注册用户登录后才能发表评论。


网站导航: