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. jquery如何阻止子元素相应mouseout事件

    jquery如何阻止子元素相应mouseout事件:mouseout有一个特点,当鼠标移入子元素的时候,也会触发此事件,但是在实际应用中这个特点往往不是我们想要的,下面就通过代码实例介绍一下如何实现此 ...

  2. Filebeat-1.3.1安装和设置(图文详解)(多节点的ELK集群安装在一个节点就好)(以Console Output为例)

    前期博客 Filebeat的下载(图文讲解) 前提 Elasticsearch-2.4.3的下载(图文详解) Elasticsearch-2.4.3的单节点安装(多种方式图文详解) Elasticse ...

  3. Mysql数据库存储引擎--转

    原文地址:http://pangge.blog.51cto.com/6013757/1303893 简单介绍 存储引擎就是指表的类型.数据库的存储引擎决定了表在计算机中的存储方式.存储引擎的概念是My ...

  4. 基于Lwip协议栈中独立模式下回调函数的使用

    一.使用Lwip协议独立模式开发 最近在STM32F4上边移植了Lwip,Lwip是一个小型开源的TCP/IP协议栈,有无操作系统的支持都可以运行.我当前只测试了TCP Server功能,然后对TCP ...

  5. 优秀Java程序员必备10招

    1. 拥有扎实的基础和深刻理解 OO 原则 对于 Java 程序员,深刻理解 ObjectOriented Programming(面向对象编程)这一概念是必须的.没有 OOPS 的坚实基础,就领会不 ...

  6. canvas.toDataURL() gives “Security Error” in IE 11

    http://stackoverflow.com/questions/30101143/canvas-todataurl-gives-security-error-in-ie-11

  7. Hi35xx NVR GDB调试

    Hi35xx NVR GDB调试   1. 下载gdb源代码 嵌入式Linux 的GDB 调试环境由Host 和Target 两部分组成,Host 端使用arm-linuxgdb,Target Boa ...

  8. SQLite基础学习

    SQLite是一款轻量级数据库,集成于android中,以下从分享一下自己学习的. 在查阅资料时有一些好的说明就直接用了: 主要的curd语句 以下SQL语句获取5条记录,跳过前面3条记录 selec ...

  9. HttpClient FormUrlEncodedContent System.UriFormatException: 无效的 URI: URI 字符串太长问题解决方案

    1.问题描述: HttpClint 使用FormUrlEncodedContent 调用接口时 报错 System.UriFormatException: 无效的 URI: URI 字符串太长: 2. ...

  10. iOS_06_基本运算符

    一.算术运算 c语言一共有34种运算符,包括了常见的加减乘除 1.加法运算+ # 除了能做加法运算,还能表示正号:+5.+90 2.减法运算- # 除了能做减法运算,还能表示符号:-10.-200 3 ...