UNPKG

@opensig/opendesign

Version:

<p align="center"><img src="../docs/public/opendesign-logo-light.png"/></p> <h1 align="center">opendesign</h1> <p align="center">一个 Vue 3 组件库</p> <p align="center"><b>皮肤可定制,使用 TypeScript</b></p>

71 lines (70 loc) 2.13 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const log = require("../_utils/log.js"); const is = require("../_utils/is.js"); require("../config-provider/index.js"); const vue = require("vue"); const zhCn = require("./lang/zh-cn.js"); const provide = require("../config-provider/provide.js"); const currentLocal = vue.ref("zh-CN"); const i18nLanguage = vue.ref({ "zh-CN": zhCn }); function addLocale(locale, opts) { const locales = is.isArray(locale) ? locale : [locale]; locales.forEach((lc) => { const currLocal = lc.locale; if (!currLocal) { return; } if (!i18nLanguage.value[currLocal]) { i18nLanguage.value[currLocal] = { locale: lc.locale }; } Object.keys(lc).forEach((key) => { const k = key; if (!i18nLanguage.value[currLocal][k] || (opts == null ? void 0 : opts.overwrite)) { i18nLanguage.value[currLocal][k] = lc[key]; } }); }); } function useLocale(localeKey) { if (!i18nLanguage.value[localeKey]) { log.log.warn(`no '${localeKey}' languages configed`); return; } currentLocal.value = localeKey; } function useI18n() { const instance = vue.getCurrentInstance(); const configProvider = instance ? vue.inject(provide.configProviderInjectKey, {}) : null; const languages = vue.computed(() => { return (configProvider == null ? void 0 : configProvider.locale) ?? i18nLanguage.value[currentLocal.value]; }); const locale = vue.computed(() => languages.value.locale); const transform = (key, ...args) => { if (!languages.value) { log.log.warn("no languages configed"); return ""; } const value = languages.value[key]; if (args.length > 0 && is.isString(value)) { return value.replace(/{(\d+)}/g, (match, index) => { return args[index] ?? match; }); } if (is.isUndefined(value)) { log.log.warn(`Cannot translate the value of keypath '${key}'`); } return value; }; return { locale, t: transform }; } exports.addLocale = addLocale; exports.useI18n = useI18n; exports.useLocale = useLocale;