element-plus
Version:
A Component Library for Vue 3
1 lines • 2.9 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-locale/index.ts"],"sourcesContent":["import { computed, inject, isRef, ref, unref } from 'vue'\nimport { get } from 'lodash-unified'\nimport English from '@element-plus/locale/lang/en'\n\nimport type { MaybeRef } from '@vueuse/core'\nimport type { InjectionKey, Ref } from 'vue'\nimport type { FieldPath } from '@element-plus/utils'\nimport type { Language } from '@element-plus/locale'\n\nexport type LocaleKeys =\n | Exclude<FieldPath<typeof English>, 'name' | 'el'>\n | (string & NonNullable<unknown>)\n\nexport type TranslatorOption = Record<string, string | number>\nexport type Translator = (path: LocaleKeys, option?: TranslatorOption) => string\nexport type LocaleContext = {\n locale: Ref<Language>\n lang: Ref<string>\n t: Translator\n}\n\nexport const buildTranslator =\n (locale: MaybeRef<Language>): Translator =>\n (path, option) =>\n translate(path, option, unref(locale))\n\nexport const translate = (\n path: LocaleKeys,\n option: undefined | TranslatorOption,\n locale: Language\n): string =>\n (get(locale, path, path) as string).replace(\n /\\{(\\w+)\\}/g,\n (_, key) => `${option?.[key] ?? `{${key}}`}`\n )\n\nexport const buildLocaleContext = (\n locale: MaybeRef<Language>\n): LocaleContext => {\n const lang = computed(() => unref(locale).name)\n const localeRef = isRef(locale) ? locale : ref(locale)\n return {\n lang,\n locale: localeRef,\n t: buildTranslator(locale),\n }\n}\n\nexport const localeContextKey: InjectionKey<Ref<Language | undefined>> =\n Symbol('localeContextKey')\n\nexport const useLocale = (localeOverrides?: Ref<Language | undefined>) => {\n const locale = localeOverrides || inject(localeContextKey, ref())!\n return buildLocaleContext(computed(() => locale.value || English))\n}\n"],"names":[],"mappings":";;;;AAqBa,MAAA,eAAA,GACX,CAAC,MAAA,KACD,CAAC,IAAA,EAAM,MACL,KAAA,SAAA,CAAU,IAAM,EAAA,MAAA,EAAQ,KAAM,CAAA,MAAM,CAAC,EAAA;AAE5B,MAAA,SAAA,GAAY,CACvB,IACA,EAAA,MAAA,EACA,WAEC,GAAI,CAAA,MAAA,EAAQ,IAAM,EAAA,IAAI,CAAa,CAAA,OAAA;AAAA,EAClC,YAAA;AAAA,EACA,CAAC,GAAG,GAAK,KAAA;AAjCb,IAAA,IAAA,EAAA,CAAA;AAiCgB,IAAG,OAAA,CAAA,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAS,GAAT,CAAA,KAAA,IAAA,GAAA,EAAA,GAAiB,CAAI,CAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AACtC,EAAA;AAEW,MAAA,kBAAA,GAAqB,CAChC,MACkB,KAAA;AAClB,EAAA,MAAM,OAAO,QAAS,CAAA,MAAM,KAAM,CAAA,MAAM,EAAE,IAAI,CAAA,CAAA;AAC9C,EAAA,MAAM,YAAY,KAAM,CAAA,MAAM,CAAI,GAAA,MAAA,GAAS,IAAI,MAAM,CAAA,CAAA;AACrD,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,MAAQ,EAAA,SAAA;AAAA,IACR,CAAA,EAAG,gBAAgB,MAAM,CAAA;AAAA,GAC3B,CAAA;AACF,EAAA;AAEa,MAAA,gBAAA,GACX,OAAO,kBAAkB,EAAA;AAEd,MAAA,SAAA,GAAY,CAAC,eAAgD,KAAA;AACxE,EAAA,MAAM,MAAS,GAAA,eAAA,IAAmB,MAAO,CAAA,gBAAA,EAAkB,KAAK,CAAA,CAAA;AAChE,EAAA,OAAO,mBAAmB,QAAS,CAAA,MAAM,MAAO,CAAA,KAAA,IAAS,OAAO,CAAC,CAAA,CAAA;AACnE;;;;"}