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