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.joyce.enums.EnumLang;
import com.joyce.util.CookieUtil;
import com.joyce.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);
}
}

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

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

  1. spring 国际化i18n配置

    i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称.在资讯领域,国际化(i18n)指让产品(出版物,软件,硬件等)无需做大的改 ...

  2. Spring MVC国际化配置

    Spring MVC国际化配置 前言 项目开发中要考虑支持国际化,框架选用的是Spring MVC框架,那么问题来了Spring MVC如何配置并实现国际化. 实现过程(Maven项目) 对于Spri ...

  3. 基于注解的Spring多数据源配置和使用

    前一段时间研究了一下spring多数据源的配置和使用,为了后期从多个数据源拉取数据定时进行数据分析和报表统计做准备.由于之前做过的项目都是单数据源的,没有遇到这种场景,所以也一直没有去了解过如何配置多 ...

  4. 从零开始学 Java - Spring 集成 ActiveMQ 配置(一)

    你家小区下面有没有快递柜 近两年来,我们收取快递的方式好像变了,变得我们其实并不需要见到快递小哥也能拿到自己的快递了.对,我说的就是类似快递柜.菜鸟驿站这类的代收点的出现,把我们原来快递小哥必须拿着快 ...

  5. SPRING SECURITY JAVA配置:Web Security

    在前一篇,我已经介绍了Spring Security Java配置,也概括的介绍了一下这个项目方方面面.在这篇文章中,我们来看一看一个简单的基于web security配置的例子.之后我们再来作更多的 ...

  6. 从零开始学 Java - Spring 集成 ActiveMQ 配置(二)

    从上一篇开始说起 上一篇从零开始学 Java - Spring 集成 ActiveMQ 配置(一)文章中讲了我关于消息队列的思考过程,现在这一篇会讲到 ActivMQ 与 Spring 框架的整合配置 ...

  7. 基于xml的Spring多数据源配置和使用

    上一篇讲了<基于注解的Spring多数据源配置和使用>,通过在类或者方法上添加@DataSource注解就可以指定某个数据源.这种方式的优点是控制粒度细,也更灵活. 但是当有些时候项目分模 ...

  8. 基于注解的Spring AOP的配置和使用

    摘要: 基于注解的Spring AOP的配置和使用 AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向切面编程.可以通过预编译方式和运行期动态代理实现在不 ...

  9. spring的定时任务配置

    本文来源于:http://myspace1916.iteye.com/blog/1570707 也可参考:http://www.oschina.net/question/8676_9032 (个人只是 ...

随机推荐

  1. Linux下搭建JSP环境

    Linux下搭建JSP环境     作为一名Java EE系统架构工程师,经常需要搭配和建立JSP(Java Server Pages)的开发环境和运行环境,所以本人在平时的工作中积累了一些在Linu ...

  2. mysql 实行模糊查询 一个输入值匹配多个字段和多个输入值匹配一个字段

    mysql 实行模糊查询  一个输入值匹配多个字段 MySQL单表多字段模糊查询可以通过下面这个SQL查询实现 为啥一定要150字以上  真的麻烦  还不让贴代码了 SELECT * FROM `ma ...

  3. 【2017 Multi-University Training Contest - Team 6】Kirinriki

    [链接]http://acm.hdu.edu.cn/showproblem.php?pid=6103 [题意] 给出一串字符串,从中选出两个不重叠的字符串,使得两个字符串的距离和 <= m 的最 ...

  4. ubuntu14中 memcached安装与使用

    第一步,先安装lib-event 下载lib-event  的包http://libevent.org/ 下载完之后,解压安装 ./configure –prefix=/usr (或 ./config ...

  5. Jquery获取select选中的option的文本信息

    注意:以下用的$(this)代表当前选中的select框 第一种: $(this).children("option:selec... ...查看全文

  6. Redis源代码分析(八)--- t_hash哈希转换

    在上次的zipmap分析完之后,事实上关于redis源码结构体部分的内容事实上已经所有结束了.由于以下还有几个和结构体相关的操作类,就页把他们归并到struct包下了.这类的文件有:t_hash.c, ...

  7. Codeforces #28 C.Bath Queue (概率dp)

    Codeforces Beta Round #28 (Codeforces format) 题目链接: http://codeforces.com/contest/28/problem/C 题意: 有 ...

  8. 10.10 android输入系统_APP获得并处理输入事件流程

    APP对fd/InputChannel的注册过程: new WindowInputEventReceiver extends InputEventReceiver//InputEventReceive ...

  9. 8.3 Android灯光系统_编写HAL_lights.c

    注意在led-classes.c中定义的led_class_attrs[]所建立的文件的属性应该改为0666,否则应用程序无权操作它 同时ledtrig-time.c里面对应新建的那几个delay_o ...

  10. Mac怎么设置wifi热点

    苹果 Mac 系统中要把无线当作 Wifi 热点来用的话,需要电脑有其它网络接入才可以,也就是说它需要一个可以用于上网的网络,比如有线网络.尤其是对于使用 MacBook Pro 或 MacBook ...