public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException { if (request.getUserPrincipal() != null) { String codiIdioma = request.getParameter(this.paramName); if (codiIdioma != null) { personaService.savePrefIdioma(codiIdioma); LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); if (localeResolver == null) throw new IllegalStateException ("No LocaleResolver found: not in a DispatcherServlet request?"); LocaleEditor localeEditor = new LocaleEditor(); localeEditor.setAsText(codiIdioma); localeResolver.setLocale(request, response, (Locale)localeEditor.getValue()); } } return true; }
@RequestMapping(value = "/api/v1/language", method = RequestMethod.POST) public String changeLanguage(@ModelAttribute("lang") String language, HttpServletRequest request, HttpServletResponse response) { final LocaleResolver localeResolver = getLocaleResolver(request); final Locale locale = StringUtils.parseLocaleString(language); if (locale != null) { localeResolver.setLocale(request, response, locale); return locale.toLanguageTag(); } LOG.error("Could not parse language={}", language); return localeResolver.resolveLocale(request).toLanguageTag(); }
protected MockPageContext createPageContext() { MockServletContext sc = new MockServletContext(); SimpleWebApplicationContext wac = new SimpleWebApplicationContext(); wac.setServletContext(sc); wac.setNamespace("test"); wac.refresh(); MockHttpServletRequest request = new MockHttpServletRequest(sc); MockHttpServletResponse response = new MockHttpServletResponse(); if (inDispatcherServlet()) { request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); LocaleResolver lr = new AcceptHeaderLocaleResolver(); request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, lr); ThemeResolver tr = new FixedThemeResolver(); request.setAttribute(DispatcherServlet.THEME_RESOLVER_ATTRIBUTE, tr); request.setAttribute(DispatcherServlet.THEME_SOURCE_ATTRIBUTE, wac); } else { sc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); } return new MockPageContext(sc, request, response); }
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); if (localeResolver == null) { return true; } try { Cookie[] cookies = request.getCookies(); if (cookies != null){ for (Cookie cookie : cookies){ if (Objects.equal("lang", cookie.getName())){ LocaleContextHolder.setLocale(new Locale(cookie.getValue())); } } } } catch (Exception e) { Logs.error("occur errors when resolve locale: {}", Throwables.getStackTraceAsString(e)); } return true; }
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException { String newLocale = request.getParameter(getParamName()); if(newLocale != null) { LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); if(localeResolver == null) { throw new IllegalStateException("No LocaleResolver found: not in a DispatcherServlet request?"); } Locale locale = StringUtils.parseLocaleString(newLocale); localeResolver.setLocale(request, response, locale); localeHolder.setLocale(locale); } return true; }
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException { LocaleResolver localeResolver = RequestContextUtils .getLocaleResolver(request); if (localeResolver == null) { throw new IllegalStateException( "No LocaleResolver found: not in a DispatcherServlet request?"); } // CmsSite site = CmsUtils.getSite(request); CmsSite site=CmsThreadVariable.getSite(); String newLocale = site.getLocaleAdmin(); LocaleEditor localeEditor = new LocaleEditor(); localeEditor.setAsText(newLocale); localeResolver.setLocale(request, response, (Locale) localeEditor .getValue()); // Proceed in any case. return true; }
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException { LocaleResolver localeResolver = RequestContextUtils .getLocaleResolver(request); if (localeResolver == null) { throw new IllegalStateException( "No LocaleResolver found: not in a DispatcherServlet request?"); } CmsSite site = CmsUtils.getSite(request); String newLocale = site.getLocaleFront(); LocaleEditor localeEditor = new LocaleEditor(); localeEditor.setAsText(newLocale); localeResolver.setLocale(request, response, (Locale) localeEditor .getValue()); // Proceed in any case. return true; }
/** * 获得国际化信息 * * @param request * HttpServletRequest * @param code * 国际化代码 * @param args * 替换参数 * @return * @see org.springframework.context.MessageSource#getMessage(String, * Object[], Locale) */ public static String getMessage(HttpServletRequest request, String code, Object... args) { WebApplicationContext messageSource = RequestContextUtils.getWebApplicationContext(request); if (messageSource == null) { throw new IllegalStateException("WebApplicationContext not found!"); } LocaleResolver localeResolver = RequestContextUtils .getLocaleResolver(request); Locale locale; if (localeResolver != null) { locale = localeResolver.resolveLocale(request); } else { locale = request.getLocale(); } return messageSource.getMessage(code, args, locale); }
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); // Check if it's our case if (localeResolver == null) { throw new IllegalStateException("No LocaleResolver found: not in a DispatcherServlet request?"); } if (!(localeResolver instanceof CookieLocaleResolver)) { return true; } // Check if locale not in cookie. // If so, then force it to store in cookie CookieLocaleResolver cookieLocaleResolver = (CookieLocaleResolver) localeResolver; Cookie cookie = WebUtils.getCookie(request, cookieLocaleResolver.getCookieName()); if (cookie == null) { cookieLocaleResolver.setLocale(request, response, localeResolver.resolveLocale(request)); } return true; }
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); // Check if it's our case if (localeResolver == null) { throw new IllegalStateException("No LocaleResolver found: not in a DispatcherServlet request?"); } if (!(localeResolver instanceof LocaleResolverUserBasedImpl)) { return true; } // Check if locale not in cookie. // If so, then force it to store in cookie LocaleResolverUserBasedImpl cookieLocaleResolver = (LocaleResolverUserBasedImpl) localeResolver; Locale localeFromCookie = cookieLocaleResolver.resolveLocaleFromCookie(request); Locale localeFromUser = cookieLocaleResolver.resolveLocale(request); if (localeFromUser != null && !localeFromUser.equals(localeFromCookie)) { cookieLocaleResolver.setLocale(request, response, localeFromUser); } return true; }
/** * Get locale for curent request * * @return */ public static Locale getLocale() { // Plan A: Try to get it from locale context holder Locale locale = LocaleContextHolder.getLocale(); if (locale != null) { return locale; } // Plan B: Try to get it from request HttpServletRequest request = get(); LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); if (localeResolver == null) { log.warn("Cannot get locale resolver. Will fallback to: " + defaultLocale); return defaultLocale; } locale = localeResolver.resolveLocale(request); if (locale != null) { return locale; } // fallback log.warn("Cannot resolve locale. Will fallback to: " + defaultLocale); return defaultLocale; }
protected MockPageContext createPageContext() { MockServletContext sc = new MockServletContext(); sc.addInitParameter("springJspExpressionSupport", "true"); SimpleWebApplicationContext wac = new SimpleWebApplicationContext(); wac.setServletContext(sc); wac.setNamespace("test"); wac.refresh(); MockHttpServletRequest request = new MockHttpServletRequest(sc); MockHttpServletResponse response = new MockHttpServletResponse(); if (inDispatcherServlet()) { request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); LocaleResolver lr = new AcceptHeaderLocaleResolver(); request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, lr); ThemeResolver tr = new FixedThemeResolver(); request.setAttribute(DispatcherServlet.THEME_RESOLVER_ATTRIBUTE, tr); request.setAttribute(DispatcherServlet.THEME_SOURCE_ATTRIBUTE, wac); } else { sc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); } return new MockPageContext(sc, request, response); }
private void internalTest(LocaleResolver localeResolver, boolean shouldSet) { // create mocks MockServletContext context = new MockServletContext(); MockHttpServletRequest request = new MockHttpServletRequest(context); request.addPreferredLocale(Locale.UK); MockHttpServletResponse response = new MockHttpServletResponse(); // check original locale Locale locale = localeResolver.resolveLocale(request); assertEquals(locale, Locale.UK); // set new locale try { localeResolver.setLocale(request, response, Locale.GERMANY); if (!shouldSet) fail("should not be able to set Locale"); // check new locale locale = localeResolver.resolveLocale(request); assertEquals(locale, Locale.GERMANY); } catch (UnsupportedOperationException ex) { if (shouldSet) fail("should be able to set Locale"); } }
@Override public void doTag() throws JspException, IOException { PageContext pageContext = (PageContext) getJspContext(); ServletContext servletContext = pageContext.getServletContext(); WebApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(servletContext); final List<String> languages = (List) ac.getBean("supportedLanguages"); this.messageSource = (MessageSource) ac.getBean("messageSource"); final LocaleResolver localeResolver = (LocaleResolver) ac.getBean("localeResolver"); final Locale currentLocale = localeResolver.resolveLocale((HttpServletRequest) pageContext.getRequest()); final JspWriter out = pageContext.getOut(); final String label = getMessage(labelCode, currentLocale); out.println("<div data-role=\"l10nBox\" data-l10n-field=\"" + name + "\">"); out.println("<label>" + label + ": </label>"); this.writeHiddenInputCode(out); this.writeLanguageOptions(out, languages); this.writeLanguageInputs(out, languages); out.println("</div>"); super.doTag(); }
protected MockPageContext createPageContext() { MockServletContext sc = new MockServletContext(); StaticWebApplicationContext wac = new StaticWebApplicationContext(); wac.setServletContext(sc); wac.setNamespace("test"); wac.registerSingleton("validator", org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.class); wac.refresh(); MockHttpServletRequest request = new MockHttpServletRequest(sc); MockHttpServletResponse response = new MockHttpServletResponse(); request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); LocaleResolver lr = new AcceptHeaderLocaleResolver(); request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, lr); ThemeResolver tr = new FixedThemeResolver(); request.setAttribute(DispatcherServlet.THEME_RESOLVER_ATTRIBUTE, tr); request.setAttribute(DispatcherServlet.THEME_SOURCE_ATTRIBUTE, wac); return new MockPageContext(sc, request, response); }
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException { LocaleResolver localeResolver = RequestContextUtils .getLocaleResolver(request); if (localeResolver == null) { throw new IllegalStateException( "No LocaleResolver found: not in a DispatcherServlet request?"); } CmsSite site = CmsUtils.getSite(request); String newLocale = site.getLocaleAdmin(); LocaleEditor localeEditor = new LocaleEditor(); localeEditor.setAsText(newLocale); localeResolver.setLocale(request, response, (Locale) localeEditor .getValue()); // Proceed in any case. return true; }
/** * 获得国际化信息 * * @param request * HttpServletRequest * @param code * 国际化代码 * @param args * 替换参数 * @return * @see org.springframework.context.MessageSource#getMessage(String, * Object[], Locale) */ public static String getMessage(HttpServletRequest request, String code, Object... args) { WebApplicationContext messageSource = RequestContextUtils .getWebApplicationContext(request); if (messageSource == null) { throw new IllegalStateException("WebApplicationContext not found!"); } LocaleResolver localeResolver = RequestContextUtils .getLocaleResolver(request); Locale locale; if (localeResolver != null) { locale = localeResolver.resolveLocale(request); } else { locale = request.getLocale(); } return messageSource.getMessage(code, args, locale); }
/** * 获得i18n字符串 */ public static String getMessage(String code, Object[] args) { LocaleResolver localLocaleResolver = (LocaleResolver) SpringContextHolder.getBean(LocaleResolver.class); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); Locale localLocale = localLocaleResolver.resolveLocale(request); return SpringContextHolder.getApplicationContext().getMessage(code, args, localLocale); }
/** * 获取错误消息 * 默认:DEFAULT_ERROR_MESSAGE,如果指定了errorMessageCode则根据errorMessageCode从资源文件中找 * @param request * @return */ protected String getErrorMessage(HttpServletRequest request){ if(StringUtils.isEmpty(errorMessageCode)){ return DEFAULT_ERROR_MESSAGE; }else{ LocaleResolver localeResolver = (LocaleResolver) request.getAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE); String message = applicationContext.getMessage(errorMessageCode, null, localeResolver.resolveLocale(request)); if(StringUtils.isEmpty(message) && applicationContext.getParent() != null){ message = applicationContext.getParent().getMessage(errorMessageCode, null, localeResolver.resolveLocale(request)); } return StringUtils.defaultIfEmpty(message, DEFAULT_ERROR_MESSAGE); } }
@Bean public LocaleResolver localeResolver() { CookieLocaleResolver resolver = new CookieLocaleResolver(); resolver.setDefaultLocale(new Locale("en")); resolver.setCookieName("SPRING_LOCALE"); resolver.setCookieMaxAge(4800); return resolver; }
@Bean public LocaleResolver localeResolver() { SessionLocaleResolver bean = new SessionLocaleResolver(); String locale = this.casProperties.getLocale().getDefaultValue(); this.log.debug("Setting default locale to [{}]", locale); bean.setDefaultLocale(new Locale(locale)); return bean; }
@Bean public LocaleResolver localeResolver() { SessionLocaleResolver slr = new SessionLocaleResolver(); // 默认语言 slr.setDefaultLocale(Locale.CHINA); return slr; }
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { Object newLocale = request.getAttribute(LOCALE_ATTRIBUTE_NAME); if (newLocale != null) { LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); if (localeResolver == null) { throw new IllegalStateException("No LocaleResolver found: not in a DispatcherServlet request?"); } localeResolver.setLocale(request, response, StringUtils.parseLocaleString(newLocale.toString())); } return true; }
@Bean(name = "localeResolver") public LocaleResolver localeResolver() { CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver(); cookieLocaleResolver.setCookieMaxAge(Integer.MAX_VALUE); // The default is taken from the request header // cookieLocaleResolver.setDefaultLocale(Locale.ENGLISH); return cookieLocaleResolver; }
@Bean public LocaleResolver localeResolver() { // Options: SessionLocaleResolver, AcceptHeaderLocaleResolver, FixedLocaleResolver CookieLocaleResolver lr = new CookieLocaleResolver(); lr.setCookieName("LOCALE"); // if not set, default `org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE` return lr; }
@CacheControl(policy = CachePolicy.NO_CACHE) @RequestMapping(value = "/api/v1/language", method = RequestMethod.GET) public String getLanguage(HttpServletRequest request) { final LocaleResolver localeResolver = getLocaleResolver(request); return localeResolver.resolveLocale(request).toLanguageTag(); }
private static LocaleResolver getLocaleResolver(HttpServletRequest request) { final LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); if (localeResolver == null) { throw new IllegalStateException("No LocaleResolver found: not in a DispatcherServlet request?"); } return localeResolver; }
@RequestMapping(value = "/changeLang", method = RequestMethod.POST) @ResponseBody public String changeLang(HttpServletRequest request, HttpServletResponse response, @RequestParam String lang){ LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); if ("zh".equals(lang)) { // request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, new Locale("zh", "CN")); localeResolver.setLocale(request, response, new Locale("zh", "CN")); } else if("en".equals(lang)){ // request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, new Locale("en", "US")); localeResolver.setLocale(request, response, new Locale("en", "US")); } return "lang:" + LocaleContextHolder.getLocale().getLanguage(); }
@Bean public LocaleResolver localeResolver(){ CookieLocaleResolver resolver = new CookieLocaleResolver(); resolver.setDefaultLocale(new Locale("en")); resolver.setCookieName("myLocaleCookie"); resolver.setCookieMaxAge(4800); return resolver; }
/** * 获得i18n字符串 */ public static String getMessage(String code, Object[] args) { LocaleResolver localLocaleResolver = SpringContextHolder.getBean(LocaleResolver.class); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) .getRequest(); Locale localLocale = localLocaleResolver.resolveLocale(request); return SpringContextHolder.getApplicationContext().getMessage(code, args, localLocale); }
/** * Change the current locale to the specified one, * storing the new locale through the configured {@link LocaleResolver}. * @param locale the new locale * @see LocaleResolver#setLocale * @see #changeLocale(java.util.Locale, java.util.TimeZone) */ public void changeLocale(Locale locale) { LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(this.request); if (localeResolver == null) { throw new IllegalStateException("Cannot change locale if no LocaleResolver configured"); } localeResolver.setLocale(this.request, this.response, locale); this.locale = locale; }
/** * Change the current locale to the specified locale and time zone context, * storing the new locale context through the configured {@link LocaleResolver}. * @param locale the new locale * @param timeZone the new time zone * @see LocaleContextResolver#setLocaleContext * @see org.springframework.context.i18n.SimpleTimeZoneAwareLocaleContext */ public void changeLocale(Locale locale, TimeZone timeZone) { LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(this.request); if (!(localeResolver instanceof LocaleContextResolver)) { throw new IllegalStateException("Cannot change locale context if no LocaleContextResolver configured"); } ((LocaleContextResolver) localeResolver).setLocaleContext(this.request, this.response, new SimpleTimeZoneAwareLocaleContext(locale, timeZone)); this.locale = locale; this.timeZone = timeZone; }
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException { String newLocale = request.getParameter(getParamName()); if (newLocale != null) { if (checkHttpMethod(request.getMethod())) { LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); if (localeResolver == null) { throw new IllegalStateException( "No LocaleResolver found: not in a DispatcherServlet request?"); } try { localeResolver.setLocale(request, response, StringUtils.parseLocaleString(newLocale)); } catch (IllegalArgumentException ex) { if (isIgnoreInvalidLocale()) { logger.debug("Ignoring invalid locale value [" + newLocale + "]: " + ex.getMessage()); } else { throw ex; } } } } // Proceed in any case. return true; }
/** * Creates new LocaleResolver. * * @return Created LocalResolver. */ @Bean public LocaleResolver localeResolver() { CookieLocaleResolver lr = new CookieLocaleResolver(); lr.setCookieName("lang"); lr.setDefaultLocale(locale); return lr; }
/** * 获得i18n字符串 */ public static String getMessage(String code, Object[] args) { LocaleResolver localLocaleResolver = (LocaleResolver) SpringContextHolder.getBean(LocaleResolver.class); HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); Locale localLocale = localLocaleResolver.resolveLocale(request); return SpringContextHolder.getApplicationContext().getMessage(code, args, localLocale); }