springmvc 国际化

来源:互联网 发布:mac电脑顿号怎么打 编辑:程序博客网 时间:2024/05/16 19:17

  本文基于SpringMVC国际化。描述了如何实现Spring的国际化,在jsp页面中如何获取国际化信息,本文描述如何在java代码中获取国际化信息,同时国际化切换和返回信息语言切换。

1、主要的jar包为:

<dependency><span style="white-space:pre"></span><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency>
2、基于请求的国际化配置

springmvc的国际化主要分为基于浏览器请求、cookie、session三种。主要使用基于cookie的国际化。
<span style="font-size:14px;"><bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" p:defaultLocale="zh_CN" /></span>
    这里配置默认语言为中文简体。

<span style="font-size:14px;"><!-- 国际化文件加载 --><bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"><property name="defaultEncoding" value="UTF-8"/><!-- 默认编码格式 --><property name="useCodeAsDefaultMessage" value="true"></property><!-- 加载不到对应key时,不抛出异常直接返回key作为value --><property name="cacheSeconds" value="1800"></property><!-- 刷新国际化资源时间 单位:秒。 --><property name="basenames"><list><value>classpath:lang/message</value></list></property></bean></span>
basenames配置国际化文件地址和国际化文件名称前缀。如:中文为:message_zh_CN。国际化文件主要采用properties文件。文件内部已key和value方式存储数据.

3、获取国际化语言与切换语言
a、获取请求的语言。(注:该方法只能获取该次请求的语言,如果请求的方法内部切换了语言则无法获取)
<span style="font-size:14px;">Locale locale = RequestContextUtils.getLocaleResolver(request).resolveLocale(request);      String language = locale.getLanguage();</span>
b、方法内部获取语言
  注入
<span style="font-size:14px;">@Resource     private CookieLocaleResolver resolver;</span>
<span style="font-size:14px;">Locale local = resolver.resolveLocaleContext(request).getLocale();     String language = local.getLanguage();</span>

c、切换语言(切换的语言 一定要有对应的properties文件)
注入
<span style="font-size:14px;">@Resource     private CookieLocaleResolver resolver;</span>
切换为中文
<span style="font-size:14px;">resolver.setLocale(request, response, Locale.CHINA);</span>
切换日文
<span style="font-size:14px;">resolver.setLocale(request, response, Locale.JAPANESE);</span>
d、提示信息格式化语言
注入
@Resource    private MessageSource messageSource;
提示信息的message为properties文件中的某个key
String message = messageSource.getMessage("message", null, local);

此处支持messageformat的写法。即
String[] obj = {"张三"};    String message = messageSource.getMessage("message", obj, local);
message:中文语句:{0}
  输出语句:中文语句:张三
e、页面提示
对于页面静态文字可用
<spring:message code="welcome"></spring:message>
提示信息因为已经进行语言格式,可用直接输出



 








0 0
原创粉丝点击