第十章 国际化-跟赵大笨笨学SpringMVC

来源:互联网 发布:java io读取文件乱码 编辑:程序博客网 时间:2024/06/05 09:36

但凡一个高大上的网站就可能面临多语言的对应,除了中国人,还有可能是美国人,他根本不懂中文,这样就没法用你的网站。这时候国际化就诞生了,国际化缩写为i18n。为啥?因为internationalization,以i开头n结尾,中间有18个字母。
国际化要做什么?
1.将我们页面上的文字写进属性文件中,有多个不同语言的属性文件。
2.选择和读取正确的属性文件。
就这么两部。
我们先说创建属性文件以及文件中的编码格式:
有人工作很久,还不知的怎么建立一个properties文件。最简单,在eclipse中New->Other->General->file。然后后缀名写为.properties即可。再开看编码格式,一定注意:我们写的汉字一定采用Unicode,也就是ISO-8859-1,不是UTF-8,不然会乱码。我们可以采用native2asci进行转码。
我们建完属性文件之后需要让spring去读取它啊。这有两种方法。我们看一下:

第一种将资源文件放在源码里面:
这里写图片描述

那么配置文件信息如下:

<!-- 读取国际化资源文件 == 资源文件在包里面,路径写全包名--><bean id="messageSource"     class="org.springframework.context.support.ResourceBundleMessageSource">        <property name="basenames">            <list>                <value>cn/ddx/i18n/messages</value>            </list>        </property>    </bean>

第二种配置文件在WEB-INF下面自己创建的目录下面:
这里写图片描述

那么配置文件信息如下:

    <!-- 读取国际化资源文件 == 资源文件在WEB-INF下面 ,可以配置多个 -->    <bean id="messageSource"        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">        <property name="basenames">            <list>                <value>/WEB-INF/lang/messages</value>            </list>        </property>    </bean>

需要注意的是两者配置的class不同!
配置文件路径中的“messages”为资源文件名称中_en_US.properties的前面部分,可以自定义。
我们看一下中文的属性文件内容:

userId=\u7528\u6237IDpassword=\u5BC6\u7801

英文:

userId=UserIDpassword=PassWord

这样spring就可以读取我们的属性文件了,在jsp中怎么用呢?
第一步:jsp追加<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
第二步:替换我们原来写在jsp上的文字。将【用户ID】改为
看一下效果:
这里写图片描述
我把浏览器的语言改为英文再试试:
这里写图片描述

大功告成

其实springmvc使用了语言区域,这个语言区域解析器有三个实现:
1.AcceptHeaderLocaleResolver(默认,所以我们配置)
2.SessionLocaleResolver
3.CookieLocaleResolver
除了默认的,当我们用其他两个时候,需要在springmvc位置文件中追上:

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

或者

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

还要追加上国际化拦截器,感兴趣朋友可以去研究一下其他两种。

原创粉丝点击