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,nullnull);
    }

    /
    按照消息key数组获作废息值列表
    @param codeList
    @return
    /
    public List<String> getMessageList(String... codeList){
    ifnull != 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>


    我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
    分享到: