SpringBoot学习-国际化

步骤

第一步:

编写国际化配置文件,抽取页面需要显示的国际化消息

配置文件

第二步:

SpringBoot自动配置好了管理国际化资源文件的组件;

我们的配置文件可以直接放在类路径下叫messages.properties;

我们也可以放在一个文件夹中,指定基础名:

1
2
#指定国际化资源文件的基础名
spring.messages.basename=i18n.login

第三步:

页面取值

去页面获取国际化的值;

注意:properties文件中的编码格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Signin Template for Bootstrap</title>
<!-- Bootstrap core CSS -->
<link href="asserts/css/bootstrap.min.css" th:href="@{/webjars/bootstrap/4.5.0/css/bootstrap.css}" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="asserts/css/signin.css" th:href="@{/asserts/css/signin.css}" rel="stylesheet">
</head>

<body class="text-center">
<form class="form-signin" action="dashboard.html">
<img class="mb-4" src="asserts/img/bootstrap-solid.svg" th:src="@{/asserts/img/bootstrap-solid.svg}" alt="" width="72" height="72">
<h1 class="h3 mb-3 font-weight-normal" th:text="#{login.tip}">Please sign in</h1>
<label class="sr-only" th:text="#{login.username}">Username</label>
<input type="text" class="form-control" placeholder="Username" th:placeholder="#{login.username}" required="" autofocus="">
<label class="sr-only" th:text="#{login.password}">Password</label>
<input type="password" class="form-control" placeholder="Password" th:placeholder="#{login.password}" required="">
<div class="checkbox mb-3">
<label>
<input type="checkbox" value="remember-me"/> [[#{login.remember}]]
</label>
</div>
<button class="btn btn-lg btn-primary btn-block" type="submit" th:text="#{login.btn}">Sign in</button>
<p class="mt-5 mb-3 text-muted">© 2017-2018</p>
<a class="btn btn-sm" th:href="@{/index.html(lan='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(lan='en_US')}">English</a>
</form>

</body>

</html>

效果

根据浏览器语言设置的信息切换了国际化

原理

国际化Locale(区域信息对象):LocaleResolver(获取区域信息对象):

  • 默认的就是根据请求头带来的区域信息获取Locale进行国际化

第四步:点击链接切换国际化

点击链接切换国际化

  1. 自己编写一个LocaleResolver

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /**
    * 可以在链接上携带区域信息
    */
    public class MyLocaleResolver implements LocaleResolver {

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

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

    }
    }
  2. 并把他加载到容器中

    1
    2
    3
    4
    @Bean
    public LocaleResolver localeResolver(){
    return new MyLocaleResolver();
    }

最后更新: 2020年07月28日 14:55

原始链接: http://ligangit.com/2020/07/28/SpringBoot学习-国际化/

× 请我吃糖~
打赏二维码