# easy_trans
**Repository Path**: dromara/easy_trans
## Basic Information
- **Project Name**: easy_trans
- **Description**: easy-trans是一款数据翻译插件,本公司提供数据中台(数据治理平台)源代码对外出售、包含元数据、数据源、数据治理、数据标准、数据标签、数据服务、数据质量、数据开发采集、数据资产、数据可视化等功能,基于kettle和flink,欢迎了解。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: http://easy-trans.fhs-opensource.cn/
- **GVP Project**: No
## Statistics
- **Stars**: 1720
- **Forks**: 313
- **Created**: 2021-03-06
- **Last Updated**: 2026-03-04
## Categories & Tags
**Categories**: big-data
**Tags**: MybatisPlus, Spring-DATA-JPA, SpringBoot, SpringCloud, 低代码
## README
# AD部分
公司有整套商业版数据中台源码出售,你能买到的最强版本数据中台源代码,全国落地70+客户,热销全国20+省份。是您快速交付,二次开发的首选。
## 功能简介
包含数据源、元数据、数据标准、数据仓库、数据质量、数据指标、数据标签、数据安全、数据生命周期、数据服务、数据资产、数据集成、数据开发、数据可视化、数据运维、系统日志、主数据、数据填报、AI问数等模块。
所有功能模块均对标大厂产品设计,功能完善。
## 产品优势
1、源代码授权,您可以二次开发。一次购买,多项目使用。
2、源码授权中台厂家中客户最多,落地项目最多,功能最多,11年老公司,千万注册资本,几十人团队,中台稳定维护4年+,售后有保障,公司资质齐全,国央企合作首选。
3、国产化信创适配,支持国产芯片(X86、C86、ARM)、数据库、中间件、操作系统,包过等保三。
4、技术栈友好,包教包会,无论是使用还是二次开发,都能快速上手。
5、数据中台产品中AI融入最多的,做数据中台实施要做蓝图、数据采集、质量、开发、对外开放、做门户,实施周期长,工作量大,用我们的产品,实施周期最少可以降低3成!
6、团队深耕开源社区,是dromara社区、baomidou社区(mybatis plus)、snowy、guns等开源组织的活跃成员,gitee star 第一的ruoyi衍生版项目也在用我们的开源项目,我们更愿意与开发者交朋友。
## 架构

## 功能清单 请放大看(点开图片后很小,需要再点一次就能放大了)

## 技术栈
后端:Java springboot springcloud/alibaba mybatis plus hutool 等常见技术
前端:vue elementui vite 等常见技术
中间件:doris,mysql/tidb/阿里OB,redis,rabbitmq,minio,zookeeper。
### 有演示环境和方案PPT、白皮书,需要加V:abcd19920605
官网:http://www.aceplacesoft.com/
# 以下为本项目正文
# Dromara Easy Trans

# 介绍

# 插件文档
有问题先看文档哦!!!
主站:http://easy-trans.dromara.org/ 备用站:http://easy-trans.fhs-opensource.cn/
文档源码:https://gitee.com/fhs-opensource/vite_press_easy_trans
# 求star
我们非常需要您的star支持,就是右上角的那个小星星,帮忙点一下吧,抱拳啦!
## Dromara Easy Trans适用于6种场景
1 我有一个id,但是我需要给客户展示他的title/name 但是我又不想自己手动做表关联查询
2 我有一个字典码 gender 和 一个字典值0 我希望能翻译成 男 给客户展示。
3 我有一组user id 比如 1,2,3 我希望能展示成 张三,李四,王五 给客户
4 我有一个枚举,枚举里有一个title字段,我想给前端展示title的值 给客户
5 我有一个唯一键(比如手机号,身份证号码,但是非其他表id字段),但是我需要给客户展示他的title/name 但是我又不想自己手动做表关联查询
6 Excel导入场景,把 用户名 admin 反向翻译为 userid1 把男 反向翻译为 gender_1 (具体看官网文档)
# 最新版本
springboot3.x 最新easy-trans版本:3.1.4 springboot 2.x 最新easy-trans版本 2.3.4
# groupid和包名变更说明
从3.1.0和2.3.0开始,包名和maven的groupid由com.fhs变更为dormara社区统一的org.dromara,以下版本不变。
# 食用步骤
## 技术经理/架构 需要做的事情
1 、先把maven 引用加上(主starter+根据自己的ORM框架引入扩展,扩展只需要引入一个)
starter--必须!!!
``` xml
org.dromara
easy-trans-spring-boot-starter
2.3.0
```
Mybatis plus 扩展:
``` xml
org.dromara
easy-trans-mybatis-plus-extend
2.3.0
```
JPA 扩展:
``` xml
org.dromara
easy-trans-jpa-extend
2.3.0
```
JPA SpringBoot3 扩展(本扩如果没bug后面发布版本不在更新版本号):
``` xml
org.dromara
easy-trans-jpa-sb3-extend
2.2.3
```
Beetl SQL 扩展:
``` xml
org.dromara
easy-trans-beetl-sql-extend
2.3.0
```
TK Mybatis(通用mapper) 扩展:
``` xml
org.dromara
easy-trans-tk-extend
2.3.0
```
easy-query 扩展:
``` xml
org.dromara
easy-trans-easy-query-extend
2.2.17
```
mybatis-flex 扩展:
``` xml
org.dromara
easy-trans-mybatis-flex-extend
2.2.17
```
如果使用Redis请添加redis的引用(如果之前加过了请不要重复添加)
``` xml
org.springframework.boot
spring-boot-starter-data-redis
```
注意:非maven中央仓库更新可能延迟,如果高版本无法引入请尝试切到低一个版本过一天后在切回来。
2、在yaml中添加如下配置
``` YAML
easy-trans:
#启用redis缓存 如果不用redis请设置为false
is-enable-redis: true
#启用全局翻译(拦截所有responseBody进行自动翻译),如果关闭需要手动调用翻译方法或者方法加注解,具体看文档
is-enable-global: true
#启用平铺模式
is-enable-tile: true
#字典缓存放到redis 微服务模式请开启
dict-use-redis: true
# ruoyi相关的请开启
is-enable-map-result: true
# MP为 3.5.3.2版本以上的3.x 版本请设置为true,否则可能会出现找不到对应方法的问题
mp-new: false
```
3、如果不使用redis,请在启动类加禁用掉redis的自动配置类
``` java
@SpringBootApplication(exclude = { RedisAutoConfiguration.class })
//单体跑的话,排除下面2个类提高启动速度,后面出版本解决
@SpringBootApplication(exclude = {
// 下面这2个没啥用,而且会拖慢启动速度
SimpleDiscoveryClientAutoConfiguration.class,
CompositeDiscoveryClientAutoConfiguration.class
})
```
4、初始化字典数据(如果你们项目没字典表请忽略)
``` java
@Autowired //注入字典翻译服务
private DictionaryTransService dictionaryTransService;
//在某处将字典缓存刷新到翻译服务中,以下是demo
Map transMap = new HashMap<>();
transMap.put("0","男");
transMap.put("1","女");
dictionaryTransService.refreshCache("sex",transMap);
```
5、微服务配置(比如订单服务用到了用户服务的user数据来进行翻译,不牵扯微服务的可以不管)
A、白名单添加 /easyTrans/proxy/** 保证其不被拦截,RPC trans的时候easytrans会自动调用目标微服务的接口来获取数据。
B、应用之间的认证可以通过filter/interceptor实现,然后自定义RestTemplate 保证easytrans在请求用户服务的时候带上需要认证的参数
## 普通程序员需要做的事情
pojo 中添加
``` java
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
//实现TransPojo 接口,代表这个类需要被翻译或者被当作翻译的数据源
public class Student implements TransPojo {
// 字典翻译 ref为非必填
@Trans(type = TransType.DICTIONARY,key = "sex",ref = "sexName")
private Integer sex;
//这个字段可以不写,实现了TransPojo接口后有一个getTransMap方法,sexName可以让前端去transMap取
private String sexName;
//SIMPLE 翻译,用于关联其他的表进行翻译 schoolName 为 School 的一个字段
@Trans(type = TransType.SIMPLE,target = School.class,fields = "schoolName")
private String schoolId;
//远程翻译,调用其他微服务的数据源进行翻译
@Trans(type = TransType.RPC,targetClassName = "pojo.com.xhb.test.School",fields = "schoolName",serviceName = "easyTrans",alias = "middle")
private String middleSchoolId;
// 枚举翻译,返回文科还是理科给前端
@Trans(type=TransType.ENUM,key = "desc")
private StudentType studentType = StudentType.ARTS;
public static enum StudentType{
ARTS("文科"),
SCIENCES("理科");
private String desc;
StudentType(String desc){
this.desc = desc;
}
}
}
```
然后访问你的controller,看返回结果。
## easy trans 支持的五种类型
### 字典翻译(TransType.DICTIONARY)
需要使用者把字典信息刷新到DictionaryTransService 中进行缓存,使用字典翻译的时候取缓存数据源
### 简单翻译(TransType.SIMPLE)
比如有userId需要userName或者userPo给前端,原理是组件使用MybatisPlus/JPA的API自动进行查询,把结果放到TransMap中。
### 跨微服务翻译(TransType.RPC)
比如订单和用户是2个微服务,但是我要在订单详情里展示订单的创建人的用户名,需要用到RPC翻译,原理是订单微服务使用restTemplate调用用户服务的一个统一的接口,把需要翻译的id传过去,然后用户微服务使用MybatisPlus/JPA的API自动进行查询把结果给订单微服务,然后订单微服务拿到数据后进行翻译,当然使用者只是需要一个注解,这些事情都是由组件自动完成的。
### AutoTrans(TransType.AUTO)
还是id翻译name场景,但是使用者如果想组件调用自己写的方法而不通过Mybatis Plus/JPA 的API进行数据查询,就可以使用AutoTrans
### 枚举翻译(TransType.ENUM)
比如我要把SEX.BOY 翻译为男,可以用枚举翻译。
# 参与贡献和技术支持
如果遇到使用问题可以加作者微信拉你进群。
如果你们使用了此插件,请留下单位名称。
# 示例项目
https://gitee.com/fhs-opensource/easy_trans_springboot_demo
# 已经使用此插件的企业
1、陕西小伙伴网络科技有限公司
2、ruoyi-vue-pro https://gitee.com/zhijiantianya/ruoyi-vue-pro
3、中软国际云智能业务集团
4、深圳市易流科技股份有限公司
5、陕西逐道科技有限公司
6、深圳市易联联盟科技有限公司
7、中体数科(北京)体育发展有限公司
8、首都信息发展股份有限公司
9、航天神舟智慧系统技术有限公司
10、小诺V2 https://gitee.com/xiaonuobase/snowy
11、山东大小同屏科技有限公司
12、山东酸橙网络科技有限公司
13、桔子数字科技有限公司
14、成都新潮传媒集团股份有限公司
15、陕西汇每家信息科技有限公司(每一天便利店连锁)
16、江西云牛科技
17、广州彩讯数字技术有限公司
18、江苏誉鸣航智能科技有限公司
19、maku-boot https://gitee.com/makunet/maku-boot
20、北京大美星空科技有限公司
21、四川学道社人力资源有限公司
# 作者二维码
加作者二维码邀请进入官方群

# 项目捐助二维码
