现在的位置: 首页 > 综合 > 正文

EasyJWeb中灵活的多国语言支持

2013年12月15日 ⁄ 综合 ⁄ 共 2919字 ⁄ 字号 评论关闭

一、多国语言资源属性文件
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 applicationtitle>
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

抱歉!评论已关闭.