UNPKG

w-vue-middle

Version:

统一公共服务组件

82 lines (76 loc) 2.49 kB
/* * @Author: Jason Liu * @Date: 2023-12-21 15:15:20 * @Desc: 多语言服务 */ "use strict"; var multilingualService = { _keyName: "LocationData", _locationData: undefined, useed: false,//是否加载过 /** * @Author: Jason Liu * @description: 保存内容 */ saveStorage(data) { localStorage.setItem(this._keyName, data); multilingualService.reloadLanguage(); }, /** * @Author: Jason Liu * @description: 刷新本地存储的语言内容 */ reloadLanguage() { var locationData = localStorage.getItem(this._keyName); try { multilingualService._locationData = JSON.parse(locationData) || {}; } catch (error) { multilingualService._locationData = {}; } }, /** * @Author: Jason Liu * @description: 获取语言内容 */ getLanguage(code, ref = undefined) { if (!multilingualService._locationData) { multilingualService.reloadLanguage(); } return multilingualService._locationData[code] || ref; }, }; window.$getLanguage = multilingualService.getLanguage; window.$languageService = multilingualService; (function ($) { if (typeof $ !== 'undefined' && typeof $.fn !== 'undefined') { $(document).ready(function () { $("[v-lan]").each(function (i, el) { let code = $(el).attr("v-lan"); const text = multilingualService.getLanguage(code); if (text) { $(el).text(text) } }) }) } else { module.exports = { /** * @Author: Jason Liu * @description: vue版本初始化 */ install(Vue) { if (!multilingualService.useed) { multilingualService.useed = true; Vue.prototype.$getLanguage = multilingualService.getLanguage; Vue.prototype.$languageService = multilingualService; Vue.directive('lan', (el, binding) => { const text = multilingualService.getLanguage(binding.value); if (text) { el.innerText = text; } }); } } }; } })(window.jQuery || window.Zepto)