UNPKG

m2-vue

Version:

The package is provided facilities and utilities based on vue.

116 lines (87 loc) 4.33 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.getI18nLocale = getI18nLocale; exports.mergeLangs = mergeLangs; exports.configDefaultLang = configDefaultLang; exports.getCurrentLang = getCurrentLang; exports.changeLang = changeLang; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _vue = _interopRequireDefault(require("vue")); var _vueI18n = _interopRequireDefault(require("vue-i18n")); var _m2Core = require("m2-core"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } // 配置应用的语言包(集成element,m2) function getI18nLocale(langs) { _vue["default"].use(_vueI18n["default"]); // 配置默认系统语言 var defaultLang = Object.keys(langs).find(function (item) { return langs[item]["default"]; }); var lang = getCurrentLang() || langs[defaultLang].alias || defaultLang; configDefaultLang(lang); var i18n = new _vueI18n["default"]({ locale: lang, messages: langs, silentTranslationWarn: true }); // 重点:为了实现element,m2等插件的多语言切换 for (var _len = arguments.length, locales = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { locales[_key - 1] = arguments[_key]; } locales.forEach(function (item) { return item.i18n(function (key, val) { return i18n.t(key, val); }); }); return i18n; } // 合并其他库的语言包与当前应用的语言包 function mergeLangs(appLang) { for (var _len2 = arguments.length, langs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { langs[_key2 - 1] = arguments[_key2]; } return _m2Core.DataUtil.merge(langs, appLang); } // 配置默认的语言 function configDefaultLang(lang) { lang = lang || (navigator.language || navigator.userLanguage).substr(0, 2); _m2Core.DataStorage.set(_m2Core.DEFAULT_LANGUAGE_SETTING, lang); } // 获取当前配置的语言 function getCurrentLang() { return _m2Core.DataStorage.get(_m2Core.DEFAULT_LANGUAGE_SETTING); } // 应用改变语言 function changeLang(vm, lang) { var appKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; if (getCurrentLang() === lang) return; var _change = function _change(config) { configDefaultLang(lang); vm.$i18n.locale = lang; config && vm.$i18n.setLocaleMessage(lang, config); vm.$nextTick(function () { return vm.$bus.$emit(_m2Core.REFRESH_APP_LAYOUT); }); }; if (!appKey) { _change(); return; } var locales = (0, _toConsumableArray2["default"])(document.querySelectorAll("script[role^=".concat(appKey, "]"))); var config = {}; var count = 0; locales.map(function (item) { var role = item.getAttribute('role'); item && document.head.removeChild(item); var script = document.createElement('script'); script.addEventListener('load', function () { count++; config = _objectSpread(_objectSpread({}, config), window[role]); if (count === locales.length) { _change(config); } }); script.setAttribute('src', item.src.replace(getCurrentLang(), lang)); script.setAttribute('role', role); document.head.insertBefore(script, document.head.querySelectorAll('script')[0]); }); }