# Enum Translation
**Repository Path**: brooki/enum-translation
## Basic Information
- **Project Name**: Enum Translation
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-07-30
- **Last Updated**: 2025-08-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 枚举翻译方案 (Enum Translation)
基于Lombok的枚举字段翻译方案,通过自定义注解与Lombok扩展,自动为JavaBean中的枚举字段生成翻译字段(`原字段名+Text`)及对应Getter方法。
## 🚀 功能特性
- ✅ 支持Java 8+
- ✅ 基于注解驱动,使用简单
- ✅ 自动生成翻译字段和getter方法
- ✅ **自动生成构造方法**(复制原始类的所有构造方法)
- ✅ **静态转换方法**(从原始类一键转换为增强类)
- ✅ **智能字段复制**(自动复制所有属性并更新翻译)
- ✅ 支持编译时处理和运行时处理
- ✅ 提供Maven插件支持
- ✅ 提供IDEA插件支持
- ✅ 代码提示和语义检查
## 📦 模块结构
```
enum-translation/
├── core/ # 核心注解和处理器
├── maven-plugin/ # Maven插件
├── idea-plugin/ # IDEA插件
└── example-usage/ # 使用示例
```
## 🔧 快速开始
### 1. 添加依赖
在你的项目中添加核心依赖:
```xml
com.enumstrans
enum-translation-core
1.0.0
```
### 2. 定义枚举类
使用`@EnumTranslate`注解标记枚举类,指定存储翻译文本的字段:
```java
@EnumTranslate(sourceField = "desc")
public enum Status {
ACTIVE("激活"),
INACTIVE("未激活"),
PENDING("待处理"),
SUSPENDED("暂停");
private final String desc;
Status(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
}
```
### 3. 使用翻译注解
在JavaBean中使用`@EnableTranslation`标记需要翻译的枚举字段:
```java
@Data
public class Order {
private String id;
private String customerName;
@EnableTranslation
private Status status; // 将自动生成statusText字段和getStatusText()方法
private Double amount;
}
```
### 4. 使用增强类
编译后会自动生成`OrderEnhanced`类,提供多种使用方式:
#### 方式一:直接使用构造方法
```java
// 使用带参数的构造方法
OrderEnhanced order = new OrderEnhanced("001", "张三", Status.ACTIVE, 100.0);
// 自动获取翻译文本
String statusText = order.getStatusText(); // 返回"激活"
```
#### 方式二:从原始类转换
```java
// 创建原始类实例
Order originalOrder = new Order("002", "李四", Status.PENDING, 200.0);
// 使用静态方法转换为增强类(自动复制所有字段并更新翻译)
OrderEnhanced enhancedOrder = OrderEnhanced.from(originalOrder);
// 翻译字段已经自动填充
String statusText = enhancedOrder.getStatusText(); // 返回"待处理"
```
#### 方式三:手动设置属性
```java
// 使用默认构造方法
OrderEnhanced order = new OrderEnhanced();
order.setId("003");
order.setCustomerName("王五");
order.setStatus(Status.SUSPENDED);
// 手动更新翻译字段(如果需要)
order.updateTranslations();
// 或者直接获取翻译文本(会自动计算)
String statusText = order.getStatusText(); // 返回"暂停"
```
## 🛠️ 注解说明
### @EnumTranslate
标记需要翻译的枚举类。
**属性:**
- `sourceField()`: 指定存储翻译文本的字段名,默认为`"desc"`
**示例:**
```java
@EnumTranslate(sourceField = "description")
public enum UserType {
ADMIN("管理员"),
USER("普通用户");
private final String description;
// ...
}
```
### @EnableTranslation
标记需要生成翻译文本的枚举字段。
**条件:**
1. 字段必须是枚举类型
2. 字段的枚举类必须被`@EnumTranslate`标记
3. 枚举类中必须存在`sourceField`指定的字段
**示例:**
```java
public class User {
@EnableTranslation
private UserType type; // 生成typeText字段和getTypeText()方法
}
```
## 🔧 Maven插件使用
在项目的`pom.xml`中添加插件配置:
```xml
com.enumstrans
enum-translation-maven-plugin
1.0.0
generate-enhanced-classes
```
### Maven插件目标
- `enum-translation:generate-enhanced-classes` - 生成增强类
### 插件配置
```xml
${project.build.directory}/generated-sources/enum-translation
false
**/*.java
**/Test*.java
```
## 🎯 IDEA插件功能
安装IDEA插件后,可以享受以下功能:
### 代码高亮和检查
- 自动验证`@EnableTranslation`字段的有效性
- 高亮显示将要生成的翻译字段
- 检查枚举类是否正确配置
### 代码补全
- 自动补全翻译字段名(如`statusText`)
- 自动补全getter方法(如`getStatusText()`)
- 支持增强类相关的代码补全
### 快捷操作
- **Alt+Enter**: 在类中生成增强类
- **Ctrl+Shift+G**: 通过菜单生成增强类
- 自动处理文件覆盖确认
## 📝 生成规则
### 增强类生成内容
对于原始类`Order`,会生成`OrderEnhanced`类,包含:
#### 1. 构造方法
- **默认构造方法**:`OrderEnhanced()`
- **参数构造方法**:复制原始类的所有公共构造方法
#### 2. 翻译字段(针对每个`@EnableTranslation`字段)
对于字段`status`:
- 生成翻译字段:`statusText`
- 生成getter方法:`getStatusText()`
- 字段类型:`String`
- 延迟加载:首次访问时自动从枚举获取翻译文本
#### 3. 转换方法
- **静态转换方法**:`OrderEnhanced.from(Order original)`
- 自动复制原始类的所有字段值
- 自动更新所有翻译字段
- 支持null安全处理
#### 4. 辅助方法
- `updateTranslations()`:手动更新所有翻译字段
- `getEnumTranslation(Enum> enumValue)`:内部翻译逻辑
## 🏗️ 构建项目
```bash
# 编译核心模块
cd core
mvn clean install
# 编译Maven插件
cd ../maven-plugin
mvn clean install
# 编译示例项目
cd ../example-usage
mvn clean compile
# 构建IDEA插件
cd ../idea-plugin
./gradlew buildPlugin
```
## 🧪 测试
```bash
# 运行测试
cd example-usage
mvn test
# 查看生成的增强类
ls target/generated-sources/enum-translation/
```
## 📋 注意事项
1. **枚举字段验证**:确保被`@EnableTranslation`标记的字段是有效的枚举类型
2. **sourceField存在性**:确保枚举类中存在`@EnumTranslate`指定的字段
3. **Lombok兼容性**:与Lombok注解配合使用时注意处理顺序
4. **IDE支持**:建议安装IDEA插件以获得最佳开发体验
## 🤝 贡献指南
欢迎提交Issue和Pull Request来改进这个项目!
## 📄 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件。