国际化更换英中文

1、国际化文件格式

文件名_语言编码_国家编码.properties

lan_zh_CN.properties 中文

lan_en_US.properties 英文

lan.properties 默认

在resources文件夹下创建一个i18n文件夹,创建上面三个文件

2、编写配置文件

3、修改页面

注意添加<html lang="en" xmlns:th="http://www.thymeleaf.org">

<form>
    <input type="text" th:placeholder="#{lan.username}"><br>
</form>

4、添加切换按钮

<a th:href="@{/lan(l='zh-CN')}">中文</a>
<a th:href="@{/lan(l='en-US')}">英文</a>

5、后台处理请求

@Controller
public class TestController {
    @RequestMapping("/lan")
    public String lan(){
        return "index";
    }
}

6、编写区域解析器

package com.dhf.springboot2;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;

import java.util.Locale;
@Configuration
//自定义解析器
public class MyLocalResolver implements LocaleResolver {
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        //返回国际化对象
        //可以请求头信息中获取国际化信息:语言编码、国家编码
        String header=request.getHeader("Accept-Language");
        //手动选择:参数里面有国际化信息l='zh-CN'
        String l=request.getParameter("l");
        //定义变量
        Locale locale=null;
        //判断
        String[] split;
        if(l!=null){
            split = l.split("-");
        }else{
            split = header.split(",")[0].split("-");
        }
        locale=new Locale(split[0],split[1]);
        return locale;
    }

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

    }
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocalResolver();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值