国际化如何使用

SpringMVC 国际化

因为今天的页面不再是简单的个人程序,需要面对全世界的用于观看,例如外交部的网站,可以根据自己浏览器的语言来选择对应的文字。

而 Spring MVC 为了方便我们国际化的开发,也提供了便利,建立在 Java国际化的基础之上的,通过提供不同国家/语言环境的消息资源,然后通过 ResourceBundleMessageSource 加载指定 Locale对应的资源文件,取得该资源文件中指定 key 对应的消息。这些步骤,Spring MVC 框架对J国际化进行了进一步的封装,简化了国际化开发。

国际化不是对内容的国际化,而是对本身要显示的文字进行国际化。因为对于数据库中的数据那么多,我们不可能对所有的数据进行国际化。而是对于本身要显示的文字国际化。

在 SpringMVC 中,提供了便利的国际化方式,需要通置国际化资源文件的 bean,通过 Locale 完成。

为了实现国际化,SpringMVC 提供了本地化拦截器和本地化解析器,以及还有国际化资源接口。只需页面跳转点击即可完成国际化。那么它们都是啥?

  • 本地化拦截器:LocaleChangeInterceptor
    • 国际化拦截器,当语言区域发生改变的时候,通过连接传递过来的参数,来改变应用语言的环境。
  • 本地化解析器:LocaleResolver 接口
    • 确定语言区域
    • accept-langage:基于浏览器的语言区域选择
    • SessionLocaleResolver:基于会话的语言区域选择,需要配置(常用)
    • CookieLocaleResolver:基于 Cookie 的语言区域选择。需要配置
  • 国际化资源接口 ResourcBundleMessageSource
    • 用于告诉系统国际化资源文件的位置

那么过程如何?

  1. 首先,点击一个 a 标签跳转国际化页面。

  2. 本地化拦截器拦截请求

    1. 获取超链接传递的参数 locale
    2. 将 locale 参数解析为 Locale 对象
    3. 获取 LocaleResolver 对象
  3. 随后本地化解析器解析(这里使用 SessionLocaleResolver 解析器)

    1. 把 Local 对象设置为 session 属性
    2. 从 session 中获取 Locale 对象
  4. 应用程序使用 Locale 对象,通过国际化资源接口找到国际化资源文件。

案例

这里通过超链接实现国际化的例子说明。

例子:

  1. 首先,写一个 a 标签跳转国际化页面。
	<a href="${pageContext.request.contextPath}/testGuoJiHua?locale=zh_CN">中国</a><br>
	<a href="${pageContext.request.contextPath}/testGuoJiHua?locale=en_US">English</a>
  1. 配置国际化资源文件

    i18n_zh_CN.properties

    username=\u7528\u6237\u540D
    password=\u5BC6\u7801
    

    i18n_en_US.properties

    username=USERNAME
    password=PASSWORD
    

    i18n.properties

    username=UserName
    password=Password
    
  2. 配置拦截器、解析器、资源

    	<!-- 告诉系统国际化资源文件的位置 -->`
    	<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
            <!--  i18n 为国际资源文件的前缀 -->
    		<property name="basename" value="i18n"></property>
    	</bean>
    	<!-- 配置本地拦截器 -->
    	<mvc:interceptors>
    		<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    		</bean>
    	</mvc:interceptors>
    	<!-- 基于 SessionLocaleResolver 的语言区域选择器 -->
    	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
    	</bean>
    

    注意:

    • ResourceBundleMessageSource 的 bean Id 必须是 messageSource
    • SessionLocaleResolver 的 bean Id 必须是 localeResolver
  3. 在页面中使用 message 标签输出国际化信息,需要使用 SpringMVC 提供的 <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 标签

    <body>
    	<fmt:message key="username"></fmt:message>
    	<fmt:message key="password"></fmt:message>
    </body>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值