Spring国际化动态配置

16 篇文章 0 订阅

代码下载

http://pan.baidu.com/s/1sjNQmfF

 

Maven依赖

 

<properties>

        <springframework>4.0.5.RELEASE</springframework>

    </properties>

    <dependencies>

        <!-- Spring web mvc -->

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-webmvc</artifactId>

            <version>${springframework}</version>

        </dependency>

    </dependencies>

 在Spring应用中,国际化的配置比较简单,下面四步完成国际化的快速配置

 

第一步,配置messageSource和localeResolver

 

<!-- 配置国际化资源文件路径 -->

    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">

        <property name="basename">

            <!-- 定义消息资源文件的相对路径 -->

            <value>messages/message</value>

        </property>

    </bean>

    <!-- 基于Cookie的本地化解析器 -->

     <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">

       <property name="cookieMaxAge" value="604800"/>

       <property name="defaultLocale" value="zh_CN"/>

       <property name="cookieName" value="Language"></property>

     </bean>

    <!-- 基于Session的本地化解析器 -->

    <!--<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver

 第二步,编写message_*.properties

 

message_en.properties

 

hi=hello

something=The People's Republic of China

Chinese=Chinese

English=English

index=Index

welcome=Welcome

OtherPage=Other Page

 

 

message_zh_CN.properties(汉字已转成unicode码)

 

hi=\u4F60\u597D

something=\u4E2D\u534E\u4EBA\u6C11\u5171\u548C\u56FD

Chinese=\u4E2D\u6587

English=\u82F1\u6587

OtherPage=\u5176\u4ED6\u9875\u9762

index=\u9996\u9875

welcome=\u6B22\u8FCE

 第三步,页面引入spring标签库

 

引入

 

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 

 使用

 

 

<spring:message code="welcome"></spring:message>

 第四步,切换语言

 

 

    //@Autowired SessionLocaleResolver resolver;

     

    /**

     * 语言切换

     */

    @RequestMapping("language")

    public ModelAndView language(HttpServletRequest request,HttpServletResponse response,String language){

         

        language=language.toLowerCase();

        if(language==null||language.equals("")){

            return new ModelAndView("redirect:/");

        }else{

            if(language.equals("zh_cn")){

                resolver.setLocale(request, response, Locale.CHINA );

            }else if(language.equals("en")){

                resolver.setLocale(request, response, Locale.ENGLISH );

            }else{

                resolver.setLocale(request, response, Locale.CHINA );

            }

        }

         

        return new ModelAndView("redirect:/");

    } 

 已完成国际化的配置,其中请注意SessionLocaleResolver和CookieLocaleResolver的区别,很显然,通过Session只能对当前的会话有效,Cookie则对Cookie有效期内的会话都有效。在使用Cookie的时候,需要设置Cookie的过期时间,否则关闭浏览器之后,Cookie即失效了,没有达到目的。当然,也可以保存用户的语言设置信息到数据库,用户登录之后即可将语言改变成用户设置的语言。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值