From 9dfa701454d6a94690bad39dbb0e38f2a0b31489 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期二, 18 六月 2024 18:08:47 +0800 Subject: [PATCH] build --- src/hooks/web/useI18n.ts | 43 +++++++++++++++++++++++++++++++++---------- 1 files changed, 33 insertions(+), 10 deletions(-) diff --git a/src/hooks/web/useI18n.ts b/src/hooks/web/useI18n.ts index 3c553c9..b1b7ed7 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-06-18 16:12:57 + */ 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,19 @@ const { t, ...methods } = i18n.global; - const tFn: I18nGlobalTranslation = (key: string, ...arg: any[]) => { - if (!key) return ''; - if (!key.includes('.') && !namespace) return key; - - return (t as (arg0: string, ...arg: I18nTranslationRestParameters) => string)( - getKey(namespace, key), - ...(arg as I18nTranslationRestParameters), - ); + 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), + );}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