@jiaozhiye/qm-design-vue
Version:
A Component Library for Vue3.0
44 lines • 1.08 kB
JavaScript
/*
* @Author: 焦质晔
* @Date: 2021-02-08 16:48:18
* @Last Modified by: 焦质晔
* @Last Modified time: 2023-03-04 22:13:13
*/
import dayjs from 'dayjs';
import defaultLang from './lang/zh-cn';
import '../_utils/dayjs';
import 'dayjs/locale/zh-cn';
import 'dayjs/locale/en';
let lang = defaultLang;
let i18nHandler = null;
export const i18n = fn => {
i18nHandler = fn;
};
function template(str, option) {
if (!str || !option) return str;
return str.replace(/\{(\w+)\}/g, (_, key) => {
return option[key];
});
}
export const t = (...args) => {
if (i18nHandler) return i18nHandler(...args);
const [path, option] = args;
let value;
const array = path.split('.');
let current = lang;
for (let i = 0, j = array.length; i < j; i++) {
const property = array[i];
value = current[property];
if (i === j - 1) return template(value, option);
if (!value) return '';
current = value;
}
return '';
};
export const use = l => {
lang = l || lang;
if (lang.name) {
dayjs.locale(lang.name);
}
};
export const setLocale = use;