SpringBoot2.1.5(18)--- 国际化配置,SpringBoot Locale 国际化使用方法

在项目中,很多时候需要国际化的支持,这篇文章要介绍一下springboot项目中多语言国际化的使用。
本文项目结构如图:

SpringBoot2.1.5(18)--- 国际化配置,SpringBoot Locale 国际化使用方法_第1张图片

springboot默认就支持国际化的,而且不需要你过多的做什么配置,只需要在resources/下创建国际化配置文件即可。

index.properties

index.tip=请登录

index.en.US_properities

index.tip=Please Sign In

index.zh.CN.properities

index.tip=请登录

login.properties

login.username=用户名
login.password=密码
login.remmber=记住我
login.sign=登录

login.en.US_properities

login.username=UserName
login.password=Password
login.remmber=Remember Me
login.sign=Sign In
login.zh.CN_properities
login.username=用户名
login.password=密码
login.remmber=记住我
login.sign=登录

在这个项目中前端页面使用的thymeleaf。创建Springboot项目不在讲述,Eclipase,IDEA创建项目都很方便快捷。pom文件记得加入 thymeleaf 支持。
pom.xml  文件:



    4.0.0

    cn.auan
    demo
    0.0.1-SNAPSHOT
    war

    demo
    Demo project for Spring Boot

    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.5.RELEASE
         
    

    
        UTF-8
        UTF-8
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



新建login

package com.baiding.i18n.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class Login {

   @RequestMapping("/login")
   public String login(){
        return "login";
   }
}

到这里可以看出来,其实和整合thymeleaf一样。

然后在templates下新建index.html,代码如下:




    
    Title


Please Sign In






中文 English

创建国际化配置文件,LocaleConfig 代码如下:
 

import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;


@Configuration
public class WebMVCConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/login.html").setViewName("login");
    }

    @Bean
    public LocaleResolver localeResolver(){
        return new NativeLocaleResolver();
    }

    protected static class NativeLocaleResolver implements LocaleResolver{

        @Override
        public Locale resolveLocale(HttpServletRequest request) {
            String language = request.getParameter("language");
            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 request, HttpServletResponse response, Locale locale) {

        }
    }
}
application.properites

spring.messages.basename=i18n/login/login,i18n/index/index
server.port=8090

现在启动项目,访问 http://localhost:8080/
然后点击中文或者English就可以自由切换语言了。
SpringBoot2.1.5(18)--- 国际化配置,SpringBoot Locale 国际化使用方法_第2张图片

 

你可能感兴趣的:(spring,boot2.1.5)