`
shihuan830619
  • 浏览: 582902 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SpringMvc多语言配置

阅读更多
applicationContext.xml文件中加入如下代码:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
		<property name="basenames">  
	    	<list>
	        	<value>messages</value>
	        </list>  
	 	</property>
	 	
	 	<!-- 这个是配置单一路径的做法,也好用
	 	<property name="basename">
            <value>messages</value>
        </property>
	 	 -->
	 	
	 	<property name="defaultEncoding" value="UTF-8" />
  	</bean>
  	
	
  	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
  		<property name="cookieName" value="clientlanguage"/>
     	<property name="cookieMaxAge" value="94608000"/>
	    <property name="defaultLocale" value="en" />
    </bean>


spring-servlet.xml文件加入如下代码:
<context:component-scan base-package="com.easeye.ymail.web.eventmail.appbusiness.multilanguage.control"/>
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
		<property name="paramName" value="language" />
	</bean>


messages_en.properties文件加入如下代码:
contact.mytestkey=hello\!


messages_zh.properties文件加入如下代码:
contact.mytestkey=\u60A8\u597D\!


web.xml文件加入如下代码:
<filter>
		<filter-name>systemLanguageFilter</filter-name>
		<filter-class>com.easeye.ymail.web.webcore.lang.SystemLanguageFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>systemLanguageFilter</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>systemLanguageFilter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>


SpringUtil.java代码如下:
package com.shihuan.mypro.web.webcore.utils;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class SpringUtil implements ApplicationContextAware {

	private static ApplicationContext applicationContext;
	
	public static Object getBean(String beanName){
		return applicationContext.getBean(beanName);		
	}
	
	@SuppressWarnings("unchecked")
	public static <T> T getBean(Class cla){
		return (T)applicationContext.getBean(cla);		
	}

	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
		SpringUtil.applicationContext=applicationContext;
	}
	
}


SystemLanguageFilter.java代码如下:
import java.io.IOException;
import java.util.Locale;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.support.RequestContextUtils;

import com.easeye.ymail.web.webcore.utils.SpringUtil;


public class SystemLanguageFilter implements Filter {

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, SpringUtil.getBean(org.springframework.web.servlet.i18n.CookieLocaleResolver.class));
		Locale locale = RequestContextUtils.getLocale((HttpServletRequest) request);
		request.setAttribute("easeyeI18nLang", locale.getLanguage());
		chain.doFilter(request, response);
	}

	@Override
	public void destroy() {
	}

}


ChangeLanguageControl.java代码如下:
import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.propertyeditors.LocaleEditor;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.support.RequestContextUtils;

import com.easeye.ymail.web.webcore.messaging.OpMessage;

/**功能: 动态改变系统的语言*/
@Controller
@RequestMapping("/")
public class ChangeLanguageControl {

protected Logger logger = LoggerFactory.getLogger(getClass().getName());

@RequestMapping(value = "changelanguage.do")
public String changeLanguage(HttpServletRequest request, HttpServletResponse response) {
return "redirect:" + request.getParameter("originalUrl");
}

}


easeye-en.js文件加入如下代码(注意引用顺序一定是先引用easeye-en.js后引用easeye-ch.js):
var easeyeI18n={};
easeyeI18n["en"] = {
"contactName" : "contact name",
"userName" : "user name"
}


easeye-ch.js文件加入如下代码:
easeyeI18n["ch"] = {
"contactName" : "联系人姓名",
"userName" : "用户帐号"
}


mybusiness.js文件加入如下代码:
function getEaseyeI18nText(langKey){
return easeyeI18n[easeyeI18nLang][langKey];
}
function switchLanguage(language){
if(window.location.href.indexOf(".do")==-1){
open("/eventmail/changelanguage.do?language="+language+"&originalUrl="+encodeURI(window.location.href),"_self");
}else{
if(window.location.href.indexOf(".do?")==-1){
open("?language="+language,"_self");
}else{
open("&language="+language,"_self");
}
}
}


在login.jsp文件中代码如下:
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<font color="red">
																	mytestkey: <spring:message code="contact.mytestkey"  />
																	Current Locale : ${pageContext.response.locale}
																	</font>

<a href="${ctx}/changelanguage.do?language=en">EN</a>
																	<a href="${ctx}/changelanguage.do?language=zh_CN">CN</a>




上面是笔者自己写的代码, 下面的这个链接是网上提供的文章, 可供参考:
http://www.open-open.com/doc/view/6df7b8aa00584a19ba74bc6f130dadcf
0
0
分享到:
评论
4 楼 jyx6911226 2016-06-16  
需要在applicationContext.xml中添加
<bean class="com.cn.jyw.util.springutil.SpringUtil" lazy-init="false"/>
否则会报空指针,加载不到对象。

希望下次能把代码写全点,谢谢
3 楼 shihuan830619 2014-05-01  
2楼的朋友说"没有SpringUtil类",笔者这里增加了SpringUtil类的代码,希望能解决您的问题。
2 楼 rdman 2014-04-17  
伙计,我照着你这个做,发现有两个问题,
一个是没有SpringUtil类,
二是SpringUtil.getBean(org.springframework.web.servlet.i18n.CookieLocaleResolver.class));不理解。
能不能给我一份完整的代码?谢谢!
1 楼 LinApex 2014-01-14  
<spring:message code="contact.mytestkey"  /> 

spring 这个标签中是否有对 资源文件做缓存呢?

相关推荐

    ssm框架整合的第一个阶段:完成了springmvc框架的配置和spring框架的配置

    7. **国际化**:使用`&lt;bean&gt;`配置MessageSource,实现多语言支持。 8. **测试**:编写单元测试和集成测试,使用JUnit、Mockito和Spring Test等工具验证配置的正确性。 整合SSM框架需要对每个组件有深入的理解,...

    SpringMVC 国际化/多语言

    开发者只需要根据项目需求配置资源文件,设置`MessageSource`,并在Controller和视图中适当地使用,就可以轻松地实现多语言功能。这个过程虽然涉及多个步骤,但是一旦设置好,就能极大地提高Web应用的用户体验。

    SpringMVC、jQuery国际化配置

    SpringMVC和jQuery的国际化配置是为Web应用提供多语言支持的关键步骤,使得应用程序能够适应不同国家和地区的用户。国际化(i18n)是一种设计和实现方式,使得软件可以根据用户的本地设置显示适当的文本和格式。 在...

    SpringMVC核心配置文件示例.rar

    使用`&lt;bean&gt;`标签配置`MessageSource`,可以提供多语言支持。 以上只是`springMVC.xml`配置文件中的一些基本知识点,实际配置可能包括更多细节,如AOP配置、任务调度、缓存管理等。Spring MVC的灵活性使得开发者...

    SpringMVC国际化配置.docx

    5. **配置`MessageSource`**:`ReloadableResourceBundleMessageSource`用于读取并缓存多语言属性文件中的文本信息。这里配置了资源文件的基路径为`classpath:resource/message`,这表示所有的语言包文件都放置在`...

    SpringMVC + Activity 配置

    8. **国际化与主题支持**:提供多语言和主题切换功能。 **Activiti详解** Activiti是一个轻量级、流程驱动的BPM系统,其主要特性有: 1. **流程定义语言(BPMN 2.0)**:使用图形化方式设计流程,易于理解和维护。...

    SSM笔记-SpringMVC的语言国际化

    在SpringMVC框架中,语言国际化是一项重要的...通过这些配置和实践,你可以创建一个能够为全球用户提供多语言体验的Web应用。在实际开发中,还需要考虑更多的细节,如缓存、性能优化等,但基本的原理和配置如上所述。

    IDEA搭建SpringMVC并用maven配置的实战demo

    2. **配置SpringMVC**: 创建`web.xml`文件,这是Spring MVC的入口点,配置DispatcherServlet和ContextLoaderListener。例如: ```xml &lt;servlet-name&gt;dispatcher &lt;servlet-class&gt;org.springframework.web....

    SpringMVC Demo_java_springmvc_DEMO_

    8. **国际化与本地化**:SpringMVC支持多语言环境,通过资源文件配置,可以提供不同语言版本的页面内容。 9. **拦截器**:通过实现`HandlerInterceptor`接口或使用`@Interceptor`注解,可以创建自定义拦截器,执行...

    超级详细SpringMVC学习资料

    6. 国际化:通过LocaleResolver和MessageSource实现多语言支持。 五、实战应用 1. 创建MVC项目:搭建SpringMVC环境,编写Controller,配置视图解析。 2. 搭建RESTful服务:创建RESTful API,处理GET、POST等请求。 ...

    SpringMVC 4.0

    10. **国际化(Internationalization,i18n)**:SpringMVC通过MessageSource接口支持多语言环境,开发者可以轻松实现应用的国际化。 11. **MVC配置优化**:在SpringMVC 4.0中,可以使用Java配置替代XML配置,通过@...

    SpringMVC+Mysql实例详解

    使用LocaleResolver和MessageSource实现多语言支持。安全方面,Spring Security提供了一套完整的解决方案,包括身份验证、授权和CSRF防护。 总的来说,SpringMVC+Mysql实例涵盖了Web应用开发的多个方面:从请求处理...

    基于SpringMVC国际化资源配置方式Demo

    在SpringMVC框架中,实现国际化资源配置是提升用户体验的关键步骤,尤其对于多语言网站来说。这个Demo将向我们展示如何在SpringMVC项目中配置和使用国际化资源文件,以适应不同地区的用户需求。首先,我们需要了解...

    尚硅谷SpringMVC部分全套教学文档笔记

    - SpringMVC支持国际化,通过MessageSource接口提供多语言消息支持。 - 使用localeResolver来处理不同地区的用户请求,结合messages.properties文件实现不同语言的资源文件。 9. **文件上传**: - SpringMVC提供...

    SpringMVC demo 完整源码实例下载

    国际化(Internationalization,i18n)是提供多语言支持的重要手段。SpringMVC通过ResourceBundle和MessageSource接口实现这一功能。开发者可以创建不同的消息资源文件,对应不同的语言,根据用户的浏览器设置动态...

    非注解方式配置springmvc

    使用`&lt;bean&gt;`标签配置MessageSource,结合`@RequestParam`或`@ModelAttribute`中的`Locale`属性,可以实现多语言支持。 总结起来,非注解方式配置Spring MVC涉及的主要步骤包括:配置DispatcherServlet、扫描...

    SpringMVC 入门教程.pdf

    - SpringMVC 提供了 i18n 国际化和 theme 主题支持,便于创建多语言和多主题的网站。 13. **RESTful 风格的支持** - SpringMVC 支持创建 RESTful 风格的 Web 服务,通过 HTTP 方法(GET、POST、PUT、DELETE)来...

    jetbrick-springmvc jar包(包含源码)

    6. **国际化**:内置了便捷的国际化支持,可以轻松实现多语言环境下的应用开发。 7. **RESTful支持**:对RESTful风格的HTTP请求提供了良好的支持,包括HTTP方法、路径变量和查询参数的处理。 8. **拦截器**:扩展...

    springmvc 框架

    - **国际化与本地化**:通过`Accept-Language`头,SpringMVC能提供多语言支持。 5. **financeManager**:在提供的文件名称列表中,"financeManager"可能是一个具体的财务管理系统模块。在SpringMVC框架下,这可能...

    SpringMVC代码

    12. **国际化与本地化**:SpringMVC支持多语言环境,通过LocaleResolver和MessageSource实现国际化和本地化。 总之,SpringMVC是一个强大且灵活的Web开发框架,它简化了MVC模式的实现,提高了开发效率,同时也提供...

Global site tag (gtag.js) - Google Analytics