您的位置:首页 > 编程语言 > Java开发

springmvc 国际化

2016-07-11 11:34 295 查看
  本文基于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>

提示信息因为已经进行语言格式,可用直接输出

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: