efront 3.36.0 → 3.36.1

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.
@@ -0,0 +1,137 @@
1
+ - zh-CN: 服务器异常$1
2
+ en: Server Exception $1
3
+
4
+ - zh-CN: $1之前需要使用$2命令在$3上设置$4
5
+ en: Before $1, you need to use the $2 command to set $4 on $3
6
+
7
+ - zh-CN: 请输入服务器密码
8
+ en: Please enter the server password
9
+
10
+ - zh-CN: 登录
11
+ en: Sign in
12
+
13
+ - zh-CN: 文本超长,无法翻译
14
+ en: The text is too long to be translated
15
+
16
+ - zh-CN: 没有权限!
17
+ en: No permission!
18
+
19
+ - zh-CN: 未找到指定的资源
20
+ en: The specified resource was not found
21
+
22
+ - zh-CN: 原始名称
23
+ en: Original Name
24
+
25
+ - zh-CN: 输入新名称
26
+ en: Enter a new name
27
+
28
+ - zh-CN: 请过一段时间再试
29
+ en: Please try again later
30
+
31
+ - zh-CN: 服务器取消了您的请求
32
+ en: The server canceled your request
33
+
34
+ - zh-CN: 文件
35
+ en: file
36
+
37
+ - zh-CN: 键名
38
+ en: Key Name
39
+
40
+ - zh-CN: 显示名
41
+ en: Display Name
42
+
43
+ - zh-CN: 密钥
44
+ en: secret key
45
+
46
+ - zh-CN: 备注
47
+ en: remarks
48
+
49
+ - zh-CN: 任务ID
50
+ en: Task ID
51
+
52
+ - zh-CN: 任务名
53
+ en: Task Name
54
+
55
+ - zh-CN: 是否启用
56
+ en: Enabled or not
57
+
58
+ - zh-CN: 任务代码
59
+ en: Task Code
60
+
61
+ - zh-CN: 标识
62
+ en: identification
63
+
64
+ - zh-CN: 应用名
65
+ en: App Name
66
+
67
+ - zh-CN: 路径
68
+ en: route
69
+
70
+ - zh-CN: 代理路径
71
+ en: Proxy Path
72
+
73
+ - zh-CN: 二维码
74
+ en: QR code
75
+
76
+ - zh-CN: 真实路径
77
+ en: Real path
78
+
79
+ - zh-CN: 动作
80
+ en: action
81
+
82
+ - zh-CN: 状态
83
+ en: state
84
+
85
+ - zh-CN: 地址
86
+ en: address
87
+
88
+ - zh-CN: 地理位置
89
+ en: geographical position
90
+
91
+ - zh-CN: 启动时间
92
+ en: Start time
93
+
94
+ - zh-CN: 端口
95
+ en: port
96
+
97
+ - zh-CN: 版本
98
+ en: edition
99
+
100
+ - zh-CN: 进程
101
+ en: process
102
+
103
+ - zh-CN: 访问量
104
+ en: Visits
105
+
106
+ - zh-CN: 房间名
107
+ en: Room name
108
+
109
+ - zh-CN: 数值
110
+ en: numerical value
111
+
112
+ - zh-CN: 文本
113
+ en: text
114
+
115
+ - zh-CN: 字典ID
116
+ en: Dictionary ID
117
+
118
+ - zh-CN: 字典名
119
+ en: Dictionary name
120
+
121
+ - zh-CN: 字典数据
122
+ en: Dictionary data
123
+
124
+ - zh-CN: 名称
125
+ en: name
126
+
127
+ - zh-CN: 服务器
128
+ en: The server
129
+
130
+ - zh-CN: 服务器地址
131
+ en: server address
132
+
133
+ - zh-CN: 密码
134
+ en: password
135
+
136
+ - zh-CN: 这是一个空白项目
137
+ en: This is a blank project
@@ -1,12 +1,12 @@
1
1
  <div head>
2
- 请输入服务器密码
2
+ ${i18n`请输入服务器密码`}
3
3
  </div>
4
4
  <div body>
5
5
  <field ng-repeat="f in fields" ng-src="[f,data]"></field>
6
6
  </div>
7
7
  <div foot>
8
- <button pending.="pending" type="submit">登录</button>
8
+ <button pending.="pending" type="submit">${i18n`登录`}</button>
9
9
  </div>
10
10
  <div message>
11
- 登录之前需要使用&nbsp;<b>efront password</b>&nbsp;命令在服务器上设置密码
11
+ ${i18n`${i18n`登录`}之前需要使用${`&nbsp;<b>efront password</b>&nbsp;`}命令在${i18n`服务器`}上设置${i18n`密码`}`}
12
12
  </div>
@@ -12,9 +12,11 @@ var getLanguageIndexFromName = function (language) {
12
12
  if (isFinite(language)) return language;
13
13
  if (language in languageMap) return languageMap[language];
14
14
  language = String(language).toLowerCase();
15
- for (var k in languageMap) {
16
- for (var kk of k.toLowerCase().split("-")) {
17
- if (language.indexOf(kk) >= 0) return languageMap[k];
15
+ for (var l of language.split(",").slice(0, 12)) {
16
+ for (var k in languageMap) {
17
+ for (var kk of k.toLowerCase().split("-")) {
18
+ if (l.indexOf(kk) >= 0) return languageMap[k];
19
+ }
18
20
  }
19
21
  }
20
22
  return languageIndex;
@@ -386,7 +386,7 @@ function parse(piece) {
386
386
  } else if (/^[\/]/.test(type)) {
387
387
  type = type.slice(1);
388
388
  }
389
- if (typeof options === "string" && !/^\$#\d+$/.test(options)) {
389
+ if (typeof options === "string" && !/^[\$#]+\d+$/.test(options)) {
390
390
  console.log(options)
391
391
  options = is(options);
392
392
  var needUnfold = /^\[|\]$/.test(options);
@@ -4,7 +4,7 @@ var strings = require("../basic/strings");
4
4
  var program = null;
5
5
  var patchTranslate = function (c) {
6
6
  if (c.length) {
7
- c.translate = c.map((o, i) => o.type === PIECE ? strings.decode(`\`${o.text}\``) : ` $#${i + 1 >> 1} `).join('');
7
+ c.translate = c.map((o, i) => o.type === PIECE ? strings.decode(`\`${o.text}\``) : `$${i + 1 >> 1}`).join('');
8
8
  }
9
9
  else {
10
10
  if (/^['"`]/.test(c.text) && c.text.length > 2) {
@@ -66,7 +66,12 @@ function getI18nPrefixedText(code, dist = []) {
66
66
 
67
67
  function translate([imap, supports], code) {
68
68
  var texts = getI18nPrefixedText(code);
69
+ texts.sort((a, b) => {
70
+ if (a.start > b.start && a.end < b.end) return -1;
71
+ return 0;
72
+ });
69
73
  var getm = function (tt) {
74
+ tt = tt.trim();
70
75
  if (!imap[tt]) {
71
76
  console.warn(`<yellow>国际化翻译缺失:</yellow>${tt}`);
72
77
  imap[tt] = supports.map(_ => tt);
@@ -83,9 +88,9 @@ function translate([imap, supports], code) {
83
88
  p.leave = ")";
84
89
  }
85
90
  var tt = t.translate;
86
- replace(t, ...scanner2(`(${getm(tt)})`.replace(/\$#(\d+)/g, (_, i) => {
91
+ replace(t, ...scanner2(`(${getm(tt)})`.replace(/[\$#]+(\d+)/g, (_, i) => {
87
92
  var a = (i << 1) - 1;
88
- if (a in t) return createString(t[a]);
93
+ if (a in t) return `\${${createString(t[a])}}`;
89
94
  return _;
90
95
  })));
91
96
  }
@@ -101,7 +106,7 @@ function translate([imap, supports], code) {
101
106
  t.queue.splice(i, e + 1 - i, ...scanner2("[" + t.fields.map(f => {
102
107
  return "{" + Object.keys(f).map(k => {
103
108
  var v = f[k];
104
- if (/\$#\d+/.test(v)) v = v.replace(/\$#(\d+)/g, (_, i) => {
109
+ if (/[\$#]\d+/.test(v)) v = v.replace(/[\$#]+(\d+)/g, (_, i) => {
105
110
  var a = (i << 1) - 1;
106
111
  if (a in t) return createString(t[a]);
107
112
  return _;
@@ -34,8 +34,8 @@
34
34
  background: #069 !important;
35
35
  }
36
36
 
37
- span,
38
- a {
37
+ p span,
38
+ p a {
39
39
  vertical-align: middle;
40
40
  }
41
41
  </style>
@@ -333,7 +333,7 @@
333
333
  data = compile$wraphtml(htmltext) + ";\r\n" + scripts.join("\r\n");
334
334
  }
335
335
  else if (/\.html?$/i.test(e.name)) {
336
- data = compile$wraphtml(htmltext);
336
+ data = compile$wraphtml(data);
337
337
  }
338
338
  var code = compile$scanner2(String(data));
339
339
  return compile$translate.getI18nPrefixed(code);
@@ -519,32 +519,30 @@
519
519
  for (var e of pretrans) {
520
520
  var data = await readText(e);
521
521
  data = parseYML(data);
522
- for (var d of data) {
523
- for (var k in d) {
522
+ loop: for (var d of data) {
523
+ var liang = 0, fanyi = {};
524
+ for (var { lang: k, id } of supports) {
525
+ if (!d[k]) continue;
526
+ if (preMap[d[k]]) continue loop;
524
527
  preMap[d[k]] = d;
528
+ liang++;
529
+ fanyi[id] = d[k];
525
530
  }
531
+ result.push({ text: d[supports[0].lang], fanyi, liang });
526
532
  }
527
533
  }
534
+ var untrans = [];
528
535
  Object.keys(textMap).map(k => {
529
536
  var texts = textMap[k];
530
537
  var count = texts["#count"];
531
538
  delete texts["#count"];
532
539
  var files = Object.keys(texts);
533
- var liang = 0;
534
- if (k in preMap) {
535
- var fanyi = {};
536
- detailScope.supports.forEach(s => {
537
- var v = preMap[k][s.lang]
538
- if (v) {
539
- fanyi[s.id] = v;
540
- liang++;
541
- }
542
- })
543
- }
544
- result.push({ text: k, occurs: texts, files: files.join(',\r\n'), count, fanyi, liang });
540
+ k = k.trim();
541
+ if (k in preMap) return;
542
+ untrans.push({ text: k, occurs: texts, files: files.join(',\r\n'), count });
545
543
  });
546
544
 
547
- 已找到的字符串 = result;
545
+ 已找到的字符串 = untrans.concat(result);
548
546
  runFilter();
549
547
  }
550
548
  var exportCSV = async function () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "3.36.0",
3
+ "version": "3.36.1",
4
4
  "description": "简化前端开发,优化web性能",
5
5
  "main": "public/efront.js",
6
6
  "directories": {