zoukankan      html  css  js  c++  java
  • 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.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);
    	}
    }
    

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

  • 相关阅读:
    ThinkPhp框架分页查询和部分框架知识
    tp框架增删改
    WAMP中mysql服务突然无法启动 解决方法
    thinkphp框架 的 链接数据库和操作数据
    php 全局使用laravel的dd和dump
    给centos装图形界面 widowsx
    marquee标签的使用
    微信公众号开发入门教程
    laravel admin引入css js报错 https
    利用Croppie裁剪图片并后台保存
  • 原文地址:https://www.cnblogs.com/llguanli/p/7238181.html
Copyright © 2011-2022 走看看