# easy-trans
**Repository Path**: orangewest/easy-trans
## Basic Information
- **Project Name**: easy-trans
- **Description**: 一款通用高性能翻译框架
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 9
- **Forks**: 3
- **Created**: 2024-04-26
- **Last Updated**: 2025-11-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# easy-trans
一款通用的数据翻译框架
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![MIT License][license-shield]][license-url]
easy-trans
一款通用的数据翻译框架
探索本项目的文档 »
查看Demo
·
报告Bug
·
提出新特性
## 一、架构设计
架构如下:
翻译核心注解
```java
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
public @interface Trans {
/**
* @return 需要翻译的字段
*/
String trans() default "";
/**
* @return 提取的字段
*/
String key() default "";
/**
* @return 翻译数据获取仓库
*/
Class extends TransRepository> using();
}
```
## 二、优点
1、核心源码简单,仅几百行,无任何依赖项;
2、高度可拓展,拓展逻辑仅仅只需要实现TransRepository接口;
3、支持数据库翻译、字典翻译、集合翻译、嵌套翻译等;
4、并行翻译,翻译不同字段是并行翻译的,性能高
## 三、基本使用
maven引入
```java
io.github.orangewest
easy-trans-core
0.0.3
```
比如现在有一个老师的实体对象
```java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TeacherDto {
private Long id;
private String name;
// 关联教哪个学科
private Long subjectId;
}
```
课程科目实体对象
```java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SubjectDto {
private Long id;
private String name;
}
```
学生实体对象
```java
@Data
public class UserDto {
private Long id;
private String name;
private String sex;
@DictTrans(trans = "sex", group = "sexDict")
private String sexName;
private String job;
@DictTrans(trans = "job", group = "jobDict")
private String jobName;
// 关联老师id
private Long teacherId;
@Trans(trans = "teacherId", key = "name", using = TeacherTransRepository.class)
private String teacherName;
@Trans(trans = "teacherId", key = "subjectId", using = TeacherTransRepository.class)
private Long subjectId;
@Trans(trans = "subjectId", using = SubjectTransRepository.class, key = "name")
private String subjectName;
public UserDto(Long id, String name, Long teacherId, String sex, String job) {
this.id = id;
this.name = name;
this.teacherId = teacherId;
this.sex = sex;
this.job = job;
}
}
```
我们在teacherName 上增加@Trans的注解,
其中trans 指名需要翻译哪个字段,
key说明需要使用的是哪个字段,
using 说明的是使用哪个数据仓库获取数据
TeacherTransRepository 代码如下:
```java
public class TeacherTransRepository implements TransRepository {
@Override
public Map