1.修改编码类型
setting ---file encodings
2.确保所有编码都改为utf-8 properties处打勾
3.新建一个目录 i18n
4.在i18n下面创建 message.properties message_zh_CN.properties
5.右击快捷添加 en_US 英文
6.Resource bundle中可快速配置
7.在配置文件中yaml
spring.messages.basename=i18n.message
8.此时在前端写 th:text="#{参数}",就可以自动识别语言
9.自己重载一个解析器,这个用到http 交换中
package com.wang.config; import org.springframework.util.StringUtils; import org.springframework.web.servlet.LocaleResolver; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Locale; public class MyLocaleResolver implements LocaleResolver { @Override public Locale resolveLocale(HttpServletRequest request) { //获取请求中的语言参数,带来l的参数,参考别人怎么写的 String language = request.getParameter("l"); Locale locale= Locale.getDefault(); if(StringUtils.isEmpty(language)){ String[] split = language.split("_"); //分割成为数组 //分割国家地区 locale = new Locale(split[0], split[1]); } return locale; } @Override public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) { } }
写完后注入spring bean中,
@configuration修饰 @Bean
10.工具类
package com.wang.Service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.support.ReloadableResourceBundleMessageSource; import org.springframework.stereotype.Component; import java.util.Locale; @Component public class MessageService { @Autowired MessageSource messageSource; Locale currentLocale = new Locale("en","US"); @Bean public static MessageSource getMessageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("i18n/message"); messageSource.setCacheSeconds(5); return messageSource; } public String getMessage(String key) { return messageSource.getMessage(key, null, key, currentLocale); } }