国际化

2016-11-05  本文已影响0人  暮雨随风

一、在页面上能够根据浏览器语言设置的情况对文本(不是内容)、时间、数值进行本地化处理。解决方法是通过使用 JSTL 的 fmt 标签。

如果使用了JSTL 的 fmt 标签,需要在SpringMVC 的配置文件中配置国际化资源文件。可以根据浏览器选择的语言不通,读取不同的国际资源属性文件。(处于不同国家时,浏览器语言不同)

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

<bean id="messageSource"

class="org.springframework.context.support.ResourceBundleMessageSource">

<property name="basename" value="i18n"></property>

</bean>

在 src 目录下,创建名为 i18n.properties 的文件。内容如下:

然后在 src 目录下创建中文和美国对应的 i18n.properties 文件,i18n_zh_CN.properties(中国),内容分别为中文的 用户名 和 密码,

i18n_en_US.properties(美国)。

接着在 请求界面写一个链接:

<a href="/SpringMVC_3/testModelAndView">testModelAndView</a>

在 Controller 类中写一个方法:

@RequestMapping("/testModelAndView")

public ModelAndView testModelAndView(){

ModelAndView mav = new ModelAndView(success);

return mav;

}

在显示界面显示:(首先需要在界面中引入 fmt 标签)

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

在 HTML 中的 body 中写入:

<fmt:message key="i18n.username"></fmt:message></br>

<fmt:message key="i18n.password"></fmt:message></br>

运行项目后显示如图:

选择浏览器的 Internet 选项--语言选项,找到 英语(美国),添加,设为首选。刷新界面。

二、在 bean 中获取国际化资源文件 local 对应的消息,解决方法是在 bean 中注入 ResourceBundleMessageSource  的实例,调用其 getMessage()方法即可。

注解掉步骤一中的通过视图名直接响应。

<!-- <mvc:view-controller path="/i18n" view-name="i18n"/> -->

请求界面链接:

<a href="/SpringMVC_3/i18n">test i18n</a>

在 Handler(Controller)中写一个响应方法。

@Autowired

//注入 ResourceBundleMessageSource的实例

private ResourceBundleMessageSource messageSource; 

@RequestMapping("/i18n")

public String testI18n(Locale locale){

//调用 getMessage方法获取 i18n.username 的值,输出

String val = messageSource.getMessage("i18n.username", null, locale);

System.out.println(val);

return "i18n";

响应界面 i18n.jsp 显示信息:(首先需要在界面中引入 fmt 标签)

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

在 HTML 中的 body 中写入:

<fmt:message key="i18n.username"></fmt:message>

<fmt:message key="i18n.password"></fmt:message>

三、通过超链接切换 local ,而不再依赖与浏览器语言设置情况。解决方法是配置 LocaleResolver 和 LocaleChangeInterceptor。

在 mvc 的配置文件中配置 LocaleResolver 和 LocaleChangeInterceptor。

<!-- 配置SessionLocalResolver  -->

<bean id="localeResolver "

class="org.springframework.web.servlet.i18n.SessionLocaleResolver ">

</bean>

<!-- 配置LocaleChangeInterceptor -->

<mvc:interceptors>

<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>

</mvc:interceptors>

请求界面链接:

<a href="/SpringMVC_3/i18n?local=zh_CN">中文</a>

<a href="/SpringMVC_3/i18n?local=en_US">英文</a>

上一篇下一篇

猜你喜欢

热点阅读