efront 4.8.2 → 4.8.3

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.
@@ -8,7 +8,7 @@ function parseKV(string) {
8
8
  if (!spliter) spliter = a;
9
9
  else if (!equals) equals = a;
10
10
  }
11
- else if (typeof decode === 'function') {
11
+ else {
12
12
  decode = a;
13
13
  }
14
14
  }
@@ -86,9 +86,53 @@
86
86
  var baiduFanyiConfig = data.getInstance("fanyi-config");
87
87
  var a = button;
88
88
  var salt = `efront${Math.random().toString(36).slice(6, 16)}`;
89
- var requestBaiduFanyi = async function (str, to, from = 'auto') {
89
+ var requestBaiduFanyi = async function (str, to, from = 'auto', nbr) {
90
90
  var appid = baiduFanyiConfig.appid || "20210218000700622";
91
91
  var sign = baiduFanyiConfig.sign || "xJf0dfXeJdzudCTBn3QS";
92
+ var limit = 6000;
93
+ if (str.length > limit || /[\r\n\u2028\u2029]/.test(str) && nbr !== false) {
94
+ var strs = [];
95
+ str.replace(/([^\r\n\u2028\u2029]*)([\r\n\u2028\u2029]*)/g, function (_, a, b) {
96
+ strs.push([a, b]);
97
+ });
98
+ var reqstr = [];
99
+ var reqbr = [];
100
+ var res = [];
101
+ var reqlength = 0;
102
+ var req = async function () {
103
+ var res = await requestBaiduFanyi(reqstr.join('\r\n'), to, from, false);
104
+ res = res.split("\r\n").map((a, i) => {
105
+ return a + reqbr[i];
106
+ }).join("");
107
+ return res;
108
+ };
109
+ for (var s of strs) {
110
+ var [a, b] = s;
111
+ if (a.length > limit) {
112
+ throw `i18n文本过长无法翻译!`;
113
+ }
114
+
115
+ reqlength += a.length + 2;
116
+ if (reqlength > limit || !a && reqstr.length) {
117
+ res.push(await req());
118
+ await wait(200);
119
+ reqstr = [];
120
+ reqbr = [];
121
+ reqlength = a.length;
122
+ }
123
+ if (a) {
124
+ reqstr.push(a);
125
+ reqbr.push(b);
126
+ }
127
+ else {
128
+ res.push(b);
129
+ }
130
+ }
131
+ if (reqlength) {
132
+ res.push(await req());
133
+ }
134
+ return res.join('');
135
+ }
92
136
  var xhr = await cross("get", "https://fanyi-api.baidu.com/api/trans/vip/translate").send({
93
137
  q: str,
94
138
  from,
@@ -98,7 +142,10 @@
98
142
  sign: md5(`${appid}${str}${salt}${sign}`),
99
143
  });
100
144
  var data = JSON.parse(xhr.response);
101
- return data.trans_result[0].dst;
145
+ if (+data.error_code > 54000) {
146
+ throw data.error_msg;
147
+ }
148
+ return data.trans_result.map(a => a.dst).join('\r\n');
102
149
  };
103
150
  var editCode = function () {
104
151
  supports.forEach(s => s.checked = false);
@@ -438,16 +485,21 @@
438
485
  var liang = item.liang;
439
486
  var text = item.text;
440
487
  }
488
+ var from = 'auto';
441
489
  if (!text) for (var k in fanyi) {
442
- if (fanyi[k]) text = fanyi[k];
490
+ if (fanyi[k]) text = fanyi[k], from = k;
443
491
  }
444
- for (var s of this.supports) {
445
- if (fanyi[s.id] && fanyi[s.id].trim()) continue;
446
- fanyi[s.id] = await requestBaiduFanyi(text, s.id);
447
- liang++;
448
- render.digest();
492
+ try {
493
+ for (var s of this.supports) {
494
+ if (fanyi[s.id] && fanyi[s.id].trim()) continue;
495
+ fanyi[s.id] = await requestBaiduFanyi(text, s.id, from);
496
+ liang++;
497
+ render.digest();
498
+ }
499
+ if (item) item.liang = liang;
500
+ } catch (e) {
501
+ alert(e, 'error');
449
502
  }
450
- if (item) item.liang = liang;
451
503
  },
452
504
  save() {
453
505
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "4.8.2",
3
+ "version": "4.8.3",
4
4
  "description": "简化前端开发,优化web性能",
5
5
  "main": "public/efront.js",
6
6
  "directories": {