赞
踩
首先在static文件夹下边创建一个i18n文件夹,分别创建message.properties,message_en_US.properties,message_zh_CN.properties
三个文件,分别为默认语言,英文,中文
如下图所示
假设我们现在是新增用户,定义add.ok
标识新增成功
我们写一个方法
@Autowired
private Messageutil messageutil;
@PostMapping("/addUser")
public Map addUser( @RequestBody User user){
Map<String,Object> result = new HashMap();
result.put("data",messageutil.getLocaleMessage("add.ok"));
return result;
}
/** * 获取国际化信息工具类 */ @Slf4j @Component public class Messageutil { @Autowired private MessageSource messageSource; @Autowired private HttpServletRequest request; /** * 根据code获取国际化信息 * @param code code * @return */ public String getLocaleMessage(String code) { return getLocaleMessage(code,null,null); } /** * 根据code获取国际化信息,如果没有则使用默认提示信息 * @param code code * @param defaultMsg 默认提示信息 * @return */ public String getLocaleMessage(String code, String defaultMsg) { return getLocaleMessage(code,defaultMsg,null); } /** * 根据code获取国际化信息,并且替换占位符 * @param code * @param params * @return */ public String getLocaleMessage(String code, String[] params) { return getLocaleMessage(code,null,params); } /** * 根据code获取国际化信息,没有就使用默认值,并且替换占位符 * @param code code * @param defaultMsg 默认提示信息 * @param params 替换占位符的参数 * @return */ public String getLocaleMessage(String code, String defaultMsg, Object[] params) { String language = request.getParameter("lang"); Locale locale = Objects.nonNull(language) ? new Locale(language) : Locale.getDefault(); try { return messageSource.getMessage(code, params, locale); } catch (Exception e) { e.printStackTrace(); log.warn("本地化异常消息发生异常: {}, {}", code, params); return defaultMsg; } } }
国际化配置类
/** * 配置国际化语言 */ @Configuration public class LocaleConfig { /** * 默认解析器 其中locale表示默认语言 */ @Bean public LocaleResolver localeResolver() { SessionLocaleResolver localeResolver = new SessionLocaleResolver(); localeResolver.setDefaultLocale(Locale.CHINESE);// 设置默认为中文 return localeResolver; } /** * 默认拦截器 其中lang表示切换语言的参数名 */ @Bean public WebMvcConfigurer localeInterceptor() { return new WebMvcConfigurer() { @Override public void addInterceptors(InterceptorRegistry registry) { LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor(); localeInterceptor.setParamName("lang"); registry.addInterceptor(localeInterceptor); } }; } }
启动应用
请求地址 localhost:8080/addUser?lang=zh_CN
参数{ "name":"张三", "addr":"北京", "email":"123@qq.com" }
,模拟中文
localhost:8080/addUser?lang=en_US
将参数换成en_us 切换为英文
git地址:https://github.com/snail10000/i18n_study.git
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。