Session 方式的国际化
- /**
- * @descripte 请求中如果有 {@Param lang}, 则按照 lang 的格式国际化
- * @descripte 请求中如果无 {@Param lang}, 但 session 已经保存有语言国际化方式时, 则按照 session 的格式国际化
- * @descripte 没有参数 lang, 且 session 也没有保存国际化时, 采取的默认方式
- */
- public class LocaleResolverCommon extends SessionLocaleResolver {
- @Override
- public Locale resolveLocale(HttpServletRequest request) {
- HttpSession session = request.getSession();
- String string=request.getParameter("lang");
- // 没有参数 lang, 且 session 也没有保存国际化时, 采取的默认方式
- Locale locale=Locale.getDefault();
- // 有参数 lang 时, 采取的语言国际化方式
- if(!StringUtils.isEmptyOrWhitespace(string)){
- String [] strings=string.split("_");
- locale=new Locale(strings[0],strings[1]);
- session.setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale);
- }else {
- // 无参数 lang 时, 但 session 已经保存有语言国际化方式时, 采取的语言方式
- Locale localesession = (Locale) session.getAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME);
- if (localesession!=null){
- locale=localesession;
- }
- }
- return locale;
- }
- }
- @Bean
- public LocaleResolver localeResolver(){
- return new LocaleResolverCommon();
- }
来源: http://www.bubuko.com/infodetail-2678957.html