Spring国际化  Spring(3)   
               添加时间:2013-5-9 点击量: 
 
              空话少说,直接上代码
package com.application.i18n;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.springframework.context.MessageSource;
public class I18N {
    private static Map<String , Locale> locales;
    private static final String DEFAULT_LOCALE = zh_CN;//System.getProperty(user.language, zh)+_+System.getProperty(user.country,CN);
    private MessageSource messageSource ;
    static{
        //注册支撑的说话景象
        locales = new HashMap<String , Locale>();
        locales.put(zh_CN,Locale.CHINA);
        locales.put(zh_TW,Locale.TAIWAN);
    }
     
    /
     × 私有机关函数
     /
    private I18N(MessageSource messageSource){
        this.messageSource = messageSource;
    }
    
    /
      从国际化消息文件中按照key获取value,然后用参数填充value里面的占位符
      @param code
              message key
      @param locale
              说话国度代码zh_CN,zh_TW(etc..),若是为null,采取用户默认的说话国度代码获作废息文件
      @param arguments
              占位符填充参数,没有占位符,传null
      @return
     /
    public String getMessage(String code, String locale , Object[] arguments) {
//        if(null == locale){
//            ConnectionUser connectedUser = ApplicationAdapter.getConnectionUser(null);
//            if(connectedUser != null){
//                locale = connectedUser.getSessionValue(locale).toString();
//            }else{
            locale = DEFAULT_LOCALE;
//            }
//        }
        return messageSource.getMessage(code, arguments , locales.get(locale));
    }
    
    /
      应用指定locale,从国际化消息文件中按照key获取value
      @param locale
              说话国度代码zh_CN,zh_TW(etc..),若是为null,采取用户默认的说话国度代码获作废息文件
      @param code
              message key
      @return
     /
    public String getMessage(String locale,String code) {
        return getMessage(code, locale , null);
    }
    
    /
      应用用户默认说话国度代码,从国际化消息文件中按照key获取value
      @param code
              message key
      @return
     /
    public String getMessage(String code) {
        return getMessage(code,null,null);
    }
    
    /
      按照消息key数组获作废息值列表
      @param codeList
      @return
     /
    public List<String> getMessageList(String... codeList){
        if(null != codeList){
            List<String> messageList = new ArrayList<String>();
            for(String code : codeList){
                messageList.add(getMessage(code));
            }
            return messageList;
        }
        return null;
    }
    /
      应用用户默认说话国度代码,从国际化消息文件中按照key获取value
      @param code
              message key
      @param arguments
              占位符填充参数,没有占位符,传null
      @return
     /
    public String getMessage(String code, Object[] arguments) {
        return getMessage(code, null, arguments);
    }
    
    
    /
      注册locale对象,才干支撑对应的说话景象
      @param locale
     /
    public void registerLocale(Locale locale){
        locales.put(locale.toString(), locale);
    }
}
spring设备
<?xml version=1.0 encoding=UTF-8?>
<!DOCTYPE beans PUBLIC -//SPRING//DTD BEAN//EN http://www.springframework.org/dtd/spring-beans.dtd>
<beans>
  <import resource=config/applicationDataSource.xml/>
 <!--  <import resource=config/memcached.xml/> -->
  <!-- 国际化  -->
  <bean id=messageSource class=org.springframework.context.support.ResourceBundleMessageSource singleton=true>
      <property name=basenames>
          <list>
              <value>message</value>
          </list>
      </property>
      <property name=useCodeAsDefaultMessage value=true/>
  </bean>
  <bean id=I18N class=com.application.i18n.I18N singleton=true>
      <constructor-arg index=0 ref=messageSource></constructor-arg>
  </bean>
  
</beans>
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
                     
                  
     
  
 
    
    
空话少说,直接上代码
package com.application.i18n;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.springframework.context.MessageSource;
public class I18N {
private static Map<String , Locale> locales;
private static final String DEFAULT_LOCALE = zh_CN;//System.getProperty(user.language, zh)+_+System.getProperty(user.country,CN);
private MessageSource messageSource ;
static{
//注册支撑的说话景象
locales = new HashMap<String , Locale>();
locales.put(zh_CN,Locale.CHINA);
locales.put(zh_TW,Locale.TAIWAN);
}
/
× 私有机关函数
/
private I18N(MessageSource messageSource){
this.messageSource = messageSource;
}
/
从国际化消息文件中按照key获取value,然后用参数填充value里面的占位符
@param code
message key
@param locale
说话国度代码zh_CN,zh_TW(etc..),若是为null,采取用户默认的说话国度代码获作废息文件
@param arguments
占位符填充参数,没有占位符,传null
@return
/
public String getMessage(String code, String locale , Object[] arguments) {
// if(null == locale){
// ConnectionUser connectedUser = ApplicationAdapter.getConnectionUser(null);
// if(connectedUser != null){
// locale = connectedUser.getSessionValue(locale).toString();
// }else{
locale = DEFAULT_LOCALE;
// }
// }
return messageSource.getMessage(code, arguments , locales.get(locale));
}
/
应用指定locale,从国际化消息文件中按照key获取value
@param locale
说话国度代码zh_CN,zh_TW(etc..),若是为null,采取用户默认的说话国度代码获作废息文件
@param code
message key
@return
/
public String getMessage(String locale,String code) {
return getMessage(code, locale , null);
}
/
应用用户默认说话国度代码,从国际化消息文件中按照key获取value
@param code
message key
@return
/
public String getMessage(String code) {
return getMessage(code,null,null);
}
/
按照消息key数组获作废息值列表
@param codeList
@return
/
public List<String> getMessageList(String... codeList){
if(null != codeList){
List<String> messageList = new ArrayList<String>();
for(String code : codeList){
messageList.add(getMessage(code));
}
return messageList;
}
return null;
}
/
应用用户默认说话国度代码,从国际化消息文件中按照key获取value
@param code
message key
@param arguments
占位符填充参数,没有占位符,传null
@return
/
public String getMessage(String code, Object[] arguments) {
return getMessage(code, null, arguments);
}
/
注册locale对象,才干支撑对应的说话景象
@param locale
/
public void registerLocale(Locale locale){
locales.put(locale.toString(), locale);
}
}
spring设备
<?xml version=1.0 encoding=UTF-8?>
<!DOCTYPE beans PUBLIC -//SPRING//DTD BEAN//EN http://www.springframework.org/dtd/spring-beans.dtd>
<beans>
<import resource=config/applicationDataSource.xml/>
<!-- <import resource=config/memcached.xml/> -->
<!-- 国际化 -->
<bean id=messageSource class=org.springframework.context.support.ResourceBundleMessageSource singleton=true>
<property name=basenames>
<list>
<value>message</value>
</list>
</property>
<property name=useCodeAsDefaultMessage value=true/>
</bean>
<bean id=I18N class=com.application.i18n.I18N singleton=true>
<constructor-arg index=0 ref=messageSource></constructor-arg>
</bean>
</beans>
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》




