您的位置:首页 > 其它

EasyJWeb中灵活的多国语言支持

2007-12-29 05:10 337 查看
一、多国语言资源属性文件
1、定义多国语言资源文件
    为了让系统中支持多国语言,我们需要把各国具体的文字信息存放到资源文件中,EasyJWeb的多国语言资源文件统一存的位置在/WEB-INF/applicationSource目录,文件名为类似下面的内容xxxx_zh.properties,xxxx_en.properties,其中xxx代表资源区域标识、zh及en代表语言。文件中的内容是标准的属性文件,包括一系列成对的名称与值定义的属性。如下面是两个多国语言文件内容:
hello_zh.properties-中文属性信息
#Created by JInto -
#Thu Mar 15 12:43:36 CST 2007
msg=/u5582/uFF0C/u60A8/u597D/uFF0C/u6211/u662FEasyJWeb/uFF0C/u8BF7/u652F/u6301/u56FD/u4EA7/u5F00/u6E90/u9879/u76EE/uFF01
nowtime=/u73B0/u5728/u7684/u65F6/u95F4/u662F
title=/u6211/u7684/u7B2C/u4E00/u4E2AEasyjweb/u5E94/u7528

hello_en.properties-英文属性信息
title=my first EasyJWeb application for US
nowtime=now time is
msg=hello,this is EasyJWeb openSource,Thanks for your support!
2、模板页面中的使用多国语言标签
    有了多国语言资源文件,即可在模板页面中通过多个语言标签来支持多国语言内容,主要有两个步骤;
    (1)、先使用$!i18n.init("hello")来加载资源文件,也可以在easyjweb配置文件中设置自动加载资源文件。
    (2)、然后使用标签$i18n.ml(“name”)来在页面中调用加载多国语言信息。
下面是一个简单的模板示例中的内容:








$!i18n.init("hello")


My First EasyJWeb application













$!i18n.m("title")











二、自动多国语言模板支持
      在一些网站应用中,由于各国文化习惯及喜好的不同,各国语言的页面版面及显示内容也要单独设计,此时可以为每一国语言设计一个单独的模板文,并存放在指定的目录下,这样当这个国家的访问这个页面的时候,EasyJWeb会自动使用相应的模板来展现用户内容。
    假如我们用一个名为hello.html的模板文件来显示内容,则EasyJWeb将会自动根据下面的规则选择特定的模板文件来显示具体国的版面。
    默认模板的位置:easyjweb/ hello.html
   中文模板页面:easyjweb/CN/hello.html
  英文模板页面:easyjweb/US/hello.html
三、在Java程序中使用多国语言内容
      EasyJWeb中通过util里面的I18n工具来处理多国语言信息,假如我们要在后台的Action等程序中使用支持多国语言的内容,则需要直接在代码中使用这个工具类,使用的方法如下:
    1、初始化I18n.init(moduleName)-这一操作将在第一次执行的时候把相应moduleName里面的属性信息加载
    2、使用I18n.m(propertyName)-这一操作来得到多国语言信息。
如下面的示例:




public class helloAction implements IWebAction ...{




 public Page execute(WebForm form, Module module) throws Exception ...{


  I18n.init("hello");


  I18n.m("msg");


  String msg=I18n.getInstance().m("msg");


  form.addResult("msg",msg);// 设置VO对象msg的值为String


  


  form.addResult("time", new Date());// 设置VO对象time的值为当前时间


  return new Page("hello","/hello.html","template"); 


 }


}



四、EasyJWeb中多个语言标签处理类I18n的代码
 
 


package com.easyjf.util;


import java.util.Locale;


import java.util.Properties;




public class I18n ...{


    private static I18n singleton = new I18n();




    public static I18n getInstance() ...{


        return singleton;


    }






    public static void init(String moduleName) ...{        


            FrameworkEngine.get(moduleName, null);


    }






    public static void init(String language, String moduleName) ...{        


            FrameworkEngine.get(moduleName, language);    


    }






    public static String m(String propertyName) ...{    


            Properties rb = FrameworkEngine.get(null, null);


            return rb.getProperty(propertyName);


    }






    public static String m(String propertyName, String language) ...{        


            Properties rb = FrameworkEngine.get(null, language);


            return rb.getProperty(propertyName);        


    }


}


 
 小结:
      EasyJWeb中提供了多种方式来满足Web应用中的多国语言支持,可以根据实际应用程序的需求选择使用适合的方式.
 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1531156
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: