快速使用Thymeleaf实现国际化

目录

什么是国际化?

1.创建一个springboot工程

2.创建存放文字的文件

3.编辑文件

4.编写页面代码

5.实现中英文的切换


什么是国际化?

        国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。

1.创建一个springboot工程

加入依赖

        <!--thymeleaf依赖-->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
        </dependency>
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-java8time</artifactId>
        </dependency>

创建完成后打开设置

确保图片中的都是UTF-8

2.创建存放文字的文件

在resources文件夹下创建i18n的包,然后在i18n的包下创建login.propertis与login_zh_CN.properties文件(代表中文的意思),在创建login_zh_CN.properties文件时会发现他们合并成了一个文件:Resources Bundle 'login'。

Resources Bundle 'login'可以右键创建文件。

 接着在创建一个en_US文件,他会自动识别为英语。

 

3.编辑文件

文件打开后,点击左下角有的可视化编辑。

 右键login点击New Property

 添加login.tip

 然后如图所示进行补充

 然后在多添加几条。

 文本模式如下:

4.编写页面代码

在 application.properties中添加如下代码:

# 文件的真实位置
spring.messages.basename=i18n.login

然后在templates文件夹下面创建index.html文件,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录界面</title>
</head>
<body>
<div style="background-color: bisque">
    <center>
        <h1 >Please Sign in</h1>
        <input type="text" placeholder="Username" />
        <br/><br/>
        <input type="password" placeholder="Passwrod"  />
        <br/><br/>
        <button>Sign</button>
        <br/>
        <a href="#">中文</a>&nbsp;&nbsp;
        <a href="#">English</a>
    </center>
</div>
</body>
</html>

运行后输入地址:http://localhost:8080/

 

可以看到显示的文字是英文的。

然后改造成如下代码:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
    <meta charset="UTF-8">
    <title>登录界面</title>
</head>
<body>
<div style="background-color: bisque">
    <center>
        <h1 th:text="#{login.tip}">Please Sign in</h1>
        <input type="text"  th:placeholder="#{login.username}" />
        <br/><br/>
        <input type="password" th:placeholder="#{login.password}"  />
        <br/><br/>
        <button>[[#{login.btn}]]</button>
        <br/>
        <a th:href="@{index.html(l='zh_CN')}">中文</a>&nbsp;&nbsp;
        <a th:href="@{index.html(l='en_US')}">English</a>
    </center>
</div>
</body>
</html>

运行后界面:

 发现英文变成了中文。

5.实现中英文的切换

在创建config文件夹--->创建MyLocalResolver代码如下:

package com.li.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 MyLocalResolver implements LocaleResolver {

    //解析请求
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        //获取请求参数
        String lang = request.getParameter("l");
        Locale locale = Locale.getDefault();//如果没有就用默认的
        //如果请求链接携带了国际化的参数
        if (!StringUtils.isEmpty(lang)){
            //zh_CN
            String[] split = lang.split("_");
            //国家,地区
            locale= new Locale(split[0], split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {

    }
}

MyLocalResolver类创建好后需要将他放到spring中,在config中创建MyConfig类

代码如下:

package com.li.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 MyConfig implements WebMvcConfigurer {

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

    //自定义国际化主键就生效了
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocalResolver();
    }
}

然后运行,此时点击a标签就可以实现中英文的切换了。

 

总结

        国际化可以切换文字,在创建properties文件的时候需要注意命名,Thymeleaf中#{}可以获取文件中的值,@{}里面放的是路径,@{index.html(l='zh_CN')}其中括号里面的是传递的参数,要想传递多个参数就在后面加上逗号即可,例如:@{index.html(l='zh_CN',username=${username},password='123456')}。

编写MyConfig类时配置视图解析器,addViewControllers()不然路径错误无法访问。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值