一、多国语言资源属性文件
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(
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应用中的多国语言支持,可以根据实际应用程序的需求选择使用适合的方式.
posted on 2007-03-16 22:10
简易java框架 阅读(1691)
评论(0) 编辑 收藏