Spring framework(7):国际化支持 i18n

本文深入探讨了Spring Framework中的国际化支持,包括MessageSource的体系结构,如ResourceBundleMessageSource和ReloadableResourceBundleMessageSource的使用,以及如何在容器级别实现国际化信息的访问和占位符参数化的资源操作。
摘要由CSDN通过智能技术生成
Spring 国际化 i18n


以下完整示例代码地址: https://gitee.com/assad/springframework-test-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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值