| | |
| | | /* |
| | | * @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; |
| | |
| | | (key: string, named: Record<string, unknown>): string; |
| | | }; |
| | | |
| | | type TigerLocale = { Key: string; Args: unknown[] }; |
| | | type I18nTranslationRestParameters = [string, any]; |
| | | |
| | | function getKey(namespace: string | undefined, key: string) { |
| | |
| | | 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; |
| | | } |
| | | }, |
| | | }; |
| | | |
| | |
| | | |
| | | 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, |