SpringBoot03:首页国际化

"本文介绍了如何实现网页的国际化功能,包括在resources下创建i18n目录,配置login.properties及对应的中文版文件,设置application.yml中的MessageSourceAutoConfiguration,使用Thymeleaf的#{…}
摘要由CSDN通过智能技术生成

页面国际化

有的时候,我们的网站会去涉及中英文甚至多语言的切换,这时候我们就需要学习国际化!

1、配置文件编写

  1. 首先在resources资源文件下新建一个i18n目录,存放国际化配置文件
  2. 新建一个login.properties文件,还有一个login_zh_CN.properties;
    在这里插入图片描述
  3. 新建好这些文件之后,编写配置,idea下面由另外一个视图
    在这里插入图片描述
    这样就是配置好了
  4. 接下来我们要在application.yml中配置指定的路径(这里涉及到MessageSourceAutoConfiguration这个类)
spring:
  messages:
    basename: i18n/login
  1. 配置页面国际化值
    这里我们要获取国际化的值,需要用到thymeleaf中的#{…}
    在这里插入图片描述
  2. 实现点击按钮进行自动切换中英文
    在spring中有一个国际化的Locale(区域信息对象);里面有一个叫做LocaleResolver(获取区域信息对象)的解析器
    在AcceptHeaderLocaleResolver 这个类中有一个方法
	public Locale resolveLocale(HttpServletRequest request) {
		Locale defaultLocale = getDefaultLocale();
		if (defaultLocale != null && request.getHeader("Accept-Language") == null) {
			return defaultLocale;
		}
		Locale requestLocale = request.getLocale();
		List<Locale> supportedLocales = getSupportedLocales();
		if (supportedLocales.isEmpty() || supportedLocales.contains(requestLocale)) {
			return requestLocale;
		}
		Locale supportedLocale = findSupportedLocale(request, supportedLocales);
		if (supportedLocale != null) {
			return supportedLocale;
		}
		return (defaultLocale != null ? defaultLocale : requestLocale);
	}

这样的话,我们也可以自己去写一个自己的视图解析
首先修改一下前端页面的跳转链接

<a class="btn btn-sm" th:href="@{/index.html(l='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">English</a>

然后再去编写一个自己的组件类

package com.example.config;

import org.springframework.lang.Nullable;
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 {
    private Locale defaultLocale;
    //解析请求
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        //获取请求中的语言参数
        String l = request.getParameter("l");
        //默认的
        Locale locale = getDefaultLocale();
        if(!StringUtils.isEmpty(l)){
            //zh_CN
            String[] split = l.split("_");
            //国家,地区
            locale = new Locale(split[0],split[1]);
        }
        return locale;
    }

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

    }
    public Locale getDefaultLocale() {
        return this.defaultLocale;
    }
    public void setDefaultLocale(@Nullable Locale defaultLocale) {
        this.defaultLocale = defaultLocale;
    }
}

最后在MyMvcConfig下进行配置

//激活自定义组件
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleResolver();
    }
  1. 运行项目测试成果!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值