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