diff --git a/coder-common-thin-plugins/coder-common-thin-dict/pom.xml b/coder-common-thin-plugins/coder-common-thin-dict/pom.xml
new file mode 100644
index 0000000..f30e5d8
--- /dev/null
+++ b/coder-common-thin-plugins/coder-common-thin-dict/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+ org.leocoder.thin
+ coder-common-thin-plugins
+ ${revision}
+
+
+ coder-common-thin-dict
+ coder-common-thin-dict
+ 字典翻译插件
+
+
+
+
+ org.leocoder.thin
+ coder-common-thin-common
+ ${revision}
+
+
+
+ org.leocoder.thin
+ coder-common-thin-model
+ ${revision}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+
\ No newline at end of file
diff --git a/coder-common-thin-plugins/coder-common-thin-dict/src/main/java/org/leocoder/thin/dict/anno/EnableCoderDict.java b/coder-common-thin-plugins/coder-common-thin-dict/src/main/java/org/leocoder/thin/dict/anno/EnableCoderDict.java
new file mode 100644
index 0000000..1567534
--- /dev/null
+++ b/coder-common-thin-plugins/coder-common-thin-dict/src/main/java/org/leocoder/thin/dict/anno/EnableCoderDict.java
@@ -0,0 +1,16 @@
+package org.leocoder.thin.dict.anno;
+
+import org.leocoder.thin.common.utils.cache.RedisUtil;
+import org.leocoder.thin.dict.aspect.CoderDictAspect;
+import org.springframework.context.annotation.Import;
+
+import java.lang.annotation.*;
+
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Inherited
+@Import({CoderDictAspect.class, RedisUtil.class})
+public @interface EnableCoderDict {
+
+}
\ No newline at end of file
diff --git a/coder-common-thin-plugins/coder-common-thin-dict/src/main/java/org/leocoder/thin/dict/aspect/CoderDictAspect.java b/coder-common-thin-plugins/coder-common-thin-dict/src/main/java/org/leocoder/thin/dict/aspect/CoderDictAspect.java
new file mode 100644
index 0000000..b8cf5b5
--- /dev/null
+++ b/coder-common-thin-plugins/coder-common-thin-dict/src/main/java/org/leocoder/thin/dict/aspect/CoderDictAspect.java
@@ -0,0 +1,212 @@
+package org.leocoder.thin.dict.aspect;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.leocoder.thin.common.anno.CoderDict;
+import org.leocoder.thin.common.anno.CoderDictClass;
+import org.leocoder.thin.common.constants.CoderCacheConstants;
+import org.leocoder.thin.common.utils.cache.RedisUtil;
+import org.leocoder.thin.domain.pojo.system.SysDictData;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Leocoder
+ * @description [CoderDictAspect]
+ */
+@Aspect
+@Order(4)
+@Component
+@Slf4j
+public class CoderDictAspect {
+
+ private Map dictMap = new HashMap<>();
+
+ @Resource
+ private RedisUtil redisUtil;
+
+ @Pointcut("@annotation(org.leocoder.thin.common.anno.CoderDictClass)")
+ public void logPointCut() {
+ }
+
+ /**
+ * @description [翻译数据]
+ * 需要处理的数据类型:
+ * 1、分页数据R>
+ * 2、普通列表R>
+ * 3、普通数据R
+ * @author Leocoder
+ */
+ @Around("@annotation(CoderDictClass)")
+ public Object CoderTypeDictTranslation(final ProceedingJoinPoint proceedingJoinPoint, CoderDictClass CoderDictClass) throws Throwable {
+ Object proceed = proceedingJoinPoint.proceed();
+ if (ObjectUtils.isEmpty(proceed)) {
+ return proceed;
+ }
+ if (proceed instanceof List) {
+ // 数据字典翻译
+ List