Ben Lin
2024-06-25 f73947395184fd635df3d74c1c4b2701d0c708c1
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,