提交 a763fe1b 编写于 作者: S shenhongxi

SessionLocaleResolver,LocaleUtils

上级 5a4b2139
package com.itlong.whatsmars.spring.boot.controller;
import com.itlong.whatsmars.spring.boot.config.UserConfig;
import com.itlong.whatsmars.spring.boot.util.LocaleUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.FixedLocaleResolver;
import org.springframework.web.servlet.i18n.AbstractLocaleResolver;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import javax.servlet.http.HttpServletRequest;
import java.util.Locale;
import java.util.Map;
......@@ -24,25 +25,33 @@ public class UserController {
private UserConfig userConfig;
@Autowired
private MessageSource messageSource;
private LocaleUtils localeUtils;
/**
* 设置区域解析器 (default is AcceptHeaderLocaleResolver)
*/
@Bean
public LocaleResolver localeResolver() {
FixedLocaleResolver localeResolver = new FixedLocaleResolver ();
localeResolver.setDefaultLocale(Locale.US);
AbstractLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.CHINA);
return localeResolver;
}
@RequestMapping("/changeLang")
@ResponseBody
public String changeLang(HttpServletRequest request, String lang){
if ("zh".equals(lang)) {
request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, new Locale("zh", "CN"));
} else if("en".equals(lang)){
request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, new Locale("en", "US"));
}
return "lang:" + lang;
}
@RequestMapping("/")
public String home(Map<String,Object> map) {
map.put("hello", "Hi, boy!");
Locale locale = LocaleContextHolder.getLocale();
String country = messageSource.getMessage("country", null, locale);
map.put("country", country);
map.put("country", localeUtils.getMessage("country"));
return "index";
}
......
package com.itlong.whatsmars.spring.boot.util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Component;
import java.util.Locale;
/**
* Created by shenhongxi on 2017/6/28.
*/
@Component
public class LocaleUtils {
@Autowired
private MessageSource messageSource;
public String getMessage(String key) {
Locale locale = LocaleContextHolder.getLocale();
return messageSource.getMessage(key, null, locale);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册