小明思考

          Just a software engineer
          posts - 124, comments - 36, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          java i18n kit

          Posted on 2005-12-19 17:26 小明 閱讀(1134) 評論(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="<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.
          主站蜘蛛池模板: 鹰潭市| 新竹县| 六盘水市| 政和县| 高邮市| 囊谦县| 贵阳市| 玉龙| 广饶县| 安岳县| 九寨沟县| 怀仁县| 海宁市| 慈溪市| 宁波市| 宣化县| 安平县| 策勒县| 宁河县| 东城区| 塔城市| 巴东县| 涿鹿县| 壤塘县| 和平县| 万荣县| 望谟县| 长兴县| 祁连县| 淮滨县| 舟曲县| 博兴县| 扶风县| 溧阳市| 华蓥市| 余庆县| 汽车| 抚松县| 庆元县| 虞城县| 乐平市|