UNPKG

d-render

Version:

基于 Element Plus 二次封装的数据驱动渲染组件库 - 表单、搜索表单、表格配置化渲染

34 lines (28 loc) 1 kB
import { computed, inject, isRef, ref, unref } from 'vue' import type { InjectionKey, MaybeRef, Ref } from 'vue' import { buildTranslator, defaultLocale, type Language, type Translator } from '../locale' export type { Language, Translator } export type LocaleContext = { locale: Ref<Language> lang: Ref<string> t: Translator } export const localeContextKey: InjectionKey<Ref<Language | undefined>> = Symbol('drLocaleContextKey') export const buildLocaleContext = (locale: MaybeRef<Language>): LocaleContext => { const lang = computed(() => unref(locale).name) const localeRef = isRef(locale) ? locale : ref(locale) return { lang, locale: localeRef as Ref<Language>, t: buildTranslator(() => unref(locale)) } } export const useLocale = (localeOverrides?: Ref<Language | undefined>) => { const locale = localeOverrides || inject(localeContextKey, ref())! return buildLocaleContext(computed(() => locale.value || defaultLocale)) }