diff --git a/packages/components/src/config-provider/useLocale.ts b/packages/components/src/config-provider/useLocale.ts new file mode 100644 index 00000000..2745600e --- /dev/null +++ b/packages/components/src/config-provider/useLocale.ts @@ -0,0 +1,21 @@ +import { Locale } from './config-provider.types'; +import { ConfigContext } from './config.context'; +import { useContext, useMemo } from 'react'; + +export function useLocale(): Locale; +export function useLocale(name: K): Locale[K]; +export function useLocale( + name: K, + presetLocale: Locale[K], +): Required; +export function useLocale(name?: keyof Locale, presetLocale?: object) { + const locale = useContext(ConfigContext).locale; + return useMemo(() => { + if (!name) return locale; + + const componentLocale = locale[name]; + if (!presetLocale) return componentLocale; + + return { ...presetLocale, ...componentLocale }; + }, [name, locale, presetLocale]); +}