diff --git a/packages/devui-vue/devui/button/src/use-button.ts b/packages/devui-vue/devui/button/src/use-button.ts
index e3d53c1dc7..b3066eb127 100644
--- a/packages/devui-vue/devui/button/src/use-button.ts
+++ b/packages/devui-vue/devui/button/src/use-button.ts
@@ -2,7 +2,7 @@ import { computed, inject } from 'vue';
 import type { SetupContext } from 'vue';
 import { ButtonProps, UseButtonReturnType, buttonGroupInjectionKey } from './button-types';
 import { useNamespace } from '../../shared/hooks/use-namespace';
-import { isString } from 'lodash';
+import { isString } from 'lodash-es';
 
 export default function useButton(props: ButtonProps, ctx: SetupContext): UseButtonReturnType {
   const ns = useNamespace('button');
diff --git a/packages/devui-vue/devui/cascader/hooks/use-cascader-item.ts b/packages/devui-vue/devui/cascader/hooks/use-cascader-item.ts
index 199efa45ba..340bd1487a 100644
--- a/packages/devui-vue/devui/cascader/hooks/use-cascader-item.ts
+++ b/packages/devui-vue/devui/cascader/hooks/use-cascader-item.ts
@@ -1,7 +1,7 @@
 /**
  * 处理cascader-item中需要的参数
  */
-import { cloneDeep } from 'lodash';
+import { cloneDeep } from 'lodash-es';
 import { ref, reactive, Ref } from 'vue';
 import { CascaderProps, UseCascaderItemCallback, CascaderItem } from '../src/cascader-types';
 
diff --git a/packages/devui-vue/devui/cascader/hooks/use-cascader.ts b/packages/devui-vue/devui/cascader/hooks/use-cascader.ts
index c689daa6eb..4fcc4d8984 100644
--- a/packages/devui-vue/devui/cascader/hooks/use-cascader.ts
+++ b/packages/devui-vue/devui/cascader/hooks/use-cascader.ts
@@ -1,5 +1,5 @@
 import { ref, SetupContext, toRef, reactive, Ref, watch, onMounted } from 'vue';
-import { cloneDeep } from 'lodash';
+import { cloneDeep } from 'lodash-es';
 import { initActiveIndexs, initSingleIptValue } from './use-cascader-single';
 import { initMultipleCascaderItem, initTagList, getMultiModelValues } from './use-cascader-multiple';
 import type { CascaderItem, CascaderValueType, CascaderProps, UseCascaderFn } from '../src/cascader-types';
diff --git a/packages/devui-vue/devui/cascader/hooks/use-filter.ts b/packages/devui-vue/devui/cascader/hooks/use-filter.ts
index 8c789898f4..21eede8ff0 100644
--- a/packages/devui-vue/devui/cascader/hooks/use-filter.ts
+++ b/packages/devui-vue/devui/cascader/hooks/use-filter.ts
@@ -1,4 +1,4 @@
-import { debounce, cloneDeep } from 'lodash';
+import { debounce, cloneDeep } from 'lodash-es';
 import { ref, SetupContext, UnwrapRef, Ref, watch } from 'vue';
 import { initActiveIndexs } from './use-cascader-single';
 import {
diff --git a/packages/devui-vue/devui/cascader/src/cascader.tsx b/packages/devui-vue/devui/cascader/src/cascader.tsx
index 9992a17029..0004d007ff 100644
--- a/packages/devui-vue/devui/cascader/src/cascader.tsx
+++ b/packages/devui-vue/devui/cascader/src/cascader.tsx
@@ -1,5 +1,5 @@
 import { defineComponent, Transition, SetupContext, provide, Teleport, ref, computed } from 'vue';
-import { cloneDeep } from 'lodash';
+import { cloneDeep } from 'lodash-es';
 import { useNamespace } from '../../shared/hooks/use-namespace';
 import DCascaderList from '../components/cascader-list';
 import DMultipleBox from '../components/cascader-multiple/index';
diff --git a/packages/devui-vue/devui/category-search/src/composables/use-category-search.ts b/packages/devui-vue/devui/category-search/src/composables/use-category-search.ts
index 52431aca34..0577414f55 100644
--- a/packages/devui-vue/devui/category-search/src/composables/use-category-search.ts
+++ b/packages/devui-vue/devui/category-search/src/composables/use-category-search.ts
@@ -1,6 +1,6 @@
 import { ref, computed, toRefs, provide, watch, onMounted, reactive } from 'vue';
 import type { Ref, SetupContext } from 'vue';
-import { mergeWith, cloneDeep, merge } from 'lodash';
+import { mergeWith, cloneDeep, merge } from 'lodash-es';
 import RadioMenu from '../components/radio-menu';
 import CheckboxMenu from '../components/checkbox-menu';
 import LabelMenu from '../components/label-menu';
diff --git a/packages/devui-vue/devui/code-editor/src/composables/use-code-editor.ts b/packages/devui-vue/devui/code-editor/src/composables/use-code-editor.ts
index 977cb57ae2..568a9682b4 100644
--- a/packages/devui-vue/devui/code-editor/src/composables/use-code-editor.ts
+++ b/packages/devui-vue/devui/code-editor/src/composables/use-code-editor.ts
@@ -1,5 +1,5 @@
 import { inBrowser } from '../../../shared/utils/common-var';
-import { throttle } from 'lodash';
+import { throttle } from 'lodash-es';
 import { onBeforeMount, onMounted, ref, SetupContext, toRefs, nextTick, watch } from 'vue';
 import { CodeEditorProps, Comment, Decoration, LayoutInfo, PositionInfo } from '../code-editor-types';
 
diff --git a/packages/devui-vue/devui/color-picker/src/color-picker.tsx b/packages/devui-vue/devui/color-picker/src/color-picker.tsx
index 4bf9de0d99..4bce7cfcb1 100644
--- a/packages/devui-vue/devui/color-picker/src/color-picker.tsx
+++ b/packages/devui-vue/devui/color-picker/src/color-picker.tsx
@@ -1,7 +1,7 @@
 import { defineComponent, ref, computed, onMounted, watch, nextTick, provide, unref, readonly, Transition } from 'vue';
 import type { StyleValue, Ref } from 'vue';
 import { computePosition, flip } from '@floating-ui/dom';
-import { throttle } from 'lodash';
+import { throttle } from 'lodash-es';
 import { useReactive, colorPickerResize, isExhibitionColorPicker, changeColorValue } from './utils/composable';
 import { colorPickerProps, ColorPickerProps } from './color-picker-types';
 import colorPanel from './components/color-picker-panel/color-picker-panel';
diff --git a/packages/devui-vue/devui/color-picker/src/components/color-history/color-history.tsx b/packages/devui-vue/devui/color-picker/src/components/color-history/color-history.tsx
index c76eb810f8..ffe92c610d 100644
--- a/packages/devui-vue/devui/color-picker/src/components/color-history/color-history.tsx
+++ b/packages/devui-vue/devui/color-picker/src/components/color-history/color-history.tsx
@@ -4,7 +4,7 @@ import { Icon } from '../../../../icon';
 import './color-history.scss';
 import { fromHexa } from '../../utils/color-utils';
 import { ProvideColorOptions, ColorPickerColor } from '../../utils/color-utils-types';
-import { debounce } from 'lodash';
+import { debounce } from 'lodash-es';
 
 const STORAGE_KEY = 'STORAGE_COLOR_PICKER_HISTORY_KEY';
 const MAX_HISTORY_COUNT = 8;
diff --git a/packages/devui-vue/devui/data-grid/src/composables/use-data-grid-scroll.ts b/packages/devui-vue/devui/data-grid/src/composables/use-data-grid-scroll.ts
index 7d1c3588b8..c5f31e174d 100644
--- a/packages/devui-vue/devui/data-grid/src/composables/use-data-grid-scroll.ts
+++ b/packages/devui-vue/devui/data-grid/src/composables/use-data-grid-scroll.ts
@@ -1,6 +1,6 @@
 import { ref, onMounted, inject } from 'vue';
 import type { Ref } from 'vue';
-import { debounce } from 'lodash';
+import { debounce } from 'lodash-es';
 import { DataGridInjectionKey } from '../data-grid-types';
 import type { InnerColumnConfig, InnerRowData, DataGridContext, ScrollYParams, ScrollXParams } from '../data-grid-types';
 import { getXStartOrEndIndex, getYStartIndex } from '../utils';
diff --git a/packages/devui-vue/devui/data-grid/src/composables/use-data-grid-tree.ts b/packages/devui-vue/devui/data-grid/src/composables/use-data-grid-tree.ts
index bdd124fa88..01b6efd348 100644
--- a/packages/devui-vue/devui/data-grid/src/composables/use-data-grid-tree.ts
+++ b/packages/devui-vue/devui/data-grid/src/composables/use-data-grid-tree.ts
@@ -1,6 +1,6 @@
 import { ref, toRefs } from 'vue';
 import type { SetupContext } from 'vue';
-import { isFunction } from 'lodash';
+import { isFunction } from 'lodash-es';
 import type { DataGridProps, InnerRowData, RowData, IExpandLoadMoreResult } from '../data-grid-types';
 import { generateInnerData } from '../utils';
 
diff --git a/packages/devui-vue/devui/data-grid/src/composables/use-overflow-tooltip.ts b/packages/devui-vue/devui/data-grid/src/composables/use-overflow-tooltip.ts
index b61198f057..8a08b3f96d 100644
--- a/packages/devui-vue/devui/data-grid/src/composables/use-overflow-tooltip.ts
+++ b/packages/devui-vue/devui/data-grid/src/composables/use-overflow-tooltip.ts
@@ -1,5 +1,5 @@
 import { ref } from 'vue';
-import { debounce } from 'lodash';
+import { debounce } from 'lodash-es';
 import type { Placement } from '../../../overlay';
 import type { InnerColumnConfig } from '../data-grid-types';
 
diff --git a/packages/devui-vue/devui/data-grid/src/utils.ts b/packages/devui-vue/devui/data-grid/src/utils.ts
index e7947f7f77..ba94a13dc3 100644
--- a/packages/devui-vue/devui/data-grid/src/utils.ts
+++ b/packages/devui-vue/devui/data-grid/src/utils.ts
@@ -1,6 +1,6 @@
 import { v4 as uuidv4 } from 'uuid';
 import type { Ref } from 'vue';
-import { isFunction } from 'lodash';
+import { isFunction } from 'lodash-es';
 import type { RowData, InnerRowData, RowKey, InnerColumnConfig, ColumnConfig } from './data-grid-types';
 import { ColumnMinWidth } from './const';
 
diff --git a/packages/devui-vue/devui/date-picker-pro/src/composables/use-calendar-panel.ts b/packages/devui-vue/devui/date-picker-pro/src/composables/use-calendar-panel.ts
index a68bd21e4e..72dac6bbd3 100644
--- a/packages/devui-vue/devui/date-picker-pro/src/composables/use-calendar-panel.ts
+++ b/packages/devui-vue/devui/date-picker-pro/src/composables/use-calendar-panel.ts
@@ -4,7 +4,7 @@ import { DAY_DURATION, calendarItemHeight } from '../const';
 import { CalendarDateItem, YearAndMonthItem, UseCalendarPanelReturnType, DatePickerProPanelProps } from '../date-picker-pro-types';
 import dayjs from 'dayjs';
 import type { Dayjs } from 'dayjs';
-import { throttle } from 'lodash';
+import { throttle } from 'lodash-es';
 import useCalendarSelected from './use-calendar-selected';
 
 export default function useCalendarPanel(props: DatePickerProPanelProps, ctx: SetupContext): UseCalendarPanelReturnType {
diff --git a/packages/devui-vue/devui/date-picker-pro/src/composables/use-month-calendar-panel.ts b/packages/devui-vue/devui/date-picker-pro/src/composables/use-month-calendar-panel.ts
index dfe333200c..b8d08d5c27 100644
--- a/packages/devui-vue/devui/date-picker-pro/src/composables/use-month-calendar-panel.ts
+++ b/packages/devui-vue/devui/date-picker-pro/src/composables/use-month-calendar-panel.ts
@@ -3,7 +3,7 @@ import type { SetupContext } from 'vue';
 import { useNamespace } from '../../../shared/hooks/use-namespace';
 import { monthCalendarItemHeight } from '../const';
 import { DatePickerProPanelProps, YearAndMonthItem, UseMonthCalendarPanelReturnType } from '../date-picker-pro-types';
-import { throttle } from 'lodash';
+import { throttle } from 'lodash-es';
 import dayjs from 'dayjs';
 import type { Dayjs } from 'dayjs';
 import useCalendarSelected from './use-calendar-selected';
diff --git a/packages/devui-vue/devui/date-picker-pro/src/composables/use-year-calendar-panel.ts b/packages/devui-vue/devui/date-picker-pro/src/composables/use-year-calendar-panel.ts
index e86a94ac0f..c5f226586d 100644
--- a/packages/devui-vue/devui/date-picker-pro/src/composables/use-year-calendar-panel.ts
+++ b/packages/devui-vue/devui/date-picker-pro/src/composables/use-year-calendar-panel.ts
@@ -1,6 +1,6 @@
 import { ref, onBeforeMount, nextTick, watch } from 'vue';
 import type { SetupContext } from 'vue';
-import { chunk } from 'lodash';
+import { chunk } from 'lodash-es';
 import { useNamespace } from '../../../shared/hooks/use-namespace';
 import { DatePickerProPanelProps, UseYearCalendarPanelReturnType } from '../date-picker-pro-types';
 import dayjs from 'dayjs';
diff --git a/packages/devui-vue/devui/editable-select/src/components/dropdown/dropdown.tsx b/packages/devui-vue/devui/editable-select/src/components/dropdown/dropdown.tsx
index df31fca66e..2b1d757c87 100644
--- a/packages/devui-vue/devui/editable-select/src/components/dropdown/dropdown.tsx
+++ b/packages/devui-vue/devui/editable-select/src/components/dropdown/dropdown.tsx
@@ -4,7 +4,7 @@ import { EditableSelectContext, Option as O, SELECT_KEY } from '../../editable-s
 import Option from '../option/option';
 import Loading from '../../../../loading/src/loading-directive';
 import { useNamespace } from '../../../../shared/hooks/use-namespace';
-import { debounce } from 'lodash';
+import { debounce } from 'lodash-es';
 
 export default defineComponent({
   name: 'DEditableSelectDropdown',
diff --git a/packages/devui-vue/devui/editable-select/src/composables/use-input-event.ts b/packages/devui-vue/devui/editable-select/src/composables/use-input-event.ts
index 9e80e4f056..04d3442358 100644
--- a/packages/devui-vue/devui/editable-select/src/composables/use-input-event.ts
+++ b/packages/devui-vue/devui/editable-select/src/composables/use-input-event.ts
@@ -1,5 +1,5 @@
 import { computed, Ref, SetupContext } from 'vue';
-import { debounce, isFunction } from 'lodash';
+import { debounce, isFunction } from 'lodash-es';
 import { EditableSelectProps } from '../editable-select-types';
 import { States } from './use-select';
 
diff --git a/packages/devui-vue/devui/editable-select/src/composables/use-select.ts b/packages/devui-vue/devui/editable-select/src/composables/use-select.ts
index 6b7f9969da..c64b61e3f0 100644
--- a/packages/devui-vue/devui/editable-select/src/composables/use-select.ts
+++ b/packages/devui-vue/devui/editable-select/src/composables/use-select.ts
@@ -1,7 +1,7 @@
 import { computed, ComputedRef, getCurrentInstance, nextTick, onMounted, reactive, ref, Ref, SetupContext, watch } from 'vue';
 import { EditableSelectProps, Option, Options } from '../editable-select-types';
 import { createI18nTranslate } from '../../../locale/create';
-import { isFunction, isNil } from 'lodash';
+import { isFunction, isNil } from 'lodash-es';
 
 export interface UseSelectStatesReturnType {
   hoveringIndex: number;
diff --git a/packages/devui-vue/devui/editor-md/src/composables/use-editor-md.ts b/packages/devui-vue/devui/editor-md/src/composables/use-editor-md.ts
index d3ae10bb75..2b00c9b6a7 100644
--- a/packages/devui-vue/devui/editor-md/src/composables/use-editor-md.ts
+++ b/packages/devui-vue/devui/editor-md/src/composables/use-editor-md.ts
@@ -1,11 +1,11 @@
-import cloneDeep from 'lodash/cloneDeep';
+import { cloneDeep } from 'lodash-es';
 import { computed, nextTick, onMounted, reactive, Ref, ref, SetupContext, toRefs, watch, onBeforeUnmount } from 'vue';
 import { debounce } from '../../../shared/utils';
 import { EditorMdProps, Mode } from '../editor-md-types';
 import { DEFAULT_TOOLBARS, GET_ALT_KEY } from '../toolbar-config';
 import { parseHTMLStringToDomList } from '../utils';
 import { refreshEditorCursor, _enforceMaxLength } from './helper';
-import { throttle } from 'lodash';
+import { throttle } from 'lodash-es';
 
 export function useEditorMd(props: EditorMdProps, ctx: SetupContext) {
   const {
@@ -236,10 +236,6 @@ export function useEditorMd(props: EditorMdProps, ctx: SetupContext) {
       }
     }
     if (cursorHintStart > -1 && hint[0]) {
-      const spacePosition = value.lastIndexOf(' ', cursor.ch);
-      if (spacePosition > cursorHintStart) {
-        return;
-      }
       /* cursor元素将动态变更，设置settimeout保持其可以获取到值 */
       setTimeout(() => {
         showHint();
diff --git a/packages/devui-vue/devui/editor-md/src/plugins/checkbox.ts b/packages/devui-vue/devui/editor-md/src/plugins/checkbox.ts
index 83b62c9207..018c556845 100644
--- a/packages/devui-vue/devui/editor-md/src/plugins/checkbox.ts
+++ b/packages/devui-vue/devui/editor-md/src/plugins/checkbox.ts
@@ -1,4 +1,4 @@
-import { extend } from 'lodash';
+import { extend } from 'lodash-es';
 
 const checkboxReplace = function (md: any, options: any) {
   let lastId: number;
diff --git a/packages/devui-vue/devui/editor-md/src/plugins/mermaid.ts b/packages/devui-vue/devui/editor-md/src/plugins/mermaid.ts
index ee80aa9eef..228e73a7d4 100644
--- a/packages/devui-vue/devui/editor-md/src/plugins/mermaid.ts
+++ b/packages/devui-vue/devui/editor-md/src/plugins/mermaid.ts
@@ -1,4 +1,4 @@
-import Mermaid from 'mermaid/dist/mermaid.js';
+import Mermaid from 'mermaid/dist/mermaid.min.js';
 
 const DEFAULT_CONFIG = {
   startOnLoad: false,
diff --git a/packages/devui-vue/devui/editor-md/src/plugins/toc.ts b/packages/devui-vue/devui/editor-md/src/plugins/toc.ts
index 19a8cbdb3b..d960aabd55 100644
--- a/packages/devui-vue/devui/editor-md/src/plugins/toc.ts
+++ b/packages/devui-vue/devui/editor-md/src/plugins/toc.ts
@@ -1,4 +1,4 @@
-import cloneDeep from 'lodash/cloneDeep';
+import { cloneDeep } from 'lodash-es';
 import Token from 'markdown-it/lib/token';
 
 const TOC = '[toc]';
diff --git a/packages/devui-vue/devui/form/src/components/form-item/use-form-item.ts b/packages/devui-vue/devui/form/src/components/form-item/use-form-item.ts
index 69403c4424..5bd51a2096 100644
--- a/packages/devui-vue/devui/form/src/components/form-item/use-form-item.ts
+++ b/packages/devui-vue/devui/form/src/components/form-item/use-form-item.ts
@@ -1,5 +1,5 @@
 import { computed, inject, nextTick, onMounted, ref } from 'vue';
-import { castArray, get, isFunction, clone, isEqual, set } from 'lodash';
+import { castArray, get, isFunction, clone, isEqual, set } from 'lodash-es';
 import Schema from 'async-validator';
 import type { ComputedRef, Ref } from 'vue';
 import type { RuleItem } from 'async-validator';
diff --git a/packages/devui-vue/devui/form/src/composables/use-form-validation.ts b/packages/devui-vue/devui/form/src/composables/use-form-validation.ts
index 3876f7e6a5..d3e4178b94 100644
--- a/packages/devui-vue/devui/form/src/composables/use-form-validation.ts
+++ b/packages/devui-vue/devui/form/src/composables/use-form-validation.ts
@@ -1,4 +1,4 @@
-import { castArray } from 'lodash';
+import { castArray } from 'lodash-es';
 import type { ValidateFieldsError } from 'async-validator';
 import { UseFormValidation } from '../form-types';
 import { FormItemContext, FormValidateCallback, FormValidateResult } from '../components/form-item/form-item-types';
diff --git a/packages/devui-vue/devui/git-graph/src/git-graph-class.ts b/packages/devui-vue/devui/git-graph/src/git-graph-class.ts
index 05d5da3a71..9934c6e361 100644
--- a/packages/devui-vue/devui/git-graph/src/git-graph-class.ts
+++ b/packages/devui-vue/devui/git-graph/src/git-graph-class.ts
@@ -1,4 +1,4 @@
-import { cloneDeep } from "lodash";
+import { cloneDeep } from "lodash-es";
 import { CommitInfo, GitGraphData } from "./git-graph-types";
 
 export class GitGraph {
diff --git a/packages/devui-vue/devui/locale/create.ts b/packages/devui-vue/devui/locale/create.ts
index 50c908be6d..4e4bd18c40 100644
--- a/packages/devui-vue/devui/locale/create.ts
+++ b/packages/devui-vue/devui/locale/create.ts
@@ -16,7 +16,7 @@ export function get(object: any, path: string) {
 export function createI18nTranslate(name: string, app, newPrefix?: string) {
   const prefix = newPrefix || camelize(name) + '.';
   return (path: string): any => {
-    const messages = app?.appContext.config.globalProperties.langMessages?.value || Locale.messages();
+    const messages = app?.appContext.config.globalProperties.langMessages || Locale.messages();
     const message = get(messages, prefix + path) || get(messages, path);
     return message;
   };
diff --git a/packages/devui-vue/devui/locale/index.ts b/packages/devui-vue/devui/locale/index.ts
index 9250e28549..53c4a9c1a3 100644
--- a/packages/devui-vue/devui/locale/index.ts
+++ b/packages/devui-vue/devui/locale/index.ts
@@ -1,35 +1,44 @@
 import { App, reactive, ref } from 'vue';
-import { deepAssign } from '../shared/utils/deep-assign';
 import zhCN from './lang/zh-cn';
+import enUS from './lang/en-us';
 
 const lang = ref('zh-CN');
-let langMessages = reactive({
-  [lang.value]: zhCN
+const nowApp = ref(); // 用来存储install注册实例的app
+let langMessages = reactive<{[index: string]: any}> ({
+  ['zh-CN']: zhCN,
+  ['en-US']: enUS,
 });
 
 const Locale = {
-  messages(): Record<string, unknown> {
-    return langMessages[lang.value];
+  messages(language = lang.value): Record<string, unknown> {
+    return langMessages[language];
   },
-
   lang(): string {
     return lang.value;
   },
-
-  use(newLang: string, newMessages?: Record<string, unknown>): void {
+  // 切换语言
+  use(newLang: string): void {
+    const app = nowApp.value;
     lang.value = newLang;
-    this.add({ [newLang]: newMessages });
+    app.config.globalProperties.langMessages = Locale.messages();
   },
-
-  add(newMessages = {}): void {
-    langMessages = deepAssign(langMessages, newMessages);
+  // 在列表中增加一种语言，相同则覆盖 (可以在不影响加载的情况下添加，提高切换性能)
+  add(newMessages: Record<string, unknown>): void {
+    langMessages = {
+      ...langMessages,
+      ...newMessages
+    };
   },
 };
-
+// 导出
 export { Locale };
 
 export default {
-  install(app: App): void {
-    app.config.globalProperties.langMessages = ref(Locale.messages());
+  title: '国际化',
+  category: '基础',
+  status: '100%',
+  install(app: App, language?: string): void {
+    app.config.globalProperties.langMessages = Locale.messages(language);
+    nowApp.value = app;
   }
 };
diff --git a/packages/devui-vue/devui/mention/src/mention.tsx b/packages/devui-vue/devui/mention/src/mention.tsx
index 9b96511ca3..de5aa717a2 100644
--- a/packages/devui-vue/devui/mention/src/mention.tsx
+++ b/packages/devui-vue/devui/mention/src/mention.tsx
@@ -4,7 +4,7 @@ import DTextarea from '../../textarea/src/textarea';
 import DIcon from '../../icon/src/icon';
 import './mention.scss';
 import { useNamespace } from '../../shared/hooks/use-namespace';
-import { debounce } from 'lodash';
+import { debounce } from 'lodash-es';
 
 export default defineComponent({
   name: 'DMention',
diff --git a/packages/devui-vue/devui/popover/src/use-popover.ts b/packages/devui-vue/devui/popover/src/use-popover.ts
index 16face2c76..9a8d0f47c8 100644
--- a/packages/devui-vue/devui/popover/src/use-popover.ts
+++ b/packages/devui-vue/devui/popover/src/use-popover.ts
@@ -1,6 +1,6 @@
 import { toRefs, ref, computed, watch, onUnmounted, onMounted } from 'vue';
 import type { Ref, ComputedRef } from 'vue';
-import { debounce } from 'lodash';
+import { debounce } from 'lodash-es';
 import { PopoverProps, UsePopoverEvent } from './popover-types';
 
 const TransformOriginMap: Record<string, string> = {
diff --git a/packages/devui-vue/devui/quadrant-diagram/src/components/axis/index.tsx b/packages/devui-vue/devui/quadrant-diagram/src/components/axis/index.tsx
index 7a686ba11c..d580518a2a 100644
--- a/packages/devui-vue/devui/quadrant-diagram/src/components/axis/index.tsx
+++ b/packages/devui-vue/devui/quadrant-diagram/src/components/axis/index.tsx
@@ -2,7 +2,7 @@ import { defineComponent, toRefs, onMounted, reactive, ref, watch } from 'vue';
 import { IAxisConfigs, IViewConfigs } from '../../../type';
 import { AXIS_TITLE_SPACE } from '../../../config';
 import { quadrantDiagramAxisProps, QuadrantDiagramAxisProps } from './types';
-import { debounce } from 'lodash';
+import { debounce } from 'lodash-es';
 
 import './index.scss';
 
diff --git a/packages/devui-vue/devui/search/src/composables/use-search-keydown.ts b/packages/devui-vue/devui/search/src/composables/use-search-keydown.ts
index 220f65693e..684350795d 100644
--- a/packages/devui-vue/devui/search/src/composables/use-search-keydown.ts
+++ b/packages/devui-vue/devui/search/src/composables/use-search-keydown.ts
@@ -3,7 +3,7 @@
  */
 import { SetupContext, Ref } from 'vue';
 import { KeydownReturnTypes, SearchProps } from '../search-types';
-import { debounce } from 'lodash';
+import { debounce } from 'lodash-es';
 
 type EmitProps = 'update:modelValue' | 'search';
 
diff --git a/packages/devui-vue/devui/select/src/composables/use-select-content.ts b/packages/devui-vue/devui/select/src/composables/use-select-content.ts
index 7936c16c55..03df4044e5 100644
--- a/packages/devui-vue/devui/select/src/composables/use-select-content.ts
+++ b/packages/devui-vue/devui/select/src/composables/use-select-content.ts
@@ -4,7 +4,7 @@ import { FORM_ITEM_TOKEN } from '../../../form';
 import { OptionObjectItem } from '../select-types';
 import { useNamespace } from '../../../shared/hooks/use-namespace';
 import { className } from '../utils';
-import { isFunction } from 'lodash';
+import { isFunction } from 'lodash-es';
 import { createI18nTranslate } from '../../../locale/create';
 
 export default function useSelectContent() {
diff --git a/packages/devui-vue/devui/select/src/use-select.ts b/packages/devui-vue/devui/select/src/use-select.ts
index b9c72aedb3..652abc6182 100644
--- a/packages/devui-vue/devui/select/src/use-select.ts
+++ b/packages/devui-vue/devui/select/src/use-select.ts
@@ -4,7 +4,7 @@ import { SelectProps, OptionObjectItem } from './select-types';
 import { className, KeyType } from './utils';
 import { useNamespace } from '../../shared/hooks/use-namespace';
 import { onClickOutside } from '@vueuse/core';
-import { isFunction, debounce } from 'lodash';
+import { isFunction, debounce } from 'lodash-es';
 import { FORM_ITEM_TOKEN, FORM_TOKEN } from '../../form';
 
 export default function useSelect(
diff --git a/packages/devui-vue/devui/textarea/src/composables/use-textarea-autosize.ts b/packages/devui-vue/devui/textarea/src/composables/use-textarea-autosize.ts
index 583a31ec46..3c39ff1e29 100644
--- a/packages/devui-vue/devui/textarea/src/composables/use-textarea-autosize.ts
+++ b/packages/devui-vue/devui/textarea/src/composables/use-textarea-autosize.ts
@@ -1,7 +1,7 @@
 import { computed, ShallowRef, shallowRef } from 'vue';
 import { TextareaProps, UseTextareaAutosize } from '../textarea-types';
 import type { StyleValue } from 'vue';
-import { isObject } from 'lodash';
+import { isObject } from 'lodash-es';
 import { computeTextareaHeight } from '../utils';
 
 export function useTextareaAutosize(props: TextareaProps, textarea: ShallowRef<HTMLTextAreaElement | undefined>): UseTextareaAutosize {
diff --git a/packages/devui-vue/devui/textarea/src/utils.ts b/packages/devui-vue/devui/textarea/src/utils.ts
index 9f37e03a11..d684d39e59 100644
--- a/packages/devui-vue/devui/textarea/src/utils.ts
+++ b/packages/devui-vue/devui/textarea/src/utils.ts
@@ -1,4 +1,4 @@
-import { isNumber } from 'lodash';
+import { isNumber } from 'lodash-es';
 
 let tempTextarea: HTMLTextAreaElement | undefined = undefined;
 
diff --git a/packages/devui-vue/devui/tooltip/src/use-tooltip.ts b/packages/devui-vue/devui/tooltip/src/use-tooltip.ts
index 1b97c5d66f..d62f3e670e 100644
--- a/packages/devui-vue/devui/tooltip/src/use-tooltip.ts
+++ b/packages/devui-vue/devui/tooltip/src/use-tooltip.ts
@@ -1,6 +1,6 @@
 import { onMounted, ref, toRefs, computed, watch } from 'vue';
 import type { Ref } from 'vue';
-import { debounce } from 'lodash';
+import { debounce } from 'lodash-es';
 import { TooltipProps, BasePlacement, UseTooltipFn } from './tooltip-types';
 
 export const transformOriginMap: Record<BasePlacement, string> = {
diff --git a/packages/devui-vue/devui/tree/src/composables/use-dragdrop.ts b/packages/devui-vue/devui/tree/src/composables/use-dragdrop.ts
index d4ff239063..ed0393df52 100644
--- a/packages/devui-vue/devui/tree/src/composables/use-dragdrop.ts
+++ b/packages/devui-vue/devui/tree/src/composables/use-dragdrop.ts
@@ -2,7 +2,7 @@ import { reactive, computed } from 'vue';
 import type { Ref } from 'vue';
 import type { TreeProps } from '../tree-types';
 import type { DragState, IUseDraggable, IDropNode, IInnerTreeNode, ITreeNode, IDropType } from './use-tree-types';
-import cloneDeep from 'lodash/cloneDeep';
+import { cloneDeep } from 'lodash-es';
 import { useNamespace } from '../../../shared/hooks/use-namespace';
 import { formatBasicTree } from '../utils';
 const ns = useNamespace('tree');
diff --git a/packages/devui-vue/devui/tree/src/composables/use-search-filter.ts b/packages/devui-vue/devui/tree/src/composables/use-search-filter.ts
index b835830a89..d05d867a07 100644
--- a/packages/devui-vue/devui/tree/src/composables/use-search-filter.ts
+++ b/packages/devui-vue/devui/tree/src/composables/use-search-filter.ts
@@ -1,6 +1,6 @@
 import { Ref, ref } from 'vue';
 import { IInnerTreeNode, IUseCore, IUseSearchFilter, SearchFilterOption } from './use-tree-types';
-import { trim } from 'lodash';
+import { trim } from 'lodash-es';
 export function useSearchFilter() {
   return function useSearchFilterFn(data: Ref<IInnerTreeNode[]>, core: IUseCore): IUseSearchFilter {
     const { clearNodeMap, getExpendedTree } = core;
diff --git a/packages/devui-vue/docs/.vitepress/demo/Demo.vue b/packages/devui-vue/docs/.vitepress/demo/Demo.vue
index a7d72179b4..e5447ed5a4 100644
--- a/packages/devui-vue/docs/.vitepress/demo/Demo.vue
+++ b/packages/devui-vue/docs/.vitepress/demo/Demo.vue
@@ -52,7 +52,7 @@
 
 <script>
 import { useRoute, useData } from 'vitepress';
-import { throttle } from 'lodash';
+import { throttle } from 'lodash-es';
 import copy from 'clipboard-copy';
 import { ref, computed, watch, onMounted, onBeforeUnmount, nextTick, defineAsyncComponent } from 'vue';
 export default {
diff --git a/packages/devui-vue/docs/.vitepress/devui-theme/components/BackToTop.vue b/packages/devui-vue/docs/.vitepress/devui-theme/components/BackToTop.vue
index 8c200837bf..8f44932ef2 100644
--- a/packages/devui-vue/docs/.vitepress/devui-theme/components/BackToTop.vue
+++ b/packages/devui-vue/docs/.vitepress/devui-theme/components/BackToTop.vue
@@ -22,7 +22,7 @@
 </template>
 
 <script lang="ts">
-import { debounce } from 'lodash';
+import { debounce } from 'lodash-es';
 import { defineComponent, onMounted, computed, ref } from 'vue';
 export default defineComponent({
   name: 'BackToTop',
diff --git a/packages/devui-vue/docs/.vitepress/devui-theme/components/NavBar.vue b/packages/devui-vue/docs/.vitepress/devui-theme/components/NavBar.vue
index 73ad72e15d..f5becbfc56 100644
--- a/packages/devui-vue/docs/.vitepress/devui-theme/components/NavBar.vue
+++ b/packages/devui-vue/docs/.vitepress/devui-theme/components/NavBar.vue
@@ -11,8 +11,6 @@ import ZhLang from './icons/ZhLang.vue'
 import EnLang from './icons/EnLang.vue'
 import ThemePicker from './ThemePicker.vue'
 import { Locale } from '@devui/locale'
-import enUS from '@devui/locale/lang/en-us'
-import zhCN from '@devui/locale/lang/zh-cn'
 import { LANG_KEY, CURRENT_LANG, ZH_CN, EN_US } from '../const'
 
 // 主题切换
@@ -66,16 +64,14 @@ const LANG_MAP = {
 }
 
 const currentLang = ref(CURRENT_LANG);
-const app = getCurrentInstance();
 const switchLang = () => {
   if (currentLang.value === ZH_CN) {
-    Locale.use(EN_US, enUS);
+    Locale.use(EN_US);
     currentLang.value = EN_US;
   } else {
-    Locale.use(ZH_CN, zhCN);
+    Locale.use(ZH_CN);
     currentLang.value = ZH_CN;
   }
-  app.appContext.config.globalProperties.langMessages.value = Locale.messages();
 };
 </script>
 
diff --git a/packages/devui-vue/docs/.vitepress/devui-theme/components/match-query.js b/packages/devui-vue/docs/.vitepress/devui-theme/components/match-query.js
index 5678e3771e..f0260d2c17 100644
--- a/packages/devui-vue/docs/.vitepress/devui-theme/components/match-query.js
+++ b/packages/devui-vue/docs/.vitepress/devui-theme/components/match-query.js
@@ -1,4 +1,4 @@
-import get from 'lodash.get'
+import { get } from 'lodash-es';
 
 export default (query, page, additionalStr = null) => {
   let domain = get(page, 'title', '')
diff --git a/packages/devui-vue/docs/components/overview/index.md b/packages/devui-vue/docs/components/overview/index.md
index 72bfd738f7..cc72c977f0 100644
--- a/packages/devui-vue/docs/components/overview/index.md
+++ b/packages/devui-vue/docs/components/overview/index.md
@@ -32,7 +32,7 @@ Vue DevUI 组件库包含 77 个灵活、易用、功能强大的组件。
 </div>
 
 <script setup>
-  import { groupBy, startCase } from 'lodash';
+  import { groupBy, startCase } from 'lodash-es';
   import { componentFeatureData, STATUS_MAP, CATEGORY_MAP } from './feature-data';
   import { CONTRIBUTORS_MAP } from '../../.vitepress/devui-theme/components/PageContributorConfig';
 
diff --git a/packages/devui-vue/docs/theme-guide/index.md b/packages/devui-vue/docs/theme-guide/index.md
index a1b027d818..7e1a6d0b0c 100644
--- a/packages/devui-vue/docs/theme-guide/index.md
+++ b/packages/devui-vue/docs/theme-guide/index.md
@@ -139,3 +139,38 @@ export class Theme {
   isDark?: boolean;               // 是否是深色主题
 }
 ```
+
+# 组件国际化
+ 
+我们提供了一种比较简洁的方法，可以方便的进行组件的国际化。
+内置支持中文（zh-CN）和英文（en-US）两种，也支持自定义其他语言，并且可以在添加的语言列表中任意随意切换。
+
+<a href="https://github.com/DevCloudFE/vue-devui/tree/dev/packages/devui-vue/devui/locale/lang" target="_blank">多语言文件格式</a>
+
+在main.ts中引用并注册即可（不调用则默认是中文）:
+
+
+ #### 初始化
+
+```ts
+import { createApp } from 'vue';
+import LocalInstall from 'vue-devui/locale';
+const app = createApp(App);
+// 直接初始化使用
+app.use(LocalInstall);
+
+// 指定语言初始化使用
+app.use(LocalInstall, 'en-US');
+```
+
+ #### 切换语言
+```ts
+import { Locale } from 'vue-devui/locale';
+Locale.use('zh-CN');
+
+// 使用自定义语言，假如你有一个多语言文件为jaJP（具体的文件格式参照上述链接中的多语言文件格式）
+Locale.add({ 'ja-JP': jaJP });
+Locale.use('ja-JP');
+```
+
+有些组件暂未完备国际化配置，欢迎各位同学查漏补缺，[加入我们](/contributing/)，贡献代码。
\ No newline at end of file
