SpringBoot配置国际化语言提示

一.需求

根据所选的语言切换语言信息

二.案例

1)、案例页面



	
		
		
		
		
		Signin Template for Bootstrap
		
		
		
		
	

	
		

	

2)、编写国际化配置文件

SpringBoot配置国际化语言提示_第1张图片

 主配置文件中添加

spring.messages.basename=i19n.login

3)、使用ResourceBundleMessageSource管理国际化资源文件

SpringBoot自动配置好了管理国际化资源文件的组件(默认根据请求头确认语言和区域)

@ConfigurationProperties(prefix = "spring.messages")
public class MessageSourceAutoConfiguration {
    
    /**
	 * Comma-separated list of basenames (essentially a fully-qualified classpath
	 * location), each following the ResourceBundle convention with relaxed support for
	 * slash based locations. If it doesn't contain a package qualifier (such as
	 * "org.mypackage"), it will be resolved from the classpath root.
	 */
	private String basename = "messages";  
    //我们的配置文件可以直接放在类路径下叫messages.properties;
    
    @Bean
	public MessageSource messageSource() {
		ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
		if (StringUtils.hasText(this.basename)) {
            //设置国际化资源文件的基础名(去掉语言国家代码的)
			messageSource.setBasenames(StringUtils.commaDelimitedListToStringArray(
					StringUtils.trimAllWhitespace(this.basename)));
		}
		if (this.encoding != null) {
			messageSource.setDefaultEncoding(this.encoding.name());
		}
		messageSource.setFallbackToSystemLocale(this.fallbackToSystemLocale);
		messageSource.setCacheSeconds(this.cacheSeconds);
		messageSource.setAlwaysUseMessageFormat(this.alwaysUseMessageFormat);
		return messageSource;
	}
```

4)、重启项目查看结果

如果出现乱码

SpringBoot配置国际化语言提示_第2张图片

修改文件编码

SpringBoot配置国际化语言提示_第3张图片 再重启

SpringBoot配置国际化语言提示_第4张图片

5)、修改浏览器语言测试

SpringBoot配置国际化语言提示_第5张图片 

测试结果 

SpringBoot配置国际化语言提示_第6张图片

三.修改案例 

1)、根据点击的语言切换,修改页面



	
		
		
		
		
		Signin Template for Bootstrap
		
		
		
		
		
	

	
		

	

2)、编写自己的语言区域组件

SpringBoot配置国际化语言提示_第7张图片

public class MyLocaleResolver implements LocaleResolver {

    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
        String l=httpServletRequest.getParameter("l");
        Locale local=Locale.getDefault();
        if(!StringUtils.isEmpty(l)){
            String[] split = l.split("_");
            local=new Locale(split[0],split[1]);
        }
        return local;
    }

    @Override
    public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {

    }
}

 3)、配置到自定义配置类中

package com.zhq.springboots.config;

import com.zhq.springboots.component.MyLocaleResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * @author hq.zheng
 * @create 2019-03-03-下午 3:44
 */
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addViewControllers(ViewControllerRegistry registry){
        registry.addViewController("/zhq").setViewName("success");
    }

    @Bean
    public WebMvcConfigurerAdapter  toIndex(){
        WebMvcConfigurerAdapter  adpter=new WebMvcConfigurerAdapter(){
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                registry.addViewController("/").setViewName("index");
                registry.addViewController("/index.html").setViewName("index");
            }
        };
        return adpter;
    }

    /*
    * 配置自己的区域解析
    * */
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleResolver();
    }

}

4)、测试结果

点击中文

SpringBoot配置国际化语言提示_第8张图片

点击英文

SpringBoot配置国际化语言提示_第9张图片 

你可能感兴趣的:(SpringBoot)