Spring 国际化 i18n
关于 Java 本身对于 i18n 的支持,参见:
http://blog.csdn.net/al_assad/article/details/78689808
MessageSource
Spring 定义了访问国际化信息的 MessageSouce (org.springframework.context.MessageSource) ,并提供了一系列易用的实现类;
该接口的定义了以下几个比较重更要的方法:
String getMessage(String code,Object[] args,String defaultMessage,Locale lcoale) | code 表示国际化信息中国的属性名; args用于传递格式化字符串的运行参数; 当资源找不到对应的属性名时,返回 defaultMessage参数指定的默认信息; locale 表示本地化对象; |
String getMessage(String code,Object[] args,Locale lcoale) | 与以上方法类似,但当找不到对应的属性名时,直接抛出NoSuchMessageException 异常; |
String getMessage(MessageSourceResolvable resovable,Locale locale) | MessageSoucreresolvable 将以上属性名、参数数组、默认信息封装起来 |
MessageSource的体系结构
ResourceBundleMessageSource 是一个基本的实现类;
ReloadbleReourceBundleMessageSource 提供了定时刷新功能,可以在不重启系统的情况下更新资源的信息;
StaticMessageSource 主要用于程序测试,允许通过编码的形式提供国际化信息;
ResourceBundleMessageSource
该实现类允许通过 beanName 指定一个资源名,或者通过 beanNames 指定一组资源名;
示例代码模块:
site.assad.springi18n/I18nTest.class;site.assad.i18n/resource;site.assad.springi18n/beans.xml
beans.xml 中的相关
依赖注入部分:
<bean id="myResource" class="org.springframework.context.support.ResourceBundleMessageSource">
<!--设置资源路径-->
<property name="basenames">
<list>
<value>site/assad/i18n/resource</value>
</list>
</property>
</bean>
访问资源代码:
//根据xml配置文件,启动 spring 容器上下文
String[] configs = {
"site/assad/springi18n/beans.xml"};
ApplicationContext ctx = new ClassPathXmlApplicationContext(configs);