首先在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