# 字典翻译模块 自动翻译实体类中的字典字段,支持多种翻译策略。 ## 引入依赖 ```xml com.mdframe.forge forge-starter-trans ``` ## 注解使用 ### @DictTrans 类注解 启用类的字典翻译能力: ```java @DictTrans public class UserVO { // ... } ``` ### @TransField 字段注解 标记需要翻译的字段: ```java @DictTrans public class UserVO { private Integer status; @TransField(dictType = "sys_status") private String statusName; // 自动翻译 status 字段 @TransField(expression = "userCache.getById(userId).name") private String userName; // 表达式翻译 } ``` | 属性 | 说明 | |------|------| | dictType | 字典类型 | | expression | SpEL 表达式 | | sourceField | 源字段(默认同名字段去掉 Name 后缀) | ## 使用示例 ### 字典翻译 ```java @DictTrans public class OrderVO { private Integer status; @TransField(dictType = "order_status") private String statusName; private Integer payType; @TransField(dictType = "pay_type") private String payTypeName; } // 调用翻译 @Autowired private TransManager transManager; public List listOrders() { List orders = orderMapper.selectList(); transManager.translate(orders); // 自动翻译 return orders; } ``` ### 表达式翻译 ```java @DictTrans public class TaskVO { private Long userId; @TransField(expression = "userCache.getById(userId).nickname") private String userName; private Long deptId; @TransField(expression = "deptCache.getById(deptId).name") private String deptName; } ``` ### 枚举翻译 ```java public enum Status { ENABLE(1, "启用"), DISABLE(0, "禁用"); private final Integer code; private final String desc; } @DictTrans public class UserVO { private Status status; @TransField private String statusName; // 自动翻译枚举 } ``` ## SPI 扩展 ### DictValueProvider 自定义字典值提供者: ```java @Component public class MyDictValueProvider implements DictValueProvider { @Override public String getDictLabel(String dictType, String dictValue) { // 返回字典标签 DictData dict = dictMapper.selectByTypeAndValue(dictType, dictValue); return dict != null ? dict.getDictLabel() : null; } @Override public int getOrder() { return 0; } } ``` ## TransManager API ```java @Autowired private TransManager transManager; // 翻译单个对象 transManager.translate(userVO); // 翻译列表 transManager.translate(userList); // 翻译并返回新对象 UserVO translated = transManager.translateAndReturn(userVO); ```