SpringMVC 资源国际化实现以及常见问题

资源国际化可以很方便的实现web项目语言的切换,解决了web项目按需显示不同语言界面的问题.

SpringMVC 的资源国际化基于JDK的java.util.ResourceBundle实现,经过SpringMVC的封装实现起来非常简单:

简单实现具体步骤如下:

  1.在SpringMVC的配置文件中配置ResourceBundleMessageSource(该类的作用是绑定资源文件,根据Locale值不同,显示不同的语言)

 1     <!-- 资源国际化相关配置 -->
 2     <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
 3         <!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称  -->
 4         <property name="useCodeAsDefaultMessage" value="true" />
 5         <!-- 默认编码格式为 utf-8 -->
 6         <property name="defaultEncoding" value="UTF-8" />
 7         <!-- 国际化信息所在的文件名 -->
 8         <property name="basenames">
 9             <list>
10                 <value>i18n.messages</value>
11             </list>
12         </property>
13     </bean>

           (PS:basenames属性,值为资源文件的地址)

  2.配置LocaleResolver(该类指明了Locale应该存放在何处)

    LocaleResolver有三种选择,分别是基于request,基于session,基于cookie,因为基于request的实现不支持手动切换,建议使用基于session的实现

    三种方式的配置具体如下:

     a.基于request的实现:

    <!-- 基于request实现资源国际化 -->
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver" />

b.基于session的实现:

    <!-- 基于Session实现资源国际化 -->
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
        <property name="defaultLocale" value="en"/>
    </bean>

       c.基于cookie的实现

    <!-- 基于cookie实现资源国际化 -->
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
        <property name="defaultLocale" value="en"/>
    </bean>

  3.配置localeChangeInterceptor拦截器(该类的作用是根绝不同的LocaleResolve采用不同的方式设置Locale)

    <mvc:interceptors>
        <bean id="localeChangeInterceptor"
            class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
            <property name="paramName" value="langType" />
        </bean>
    </mvc:interceptors>

  (paramName属性,是指请求中 切换语言的参数名)

  4.编写资源文件

    资源文件的命名规则是 basename [ _language ] [ _country ] [ _variant ].properties

    languange country variant  需要为Locale类中的值

  5.页面获取资源文件中的值(以jsp为例)

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

<spring:message code="comment.management" /> <!-- code的值为资源文件中对应的key -->

        6.页面切换语言

      这种方式实现的资源国际化,会拦截所有的请求,只要请求中带有 localeChangeInterceptor 中定义的参数,拦截器就会修改存储的Locale,实现语言的切换

常见问题(重点)(待补充,请稍后):

  1.基于session不使用拦截器实现

  2.资源文件的加载顺序

3.默认语言的设置

    

    

时间: 2024-10-31 01:58:52

SpringMVC 资源国际化实现以及常见问题的相关文章

springmvc 资源国际化

<!-- 关于国际化: 1. 在页面上能够根据浏览器语言设置的情况对文本(不是内容), 时间, 数值进行本地化处理 2. 可以在 bean 中获取国际化资源文件 Locale 对应的消息 3. 可以通过超链接切换 Locale, 而不再依赖于浏览器的语言设置情况 解决: 1. 使用 JSTL 的 fmt 标签 2. 在 bean 中注入 ResourceBundleMessageSource 的示例, 使用其对应的 getMessage 方法即可 3. 配置 LocalResolver 和 Lo

资源国际化

在一个普通的project项目中资源国际化 public class I18n { public static void main(String[] args) { //默认读取src下以app开头的配置文件 //ResourceBundle rb = ResourceBundle.getBundle("app",Locale.US); ResourceBundle rb = ResourceBundle.getBundle("app",Locale.CHINA);

springMVC项目国际化(i18n)实现方法

SpringMVC项目国际化(i18n)实现方法 按照作息规律,每周五晚必须是分享知识的时间\(^o^)/~,这周讲点儿啥呢,项目需要逼格,咱们国际化吧(* ̄rǒ ̄)~,项目中碰到这类需求的童鞋可能并不多,但偶尔用到也会比较费时间滴;-),不如驻足本帖片刻吧︿( ̄︶ ̄)︿ 额,嗯~,记得一开始从事软件开发时在一个很轻量级的项目中碰到了一个貌似叼炸天的需求,什么?国际化?没听说过,不知道怎么玩儿...,谷歌翻帖快一周,大神们的神贴也看了许久,可就是解决不了我的项目需求,怎么办,加大神Q骚扰之~~(

struts2 资源国际化

web.xml: <?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schem

SpringBoot资源国际化

Springboot根据浏览器实现网站资源国际化 1.创建资源化文件 resource目录下创建messages目录 创建messages_en_US.properties.messages_zh_CN.properties文件.分别是英文.中文资源. messages.properties文件为默认文件. messages_en_US.properties写入内容:welcome = welcome to login in soa-watch systerm(english) messages

游戏UI框架设计(7): 资源国际化技术

游戏UI框架设计(7) --资源国际化技术 说起"资源国际化"技术,个人认为可以追述到微软Window2000 PC操作系统的发布,在这之前windows98操作系统的开发都是先由美国总部出一个英文版本,然后在发布windows 版本之后的大约一年后,全世界其他语言版本的操作系统才能面世. 在这一年中,就是微软驻各个国家分公司的多语言版本的翻译工作,需要从操作系统的核心到外围软件,全部翻译为所在国家语言,不留死角.       这种情况对于微软来说需要为多语言版本付出额外非常大的经济负

SpringMVC的国际化

关于SpringMVC的国际化,http://www.cnblogs.com/liukemng/p/3750117.html这篇文章已经讲的很好了.它讲了有如下几种国际化方式 1:基于Http的header信息的国际化(request.getLocale()) 2:基于session的国际化(设置session的SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME 3:基于COOKIE的国际化 4:基于URL的国际化 基于session的实现方式

Java语言资源国际化步骤

语言资源国际化步骤: ??1. 定义资源文件(如:language),需要使用命令native2ascii命令进行转码:(native2ascii是jdk中的转码工具,在jdk的bin目录下) ??2. 定义工具类(LangusgeUtils)读取资源文件: ??3. 定义调用资源文件类(TestResourceBundle) 注意:native2ascii 命令必须进入到工程下面的资源文件夹发使用,例如: D:\Adobe\eclipse\JavaObject\jdbc_pool_dao_sh

SpringMVC实现国际化(i18n)

所谓国际化就是支持多种语言,web应用在不同的浏览环境中可以显示出不同的语言,比如说汉语.英语等.下面我将以具体的实例来举例说明: (1)新建动态Java web项目,并导入几个SpringMVC必需的几个jar包,项目结构图和所需jar包如下:    (2)配置web.xml: <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"          xmlns:xsi="http://www.w3.org/2001/X