element-plus
Version:
A Component Library for Vue 3
61 lines (60 loc) • 1.89 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setLocale = exports.use = exports.t = exports.restoreHandler = exports.i18n = void 0;
const dayjs_1 = __importDefault(require("dayjs"));
const error_1 = require("element-plus/lib/utils/error");
const en_1 = __importDefault(require("./lang/en"));
let lang = en_1.default;
let i18nHandler = null;
const i18n = (fn) => {
i18nHandler = fn;
};
exports.i18n = i18n;
const restoreHandler = () => (i18nHandler = defaultTranslator);
exports.restoreHandler = restoreHandler;
function template(str, option) {
if (!str || !option)
return str;
return str.replace(/\{(\w+)\}/g, (_, key) => {
return option[key];
});
}
const defaultTranslator = (...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;
}
};
const t = (...args) => {
if (i18nHandler) {
const translation = i18nHandler(...args);
return translation || defaultTranslator(...args);
}
return defaultTranslator(...args);
};
exports.t = t;
const use = (l) => {
(0, error_1.debugWarn)('deprecation', `:
The previous i18n usage is deprecated please update to
the new one to get reactive i18n translations, refer to:
https://element-plus.org/#/en-US/component/i18n
`);
lang = l || lang;
if (lang.name) {
dayjs_1.default.locale(lang.name);
}
};
exports.use = use;
exports.setLocale = exports.use;