1.调用的工具类:
/**
工具类
**/
public class InternationalizationUtil {
private static ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:applicationContext-i18n.xml");
private static MessageSourceAccessor messageSourceAccessor;
static {
MessageSource messageSource = (MessageSource)ctx.getBean("resourceBundleMessageSource");
messageSourceAccessor = new MessageSourceAccessor(messageSource);
}
public static String getTextWithLanguage(String msgKey, String language) {
Locale locale = StringUtils.isEmpty(language) ? Locale.forLanguageTag(BizConstants.DEFAULT_LANGUAGE)
: Locale.forLanguageTag(language);
return getText(msgKey, locale);
}
public static String getTextWithLanguage(String msgKey, String args, String language) {
Locale locale = StringUtils.isEmpty(language) ? Locale.forLanguageTag(BizConstants.DEFAULT_LANGUAGE)
: Locale.forLanguageTag(language);
return getText(msgKey, args, locale);
}
/**
* Convenience method for getting a i18n key's value.
* @param msgKey
* @return
*/
public static String getText(String msgKey) {
return getText(msgKey, getLocale());
// return getText(msgKey, Locale.getDefault());
}
/**
* Convenience method for getting a i18n key's value.
*
* @param msgKey
* @param locale
* @param local the current locale
* @return
*/
public static String getText(String msgKey, Locale locale) {
return getMessageSourceAccessor().getMessage(msgKey, locale);
}
/**
* Convenient method for getting a i18n key's value with a single string
* argument.
*
* @param msgKey
* @param arg
* @param local the current locale
* @return
*/
public static String getText(String msgKey, String arg) {
return getText(msgKey, new Object[] { arg }, getLocale());
// return getText(msgKey, new Object[] { arg }, Locale.getDefault());
}
/**
* Convenient method for getting a i18n key's value with a single string
* argument.
*
* @param msgKey
* @param arg
* @param locale
* @return
*/
public static String getText(String msgKey, String arg, Locale locale) {
return getText(msgKey, new Object[] { arg }, locale);
}
/**
* Convenience method for getting a i18n key's value with arguments.
*
* @param msgKey
* @param args
* @param locale
* the current locale
* @return
*/
public static String getText(String msgKey, Object[] args, Locale locale) {
return getMessageSourceAccessor().getMessage(msgKey, args, locale);
}
public static String getText(String msgKey,Object[] args,String language){
Locale locale = StringUtils.isEmpty(language) ? Locale.forLanguageTag(BizConstants.DEFAULT_LANGUAGE): Locale.forLanguageTag(language);
return getText(msgKey,args,locale);
}
public static MessageSourceAccessor getMessageSourceAccessor() {
return messageSourceAccessor;
}
private static Locale getLocale() {
HttpServletRequest request = getHttpServletRequest();
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
return localeResolver.resolveLocale(request);
}
private static HttpServletRequest getHttpServletRequest() {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
if (servletRequestAttributes != null) {
return servletRequestAttributes.getRequest();
} else {
return null;
}
}
}
2.配置文件
<!-- 资源国际化 -->
<bean id="resourceBundleMessageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:i18n/errors</value>
<value>classpath:i18n/messages</value>
</list>
</property>
<property name="useCodeAsDefaultMessage" value="true" />
<property name="defaultEncoding" value="utf8"></property>
</bean>