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