Spring国际化支持

如果应用程序需要国际化支持,就不能直接将文本硬编码在程序中。通过定义一个或多个属性文件保存应用程序中需要给用户显示的信息,每种语言或区域对应一个属性文件,从而实现根据用户语言及地区动态地绑定文本信息。

Spring的ApplicationContext对国际化的支持也正是依赖于Java平台的国际化支持,不过,并不需要与Java平台本身提供的ResourceBundle打交道,而是直接通过ApplicationContext 获得国际化信息。ApplicationContext 实现了MessageSource接口,为国际化提供了支持。

//配置文件:
/*
ApplicationContext需要一个MessageSource的实例来实现国际化支持,它会在当前配置文件中查找一个名为“messageSource”的Bean
*/
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <!-- 指定国际化文本的"基本"文件名-->
        <property name="basename" value="greeting"></property> 
    </bean>

//两个属性文件
greeting_en_US.properties
    hello=hello
    world=world
    who={0}
greeting_zh_CN.properties
    hello=\u4F60\u597D
    world=\u4E16\u754C
    who={0}

//测试类
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Locale locale = Local.getDefault();
System.out.println(
                locale.getDisplayName()+
                ac.getMessage("hello", null, locale)+
                ac.getMessage("world", null, locale)+
                ac.getMessage("who", new String[]{"小明"}, locale)
                );
        locale= new Locale("en_US");
        System.out.println(
                locale.getDisplayName()+
                ac.getMessage("hello", null, locale)+
                ac.getMessage("world", null, locale)+
                ac.getMessage("who", new String[]{"xiaoming"}, locale)
                        );
//运行结果:
中文 (中国)你好世界小明
en_ushelloworldxiaoming
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值