gc_i18n 1.3.3 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/gc_i18n.es.js CHANGED
@@ -2,7 +2,7 @@ import './gc_i18n.css';
2
2
  import F from "keyboardjs";
3
3
  import R, { Message as T } from "view-ui-plus";
4
4
  import "view-ui-plus/dist/styles/viewuiplus.css";
5
- import { createVNode as y, resolveComponent as d, resolveDirective as q, createBlock as S, openBlock as f, withCtx as p, createElementBlock as I, createCommentVNode as K, createElementVNode as b, withDirectives as Q, createTextVNode as L, Fragment as X, renderList as Y, toDisplayString as U, nextTick as Z, createApp as $ } from "vue";
5
+ import { createVNode as y, resolveComponent as d, resolveDirective as q, createBlock as S, openBlock as f, withCtx as p, createElementBlock as I, createCommentVNode as K, createElementVNode as k, withDirectives as Q, createTextVNode as L, Fragment as X, renderList as Y, toDisplayString as U, nextTick as Z, createApp as $ } from "vue";
6
6
  import { createI18n as ee } from "vue-i18n";
7
7
  import l from "lodash-es";
8
8
  import D from "axios";
@@ -14,7 +14,6 @@ const ae = (t) => {
14
14
  e[a.key] = a.value;
15
15
  return e;
16
16
  }, se = (t, e, a) => (e.forEach((s) => {
17
- console.log("obj2.key ", s.key);
18
17
  const n = s.key.split(".");
19
18
  n[0] === "common" && l.find(t, { key: `${a}.${n[1]}` }) && l.remove(t, { key: `${a}.${n[1]}` });
20
19
  const o = l.find(t, { key: s.key });
@@ -30,8 +29,8 @@ const ae = (t) => {
30
29
  lastPullDate: s,
31
30
  baseUrl: n,
32
31
  token: o
33
- }) => new Promise(async (r, h) => {
34
- const g = n + "/i18n-web/kv_translate/kv_translates", i = s ? g + "?lastPullDate=" + s : g, c = await D({
32
+ }) => new Promise(async (r, g) => {
33
+ const h = n + "/i18n-web/kv_translate/kv_translates", i = s ? h + "?lastPullDate=" + s : h, c = await D({
35
34
  url: i,
36
35
  method: "GET",
37
36
  headers: {
@@ -63,27 +62,27 @@ const ae = (t) => {
63
62
  token: s,
64
63
  routerName: n
65
64
  }) => new Promise(async (o, r) => {
66
- const h = _.namespace(`I18N_${l.toUpper(e)}`), g = {
65
+ const g = _.namespace(`I18N_${l.toUpper(e)}`), h = {
67
66
  baseUrl: t,
68
67
  appCode: e,
69
68
  language: a,
70
69
  token: s
71
- }, i = h.get(a);
70
+ }, i = g.get(a);
72
71
  if (!i || !i.lastPullDate) {
73
- const c = await x(g);
74
- c && (h.set(a, c), o(c.translatesDTOs));
72
+ const c = await x(h);
73
+ c && (g.set(a, c), o(c.translatesDTOs));
75
74
  } else {
76
75
  const { lastPullDate: c } = i, u = await x({
77
- ...g,
76
+ ...h,
78
77
  lastPullDate: c
79
78
  });
80
79
  if (u) {
81
- const k = l.get(i, "translatesDTOs");
80
+ const b = l.get(i, "translatesDTOs");
82
81
  if (l.isEmpty(u.translatesDTOs))
83
- o(k);
82
+ o(b);
84
83
  else {
85
84
  const w = se(
86
- k,
85
+ b,
87
86
  u.translatesDTOs,
88
87
  n
89
88
  ), C = {
@@ -155,12 +154,12 @@ const ae = (t) => {
155
154
  index: o
156
155
  }) => {
157
156
  const r = n[a], {
158
- localhost: h
157
+ localhost: g
159
158
  } = n;
160
- return h ? null : y(d("Input"), {
159
+ return g ? null : y(d("Input"), {
161
160
  modelValue: r,
162
- onOnChange: (g) => {
163
- const i = g.target.value, {
161
+ onOnChange: (h) => {
162
+ const i = h.target.value, {
164
163
  dictKey: c
165
164
  } = n, u = l.findIndex(this.mySaveData, {
166
165
  dictKey: c
@@ -331,7 +330,7 @@ const ae = (t) => {
331
330
  return a;
332
331
  }, re = { key: 0 }, ce = { class: "extra" }, ue = { class: "gc_i18n_page" }, he = { style: { display: "flex" } };
333
332
  function ge(t, e, a, s, n, o) {
334
- const r = d("Spin"), h = d("Table"), g = d("TabPane"), i = d("Icon"), c = d("Checkbox"), u = d("DropdownItem"), k = d("DropdownMenu"), w = d("Dropdown"), C = d("Input"), O = d("Tabs"), j = d("Page"), E = d("Button"), W = d("Modal"), H = q("click-away");
333
+ const r = d("Spin"), g = d("Table"), h = d("TabPane"), i = d("Icon"), c = d("Checkbox"), u = d("DropdownItem"), b = d("DropdownMenu"), w = d("Dropdown"), C = d("Input"), E = d("Tabs"), j = d("Page"), O = d("Button"), W = d("Modal"), H = q("click-away");
335
334
  return f(), S(W, {
336
335
  modelValue: n.isModalVisible,
337
336
  "onUpdate:modelValue": e[4] || (e[4] = (m) => n.isModalVisible = m),
@@ -343,7 +342,7 @@ function ge(t, e, a, s, n, o) {
343
342
  }, {
344
343
  default: p(() => [
345
344
  n.isModalVisible ? (f(), I("div", re, [
346
- y(O, {
345
+ y(E, {
347
346
  modelValue: n.type,
348
347
  "onUpdate:modelValue": e[2] || (e[2] = (m) => n.type = m),
349
348
  type: "card",
@@ -351,7 +350,7 @@ function ge(t, e, a, s, n, o) {
351
350
  onOnClick: o.changeTab
352
351
  }, {
353
352
  extra: p(() => [
354
- b("div", ce, [
353
+ k("div", ce, [
355
354
  Q((f(), S(w, {
356
355
  style: { width: "80px" },
357
356
  transfer: "",
@@ -360,7 +359,7 @@ function ge(t, e, a, s, n, o) {
360
359
  visible: n.LanguageSettingVisible
361
360
  }, {
362
361
  list: p(() => [
363
- y(k, null, {
362
+ y(b, null, {
364
363
  default: p(() => [
365
364
  (f(!0), I(X, null, Y(n.languages, (m) => (f(), S(u, {
366
365
  key: m.code
@@ -372,7 +371,7 @@ function ge(t, e, a, s, n, o) {
372
371
  onOnChange: o.saveLanguageSetting
373
372
  }, {
374
373
  default: p(() => [
375
- b("span", null, U(m.name), 1)
374
+ k("span", null, U(m.name), 1)
376
375
  ]),
377
376
  _: 2
378
377
  }, 1032, ["modelValue", "onUpdate:modelValue", "onOnChange"])
@@ -384,7 +383,7 @@ function ge(t, e, a, s, n, o) {
384
383
  })
385
384
  ]),
386
385
  default: p(() => [
387
- b("a", {
386
+ k("a", {
388
387
  href: "javascript:void(0)",
389
388
  onClick: e[0] || (e[0] = (...m) => o.handleLanguageSettingOpen && o.handleLanguageSettingOpen(...m))
390
389
  }, [
@@ -409,7 +408,7 @@ function ge(t, e, a, s, n, o) {
409
408
  ])
410
409
  ]),
411
410
  default: p(() => [
412
- y(g, {
411
+ y(h, {
413
412
  name: "pageData",
414
413
  label: "当前页面"
415
414
  }, {
@@ -417,7 +416,7 @@ function ge(t, e, a, s, n, o) {
417
416
  n.loading ? (f(), S(r, {
418
417
  key: 0,
419
418
  class: "gc_i18n_spin"
420
- })) : (f(), S(h, {
419
+ })) : (f(), S(g, {
421
420
  key: 1,
422
421
  border: "",
423
422
  height: 380,
@@ -427,7 +426,7 @@ function ge(t, e, a, s, n, o) {
427
426
  ]),
428
427
  _: 1
429
428
  }),
430
- y(g, {
429
+ y(h, {
431
430
  name: "data",
432
431
  label: "当前应用"
433
432
  }, {
@@ -435,7 +434,7 @@ function ge(t, e, a, s, n, o) {
435
434
  n.loading ? (f(), S(r, {
436
435
  key: 0,
437
436
  class: "gc_i18n_spin"
438
- })) : (f(), S(h, {
437
+ })) : (f(), S(g, {
439
438
  key: 1,
440
439
  border: "",
441
440
  height: 380,
@@ -445,7 +444,7 @@ function ge(t, e, a, s, n, o) {
445
444
  ]),
446
445
  _: 1
447
446
  }),
448
- a.login ? (f(), S(g, {
447
+ a.login ? (f(), S(h, {
449
448
  key: 0,
450
449
  name: "loginData",
451
450
  label: "登录页面"
@@ -454,7 +453,7 @@ function ge(t, e, a, s, n, o) {
454
453
  n.loading ? (f(), S(r, {
455
454
  key: 0,
456
455
  class: "gc_i18n_spin"
457
- })) : (f(), S(h, {
456
+ })) : (f(), S(g, {
458
457
  key: 1,
459
458
  border: "",
460
459
  height: 380,
@@ -467,8 +466,8 @@ function ge(t, e, a, s, n, o) {
467
466
  ]),
468
467
  _: 1
469
468
  }, 8, ["modelValue", "onOnClick"]),
470
- b("div", ue, [
471
- b("div", he, [
469
+ k("div", ue, [
470
+ k("div", he, [
472
471
  y(j, {
473
472
  modelValue: o.firstResult,
474
473
  "onUpdate:modelValue": e[3] || (e[3] = (m) => o.firstResult = m),
@@ -478,12 +477,12 @@ function ge(t, e, a, s, n, o) {
478
477
  "show-total": "",
479
478
  onOnChange: o.changePage
480
479
  }, null, 8, ["modelValue", "total", "onOnChange"]),
481
- b("div", null, [
482
- b("span", null, " 共 " + U(n.page.totalRows) + " 项当前页数据 ", 1)
480
+ k("div", null, [
481
+ k("span", null, " 共 " + U(n.page.totalRows) + " 项当前页数据 ", 1)
483
482
  ])
484
483
  ]),
485
- b("div", null, [
486
- y(E, {
484
+ k("div", null, [
485
+ y(O, {
487
486
  style: { "margin-right": "10px" },
488
487
  onClick: o.closeModal
489
488
  }, {
@@ -492,7 +491,7 @@ function ge(t, e, a, s, n, o) {
492
491
  ])]),
493
492
  _: 1
494
493
  }, 8, ["onClick"]),
495
- y(E, {
494
+ y(O, {
496
495
  type: "primary",
497
496
  onClick: o.saveData
498
497
  }, {
@@ -585,11 +584,11 @@ const P = function() {
585
584
  document.removeEventListener(P(), t[N], !1), delete t[N];
586
585
  }, Se = function(t, e, a) {
587
586
  e.value !== e.oldValue && z(t, e, a);
588
- }, ke = {
587
+ }, be = {
589
588
  install: function(t) {
590
- t.directive("click-away", be);
589
+ t.directive("click-away", ke);
591
590
  }
592
- }, be = {
591
+ }, ke = {
593
592
  mounted: z,
594
593
  updated: Se,
595
594
  unmounted: B
@@ -611,12 +610,12 @@ class v {
611
610
  messages: n,
612
611
  token: o,
613
612
  orgCode: r,
614
- loginRouteName: h,
615
- login: g,
613
+ loginRouteName: g,
614
+ login: h,
616
615
  keyboard: i,
617
616
  locale: c
618
617
  } = e;
619
- this.token = o || M(r) || _.get("I18N_TOKEN"), this.loadI18n = !0, this.appCode = s, this.router = a, this.locale = c || _.get("I18N_LANGUAGE") || navigator.language || "zh-CN", this.name = "", this.messages = n || {}, this.translationKeys = [], this.translationKeySet = /* @__PURE__ */ new Set(), this.loginRouteName = h || "login", this.login = g, this.loginTranslationKeys = [], this.keyboard = i || "shift>t", this.baseUrl = e.dev ? "https://test.ihotel.cn" : "https://trans.ihotel.cn", this.initRouterGuards(), this.initI18n(e), F.bind(this.keyboard, (u) => {
618
+ this.token = o || M(r) || _.get("I18N_TOKEN"), this.loadI18n = !0, this.appCode = s, this.router = a, this.locale = c || _.get("I18N_LANGUAGE") || navigator.language || "zh-CN", this.name = "", this.messages = n || {}, this.translationKeys = [], this.translationKeySet = /* @__PURE__ */ new Set(), this.loginRouteName = g || "login", this.login = h, this.loginTranslationKeys = [], this.keyboard = i || "shift>t", this.baseUrl = e.dev ? "https://test.ihotel.cn" : "https://trans.ihotel.cn", this.initRouterGuards(), this.initI18n(e), F.bind(this.keyboard, (u) => {
620
619
  !this.configInstance && this.name != this.loginRouteName && (this.translationKeys = Array.from(this.translationKeySet), this.configInstance = this.createModal(this.name), this.configInstance.openModal({ name: this.name }));
621
620
  }), this.setupLanguageChangeListener();
622
621
  }
@@ -630,12 +629,12 @@ class v {
630
629
  // 初始化路由守卫
631
630
  initRouterGuards() {
632
631
  v._routerGuardRegistered || (v._routerGuardRegistered = !0, this.router.beforeEach(async (e, a, s) => {
633
- var h, g;
632
+ var g, h;
634
633
  const { language: n, token: o } = e.query;
635
634
  this.configInstance && this.configInstance.closeModal(), this.name = e.name, this.translationKeySet = /* @__PURE__ */ new Set(), o && this.setToken(o), this.loadI18n && await this.setLanguage(n || this.locale), this.loadI18n = !1;
636
635
  const r = this.router.getRoutes().find((i) => i.name === this.loginRouteName || i.path === `/${this.loginRouteName}`);
637
636
  if (r && r.components) {
638
- let i = (h = r.components) == null ? void 0 : h.default;
637
+ let i = (g = r.components) == null ? void 0 : g.default;
639
638
  if (typeof i == "function" && i.toString().includes("import("))
640
639
  try {
641
640
  i = await i(), i = i.default;
@@ -650,10 +649,10 @@ class v {
650
649
  try {
651
650
  const i = [];
652
651
  for (const c of e.matched) {
653
- let u = (g = c.components) == null ? void 0 : g.default;
652
+ let u = (h = c.components) == null ? void 0 : h.default;
654
653
  if (typeof u == "function" && u.toString().includes("import(") && (u = await u(), u = u.default), u) {
655
- const k = V(u);
656
- i.push(...k);
654
+ const b = V(u);
655
+ i.push(...b);
657
656
  }
658
657
  }
659
658
  this.translationKeys = i;
@@ -686,16 +685,16 @@ class v {
686
685
  });
687
686
  const a = this.i18n.global.t;
688
687
  globalThis.$t = this.i18n.global.t = (s, n) => {
689
- var r, h, g;
688
+ var r, g, h;
690
689
  typeof s == "string" && this.translationKeySet.add(s);
691
- const o = (g = (h = (r = this.router) == null ? void 0 : r.currentRoute) == null ? void 0 : h.value) == null ? void 0 : g.name;
690
+ const o = (h = (g = (r = this.router) == null ? void 0 : r.currentRoute) == null ? void 0 : g.value) == null ? void 0 : h.name;
692
691
  if (o) {
693
692
  const i = `${o}.${s}`, c = a(i);
694
693
  if (c !== i && !l.isEmpty(c))
695
694
  return c;
696
695
  {
697
- const u = `common.${s}`, k = a(u);
698
- return k !== u ? k : a(s, n);
696
+ const u = `common.${s}`, b = a(u);
697
+ return b !== u ? b : a(s, n);
699
698
  }
700
699
  } else
701
700
  return a(s, n);
@@ -730,32 +729,36 @@ class v {
730
729
  }
731
730
  }
732
731
  }
733
- async setLanguage(e) {
734
- let a = _.get("I18N_MESSAGES_COMMON_" + e);
735
- if (!a) {
736
- const s = await D.get(
732
+ async setLanguage(e = "zh-CN") {
733
+ const a = "I18N_MESSAGES_COMMON_" + e;
734
+ let s = _.get(a);
735
+ if (l.isEmpty(s)) {
736
+ const n = await D.get(
737
737
  `https://cdn.ihotel.cn/i18n_messages/${e}.json`
738
- ), { data: n } = s;
739
- s.status === 200 && (a = n, _.set("I18N_MESSAGES_COMMON_" + e, n));
738
+ );
739
+ if (n) {
740
+ const { data: o } = n;
741
+ s = o, _.set(a, o);
742
+ }
740
743
  }
741
- return new Promise(async (s, n) => {
742
- const o = await ie({
744
+ return new Promise(async (n, o) => {
745
+ const r = await ie({
743
746
  baseUrl: this.baseUrl,
744
747
  appCode: this.appCode,
745
748
  language: e || this.locale,
746
749
  token: this.token,
747
750
  routerName: this.name
748
751
  });
749
- if (o) {
750
- const r = ae(o), h = l.assign(
752
+ if (r) {
753
+ const g = ae(r), h = l.assign(
751
754
  {},
752
- a,
755
+ s,
753
756
  l.get(this.messages, e),
754
- r
757
+ g
755
758
  );
756
759
  this.i18n.global.setLocaleMessage(e, h);
757
760
  }
758
- this.locale = e, this.i18n.global.locale.value = e, _.set("I18N_LANGUAGE", e), s(!0);
761
+ this.locale = e, this.i18n.global.locale.value = e, _.set("I18N_LANGUAGE", e), n(!0);
759
762
  });
760
763
  }
761
764
  createModal(e) {
@@ -777,7 +780,7 @@ class v {
777
780
  // 基础URL
778
781
  emitter: a
779
782
  // 将事件总线作为 prop 传递
780
- }).use(R).use(ke).mount(document.createElement("div"));
783
+ }).use(R).use(be).mount(document.createElement("div"));
781
784
  }
782
785
  install(e, a = {}) {
783
786
  e.use(R, {
@@ -1 +1 @@
1
- (function(p,C){typeof exports=="object"&&typeof module<"u"?C(exports,require("keyboardjs"),require("view-ui-plus"),require("view-ui-plus/dist/styles/viewuiplus.css"),require("vue"),require("vue-i18n"),require("lodash-es"),require("axios"),require("store2"),require("jsrsasign")):typeof define=="function"&&define.amd?define(["exports","keyboardjs","view-ui-plus","view-ui-plus/dist/styles/viewuiplus.css","vue","vue-i18n","lodash-es","axios","store2","jsrsasign"],C):(p=typeof globalThis<"u"?globalThis:p||self,C(p.gc_i18n={},p.keyboardJS,p.iview,null,p.Vue,p.vueI18n,p._,p.Axios,p.store2,p.jsrsasign))})(this,(function(p,C,S,le,t,K,r,_,f,U){"use strict";const B=a=>{const e={};for(const n of a)e[n.key]=n.value;return e},A=(a,e,n)=>(e.forEach(s=>{console.log("obj2.key ",s.key);const o=s.key.split(".");o[0]==="common"&&r.find(a,{key:`${n}.${o[1]}`})&&r.remove(a,{key:`${n}.${o[1]}`});const i=r.find(a,{key:s.key});i?r.merge(i,s):a.push(s)}),a),D=async({baseUrl:a,token:e})=>_.get(a+"/i18n-web/sysoption/getsupportedlangs",{headers:{Authorization:e}}),T=async({appCode:a,language:e="zh-CN",page:n,lastPullDate:s,baseUrl:o,token:i})=>new Promise(async(c,g)=>{const u=o+"/i18n-web/kv_translate/kv_translates",l=s?u+"?lastPullDate="+s:u,h=await _({url:l,method:"GET",headers:{appCode:a,page:n,language:e,Authorization:i}});h.data&&h.data.result==0?c(h.data.retVal):c(h)}),G=async({data:a,token:e,baseUrl:n})=>_({url:n+"/i18n-web/kv_translate/userDicts",method:"POST",headers:{Authorization:e},data:a}),P=async({data:a,token:e,baseUrl:n})=>_({url:n+"/i18n-web/kv_translate/batch",method:"POST",data:a,headers:{Authorization:e}}),z=async({baseUrl:a,appCode:e,language:n="zh-CN",token:s,routerName:o})=>new Promise(async(i,c)=>{const g=f.namespace(`I18N_${r.toUpper(e)}`),u={baseUrl:a,appCode:e,language:n,token:s},l=g.get(n);if(!l||!l.lastPullDate){const h=await T(u);h&&(g.set(n,h),i(h.translatesDTOs))}else{const{lastPullDate:h}=l,d=await T({...u,lastPullDate:h});if(d){const y=r.get(l,"translatesDTOs");if(r.isEmpty(d.translatesDTOs))i(y);else{const w=A(y,d.translatesDTOs,o),V={lastPullDate:d.lastPullDate,translatesDTOs:w};f.namespace(`I18N_${r.toUpper(e)}`).set(n,V,":"),i(w)}}}}),j={data(){return{LanguageSettingVisible:!1,isModalVisible:!1,loading:!1,searchText:"",name:"",type:"pageData",languages:[],mySaveData:[],pageData:[],pageDataShow:[],page:{pageSize:10,firstResult:0},data:[]}},computed:{firstResult(){return this.page.firstResult/this.page.pageSize+1},columns(){let a=[{title:"关键词",fixed:"left",width:110,key:"dictKey"}];return r.map(this.languages,e=>{const n=e.code;if(e.checked)return a.push({title:e.name,key:n,render:(s,{row:o,index:i})=>{const c=o[n],{localhost:g}=o;return g?null:t.createVNode(t.resolveComponent("Input"),{modelValue:c,onOnChange:u=>{const l=u.target.value,{dictKey:h}=o,d=r.findIndex(this.mySaveData,{dictKey:h});d>-1?this.mySaveData[d][n]=l:this.mySaveData.push({...o,[n]:l,page:this.type==="loginData"?this.loginRouteName:this.type==="pageData"?this.name:"common"})}},null)}})}),a}},props:{appCode:String,router:Object,setLanguage:Function,token:String,baseUrl:String,translationKeys:Array,loginRouteName:String,loginTranslationKeys:Array,login:{type:Boolean,default:!0},emitter:Object},methods:{saveLanguageSetting(a){const e=r.map(r.filter(this.languages,n=>n.checked),"code");f.set("I18N_LANGUAGE_SETTING",e)},handleLanguageSettingOpen(){this.LanguageSettingVisible=!this.LanguageSettingVisible},onClickOutside(){this.LanguageSettingVisible=!1},inputSearch(){this.type==="pageData"?this.getPageData():this.search()},closeModal(){this.searchText="",this.type="pageData",this.isModalVisible=!1,this.emitter.emit("closeModal")},openModal({name:a}){this.isModalVisible||(this.isModalVisible=!0,this.name=a,this.init())},findShallowStringDiff(a){return r.find(a,["_isEdit",!0])},async saveData({msg:a="保存成功"},e=!0){const n=[];if(r.map(this.mySaveData,o=>{r.map(this.languages,i=>{n.push({key:o.dictKey,page:o.page,lang:i.code,value:o[i.code]})})}),r.isEmpty(n)){S.Message.error({content:"没有需要保存的数据"});return}const s=await P({baseUrl:this.baseUrl,data:{appCode:this.appCode,isLocal:"F",data:n},token:this.token});s&&s.data.result===0?(S.Message.success({content:a||s.data.msg}),this.setLanguage(),this.initialData=r.cloneDeep(this.data.datas),this.mySaveData=[],this.router.go(0)):S.Message.error({content:s.data.msg||"保存失败"})},async saveNoEqual(){r.isEmpty(this.mySaveData)||this.saveData({msg:"已为您自动保存"},!1)},changePage(a){this.saveNoEqual(),this.type==="pageData"?this.getPageData({firstResult:(a-1)*this.page.pageSize}):this.search({firstResult:(a-1)*this.page.pageSize})},async getPageData(a){this.search({...a,commaSeparatedKeys:this.translationKeys.toString()},"pageData")},async getLoginData(a){this.search({...a,page:this.loginRouteName,commaSeparatedKeys:this.loginTranslationKeys.toString()},"pageData")},async search(a,e){this.loading=!0;const n=await G({baseUrl:this.baseUrl,data:{appCode:this.appCode,searchBlur:this.searchText,commaSeparatedLangs:r.map(this.languages,"code").toString(),page:e==="loginData"?this.loginRouteName:e==="pageData"?this.name:"common",pageSize:10,...a},token:this.token});if(n){this.initialData=r.cloneDeep(n.data.retVal.datas);let s=n.data.retVal.datas;this.data=r.cloneDeep(s),this.page={firstResult:n.data.retVal.firstResult,pageSize:n.data.retVal.pageSize,totalRows:n.data.retVal.totalRows}}this.loading=!1},changeTab(a){this.type=a,this.mySaveData=[],a==="data"?this.search():a==="pageData"?this.getPageData():a==="loginData"&&this.getLoginData()},async init(){let a=f.get("I18N_LANGUAGE_SETTING");const e=await D({token:this.token,baseUrl:this.baseUrl});if(e&&e.data.result==0){let n=e.data.retVal;r.isEmpty(a)&&(a=["zh-CN","en-US","zh-TW"]),r.map(n,s=>{r.includes(a,s.code)&&(s.checked=!0)}),this.languages=n,this.getPageData()}else S.Message.error("获取语言失败,出错了")}}},I=(a,e)=>{const n=a.__vccOpts||a;for(const[s,o]of e)n[s]=o;return n},q={key:0},W={class:"extra"},H={class:"gc_i18n_page"},J={style:{display:"flex"}};function F(a,e,n,s,o,i){const c=t.resolveComponent("Spin"),g=t.resolveComponent("Table"),u=t.resolveComponent("TabPane"),l=t.resolveComponent("Icon"),h=t.resolveComponent("Checkbox"),d=t.resolveComponent("DropdownItem"),y=t.resolveComponent("DropdownMenu"),w=t.resolveComponent("Dropdown"),V=t.resolveComponent("Input"),M=t.resolveComponent("Tabs"),ne=t.resolveComponent("Page"),R=t.resolveComponent("Button"),se=t.resolveComponent("Modal"),oe=t.resolveDirective("click-away");return t.openBlock(),t.createBlock(se,{modelValue:o.isModalVisible,"onUpdate:modelValue":e[4]||(e[4]=m=>o.isModalVisible=m),"mask-closable":!1,width:70,title:"多语言管理中心","footer-hide":"",onOnCancel:i.closeModal},{default:t.withCtx(()=>[o.isModalVisible?(t.openBlock(),t.createElementBlock("div",q,[t.createVNode(M,{modelValue:o.type,"onUpdate:modelValue":e[2]||(e[2]=m=>o.type=m),type:"card",class:"gc_i18n_tabs",onOnClick:i.changeTab},{extra:t.withCtx(()=>[t.createElementVNode("div",W,[t.withDirectives((t.openBlock(),t.createBlock(w,{style:{width:"80px"},transfer:"",trigger:"custom",placement:"bottom-start",visible:o.LanguageSettingVisible},{list:t.withCtx(()=>[t.createVNode(y,null,{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(o.languages,m=>(t.openBlock(),t.createBlock(d,{key:m.code},{default:t.withCtx(()=>[t.createVNode(h,{modelValue:m.checked,"onUpdate:modelValue":ie=>m.checked=ie,onOnChange:i.saveLanguageSetting},{default:t.withCtx(()=>[t.createElementVNode("span",null,t.toDisplayString(m.name),1)]),_:2},1032,["modelValue","onUpdate:modelValue","onOnChange"])]),_:2},1024))),128))]),_:1})]),default:t.withCtx(()=>[t.createElementVNode("a",{href:"javascript:void(0)",onClick:e[0]||(e[0]=(...m)=>i.handleLanguageSettingOpen&&i.handleLanguageSettingOpen(...m))},[e[5]||(e[5]=t.createTextVNode(" 语言 ",-1)),t.createVNode(l,{type:"ios-arrow-down"})])]),_:1},8,["visible"])),[[oe,i.onClickOutside]]),t.createVNode(V,{class:"gc_i18n_search",prefix:"ios-search",placeholder:"请输入搜索内容",modelValue:o.searchText,"onUpdate:modelValue":e[1]||(e[1]=m=>o.searchText=m),clearable:"",onOnEnter:i.inputSearch,onOnClear:i.inputSearch},null,8,["modelValue","onOnEnter","onOnClear"])])]),default:t.withCtx(()=>[t.createVNode(u,{name:"pageData",label:"当前页面"},{default:t.withCtx(()=>[o.loading?(t.openBlock(),t.createBlock(c,{key:0,class:"gc_i18n_spin"})):(t.openBlock(),t.createBlock(g,{key:1,border:"",height:380,columns:i.columns,data:o.data},null,8,["columns","data"]))]),_:1}),t.createVNode(u,{name:"data",label:"当前应用"},{default:t.withCtx(()=>[o.loading?(t.openBlock(),t.createBlock(c,{key:0,class:"gc_i18n_spin"})):(t.openBlock(),t.createBlock(g,{key:1,border:"",height:380,columns:i.columns,data:o.data},null,8,["columns","data"]))]),_:1}),n.login?(t.openBlock(),t.createBlock(u,{key:0,name:"loginData",label:"登录页面"},{default:t.withCtx(()=>[o.loading?(t.openBlock(),t.createBlock(c,{key:0,class:"gc_i18n_spin"})):(t.openBlock(),t.createBlock(g,{key:1,border:"",height:380,columns:i.columns,data:o.data},null,8,["columns","data"]))]),_:1})):t.createCommentVNode("",!0)]),_:1},8,["modelValue","onOnClick"]),t.createElementVNode("div",H,[t.createElementVNode("div",J,[t.createVNode(ne,{modelValue:i.firstResult,"onUpdate:modelValue":e[3]||(e[3]=m=>i.firstResult=m),total:o.page.totalRows,"page-size":10,simple:"","show-total":"",onOnChange:i.changePage},null,8,["modelValue","total","onOnChange"]),t.createElementVNode("div",null,[t.createElementVNode("span",null," 共 "+t.toDisplayString(o.page.totalRows)+" 项当前页数据 ",1)])]),t.createElementVNode("div",null,[t.createVNode(R,{style:{"margin-right":"10px"},onClick:i.closeModal},{default:t.withCtx(()=>[...e[6]||(e[6]=[t.createTextVNode("关闭",-1)])]),_:1},8,["onClick"]),t.createVNode(R,{type:"primary",onClick:i.saveData},{default:t.withCtx(()=>[...e[7]||(e[7]=[t.createTextVNode("保存",-1)])]),_:1},8,["onClick"])])])])):t.createCommentVNode("",!0)]),_:1},8,["modelValue","onOnCancel"])}const Q=I(j,[["render",F],["__scopeId","data-v-1f438196"]]),v={},X={class:"earth"};function Y(a,e){const n=t.resolveComponent("Input"),s=t.resolveComponent("Icon");return t.openBlock(),t.createElementBlock("div",X,[t.createVNode(n,{class:"input"}),t.createVNode(s,{class:"icon",type:"ios-globe",size:"20"})])}const Z=I(v,[["render",Y]]);function b(a){const e=[],n=/(?:\$t|_ctx\.\$t)\s*\(\s*(['"])([^'"]+?)\1/gs;if(a.template){let s;for(;(s=n.exec(a.template))!==null;)e.push(s[2])}if(a.render){const s=a.render.toString();let o;for(;(o=n.exec(s))!==null;)e.push(o[2])}if(a.setup){const s=a.setup.toString();let o;for(;(o=n.exec(s))!==null;)e.push(o[2])}if(a.methods)for(const s in a.methods){const o=a.methods[s].toString();let i;for(;(i=n.exec(o))!==null;)e.push(i[2])}if(a.components)for(const s in a.components){const o=a.components[s];e.push(...b(o))}return[...new Set(e)]}function $(a){return{all:a=a||new Map,on:function(e,n){var s=a.get(e);s?s.push(n):a.set(e,[n])},off:function(e,n){var s=a.get(e);s&&(n?s.splice(s.indexOf(n)>>>0,1):a.set(e,[]))},emit:function(e,n){var s=a.get(e);s&&s.slice().map(function(o){o(n)}),(s=a.get("*"))&&s.slice().map(function(o){o(e,n)})}}}const E=function(){return document.ontouchstart!==null?"click":"touchstart"},N="__vue_click_away__",L=function(a,e,n){x(a);let s=n.context,o=e.value,i=!1;setTimeout(function(){i=!0},0),a[N]=function(c){if((!a||!a.contains(c.target))&&o&&i&&typeof o=="function")return o.call(s,c)},document.addEventListener(E(),a[N],!1)},x=function(a){document.removeEventListener(E(),a[N],!1),delete a[N]},ee=function(a,e,n){e.value!==e.oldValue&&L(a,e,n)},te={install:function(a){a.directive("click-away",ae)}},ae={mounted:L,updated:ee,unmounted:x};function O(a){const e={alg:"HS512"},n={orgCode:a},s=JSON.stringify(e),o=JSON.stringify(n);return U.jws.JWS.sign("HS512",s,o,"")}class k{constructor(e={}){const{router:n,appCode:s,messages:o,token:i,orgCode:c,loginRouteName:g,login:u,keyboard:l,locale:h}=e;this.token=i||O(c)||f.get("I18N_TOKEN"),this.loadI18n=!0,this.appCode=s,this.router=n,this.locale=h||f.get("I18N_LANGUAGE")||navigator.language||"zh-CN",this.name="",this.messages=o||{},this.translationKeys=[],this.translationKeySet=new Set,this.loginRouteName=g||"login",this.login=u,this.loginTranslationKeys=[],this.keyboard=l||"shift>t",this.baseUrl=e.dev?"https://test.ihotel.cn":"https://trans.ihotel.cn",this.initRouterGuards(),this.initI18n(e),C.bind(this.keyboard,d=>{!this.configInstance&&this.name!=this.loginRouteName&&(this.translationKeys=Array.from(this.translationKeySet),this.configInstance=this.createModal(this.name),this.configInstance.openModal({name:this.name}))}),this.setupLanguageChangeListener()}setupLanguageChangeListener(){"onlanguagechange"in window&&window.addEventListener("languagechange",()=>{const e=navigator.language;e!==this.locale&&this.setLanguage(e)})}initRouterGuards(){k._routerGuardRegistered||(k._routerGuardRegistered=!0,this.router.beforeEach(async(e,n,s)=>{var g,u;const{language:o,token:i}=e.query;this.configInstance&&this.configInstance.closeModal(),this.name=e.name,this.translationKeySet=new Set,i&&this.setToken(i),this.loadI18n&&await this.setLanguage(o||this.locale),this.loadI18n=!1;const c=this.router.getRoutes().find(l=>l.name===this.loginRouteName||l.path===`/${this.loginRouteName}`);if(c&&c.components){let l=(g=c.components)==null?void 0:g.default;if(typeof l=="function"&&l.toString().includes("import("))try{l=await l(),l=l.default}catch(d){console.error("加载异步组件时出错:",d),s();return}const h=b(l);this.loginTranslationKeys=h}if(e.matched.length>0)try{const l=[];for(const h of e.matched){let d=(u=h.components)==null?void 0:u.default;if(typeof d=="function"&&d.toString().includes("import(")&&(d=await d(),d=d.default),d){const y=b(d);l.push(...y)}}this.translationKeys=l}catch(l){console.error("加载异步组件时出错:",l),s();return}s()}),k._afterEachGuardRegistered||(k._afterEachGuardRegistered=!0,this.router.afterEach(async()=>{var o,i,c;await t.nextTick();const e=Array.from(this.translationKeySet),n=Array.from(new Set([...this.translationKeys||[],...e]));this.translationKeys=n,((c=(i=(o=this.router)==null?void 0:o.currentRoute)==null?void 0:i.value)==null?void 0:c.name)===this.loginRouteName&&(this.loginTranslationKeys=n)})))}initI18n(e){this.i18n=K.createI18n({locale:this.locale,allowComposition:!0,globalInjection:!0,legacy:!1,silentTranslationWarn:!0,silentFallbackWarn:!0,missingWarn:!1,fallbackWarn:!1,...e});const n=this.i18n.global.t;globalThis.$t=this.i18n.global.t=(s,o)=>{var c,g,u;typeof s=="string"&&this.translationKeySet.add(s);const i=(u=(g=(c=this.router)==null?void 0:c.currentRoute)==null?void 0:g.value)==null?void 0:u.name;if(i){const l=`${i}.${s}`,h=n(l);if(h!==l&&!r.isEmpty(h))return h;{const d=`common.${s}`,y=n(d);return y!==d?y:n(s,o)}}else return n(s,o)},globalThis.$i18nLogin=async s=>{this.setToken(O(s)),this.clearI18n(),await this.setLanguage(this.locale),location.reload()},globalThis.$i18nLogout=s=>{this.clearI18n(),location.reload()},globalThis.$deepScan=function(s){return s},globalThis.$clearI18n=this.clearI18n=()=>{f.namespace(`I18N_${r.toUpper(this.appCode)}`).clearAll()},globalThis.$changeLocale=this.changeLocale=this.i18n.global.changeLocale=async s=>{await this.setLanguage(s||this.locale)}}setToken(e){this.token=e,f.set("I18N_TOKEN",e)}async getLanguages(e=!1){const n=f.get("I18N_LANGUAGES");if(n&&!e)return n;{const s=await D({baseUrl:this.baseUrl,appCode:this.appCode,token:this.token});if(s.data){const o=r.get(s.data,"retVal");return f.set("I18N_LANGUAGES",o),o}}}async setLanguage(e){let n=f.get("I18N_MESSAGES_COMMON_"+e);if(!n){const s=await _.get(`https://cdn.ihotel.cn/i18n_messages/${e}.json`),{data:o}=s;s.status===200&&(n=o,f.set("I18N_MESSAGES_COMMON_"+e,o))}return new Promise(async(s,o)=>{const i=await z({baseUrl:this.baseUrl,appCode:this.appCode,language:e||this.locale,token:this.token,routerName:this.name});if(i){const c=B(i),g=r.assign({},n,r.get(this.messages,e),c);this.i18n.global.setLocaleMessage(e,g)}this.locale=e,this.i18n.global.locale.value=e,f.set("I18N_LANGUAGE",e),s(!0)})}createModal(e){const n=$();return n.on("closeModal",s=>{this.configInstance=null}),t.createApp(Q,{appCode:this.appCode,router:this.router,token:this.token,setLanguage:this.setLanguage.bind(this,this.locale),name:e||this.name,translationKeys:this.translationKeys,loginRouteName:this.loginRouteName,loginTranslationKeys:this.loginTranslationKeys,login:this.login,baseUrl:this.baseUrl,emitter:n}).use(S).use(te).mount(document.createElement("div"))}install(e,n={}){e.use(S,{i18n:this.i18n}),e.use(this.i18n),e.component("i18n-earth",Z)}}p.I18n=k,p.default=k,Object.defineProperties(p,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(p,C){typeof exports=="object"&&typeof module<"u"?C(exports,require("keyboardjs"),require("view-ui-plus"),require("view-ui-plus/dist/styles/viewuiplus.css"),require("vue"),require("vue-i18n"),require("lodash-es"),require("axios"),require("store2"),require("jsrsasign")):typeof define=="function"&&define.amd?define(["exports","keyboardjs","view-ui-plus","view-ui-plus/dist/styles/viewuiplus.css","vue","vue-i18n","lodash-es","axios","store2","jsrsasign"],C):(p=typeof globalThis<"u"?globalThis:p||self,C(p.gc_i18n={},p.keyboardJS,p.iview,null,p.Vue,p.vueI18n,p._,p.Axios,p.store2,p.jsrsasign))})(this,(function(p,C,S,le,t,M,r,N,f,U){"use strict";const B=a=>{const e={};for(const n of a)e[n.key]=n.value;return e},A=(a,e,n)=>(e.forEach(s=>{const o=s.key.split(".");o[0]==="common"&&r.find(a,{key:`${n}.${o[1]}`})&&r.remove(a,{key:`${n}.${o[1]}`});const i=r.find(a,{key:s.key});i?r.merge(i,s):a.push(s)}),a),D=async({baseUrl:a,token:e})=>N.get(a+"/i18n-web/sysoption/getsupportedlangs",{headers:{Authorization:e}}),T=async({appCode:a,language:e="zh-CN",page:n,lastPullDate:s,baseUrl:o,token:i})=>new Promise(async(c,u)=>{const g=o+"/i18n-web/kv_translate/kv_translates",l=s?g+"?lastPullDate="+s:g,h=await N({url:l,method:"GET",headers:{appCode:a,page:n,language:e,Authorization:i}});h.data&&h.data.result==0?c(h.data.retVal):c(h)}),G=async({data:a,token:e,baseUrl:n})=>N({url:n+"/i18n-web/kv_translate/userDicts",method:"POST",headers:{Authorization:e},data:a}),P=async({data:a,token:e,baseUrl:n})=>N({url:n+"/i18n-web/kv_translate/batch",method:"POST",data:a,headers:{Authorization:e}}),z=async({baseUrl:a,appCode:e,language:n="zh-CN",token:s,routerName:o})=>new Promise(async(i,c)=>{const u=f.namespace(`I18N_${r.toUpper(e)}`),g={baseUrl:a,appCode:e,language:n,token:s},l=u.get(n);if(!l||!l.lastPullDate){const h=await T(g);h&&(u.set(n,h),i(h.translatesDTOs))}else{const{lastPullDate:h}=l,d=await T({...g,lastPullDate:h});if(d){const y=r.get(l,"translatesDTOs");if(r.isEmpty(d.translatesDTOs))i(y);else{const _=A(y,d.translatesDTOs,o),V={lastPullDate:d.lastPullDate,translatesDTOs:_};f.namespace(`I18N_${r.toUpper(e)}`).set(n,V,":"),i(_)}}}}),j={data(){return{LanguageSettingVisible:!1,isModalVisible:!1,loading:!1,searchText:"",name:"",type:"pageData",languages:[],mySaveData:[],pageData:[],pageDataShow:[],page:{pageSize:10,firstResult:0},data:[]}},computed:{firstResult(){return this.page.firstResult/this.page.pageSize+1},columns(){let a=[{title:"关键词",fixed:"left",width:110,key:"dictKey"}];return r.map(this.languages,e=>{const n=e.code;if(e.checked)return a.push({title:e.name,key:n,render:(s,{row:o,index:i})=>{const c=o[n],{localhost:u}=o;return u?null:t.createVNode(t.resolveComponent("Input"),{modelValue:c,onOnChange:g=>{const l=g.target.value,{dictKey:h}=o,d=r.findIndex(this.mySaveData,{dictKey:h});d>-1?this.mySaveData[d][n]=l:this.mySaveData.push({...o,[n]:l,page:this.type==="loginData"?this.loginRouteName:this.type==="pageData"?this.name:"common"})}},null)}})}),a}},props:{appCode:String,router:Object,setLanguage:Function,token:String,baseUrl:String,translationKeys:Array,loginRouteName:String,loginTranslationKeys:Array,login:{type:Boolean,default:!0},emitter:Object},methods:{saveLanguageSetting(a){const e=r.map(r.filter(this.languages,n=>n.checked),"code");f.set("I18N_LANGUAGE_SETTING",e)},handleLanguageSettingOpen(){this.LanguageSettingVisible=!this.LanguageSettingVisible},onClickOutside(){this.LanguageSettingVisible=!1},inputSearch(){this.type==="pageData"?this.getPageData():this.search()},closeModal(){this.searchText="",this.type="pageData",this.isModalVisible=!1,this.emitter.emit("closeModal")},openModal({name:a}){this.isModalVisible||(this.isModalVisible=!0,this.name=a,this.init())},findShallowStringDiff(a){return r.find(a,["_isEdit",!0])},async saveData({msg:a="保存成功"},e=!0){const n=[];if(r.map(this.mySaveData,o=>{r.map(this.languages,i=>{n.push({key:o.dictKey,page:o.page,lang:i.code,value:o[i.code]})})}),r.isEmpty(n)){S.Message.error({content:"没有需要保存的数据"});return}const s=await P({baseUrl:this.baseUrl,data:{appCode:this.appCode,isLocal:"F",data:n},token:this.token});s&&s.data.result===0?(S.Message.success({content:a||s.data.msg}),this.setLanguage(),this.initialData=r.cloneDeep(this.data.datas),this.mySaveData=[],this.router.go(0)):S.Message.error({content:s.data.msg||"保存失败"})},async saveNoEqual(){r.isEmpty(this.mySaveData)||this.saveData({msg:"已为您自动保存"},!1)},changePage(a){this.saveNoEqual(),this.type==="pageData"?this.getPageData({firstResult:(a-1)*this.page.pageSize}):this.search({firstResult:(a-1)*this.page.pageSize})},async getPageData(a){this.search({...a,commaSeparatedKeys:this.translationKeys.toString()},"pageData")},async getLoginData(a){this.search({...a,page:this.loginRouteName,commaSeparatedKeys:this.loginTranslationKeys.toString()},"pageData")},async search(a,e){this.loading=!0;const n=await G({baseUrl:this.baseUrl,data:{appCode:this.appCode,searchBlur:this.searchText,commaSeparatedLangs:r.map(this.languages,"code").toString(),page:e==="loginData"?this.loginRouteName:e==="pageData"?this.name:"common",pageSize:10,...a},token:this.token});if(n){this.initialData=r.cloneDeep(n.data.retVal.datas);let s=n.data.retVal.datas;this.data=r.cloneDeep(s),this.page={firstResult:n.data.retVal.firstResult,pageSize:n.data.retVal.pageSize,totalRows:n.data.retVal.totalRows}}this.loading=!1},changeTab(a){this.type=a,this.mySaveData=[],a==="data"?this.search():a==="pageData"?this.getPageData():a==="loginData"&&this.getLoginData()},async init(){let a=f.get("I18N_LANGUAGE_SETTING");const e=await D({token:this.token,baseUrl:this.baseUrl});if(e&&e.data.result==0){let n=e.data.retVal;r.isEmpty(a)&&(a=["zh-CN","en-US","zh-TW"]),r.map(n,s=>{r.includes(a,s.code)&&(s.checked=!0)}),this.languages=n,this.getPageData()}else S.Message.error("获取语言失败,出错了")}}},I=(a,e)=>{const n=a.__vccOpts||a;for(const[s,o]of e)n[s]=o;return n},q={key:0},W={class:"extra"},H={class:"gc_i18n_page"},J={style:{display:"flex"}};function F(a,e,n,s,o,i){const c=t.resolveComponent("Spin"),u=t.resolveComponent("Table"),g=t.resolveComponent("TabPane"),l=t.resolveComponent("Icon"),h=t.resolveComponent("Checkbox"),d=t.resolveComponent("DropdownItem"),y=t.resolveComponent("DropdownMenu"),_=t.resolveComponent("Dropdown"),V=t.resolveComponent("Input"),R=t.resolveComponent("Tabs"),ne=t.resolveComponent("Page"),K=t.resolveComponent("Button"),se=t.resolveComponent("Modal"),oe=t.resolveDirective("click-away");return t.openBlock(),t.createBlock(se,{modelValue:o.isModalVisible,"onUpdate:modelValue":e[4]||(e[4]=m=>o.isModalVisible=m),"mask-closable":!1,width:70,title:"多语言管理中心","footer-hide":"",onOnCancel:i.closeModal},{default:t.withCtx(()=>[o.isModalVisible?(t.openBlock(),t.createElementBlock("div",q,[t.createVNode(R,{modelValue:o.type,"onUpdate:modelValue":e[2]||(e[2]=m=>o.type=m),type:"card",class:"gc_i18n_tabs",onOnClick:i.changeTab},{extra:t.withCtx(()=>[t.createElementVNode("div",W,[t.withDirectives((t.openBlock(),t.createBlock(_,{style:{width:"80px"},transfer:"",trigger:"custom",placement:"bottom-start",visible:o.LanguageSettingVisible},{list:t.withCtx(()=>[t.createVNode(y,null,{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(o.languages,m=>(t.openBlock(),t.createBlock(d,{key:m.code},{default:t.withCtx(()=>[t.createVNode(h,{modelValue:m.checked,"onUpdate:modelValue":ie=>m.checked=ie,onOnChange:i.saveLanguageSetting},{default:t.withCtx(()=>[t.createElementVNode("span",null,t.toDisplayString(m.name),1)]),_:2},1032,["modelValue","onUpdate:modelValue","onOnChange"])]),_:2},1024))),128))]),_:1})]),default:t.withCtx(()=>[t.createElementVNode("a",{href:"javascript:void(0)",onClick:e[0]||(e[0]=(...m)=>i.handleLanguageSettingOpen&&i.handleLanguageSettingOpen(...m))},[e[5]||(e[5]=t.createTextVNode(" 语言 ",-1)),t.createVNode(l,{type:"ios-arrow-down"})])]),_:1},8,["visible"])),[[oe,i.onClickOutside]]),t.createVNode(V,{class:"gc_i18n_search",prefix:"ios-search",placeholder:"请输入搜索内容",modelValue:o.searchText,"onUpdate:modelValue":e[1]||(e[1]=m=>o.searchText=m),clearable:"",onOnEnter:i.inputSearch,onOnClear:i.inputSearch},null,8,["modelValue","onOnEnter","onOnClear"])])]),default:t.withCtx(()=>[t.createVNode(g,{name:"pageData",label:"当前页面"},{default:t.withCtx(()=>[o.loading?(t.openBlock(),t.createBlock(c,{key:0,class:"gc_i18n_spin"})):(t.openBlock(),t.createBlock(u,{key:1,border:"",height:380,columns:i.columns,data:o.data},null,8,["columns","data"]))]),_:1}),t.createVNode(g,{name:"data",label:"当前应用"},{default:t.withCtx(()=>[o.loading?(t.openBlock(),t.createBlock(c,{key:0,class:"gc_i18n_spin"})):(t.openBlock(),t.createBlock(u,{key:1,border:"",height:380,columns:i.columns,data:o.data},null,8,["columns","data"]))]),_:1}),n.login?(t.openBlock(),t.createBlock(g,{key:0,name:"loginData",label:"登录页面"},{default:t.withCtx(()=>[o.loading?(t.openBlock(),t.createBlock(c,{key:0,class:"gc_i18n_spin"})):(t.openBlock(),t.createBlock(u,{key:1,border:"",height:380,columns:i.columns,data:o.data},null,8,["columns","data"]))]),_:1})):t.createCommentVNode("",!0)]),_:1},8,["modelValue","onOnClick"]),t.createElementVNode("div",H,[t.createElementVNode("div",J,[t.createVNode(ne,{modelValue:i.firstResult,"onUpdate:modelValue":e[3]||(e[3]=m=>i.firstResult=m),total:o.page.totalRows,"page-size":10,simple:"","show-total":"",onOnChange:i.changePage},null,8,["modelValue","total","onOnChange"]),t.createElementVNode("div",null,[t.createElementVNode("span",null," 共 "+t.toDisplayString(o.page.totalRows)+" 项当前页数据 ",1)])]),t.createElementVNode("div",null,[t.createVNode(K,{style:{"margin-right":"10px"},onClick:i.closeModal},{default:t.withCtx(()=>[...e[6]||(e[6]=[t.createTextVNode("关闭",-1)])]),_:1},8,["onClick"]),t.createVNode(K,{type:"primary",onClick:i.saveData},{default:t.withCtx(()=>[...e[7]||(e[7]=[t.createTextVNode("保存",-1)])]),_:1},8,["onClick"])])])])):t.createCommentVNode("",!0)]),_:1},8,["modelValue","onOnCancel"])}const Q=I(j,[["render",F],["__scopeId","data-v-1f438196"]]),v={},X={class:"earth"};function Y(a,e){const n=t.resolveComponent("Input"),s=t.resolveComponent("Icon");return t.openBlock(),t.createElementBlock("div",X,[t.createVNode(n,{class:"input"}),t.createVNode(s,{class:"icon",type:"ios-globe",size:"20"})])}const Z=I(v,[["render",Y]]);function b(a){const e=[],n=/(?:\$t|_ctx\.\$t)\s*\(\s*(['"])([^'"]+?)\1/gs;if(a.template){let s;for(;(s=n.exec(a.template))!==null;)e.push(s[2])}if(a.render){const s=a.render.toString();let o;for(;(o=n.exec(s))!==null;)e.push(o[2])}if(a.setup){const s=a.setup.toString();let o;for(;(o=n.exec(s))!==null;)e.push(o[2])}if(a.methods)for(const s in a.methods){const o=a.methods[s].toString();let i;for(;(i=n.exec(o))!==null;)e.push(i[2])}if(a.components)for(const s in a.components){const o=a.components[s];e.push(...b(o))}return[...new Set(e)]}function $(a){return{all:a=a||new Map,on:function(e,n){var s=a.get(e);s?s.push(n):a.set(e,[n])},off:function(e,n){var s=a.get(e);s&&(n?s.splice(s.indexOf(n)>>>0,1):a.set(e,[]))},emit:function(e,n){var s=a.get(e);s&&s.slice().map(function(o){o(n)}),(s=a.get("*"))&&s.slice().map(function(o){o(e,n)})}}}const L=function(){return document.ontouchstart!==null?"click":"touchstart"},w="__vue_click_away__",E=function(a,e,n){x(a);let s=n.context,o=e.value,i=!1;setTimeout(function(){i=!0},0),a[w]=function(c){if((!a||!a.contains(c.target))&&o&&i&&typeof o=="function")return o.call(s,c)},document.addEventListener(L(),a[w],!1)},x=function(a){document.removeEventListener(L(),a[w],!1),delete a[w]},ee=function(a,e,n){e.value!==e.oldValue&&E(a,e,n)},te={install:function(a){a.directive("click-away",ae)}},ae={mounted:E,updated:ee,unmounted:x};function O(a){const e={alg:"HS512"},n={orgCode:a},s=JSON.stringify(e),o=JSON.stringify(n);return U.jws.JWS.sign("HS512",s,o,"")}class k{constructor(e={}){const{router:n,appCode:s,messages:o,token:i,orgCode:c,loginRouteName:u,login:g,keyboard:l,locale:h}=e;this.token=i||O(c)||f.get("I18N_TOKEN"),this.loadI18n=!0,this.appCode=s,this.router=n,this.locale=h||f.get("I18N_LANGUAGE")||navigator.language||"zh-CN",this.name="",this.messages=o||{},this.translationKeys=[],this.translationKeySet=new Set,this.loginRouteName=u||"login",this.login=g,this.loginTranslationKeys=[],this.keyboard=l||"shift>t",this.baseUrl=e.dev?"https://test.ihotel.cn":"https://trans.ihotel.cn",this.initRouterGuards(),this.initI18n(e),C.bind(this.keyboard,d=>{!this.configInstance&&this.name!=this.loginRouteName&&(this.translationKeys=Array.from(this.translationKeySet),this.configInstance=this.createModal(this.name),this.configInstance.openModal({name:this.name}))}),this.setupLanguageChangeListener()}setupLanguageChangeListener(){"onlanguagechange"in window&&window.addEventListener("languagechange",()=>{const e=navigator.language;e!==this.locale&&this.setLanguage(e)})}initRouterGuards(){k._routerGuardRegistered||(k._routerGuardRegistered=!0,this.router.beforeEach(async(e,n,s)=>{var u,g;const{language:o,token:i}=e.query;this.configInstance&&this.configInstance.closeModal(),this.name=e.name,this.translationKeySet=new Set,i&&this.setToken(i),this.loadI18n&&await this.setLanguage(o||this.locale),this.loadI18n=!1;const c=this.router.getRoutes().find(l=>l.name===this.loginRouteName||l.path===`/${this.loginRouteName}`);if(c&&c.components){let l=(u=c.components)==null?void 0:u.default;if(typeof l=="function"&&l.toString().includes("import("))try{l=await l(),l=l.default}catch(d){console.error("加载异步组件时出错:",d),s();return}const h=b(l);this.loginTranslationKeys=h}if(e.matched.length>0)try{const l=[];for(const h of e.matched){let d=(g=h.components)==null?void 0:g.default;if(typeof d=="function"&&d.toString().includes("import(")&&(d=await d(),d=d.default),d){const y=b(d);l.push(...y)}}this.translationKeys=l}catch(l){console.error("加载异步组件时出错:",l),s();return}s()}),k._afterEachGuardRegistered||(k._afterEachGuardRegistered=!0,this.router.afterEach(async()=>{var o,i,c;await t.nextTick();const e=Array.from(this.translationKeySet),n=Array.from(new Set([...this.translationKeys||[],...e]));this.translationKeys=n,((c=(i=(o=this.router)==null?void 0:o.currentRoute)==null?void 0:i.value)==null?void 0:c.name)===this.loginRouteName&&(this.loginTranslationKeys=n)})))}initI18n(e){this.i18n=M.createI18n({locale:this.locale,allowComposition:!0,globalInjection:!0,legacy:!1,silentTranslationWarn:!0,silentFallbackWarn:!0,missingWarn:!1,fallbackWarn:!1,...e});const n=this.i18n.global.t;globalThis.$t=this.i18n.global.t=(s,o)=>{var c,u,g;typeof s=="string"&&this.translationKeySet.add(s);const i=(g=(u=(c=this.router)==null?void 0:c.currentRoute)==null?void 0:u.value)==null?void 0:g.name;if(i){const l=`${i}.${s}`,h=n(l);if(h!==l&&!r.isEmpty(h))return h;{const d=`common.${s}`,y=n(d);return y!==d?y:n(s,o)}}else return n(s,o)},globalThis.$i18nLogin=async s=>{this.setToken(O(s)),this.clearI18n(),await this.setLanguage(this.locale),location.reload()},globalThis.$i18nLogout=s=>{this.clearI18n(),location.reload()},globalThis.$deepScan=function(s){return s},globalThis.$clearI18n=this.clearI18n=()=>{f.namespace(`I18N_${r.toUpper(this.appCode)}`).clearAll()},globalThis.$changeLocale=this.changeLocale=this.i18n.global.changeLocale=async s=>{await this.setLanguage(s||this.locale)}}setToken(e){this.token=e,f.set("I18N_TOKEN",e)}async getLanguages(e=!1){const n=f.get("I18N_LANGUAGES");if(n&&!e)return n;{const s=await D({baseUrl:this.baseUrl,appCode:this.appCode,token:this.token});if(s.data){const o=r.get(s.data,"retVal");return f.set("I18N_LANGUAGES",o),o}}}async setLanguage(e="zh-CN"){const n="I18N_MESSAGES_COMMON_"+e;let s=f.get(n);if(r.isEmpty(s)){const o=await N.get(`https://cdn.ihotel.cn/i18n_messages/${e}.json`);if(o){const{data:i}=o;s=i,f.set(n,i)}}return new Promise(async(o,i)=>{const c=await z({baseUrl:this.baseUrl,appCode:this.appCode,language:e||this.locale,token:this.token,routerName:this.name});if(c){const u=B(c),g=r.assign({},s,r.get(this.messages,e),u);this.i18n.global.setLocaleMessage(e,g)}this.locale=e,this.i18n.global.locale.value=e,f.set("I18N_LANGUAGE",e),o(!0)})}createModal(e){const n=$();return n.on("closeModal",s=>{this.configInstance=null}),t.createApp(Q,{appCode:this.appCode,router:this.router,token:this.token,setLanguage:this.setLanguage.bind(this,this.locale),name:e||this.name,translationKeys:this.translationKeys,loginRouteName:this.loginRouteName,loginTranslationKeys:this.loginTranslationKeys,login:this.login,baseUrl:this.baseUrl,emitter:n}).use(S).use(te).mount(document.createElement("div"))}install(e,n={}){e.use(S,{i18n:this.i18n}),e.use(this.i18n),e.component("i18n-earth",Z)}}p.I18n=k,p.default=k,Object.defineProperties(p,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gc_i18n",
3
- "version": "1.3.3",
3
+ "version": "1.3.5",
4
4
  "type": "module",
5
5
  "main": "./lib/gc_i18n.umd.js",
6
6
  "module": "./lib/gc_i18n.es.js",
package/packages/index.js CHANGED
@@ -269,16 +269,17 @@ class I18n {
269
269
  }
270
270
  }
271
271
  }
272
- async setLanguage(language) {
273
- let commonMessages = store2.get("I18N_MESSAGES_COMMON_" + language);
274
- if (!commonMessages) {
275
- const res = await axios.get(
272
+ async setLanguage(language = "zh-CN") {
273
+ const commonMessagesKey = "I18N_MESSAGES_COMMON_" + language;
274
+ let commonMessages = store2.get(commonMessagesKey);
275
+ if (_.isEmpty(commonMessages)) {
276
+ const lang = await axios.get(
276
277
  `https://cdn.ihotel.cn/i18n_messages/${language}.json`
277
278
  );
278
- const { data } = res;
279
- if (res.status === 200) {
279
+ if (lang) {
280
+ const { data } = lang;
280
281
  commonMessages = data;
281
- store2.set("I18N_MESSAGES_COMMON_" + language, data);
282
+ store2.set(commonMessagesKey, data);
282
283
  }
283
284
  }
284
285
 
@@ -9,7 +9,6 @@ export const convertArrayToObject = (arr) => {
9
9
 
10
10
  export const mergeArraysByKey = (arr1, arr2, routerName) => {
11
11
  arr2.forEach((obj2) => {
12
- console.log("obj2.key ", obj2.key);
13
12
  const type = obj2.key.split(".");
14
13
  if (type[0] === "common") {
15
14
  const findHome = _.find(arr1, { key: `${routerName}.${type[1]}` });