首页技术栈归档照片墙音乐日记随想收藏夹友链留言关于

Spring Boot国际化

写作时间:2026-07-08

Spring Boot国际化

以 spring-boot-springmvc-demo1为例,在 src/main/resources 下创建一个 i18n 的目录,并在该目录中按照国际化资源文件命名格式分别创建以下三个文件,

  • login.properties:无语言设置时生效
  • login_en_US.properties :英语时生效
  • login_zh_CN.properties:中文时生效

login.properties

login.tip=登录系统
login.username=用户名
login.pwd=密码
login.submit=登录

login_en_US.properties

login.tip=Login System
login.username=username
login.pwd=password
login.submit=submit

login_zh_CN.properties

login.tip=登录系统
login.username=用户名
login.pwd=密码
login.submit=登录

login.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>后台管理系统</title>
	<meta charset="UTF-8">
   <link rel="stylesheet" type="text/css" th:href="@{../Css/bootstrap.css}"/>
    <link rel="stylesheet" type="text/css" th:href="@{../Css/bootstrap-responsive.css}" />
    <link rel="stylesheet" type="text/css" th:href="@{../Css/style.css}" />
    <script type="text/javascript" th:src="@{../Js/jquery.js}"></script>
    <script type="text/javascript" th:src="@{../Js/jquery.sorted.js}"></script>
    <script type="text/javascript" th:src="@{../Js/bootstrap.js}"></script>
    <script type="text/javascript" th:src="@{../Js/ckform.js}"></script>
    <script type="text/javascript" th:src="@{../Js/common.js}"></script>
    <style type="text/css">
        body {
            padding-top: 40px;
            padding-bottom: 40px;
            background-color: #f5f5f5;
        }
        .form-signin {
            max-width: 300px;
            padding: 19px 29px 29px;
            margin: 0 auto 20px;
            background-color: #fff;
            border: 1px solid #e5e5e5;
            -webkit-border-radius: 5px;
            -moz-border-radius: 5px;
            border-radius: 5px;
            -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
            -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
            box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
        }
        .form-signin .form-signin-heading,
        .form-signin .checkbox {
            margin-bottom: 10px;
        }
        .form-signin input[type="text"],
        .form-signin input[type="password"] {
            font-size: 16px;
            height: auto;
            margin-bottom: 15px;
            padding: 7px 9px;
        }
    </style>  
</head>
<body>
<div class="container">
    <form class="form-signin" method="post" action="index.html">
        <h2 class="form-signin-heading" th:text="#{login.tip}">Login System</h2>
        <input type="text" name="username" class="input-block-level" th:placeholder="#{login.username}">
        <input type="password" name="password" class="input-block-level" th:placeholder="#{login.pwd}">
        <p><button class="btn btn-large btn-primary" type="submit">[[#{login.submit}]]</button></p>
        <p> <a class="" th:href="@{/login.html(1='zh_CN')}">中文</a>
            <a class="" th:href="@{/login.html(1='en_US')}">English</a>
        </p>
    </form>
</div>
</body>
</html>

MyMvcConfig

package com.yuan.config;
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.WebMvcConfigurer;

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/login.html").setViewName("login");
    }
    //注册
    @Bean
    public LocaleResolver localeResolver() {
        return new MyLocaleResolver();
    }
}

MyLocaleResolver

package com.yuan.config;
import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils;
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) {
       //获取请求的语言的参数
        String language=request.getParameter("1");
        Locale locale=Locale.getDefault();
        //如果请求的连接携带了国际化的参数
        if (!StringUtils.isEmpty(language)){
            //zh_CH
            String[] split = language.split("_");
            //国家,地区
            locale=new Locale(split[0], split[1]);
        }
        return locale;
    }
    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {

    }
}

application.properties

#配置文件
spring.messages.basename=i18n.login
avatar

yuanyourdomain

写代码,做研究,记录生活。

RECOMMENDED

MyBatis 动态 SQL

2026-07-08

Nginx 基础入门

2026-07-08

Maven 多模块与私服

2026-07-08