编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

「升级」springboot+activiti工作流低代码平台-增加国际化

wxchong 2024-08-25 16:32:17 开源技术 12 ℃ 0 评论

增加国际化

什么是国际化

起始利用浏览器语言,在页面中的中英(当然还有其他语言)文切换,将页面的文字在其他语言和中文进行切换。

青锋开源地址(开源多版基础架构)

青锋目前开源了一下版本架构:

springboot+layui+thymeleaf版本

springboot+layui+jsp版本

springboot+vue ant design 前后端分离版本

springcloud+vue/react ant design 前后端分离双版本。

青锋springboot 家谱系统。

下载地址:青锋 (msxy) - Gitee

springboot版本整合国际化

1、增加I18nConfig过滤器

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Locale;

/**
 * @ProjectName I18nConfig
 * @author Administrator
 * @version 1.0.0
 * @Description 设置默认语言
 * @createTime 2021/7/22 0022 21:03
 */
@Configuration
public class I18nConfig {
    private static Logger logger = LoggerFactory.getLogger(I18nConfig.class);

    @Bean(name = "localeResolver")
    public LocaleResolver localeResolver() {
        logger.info("创建cookieLocaleResolver");

        LocaleResolver localeResolver = new LocaleResolver();
        localeResolver.setDefaultLocale(Locale.CHINA);
        logger.info("cookieLocaleResolver:");
        return localeResolver;
    }
}

2、增加LocaleResolver设置语言

import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
import org.springframework.web.servlet.support.RequestContextUtils;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;

/**
 * @ProjectName LocaleResolver
 * @author Administrator
 * @version 1.0.0
 * @Description 每次加载页面时都会被调用,加载页面时都会设置并修改语言
 * @createTime 2021/7/22 0022 21:03
 */
public class LocaleResolver extends AcceptHeaderLocaleResolver {

    private Locale myLocal;

    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        //获取cookie数组
        Cookie[] cookies = request.getCookies();
        String lang = "";
        if (cookies != null) {
            //遍历cookie数组
            for (Cookie cookie : cookies) {
                if ("ClientLanguage".equals(cookie.getName())) {
                    lang = cookie.getValue();
                    break;
                }
            }
        }
        LocaleResolver localeResolver = (LocaleResolver) RequestContextUtils.getLocaleResolver(request);
        if (lang == null || "".equals(lang)) {
            myLocal = Locale.CHINA;
        } else {
            if (lang.equals("zh")) {
                myLocal = Locale.CHINA;
            } else if (lang.equals("en")) {
                myLocal = Locale.US;
            }
        }
        return myLocal;
    }

    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
        myLocal = locale;
    }
}

3、增加I18N多语言配置文件

案例中配置了三个多语言文件:

1、messages.properties :公共配置,当没有匹配的语言文件时候加载本配置文件。

2、messages_en_US.properties:英文配置文件。

3、messages_zh_CN.properties:中文配置文件。

在外面的配置中messages和messages_zh_CN的内容是一样的。

login.loginName=登录名称
login.loginPwd=登录密码
qingfeng.title=大家好,我是青锋
login.loginName=Login name
login.loginPwd=Login password
qingfeng.title = Hello everyone, I'm Qingfeng

4、配置文件配置多语言

#设置国际化配置文件存放在classpath:/i18n目录下
spring.messages.basename: i18n/messages
spring.messages.encoding: UTF-8
#是否总是应用MessageFormat规则,甚至解析没有参数的消息,默认true
spring.messages.always-use-message-format: false 
# 如果没有找到特定地区的文件,是否返回到系统区域,默认false
spring.messages.fallback-to-system-locale: true 
# 是否使用消息代码作为默认消息,而不是抛出“NoSuchMessageException”,建议仅在开发过程中。,默认false
spring.messages.use-code-as-default-message: false 

5、页面多语言切换实现

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<head>
    <title>国际化</title>
    <script src="${pageContext.request.contextPath}/resources/js/jquery-1.9.1.min.js"></script>
    <script src="${pageContext.request.contextPath}/resources/js/jquery.cookie.js"></script>
</head>
<body>
<div align="center" style="margin: 20px auto">
    <h1><spring:message code='login.loginName'/><br></h1>
    <h1><spring:message code='login.loginPwd'/><br></h1>
    <h1 style="color: red"><spring:message code='qingfeng.title'/><br></h1>
    <div style="font-size: 24px">
        <a href="javascript:;" onclick="changeLang('zh')"> 中文 </a>
            
        <a href="javascript:;" onclick="changeLang('en')"> english </a>
    </div>
</div>
</body>
<script>
    function changeLang(lang) {
        //cookie持久化
        $.cookie('ClientLanguage',lang);
        location.reload();
    }
</script>
</html>

6、实现效果案例展示

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表