Spring确实表现优异的一个方面是对国际化的支持,借助MessageSource接口,你的应用程序能够访问各种不同语言存储的String资源和被调消息
尽管你无须为了使用MessageSource而去用ApplicationContext,实际上ApplicationContext已经继承了MessageSource,并针对载入消息及令消息在你的环境里可用可供了专门支持
除了ApplicationContext,spring 还提供了三个MessageSource实现:
ResourceBundleMessageSource 使用java ResourceBundle
ReloadableResourceMessageSouce 可以定期中心载入资源文件
StaticMessageSource
利用ApplicationContext对MessageSource的支持,你必须在配置文件中顶一个MessageSource类型,名称为messageSouce的bean,并配置beannames或者beanname属性
MessageSoureTest.java
package ch5.applicationContext.MessageResource;

import java.io.File;
import java.util.Locale;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.core.io.FileSystemResource;


public class MessageResourceTest ...{

public static void main(String args[])...{
String realpath="";
//加载配置项
realpath=System.getProperty("user.dir")+File.separator+"src"+File.separator+"ch5/applicationContext/MessageResource"+File.separator+"applicationContext.xml";

ApplicationContext applicationContext=new FileSystemXmlApplicationContext("classpath:ch5/applicationContext/MessageResource/applicationContext.xml");
System.out.println(applicationContext.getMessage("msg", null,Locale.ENGLISH));
System.out.println(applicationContext.getMessage("msg", null,Locale.US));
System.out.println(applicationContext.getMessage("msg", null,Locale.UK));
System.out.println(applicationContext.getMessage("msg", null,Locale.CHINA));
System.out.println(applicationContext.getMessage("msg", null,Locale.CHINESE));
//带参数的例子

System.out.println(applicationContext.getMessage("msg", new Object[]...{"gao","xiang"},Locale.CHINESE));
}
}

配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">


<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>ch5.applicationContext.MessageResource.labels</value>
</list>

</property>
</bean>


</beans>
资源文件5个:
labels_en_GB.properties:msg = british english (en_GB)
labels_en.properties:msg = english (en)
labels_en_US.properties:msg = american(us)
labels_zh_CN.properties:msg = 中国(zn_CN)
labels_zh.properties:msg = 中国(zh) {0},{1}
结果:
english (en)
american (US)
british english (en_GB)
中国(zn_CN)
中国(zh) {0},{1}
中国(zh) gao,xiang