From 04c89920754329dfcc3b71dd12e236da18c245c7 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期五, 10 一月 2025 09:15:58 +0800 Subject: [PATCH] 语言更新 --- src/hooks/web/useI18n.ts | 39 ++++++++++++++++++++++++++++++--------- 1 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/hooks/web/useI18n.ts b/src/hooks/web/useI18n.ts index 3c553c9..6626af1 100644 --- a/src/hooks/web/useI18n.ts +++ b/src/hooks/web/useI18n.ts @@ -1,4 +1,13 @@ +/* + * @Description: file content + * @Author: Ben Lin + * @version: + * @Date: 2024-06-18 15:09:47 + * @LastEditors: Ben Lin + * @LastEditTime: 2024-07-17 03:58:09 + */ import { i18n } from '@/locales/setupI18n'; +import { isObject, isString } from '/@/utils/is'; type I18nGlobalTranslation = { (key: string): string; @@ -9,6 +18,7 @@ (key: string, named: Record<string, unknown>): string; }; +type TigerLocale = { Key: string; Args: unknown[] }; type I18nTranslationRestParameters = [string, any]; function getKey(namespace: string | undefined, key: string) { @@ -25,8 +35,16 @@ t: I18nGlobalTranslation; } { const normalFn = { - t: (key: string) => { - return getKey(namespace, key); + t: (key: string | TigerLocale) => { + if (isString(key)) { + return getKey(namespace, key); + } else if (isObject(key)) { + if (!key) return ''; + if (!key.Key) return ''; + return getKey(namespace, key.Key); + } else { + return key; + } }, }; @@ -36,14 +54,17 @@ const { t, ...methods } = i18n.global; - const tFn: I18nGlobalTranslation = (key: string, ...arg: any[]) => { - if (!key) return ''; - if (!key.includes('.') && !namespace) return key; + const tFn: I18nGlobalTranslation = (key: string | TigerLocale, ...arg: any[]) => { + if (isString(key)) { + if (!key) return ''; + if (!key.includes('.') && !namespace) return key; - return (t as (arg0: string, ...arg: I18nTranslationRestParameters) => string)( - getKey(namespace, key), - ...(arg as I18nTranslationRestParameters), - ); + return t(getKey(namespace, key), ...(arg as I18nTranslationRestParameters)); + } else if (isObject(key)) { + if (!key) return ''; + if (!key.Key) return ''; + return t(getKey(namespace, key.Key), key.Args); + } }; return { ...methods, -- Gitblit v1.9.3