EasyJWeb中灵活的多国语言支持

一、多国语言资源属性文件
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”)来在页面中调用加载多国语言信息。
下面是一个简单的模板示例中的内容:

< html >
< head >
$!i18n.init("hello")
< title > My First EasyJWeb application </ title >
< meta  http-equiv ="Content-Type"  content ="text/html; charset=utf-8" >
</ head >

< body >
$!i18n.m("title")
</ body >
</ html >


二、自动多国语言模板支持
      在一些网站应用中,由于各国文化习惯及喜好的不同,各国语言的页面版面及显示内容也要单独设计,此时可以为每一国语言设计一个单独的模板文,并存放在指定的目录下,这样当这个国家的访问这个页面的时候,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(nullnull);
            
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


你可能感兴趣的:(Web)