spring入门之国际化支持
仿造夏昕的《spring开发指南》第23页 国际化支持例子 发贴出来与大家共享BTW:请问,真是开发中,是用Struts国际化,还是用spring国际化,还是两者互相融合?
1,bean.xml
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>myMessages</value>
</list>
</property>
</bean>
</beans>
2,资源文件myMessage.properties
userinfo=当前用户:[{0}],现在时间是:[{1}]
通过JDK提供的转码工具native2ascii.exe进行转换,可得到
myMessage_zh.properties
userinfo=\u5f53\u524d\u7528\u6237:[{0}],\u73b0\u5728\u65f6\u95f4\u662f\uff1a[{1}]
再写一个英语版的资源文件
myMessage_en.properties
userinfo=current user:[{0}],now is:[{1}]
最后,写一个测试类
3,测试类:SourceTest.java1 package coffee;
2 import org.springframework.context.ApplicationContext;
3 import org.springframework.context.support.FileSystemXmlApplicationContext;
4 import java.util.*;
5 public class SourceTest
6 {
7 public static void main(String[] args)
8 {
9 ApplicationContext ctx=new FileSystemXmlApplicationContext("bean.xml");
10 Object[] obj = new Object[]{"coffee",new Date()};
11 // String userinfo = ctx.getMessage("userinfo", obj,Locale.getDefault());
12 String userinfo = ctx.getMessage("userinfo", obj,Locale.US);
13 System.out.println(userinfo);
14 }
15 }
注:代码前面的数字,只是为了方便说明而添加的,不是程序中的代码。
现在是把第11行代码注释掉,运行结果显示的是英文;
current user:,now is:
如果保留第11行代码,而是把第12行代码注释掉,显示结果是中文的:
当前用户:,现在时间是:
[ 本帖最后由 深圳情缘 于 2006-7-25 10:18 编辑 ]
至于对于代码的解释,不烦稍加修改夏昕同志的书
这里声明了一个名为messageSource的Bean(注意对于Message定义,Bean ID必须为messageSource,这是目前Spring的编码规约),对应类为ResourceBundleMessageSource,
目前Spring中提供了两个MessageSource接口的实现,即
ResourceBundleMessageSource和ReloadableResourceBundleMessageSource,后
者提供了无需重启即可重新加载配置信息的特性。
在配置节点中,我们指定了一个配置名“myMessages”。
这里,getMessage方法根据指定编码“Locale.US”加载了myMessages_en.properties文件。同
时请注意登录时间部分的变化(Locale不同,时间的输出格式也随之改变)。
String userinfo = ctx.getMessage("userinfo", obj,Locale.getDefault());
在原文中,作者的getMessage方法传入的参数是前面两个,我试过了,后面的Locale必须提供,否则出错
作者所说的是不需要提供最后一个参数,默认是系统语言,但实际上是需要提供的,默认的话也需要显示提供
Locale.getDefault()
估计是因为Spring版本不同而导致的错误,因为我用的是最新版1.2.8版本
也有可能是电子书制作方面出的问题,我看的是网上下载的电子版的PDF,一直不知道哪本好,所以先下载了来看看,spring开发指南,篇幅虽小,写的还真不错,浅显易懂,很适合我们入门的指导书。 感谢楼主分享,我也正在试着看这个文档,感觉不错
页:
[1]