useTranslate.ts 508 B

123456789101112
  1. import { camelCase, getPropByPath, isDef, isFunction } from '../common/util'
  2. import Locale from '../../locale'
  3. export const useTranslate = (name?: string) => {
  4. const prefix = name ? camelCase(name) + '.' : ''
  5. const translate = (key: string, ...args: unknown[]) => {
  6. const currentMessages = Locale.messages()
  7. const message = getPropByPath(currentMessages, prefix + key)
  8. return isFunction(message) ? message(...args) : isDef(message) ? message : `${prefix}${key}`
  9. }
  10. return { translate }
  11. }