Spring之i18n配置与使用

Spring的i18n配置:

<!-- conf:i18n  -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
	<property name="fallbackToSystemLocale" value="false" />
	<property name="useCodeAsDefaultMessage" value="true" />
	<property name="defaultEncoding" value="UTF-8" />
	<property name="cacheSeconds" value="60" />
	<property name="basenames">
		<list>
			<value>classpath:com/hupu/nac/i18n/message</value>
		</list>
	</property>
</bean>

Spring的i18n使用:

package com.joyce.enums;

import java.util.Locale;

/**
 * 语言枚举
 * @author Joyce.Luo
 * @date 2016-1-5 上午09:38:27
 * @version V3.0
 * @since Tomcat6.0,Jdk1.6
 * @copyright Copyright (c) 2016
 */
public enum EnumLang {
	ZH_CN("zh-CN", Locale.SIMPLIFIED_CHINESE),
	ZH_TW("zh-TW", Locale.TRADITIONAL_CHINESE),
	EN("en", Locale.ENGLISH),
	JA("ja", Locale.JAPAN);

	private String lang;
	private Locale locale;

	public String getLang() {
		return lang;
	}

	public void setLang(String lang) {
		this.lang = lang;
	}

	public Locale getLocale() {
		return locale;
	}

	public void setLocale(Locale locale) {
		this.locale = locale;
	}

	private EnumLang(String lang, Locale locale) {
		this.lang = lang;
		this.locale = locale;
	}

	/**
	 * 根据ID获取枚举值
	 * @param lang ID
	 * @return ID对应的枚举值
	 * @author Joyce.Luo
	 * @date 2015-5-8 上午11:02:45
	 * @version V3.0
	 * @since Tomcat6.0,Jdk1.6
	 * @copyright Copyright (c) 2015
	 */
	public static Locale getLocale(String lang) {
		for (EnumLang enumLang : EnumLang.values()) {
			if (enumLang.getLang().equals(lang)) {
				return enumLang.getLocale();
			}
		}
		return Locale.ENGLISH;
	}
}

package com.joyce.util.i18n;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.springframework.context.MessageSource;

import com.hupu.nac.enums.EnumLang;
import com.hupu.nac.util.CookieUtil;
import com.hupu.nac.util.SpringUtil;

/**
 * Spring i18n
 * @author Joyce.Luo
 * @date 2016-1-5 上午09:26:03
 * @version V3.0
 * @since Tomcat6.0,Jdk1.6
 * @copyright Copyright (c) 2016
 */
public class I18NUtil {
	private static final Logger logger = Logger.getLogger(I18NUtil.class);
	private static MessageSource messageSource = (MessageSource) SpringUtil.getApplicationContext().getBean("messageSource");
	private static final Object[] objs = null;

	/**
	 * 获取国际化信息
	 * @param key 对应键
	 * @param locale 语言
	 * @param objects 参数
	 * @return 国际化信息
	 * @author Joyce.Luo
	 * @date 2016-1-5 上午10:19:00
	 * @version V3.0
	 * @since Tomcat6.0,Jdk1.6
	 * @copyright Copyright (c) 2016
	 */
	public static String getMessage(String key, Locale locale, Object...objects){
		if (StringUtils.isEmpty(key)) {
			return StringUtils.EMPTY;
		}
		if (null == locale) {
			HttpServletRequest request = ServletActionContext.getRequest();
			if (null == request) {
				locale = Locale.ENGLISH;
			} else {
				String lang = CookieUtil.getCookieByName(request, "language").getValue();
				if (StringUtils.isEmpty(lang)){
					locale = Locale.ENGLISH;
				} else {
					locale = EnumLang.getLocale(lang);
				}
			}
		}
		logger.info("Spring I18 ---> key:[" + key + "],lang:[" + locale.getLanguage() + "],params:[" + objects + "]");
		return messageSource.getMessage(key, objects, locale);
	}

	/**
	 * 获取国际化信息
	 * @param key 对应键
	 * @param locale 语言
	 * @return 国际化信息
	 * @author Joyce.Luo
	 * @date 2016-1-5 上午10:19:00
	 * @version V3.0
	 * @since Tomcat6.0,Jdk1.6
	 * @copyright Copyright (c) 2016
	 */
	public static String getMessage(String key, Locale locale){
		return getMessage(key, locale, objs);
	}

	/**
	 * 获取国际化信息
	 * @param key 对应键
	 * @param objects 参数
	 * @return 国际化信息
	 * @author Joyce.Luo
	 * @date 2016-1-5 上午10:19:00
	 * @version V3.0
	 * @since Tomcat6.0,Jdk1.6
	 * @copyright Copyright (c) 2016
	 */
	public static String getMessage(String key, Object...objects){
		return getMessage(key, null, objects);
	}

	/**
	 * 获取国际化信息
	 * @param key 对应键
	 * @param lang 语言
	 * @return 国际化信息
	 * @author Joyce.Luo
	 * @date 2016-1-6 上午11:30:03
	 * @version V3.0
	 * @since Tomcat6.0,Jdk1.6
	 * @copyright Copyright (c) 2016
	 */
	public static String getMessage(String key, String lang){
		return getMessage(key, EnumLang.getLocale(lang));
	}

	/**
	 * 获取国际化信息
	 * @param key 对应键
	 * @return 国际化信息
	 * @author Joyce.Luo
	 * @date 2016-1-5 上午10:19:00
	 * @version V3.0
	 * @since Tomcat6.0,Jdk1.6
	 * @copyright Copyright (c) 2016
	 */
	public static String getMessage(String key){
		return getMessage(key, null, objs);
	}
}

仅供参考,感兴趣者可深入研究,本人抱着引导入门的态度写这篇文章

时间: 2024-08-01 02:30:10

Spring之i18n配置与使用的相关文章

Spring MVC国际化配置

写在前面 项目开发中要考虑支持国际化,框架选用的是Spring MVC框架,这里查询相关资料,整理下Spring MVC如何配置并实现国际化. 具体实现 对于Spring MVC的国际化这里我是基于session来实现的,具体做法如下: 1.首先我们需要在XML配置文件中进行如下配置: <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSour

spring定时任务的配置使用

spring的定时任务配置分为三个步骤: 1.定义任务 2.任务执行策略配置 3.启动任务 1.定义任务 <!--要定时执行的方法--> <bean id="testTaskJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> &l

[spring-framework]Spring定时器的配置和使用

开发中我们常常会做一些定时任务,这些任务有开始时间,并会按一定的周期或规则执行.如此我们在Java程序开发中使用定时器来处理定时任务. <!-- MessageRequestTask类中包含了msgRequest方法,用于执行定时任务 --> <bean id="msg_request" class="com.santorini.task.timer.MessageRequestTask"></bean> <!-- 定时器配

Spring定时器的配置和使用

开发中我们常常会做一些定时任务,这些任务有开始时间,并会按一定的周期或规则执行.如此我们在Java程序开发中使用定时器来处理定时任务. <!-- MessageRequestTask类中包含了msgRequest方法,用于执行定时任务 --> <bean id="msg_request" class="com.santorini.task.timer.MessageRequestTask"></bean> <!-- 定时器配

spring security3.2配置---权限管理

之前已经在我的博客中发过security的运行流程图了,大家可以先去看看那个图再看这篇.今天我主要在这里贴出了security配置中的几个重要的类和两个xml配置文件,基本上控制权限的就是这几个文件了.因为最近都比较忙,一直没有时间发出来,导致有点忘记配置时的过程了,所以忘记了一些细节的内容,原本我打算写的详细一点的,但现在都有点忘记了,我在这里就不再一一写出来了,因为在每个文件的方法或配置里,我用注释说明了一些配置时所遇到的问题,大家可以看看,可能比较难看,因为表达可能不是很好,有些写得比较详

玩转spring boot——properties配置

前言 在以往的java开发中,程序员最怕大量的配置,是因为配置一多就不好统一管理,经常出现找不到配置的情况.而项目中,从开发测试环境到生产环境,往往需要切换不同的配置,如测试数据库连接换成生产数据库连接,若有一处配错或遗漏,就会带来不可挽回的损失.正因为这样,spring boot给出了非常理想的解决方案——application.properties.见application-properties的官方文档:http://docs.spring.io/spring-boot/docs/curr

spring + springMVC +hibernate 配置2

这种方式比较精简 配置项不多 spring采用自动扫描配置 ,分spring_springMVC.xml  . hibernate_config.xml 两个文件 web.xml配置如下 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.o

Maven 工程下 Spring MVC 站点配置 (三) C3P0连接池与@Autowired的应用

Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 前两篇文章主要是对站点和数据库操作配置进行了演示,如果单单实现这两个需求的话,那么基本足够,但是很多时候一个网站除了仅仅能够访问数据库是不够的,它还需要对性能以及更简化的步骤有着更多的要求,这一篇重点就是帮助我们如何去实现数据连接池管理与更简化便利的开发步骤. 如果你觉得自己能写出更高效率的连接池,那你可以不需要这篇文章了,我更建议你可以去开源组织毛遂自

Spring+Hibernate整合配置 --- 比较完整的spring、hibernate 配置

Spring+Hibernate整合配置 分类: J2EE2010-11-25 17:21 16667人阅读 评论(1) 收藏 举报 springhibernateclassactionservletmysql 在公司一直没有什么机会直接折腾SSH“原生态”的SSH当今比较流行的轻量级的框架,用着公司的框架也是郁闷异常,今天没事整整原来用过的一个项目的配置,发现就算是自己曾经用过的东西,如果较长时间不返过去重新学习,许多你半熟不熟的知识就是异常陌生.下面贴上我的一些配置,暂且权当备份吧. web