LocalConfig.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package com.hb.proj.allconfig;
  2. import java.util.Locale;
  3. import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  4. import org.springframework.context.MessageSource;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. import org.springframework.context.i18n.LocaleContextHolder;
  8. import org.springframework.web.servlet.LocaleResolver;
  9. import org.springframework.web.servlet.i18n.SessionLocaleResolver;
  10. /**
  11. * 多语言配置
  12. * @author cwen
  13. *
  14. */
  15. @Configuration
  16. @ConditionalOnProperty(prefix = "spring.messages",name = "active")
  17. public class LocalConfig {
  18. //spring.messages.basename 配置国际化文件的名称,比如默认值是messages,多个值逗号分隔
  19. private static MessageSource messageSource;
  20. public LocalConfig(MessageSource messageSource) {
  21. LocalConfig.messageSource=messageSource;
  22. }
  23. public static String get(String msgKey,String defaultMsg) {
  24. return get(msgKey,defaultMsg,LocaleContextHolder.getLocale());
  25. }
  26. public static String get(String msgKey) {
  27. return get(msgKey,msgKey,LocaleContextHolder.getLocale());
  28. }
  29. public static String get(String msgKey,String defaultMessage,Locale locale)
  30. {
  31. try
  32. {
  33. return messageSource==null?defaultMessage:messageSource.getMessage(msgKey, null, defaultMessage,locale);
  34. }
  35. catch (Exception e)
  36. {
  37. return msgKey;
  38. }
  39. }
  40. /**
  41. * 默认解析器 其中locale表示默认语言 bean name必须是localeResolver,
  42. * 这样DispatcherServlet才能自动侦测到它,每DispatcherServlet只能注册一个区域解析器
  43. */
  44. @Bean
  45. public LocaleResolver localeResolver() {
  46. SessionLocaleResolver localeResolver = new SessionLocaleResolver();
  47. localeResolver.setDefaultLocale(Locale.CHINA);
  48. return localeResolver;
  49. }
  50. }