wot-design
Version:
Mobile UI components built on vue.js
79 lines (61 loc) • 1.83 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.t = t;
exports.use = use;
exports.i18n = i18n;
exports.default = void 0;
var _vue = _interopRequireDefault(require("vue"));
var _zhCN = _interopRequireDefault(require("./lang/zh-CN"));
var message = _zhCN.default;
var translate = function translate() {
var translate = Object.getPrototypeOf(this || _vue.default).$t;
if (translate && typeof translate === 'function') {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return translate.apply(this, args);
}
};
function t(key, options) {
var value = translate.apply(this, arguments);
if (!value) {
var keys = key.split('.');
value = message;
while (keys.length > 0) {
var prop = keys.shift();
var arrayMatch = prop.match(/([^[]+)\[(\d+)\]$/);
if (arrayMatch) {
value = value[arrayMatch[1]][arrayMatch[2]];
} else {
value = value[prop];
}
if (!value) {
break;
}
}
if (value && (options || options === 0)) {
if (typeof options === 'number') {
value = value.split('|')[options];
value = value && value.trim();
} else if (Object.prototype.toString.apply(options) === '[object Object]' || Object.prototype.toString.apply(options) === '[object Array]') {
value = value.replace(/{\s*([^}\s]*)\s*}/g, function ($1, $2) {
return options[$2];
});
}
}
}
return value || key;
}
function use(langMessage) {
message = langMessage || _zhCN.default;
}
function i18n(fn) {
translate = fn || translate;
}
var _default = {
t: t,
use: use,
i18n: i18n
};
exports.default = _default;