<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 资源国际化测试 -->
<!-- 这个Bean的id只能为“messageSource” -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- 参数cacheSeconds就是定义每5秒钟自动刷新一次资源文件,在真实的应用中,刷新周期不能太短,否则频繁的刷新将带来性能上的负面影响,一般不建议小于30分钟,cacheSeconds默认值为-1表示永不刷新 -->
<property name="cacheSeconds" value="-1"/>
<property name="basenames">
<list><!-- list节点的value子节点中的body值是指/WEB-INF/languages/test/messages包下的以messages为主要名称的properties文件。Spring会自动在/WEB-INF/languages/test/messages包下搜寻配置文件并进行加载 -->
<value>/WEB-INF/languages/test/messages</value>
</list></property>
</bean>
</beans>
在/WEB-INF/languages/test/messages下,建立两个messages的属性文件。一个名为messages_zh_CN.properties,另一个为messages_en_US.properties,分别对应国际化中的中国和美国。
在这两个属性文件中分别建立一个userinfo属性。
中国为:userinfo=当前登陆用户[{0}] 登陆时间[{1}]
美国为:userinfo=current login user:[{0}] login time:[{1}]
接下来可以写段代码测试。建个类,写个测试Main方法。
public class MessageTest {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
Object[] arg = new Object[] { "张三", Calendar.getInstance().getTime() };
String msg = ctx.getMessage("userinfo", arg,Locale.CHINA);
System.out.println("Message is ===> " + msg);
}
}
最后输出的结果是:Message is ===> 当前登录用户:[张三] 登录时间:[14-3-23 上午12:10]
ctx.getMessage("userinfo", arg,Locale.getDefault());这个方法,传入的三个参数,第一个是properties文件中对应的名。arg为一个对象数组,我们在properties里面放置了两个变量,[{0}]和[{1}],Spring会为我们给它们赋值。而最后则需要传入一个Local。这里用Locale.CHINA代表中国。
如果我们用Locale.US,则输出会变为: Message is ===> current login user:[Erica] login time:[3/23/14 12:10 AM]