SpringBoot:网站国际化实现

2020-11-19  本文已影响0人  掌灬纹

SpringBoot框架下,使用thymeleaf引擎,实现国际化效果;一键切换配置文件编辑好的国家语言 非浏览器自带的翻译功能

1.前提准备BootStrap框架的静态资源

首页 登录页面

2.搭建项目,测试环境

package com.ht.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class LoginController {

    /**
     * 跳转登录页面
     * @return
     */
    @RequestMapping("/login")
    public String goLogin(){
        return "login";
    }
}

<a th:href="@{/login}" class="dropdown-item">Login</a>

3.编写国际化信息配置文件(idea自带的文本批处理器编辑)

批处理
login.welcome=欢迎回来
login.tip=登录您的账户使之继续
login.email=邮箱
login.password=密码
login.sign=登录
login.or=或
login.Github=代码仓库
login.GooGle=谷歌

>>>>>>>>>>>login_en_US.properties>>>>>>>>>>>>>>>
login.welcome=Welcome Back!
login.tip=Sign in to your account to continue.
login.email=Email address
login.password=password
login.sign=Sign In
login.or=or
login.Github=Github
login.GooGle=Google
#国际化配置
spring.messages.basename=i18n.login

4.自定义语言编码配置器

package com.ht.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 MyResolver implements LocaleResolver {

    /**
     * 转换语言
     * @param request
     * @return
     */
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        // 获取 切换语言请求参数
        String language = request.getParameter("l");

        // 获取默认语言
        Locale locale = Locale.getDefault();
        if (!StringUtils.isEmpty(language)){
            // 按下划线分割 en _ US
            String[] split = language.split("_");
            return new Locale(split[0],split[1]);
        }

        return locale;
    }

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

    }
}

    @Bean // 注入自定义国际化处理组件 SpringBoot 自动接管
    public LocaleResolver localeResolver(){
        return new MyResolver();
    }
<a class="btn btn-sm" th:href="@{/login.html(l='zh_CN')}">中文</a>
     <span class="text-xs text-uppercase">or</span>
<a class="btn btn-sm" th:href="@{/login.html(l='en_US')}">English</a>

5.测试效果

英文 中文请求地址 中文
上一篇 下一篇

猜你喜欢

热点阅读