From 76f4824d2b447cbb80e5476289448898a2b55b0d Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Thu, 28 Nov 2024 21:07:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20i18n=20$t=E6=96=B9=E6=B3=95=E6=94=AF?= =?UTF-8?q?=E6=8C=81ts=E7=B1=BB=E5=9E=8B=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lang/index.ts | 6 ++++-- src/types/module.d.ts | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/lang/index.ts b/src/lang/index.ts index 3e69cee..4f8e74c 100644 --- a/src/lang/index.ts +++ b/src/lang/index.ts @@ -2,8 +2,8 @@ import { createI18n } from 'vue-i18n'; import { LanguageEnum } from '@/enums/LanguageEnum'; -import zh_CN from "@/lang/zh_CN"; -import en_US from "@/lang/en_US"; +import zh_CN from '@/lang/zh_CN'; +import en_US from '@/lang/en_US'; /** * 获取当前语言 @@ -29,3 +29,5 @@ const i18n = createI18n({ }); export default i18n; + +export type LanguageType = typeof zh_CN; diff --git a/src/types/module.d.ts b/src/types/module.d.ts index bc2f16b..9942657 100644 --- a/src/types/module.d.ts +++ b/src/types/module.d.ts @@ -8,6 +8,7 @@ import { useDict } from '@/utils/dict'; import { handleTree, addDateRange, selectDictLabel, selectDictLabels, parseTime } from '@/utils/ruoyi'; import { getConfigKey, updateConfigByKey } from '@/api/system/config'; import { download as rd } from '@/utils/request'; +import type { LanguageType } from '@/lang'; export {}; @@ -20,6 +21,11 @@ declare module '@vue/runtime-core' { $auth: typeof auth; $cache: typeof cache; animate: typeof animate; + /** + * i18n $t方法支持ts类型提示 + * @param key i18n key + */ + $t(key: ObjKeysToUnion): string; useDict: typeof useDict; addDateRange: typeof addDateRange; @@ -33,6 +39,16 @@ declare module '@vue/runtime-core' { } } +/** + * { a: 1, b: { ba: { baa: 1, bab: 2 }, bb: 2} } ---> a | b.ba.baa | b.ba.bab | b.bb + * https://juejin.cn/post/7280062870670606397 + */ +export type ObjKeysToUnion = T extends object + ? { + [K in keyof T]: ObjKeysToUnion; + }[keyof T] + : P; + declare module 'vform3-builds' { const content: any; export = content;