m2-ui
Version:
The package is provided web components and utilities based on vue and element-ui.
74 lines (57 loc) • 1.84 kB
JavaScript
;
exports.__esModule = true;
var _arguments = arguments;
var _vue = require('vue');
var _vue2 = _interopRequireDefault(_vue);
var _deepmerge = require('deepmerge');
var _deepmerge2 = _interopRequireDefault(_deepmerge);
var _m2Core = require('m2-core');
var _format = require('./format');
var _format2 = _interopRequireDefault(_format);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var locale = null;
var merged = false;
var i18nHandler = function i18nHandler() {
var i18n = Object.getPrototypeOf(undefined || _vue2.default).$t;
if (typeof i18n === 'function' && !!_vue2.default.locale) {
if (!merged) {
merged = true;
_vue2.default.locale(_vue2.default.config.lang, (0, _deepmerge2.default)(locale, _vue2.default.locale(_vue2.default.config.lang) || {}, { clone: true }));
}
return i18n.apply(undefined, _arguments);
}
};
var trans = function trans(path, options) {
var lang = _m2Core.DataStorage.get(_m2Core.DEFAULT_LANGUAGE_SETTING);
useLang(lang);
var value = i18nHandler.apply(undefined, _arguments);
if (value !== null && value !== undefined) return value;
var array = path.split('.');
var current = locale;
for (var i = 0, j = array.length; i < j; i++) {
var property = array[i];
value = current[property];
if (i === j - 1) return (0, _format2.default)()(value, options);
if (!value) return '';
current = value;
}
return '';
};
var useLang = function useLang(lang) {
switch (lang) {
case 'en':
locale = require('./lang/en-US').default;
break;
case 'zh':
default:
locale = require('./lang/zh-CN').default;
break;
}
};
exports.default = {
t: trans,
use: useLang,
i18n: function i18n(fn) {
return i18nHandler = fn || i18nHandler;
}
};