|
|
|
@ -1,6 +1,21 @@ |
|
|
|
import { i18n } from '/@/locales/setupI18n'; |
|
|
|
|
|
|
|
export function useI18n(namespace?: string) { |
|
|
|
type I18nGlobalTranslation = { |
|
|
|
(key: string): string; |
|
|
|
(key: string, locale: string): string; |
|
|
|
(key: string, locale: string, list: unknown[]): string; |
|
|
|
(key: string, locale: string, named: Record<string, unknown>): string; |
|
|
|
(key: string, list: unknown[]): string; |
|
|
|
(key: string, named: Record<string, unknown>): string; |
|
|
|
}; |
|
|
|
|
|
|
|
type I18nTranslationRestParameters = [string, any]; |
|
|
|
|
|
|
|
export function useI18n( |
|
|
|
namespace?: string |
|
|
|
): { |
|
|
|
t: I18nGlobalTranslation; |
|
|
|
} { |
|
|
|
function getKey(key: string) { |
|
|
|
if (!namespace) { |
|
|
|
return key; |
|
|
|
@ -22,9 +37,9 @@ export function useI18n(namespace?: string) { |
|
|
|
|
|
|
|
const { t, ...methods } = i18n.global; |
|
|
|
|
|
|
|
const tFn: typeof t = (key: string, ...arg: any) => { |
|
|
|
const tFn: I18nGlobalTranslation = (key: string, ...arg: any[]) => { |
|
|
|
if (!key) return ''; |
|
|
|
return t(getKey(key), ...(arg as Parameters<typeof t>)); |
|
|
|
return t(getKey(key), ...(arg as I18nTranslationRestParameters)); |
|
|
|
}; |
|
|
|
return { |
|
|
|
...methods, |
|
|
|
|