# 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) 文件。