SpringBoot:网站国际化实现

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

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

首页
登录页面

2.搭建项目,测试环境

  • 引入静态资源


    静态资源
  • 编写Controller实现页面跳转

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";
    }
}

  • 静态资源 thymeleaf语法实现连接跳转
<a th:href="@{/login}" class="dropdown-item">Login</a>

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

  • 正常导入静态资源并测试成功后,在resources文件夹下编写国际化信息配置文件


    i18n
批处理
  • 配置登录页面内容
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) {

    }
}

  • MvcConfig下注入SpringBoot中使之自动管理 生效
    @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.测试效果

英文
中文请求地址
中文

推荐阅读更多精彩内容