@abtnode/ux 1.8.26 → 1.8.27

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.
Files changed (62) hide show
  1. package/lib/actions.js +137 -0
  2. package/lib/blocklet/actions.js +501 -0
  3. package/lib/blocklet/audit-logs.js +226 -0
  4. package/lib/blocklet/avatar.js +123 -0
  5. package/lib/blocklet/blocklet-source.js +69 -0
  6. package/lib/blocklet/component/configuration.js +150 -0
  7. package/lib/blocklet/component/delete.js +138 -0
  8. package/lib/blocklet/component/environment.js +334 -0
  9. package/lib/blocklet/component/index.js +837 -0
  10. package/lib/blocklet/component/setting.js +174 -0
  11. package/lib/blocklet/configuration.js +531 -0
  12. package/lib/blocklet/disk-info.js +115 -0
  13. package/lib/blocklet/icons.js +36 -0
  14. package/lib/blocklet/log.js +70 -0
  15. package/lib/blocklet/mode.js +47 -0
  16. package/lib/blocklet/overview.js +218 -0
  17. package/lib/blocklet/runtime-info.js +111 -0
  18. package/lib/blocklet/status.js +125 -0
  19. package/lib/blocklet/util.js +141 -0
  20. package/lib/blocklet/version.js +216 -0
  21. package/lib/click-to-copy.js +51 -0
  22. package/lib/confirm.js +175 -0
  23. package/lib/contexts/audit-log.js +155 -0
  24. package/lib/contexts/deleting-blocklets.js +91 -0
  25. package/lib/contexts/node.js +34 -0
  26. package/lib/contexts/session.js +22 -0
  27. package/lib/contexts/team.js +22 -0
  28. package/lib/did-address.js +95 -0
  29. package/lib/dot.js +25 -0
  30. package/lib/hooks/mobile-width.js +24 -0
  31. package/lib/icons/long-arrow.svg +5 -0
  32. package/lib/locales/en.js +1046 -38
  33. package/lib/locales/zh.js +1049 -36
  34. package/lib/logs/clock.js +25 -0
  35. package/lib/logs/log-terminal.js +198 -0
  36. package/lib/passport-tag.js +58 -0
  37. package/lib/permission.js +84 -0
  38. package/lib/relative-time.js +74 -0
  39. package/lib/table-icons.js +59 -0
  40. package/lib/table.js +19 -0
  41. package/lib/tag.js +48 -0
  42. package/lib/team/members/actions.js +115 -0
  43. package/lib/team/members/index.js +544 -0
  44. package/lib/team/members/invitations.js +229 -0
  45. package/lib/team/members/invite-member.js +241 -0
  46. package/lib/team/members/issue-passport.js +178 -0
  47. package/lib/team/members/member.js +336 -0
  48. package/lib/team/members/passport-issuances.js +181 -0
  49. package/lib/team/members/passports.js +377 -0
  50. package/lib/team/members/toggle-user-approval.js +154 -0
  51. package/lib/team/members/transfer-node.js +295 -0
  52. package/lib/team/members/util.js +27 -0
  53. package/lib/team/passports/detail.js +304 -0
  54. package/lib/team/passports/index.js +256 -0
  55. package/lib/team/passports/mutate-role.js +230 -0
  56. package/lib/team/passports/trusted-issuer.js +339 -0
  57. package/lib/team/passports/trusted-issuers.js +284 -0
  58. package/lib/team/search-input.js +51 -0
  59. package/lib/team/styles/dialog.js +19 -0
  60. package/lib/team/styles/list-header.js +19 -0
  61. package/lib/util/index.js +642 -6
  62. package/package.json +32 -9
package/lib/locales/zh.js CHANGED
@@ -1,57 +1,337 @@
1
1
  "use strict";
2
2
 
3
3
  module.exports = {
4
- issuePassport: {
5
- title: '领取通行证',
6
- description: '使用 DID 钱包领取 {name} 颁发的通行证',
7
- dialog: {
8
- confirm: '在您的 DID 钱包上确认',
9
- success: '通行证已成功添加到您的 DID 钱包',
10
- loginWithPassport: '用此通行证连接'
4
+ setup: {
5
+ connect: {
6
+ title: '扫码签名',
7
+ scan: '用你的 DID 钱包扫描下面的二维码从而成为本节点的所有者',
8
+ confirm: '请在 DID 钱包上确认',
9
+ success: '你已经成功成为节点的所有者'
10
+ },
11
+ verify: {
12
+ title: '需要节点所有权证书',
13
+ scan: '用你的 DID 钱包扫描下面的二维码以提供所有权证书',
14
+ confirm: '请在 DID 钱包上确认',
15
+ success: '你已经成功成为节点的所有者'
16
+ },
17
+ accept: {
18
+ title: '接收节点需要所有权证书',
19
+ scan: '用你的 DID 钱包扫描下面的二维码以提供所有权证书',
20
+ confirm: '请在 DID 钱包上确认',
21
+ success: '你已经成功成为节点的所有者'
22
+ },
23
+ title: '设置节点',
24
+ steps: {
25
+ eula: '最终用户许可协议',
26
+ eulaFooter: '我已阅读并同意最终用户许可协议的条款',
27
+ connect: '链接所有者的 DID 钱包',
28
+ verify: '验证所有权',
29
+ basicSettings: '基础设置',
30
+ complete: '完成'
31
+ },
32
+ congratulation: '恭喜, 您的节点安全可用!',
33
+ redirectButton: '查看节点仪表盘',
34
+ form: {
35
+ submit: '完成设置',
36
+ title: '设置节点的名称和描述信息'
11
37
  }
12
38
  },
13
- lostPassport: {
14
- title: '找回通行证',
15
- description: '{name} 所有者可扫描二维码找回通行证,成员请联系所有者重新颁发通行证',
39
+ login: {
40
+ loginTo: '连接 DID 钱包',
41
+ description: '只有节点的所有者和 approved 成员可以访问仪表盘',
16
42
  dialog: {
43
+ title: '请连接 DID 钱包',
17
44
  scan: '用您的 DID 钱包扫描下面的二维码',
18
45
  confirm: '在您的 DID 钱包上确认',
19
- success: '通行证已成功添加到您的 DID 钱包'
20
- },
21
- return: '使用通行证登录',
22
- selectPassport: '选择通行证',
23
- receivePassport: '领取通行证'
46
+ success: '连接成功'
47
+ }
48
+ },
49
+ acceptServer: {
50
+ title: '使用 Owner NFT 接收节点',
51
+ tooltip: '如果你收到了 Owner NFT,你可以通过这个链接申请你的节点所有者通行证'
52
+ },
53
+ sidebar: {
54
+ dashboard: '仪表盘',
55
+ blocklets: '基石程序',
56
+ console: '试验台',
57
+ settings: '设置'
58
+ },
59
+ system: {
60
+ total: '总计',
61
+ used: '已使用',
62
+ free: '空闲',
63
+ cores: '核数'
24
64
  },
25
65
  common: {
66
+ about: '关于',
67
+ auditLogs: '审计记录',
68
+ logs: '日志',
69
+ filter: '筛选',
70
+ category: '日志分类',
71
+ timeAgo: '{time}前',
72
+ afterTime: '{time}后',
73
+ abtnode: '节点',
74
+ accessKey: '访问秘钥',
75
+ action: '操作',
76
+ actions: '操作',
77
+ add: '添加',
78
+ address: '地址',
79
+ allow: '允许',
80
+ alreadyExist: '已经存在',
81
+ approve: '同意',
82
+ approved: 'Approved',
83
+ author: '作者',
84
+ avatar: '头像',
85
+ back: '返回',
86
+ basic: '基础',
87
+ basicInfo: '基础信息',
88
+ bind: '绑定',
89
+ blocklet: '基石程序',
90
+ blocklets: '基石程序',
91
+ blockletsStorage: '基石程序存储',
92
+ cacheStorage: '缓存存储',
93
+ cancel: '取消',
94
+ certificate: '证书',
95
+ click: '点击复制',
96
+ close: '关闭',
97
+ collapseAll: '收起全部',
98
+ community: '社区地址',
99
+ complete: '完成',
100
+ componentBasicInfo: '组件基础信息',
101
+ components: '组件',
102
+ config: '配置',
103
+ configuration: '配置',
104
+ configSuccess: '设置成功',
105
+ confirm: '确认',
106
+ console: '控制台',
107
+ continueWith: '确认继续',
108
+ copiedTip: '已复制',
109
+ copyTip: '点击复制',
110
+ coreStorage: '核心存储',
111
+ cpu: 'CPU',
112
+ create: '创建',
113
+ createSuccess: '创建成功',
114
+ created: '创建于',
115
+ createdAt: '创建时间',
116
+ createdBy: '创建人',
117
+ dAddress: '去中心化地址(DID)',
118
+ dataStorage: '数据存储',
119
+ delConfirm: '删除',
120
+ delConfirmDescription: '确认删除?',
121
+ delete: '删除',
122
+ description: '描述',
123
+ detail: '详情',
124
+ did: 'DID',
125
+ disabled: '已禁用',
126
+ disk: '磁盘',
127
+ diskInfo: '磁盘信息',
128
+ docker: 'Docker?',
129
+ documentation: '文档手册',
130
+ domain: '域名',
131
+ downgradeTo: '降级到',
132
+ download: '下载',
133
+ downloading: '下载中',
134
+ edit: '编辑',
135
+ email: '邮箱',
136
+ empty: '暂无',
137
+ emptyData: '未找到结果',
138
+ enable: '启用',
139
+ enabled: '已启用',
140
+ engine: '引擎',
141
+ env: '环境',
142
+ environment: '环境变量',
143
+ expandAll: '展开全部',
144
+ expired: '已过期',
145
+ expires: '过期时间',
146
+ export: '导出',
147
+ externalIp: '公网 IP',
148
+ failed: '失败',
149
+ fingerprint: '指纹',
150
+ finish: '完成',
151
+ forbid: '禁止',
152
+ free: '免费',
153
+ gitpod: 'Gitpod?',
154
+ goEULA: '点击查看"最终用户许可协议"',
155
+ group: '分组',
156
+ image: '镜像内?',
157
+ install: '安装',
158
+ installed: '已安装',
159
+ installedAt: '安装时间',
160
+ installSuccess: '安装成功',
161
+ installing: '安装中',
162
+ internalIp: '内网 IP',
163
+ invite: '邀请',
164
+ inviting: '邀请中',
165
+ ip: 'IP',
166
+ isPublic: '公开',
167
+ issue: '颁发',
168
+ issuer: '颁发者',
169
+ item: '项',
170
+ joined: '已加入',
171
+ key: '键',
172
+ lastPublishedAt: '发布时间',
173
+ launcher: '启动器信息',
174
+ leavePageTip: '是否确定离开当前页面?',
175
+ loading: '加载中',
176
+ log: '查看日志',
177
+ logStorage: '日志存储',
178
+ login: '登录',
179
+ logo: '图标',
180
+ logout: '退出',
181
+ manageTeam: '管理团队',
182
+ marketplace: '市场',
183
+ member: '成员',
184
+ members: '成员',
185
+ memory: '内存',
186
+ meta: '元数据',
187
+ monitor: '监控',
188
+ more: '更多',
189
+ mountPoint: '挂载点',
190
+ name: '名称',
26
191
  next: '下一步',
27
- complete: '完成'
28
- },
29
- invite: {
30
- message: '{name} 邀请你成为 {dapp} 的 {role}',
31
- receive: '领取通行证',
32
- validUntil: '过期时间:',
33
- viewPermission: '查看权限',
34
- emptyPermission: '没有权限',
192
+ no: '',
193
+ noData: '暂无数据',
194
+ notice: '请确认下面的信息',
195
+ noticeTitle: '提示',
35
196
  open: '打开',
36
- description: {
37
- step1: '下载并设置好您的 {wallet}',
38
- step2: '点击上面的按钮领取通行证',
39
- step3: '使用通行证登录 {dapp}'
40
- }
41
- },
42
- receive: {
43
- dialog: {
44
- title: '请连接 DID 钱包领取通行证',
45
- scan: '用您的 DID 钱包扫描下面的二维码领取通行证',
46
- confirm: '在您的 DID 钱包上确认',
47
- success: '连接成功'
48
- }
197
+ management: '管理',
198
+ os: '操作系统',
199
+ overview: '概览',
200
+ owner: '所有者',
201
+ page404: '404 页面',
202
+ passport: '通行证',
203
+ permission: '权限',
204
+ port: '端口',
205
+ pre: '上一步',
206
+ protected: '受保护',
207
+ protocol: '协议',
208
+ published: '发布于',
209
+ purchase: '购买',
210
+ redirect: '重定向',
211
+ redirectCode: '重定向状态码',
212
+ redirectPermanently: '永久重定向',
213
+ redirectTemporary: '临时重定向',
214
+ redirectUrl: '重定向 URL',
215
+ reject: '拒绝',
216
+ reload: '优雅重启',
217
+ remark: '备注',
218
+ remove: '删除',
219
+ requiredErrorText: '{name}是必填的',
220
+ resource: '资源',
221
+ restart: '重启',
222
+ retry: '重试',
223
+ revoke: '撤销',
224
+ role: '角色',
225
+ running: '运行中',
226
+ runtimeInfo: '运行信息',
227
+ save: '保存',
228
+ saveChanges: '保存',
229
+ saveSuccess: '保存成功',
230
+ scheduleFailed: '加入任务队列失败',
231
+ scheduleSuccess: '成功加入任务队列',
232
+ search: '搜索',
233
+ setting: '设置',
234
+ start: '启动',
235
+ status: '状态',
236
+ stop: '停止',
237
+ storage: '存储',
238
+ store: '商店',
239
+ success: '成功',
240
+ support: '服务支持',
241
+ team: '团队',
242
+ the: '此',
243
+ title: '名称',
244
+ type: '类型',
245
+ unavailable: '不可访问',
246
+ update: '更新',
247
+ updateAvailable: '可升级到新版本 v{version}',
248
+ updatedAt: '更新时间',
249
+ updatedBy: '更新人',
250
+ upgrade: '升级',
251
+ upgradeTo: '升级到',
252
+ upgrading: '升级中',
253
+ uptime: '运行时长',
254
+ url: 'URL',
255
+ valid: '有效',
256
+ value: '值',
257
+ version: '版本号',
258
+ visit: '访问',
259
+ waiting: '等待中',
260
+ webhook: '应用集成',
261
+ yes: '是',
262
+ invalidParam: '无效的参数',
263
+ launch: '启动',
264
+ price: '价格',
265
+ redirecting: '跳转中',
266
+ error: '错误',
267
+ reminder: '提醒',
268
+ normal: '正常',
269
+ gateway: '网关',
270
+ verifyNFT: '验证凭证',
271
+ errorMessage: '错误信息:'
49
272
  },
50
273
  blocklet: {
274
+ notFound: '应用没有找到,可能已经被删除',
275
+ installFromMarket: '从应用商店安装',
276
+ installFromUrl: '通过 URL 安装',
277
+ installFromCreate: '创建基石程序',
278
+ installedAt: '安装时间',
279
+ startedAt: '启动时间',
280
+ stoppedAt: '停止时间',
281
+ urlEmptyTip: '无访问地址,',
282
+ goToAddRule: '立即添加',
283
+ services: '暴露的服务',
284
+ upstreamPort: '上游端口',
285
+ noService: '暂无服务',
286
+ appId: '应用 ID',
287
+ reloadSuccess: 'Blocklet 重启成功',
288
+ statusTip: 'Blocklet {status}',
289
+ initialUptime: '少于1分钟',
290
+ action: {
291
+ stopDescription: '停止该基石程序将会使页面不可以访问,可能会导致使用它的用户出现错误',
292
+ confirmStop: '是的,停止',
293
+ cancelDownloadDescription: '取消下载 {name} ?',
294
+ removeDescription: '如果没有备份数据,删除该基石程序将会删除所有数据,包括基石程序运行时产生的所有数据',
295
+ removeComponentDescription: '如果没有备份数据,删除该组件将会删除所有数据,包括组件运行时产生的所有数据',
296
+ forceRemoveDescription: '删除该基石程序将会删除所有数据',
297
+ removeKeepData: '保留该基石程序的数据,只删除基石程序',
298
+ removeComplete: '删除基石程序和数据',
299
+ removeComponentKeepData: '保留该组件的数据,只删除组件',
300
+ removeComponentComplete: '删除组件和数据',
301
+ confirmRemove: '是的, 删除',
302
+ upgradeDescription: '升级基石程序可能会导致其短暂不可用,是否要继续?',
303
+ confirmUpgrade: '是的,升级吧',
304
+ confirmRestart: '是的,重启吧',
305
+ restartDescription: '服务会短暂暂停,并且有可能因为变更了配置无法启动'
306
+ },
307
+ dev: {
308
+ modeTip: '请将节点切换至 DEBUG 模式'
309
+ },
310
+ fromUrl: {
311
+ title: '安装 Blocklet',
312
+ label: 'Blocklet Meta URL',
313
+ description: 'URL 应指向 Blocklet 的 Meta 文件。如果需要指向本地文件,请加上 file:// 前缀,如:file:///Users/foo/blocklet.json。',
314
+ confirm: '安装',
315
+ step0: '输入 URL',
316
+ step1: '确认 Meta 信息',
317
+ existTipPrefix: '已存在相同 DID 的 Blocklet, 版本为',
318
+ existTipSuffix: ',请安装更高版本。'
319
+ },
320
+ index: {
321
+ tableTitle: '管理已安装基石程序',
322
+ noBlocklet: '节点中还没有基石程序, 您可以从基石程序市场中安装.'
323
+ },
324
+ admin: {
325
+ iframeTitle: '基石程序管理界面',
326
+ title: '管理界面',
327
+ noContent: '该基石程序没有管理界面',
328
+ securityError: '安全错误:无法从访问跨源框架中打开管理界面'
329
+ },
51
330
  config: {
52
331
  name: '应用名称',
53
332
  description: '应用描述',
54
333
  sk: '应用账户私钥',
334
+ logo: '应用 Logo 地址或路径',
55
335
  clusterSize: '以 Cluster 模式启动时的实例数量',
56
336
  deletable: {
57
337
  name: '删除保护',
@@ -86,7 +366,740 @@ module.exports = {
86
366
  },
87
367
  publicToStore: '在 Store 公开',
88
368
  publicInstanceTip: '此应用的访问地址将展示在 Store 中(同时也会展示你的 DID,用于接受捐赠)'
369
+ },
370
+ disabledText: '请在 ".env" 文件或 "blocklet.yml" 文件中编辑环境变量',
371
+ changedTip: '配置已更新,请重启 Blocklet',
372
+ missingRequired: '缺少启动 Blocklet 的必填项',
373
+ gotoFix: '去修复',
374
+ environment: {
375
+ key: '配置键',
376
+ value: '配置值',
377
+ keyValueRequired: '键和值不能为空',
378
+ invalidKey: '键不能以 BLOCKLET_ 开头',
379
+ deleteForbidden: '该配置项是必填项,不能删除',
380
+ tip: '包含 BWA_ 前缀的配置项不应该包含敏感信息,因为他们会被发送到前端页面'
381
+ }
382
+ },
383
+ overview: {
384
+ source: '来源',
385
+ deployedFrom: '部署源',
386
+ accessControl: '访问控制',
387
+ viewInStore: '在商店中查看',
388
+ publicToStore: '在 Store 公开此应用',
389
+ publicInstanceTip: '此应用的访问地址将展示在 Store 中(同时也会展示您的 DID,用于接受捐赠)'
390
+ },
391
+ diskInfo: {
392
+ empty: '无法获得磁盘信息',
393
+ appDir: '应用目录',
394
+ dataDir: '数据目录',
395
+ logDir: '日志目录',
396
+ cacheDir: '缓存目录'
397
+ },
398
+ runtimeInfo: {
399
+ noRunning: '当 Blocklet 运行时才可以获得运行信息!',
400
+ memoryUsage: '内存',
401
+ cpuUsage: 'CPU',
402
+ uptime: '启动时长',
403
+ port: '端口',
404
+ processId: '进程 ID'
405
+ },
406
+ dist: {
407
+ downloadLink: '下载地址',
408
+ verify: '校验信息'
409
+ },
410
+ status: {
411
+ added: '已添加',
412
+ waiting: '等待中',
413
+ downloading: '下载中',
414
+ installing: '安装中',
415
+ upgrading: '升级中',
416
+ installed: '已安装',
417
+ created: '已创建',
418
+ starting: '启动中',
419
+ running: '运行中',
420
+ stopping: '停止中',
421
+ stopped: '已停止',
422
+ error: '错误',
423
+ deleting: '删除中',
424
+ corrupted: '已损坏',
425
+ purchased: '已购买',
426
+ purchasing: '购买中...',
427
+ verifying: '验证中...'
428
+ },
429
+ list: {
430
+ download: '下载数',
431
+ star: '收藏数'
432
+ },
433
+ component: {
434
+ checkUpdateTitle: '检查更新',
435
+ updateTitle: '更新组件',
436
+ noUpdate: '没有需要更新的组件',
437
+ add: '添加组件',
438
+ selectComponent: '选择组件',
439
+ selectRegistry: '选择 Blocklet 商店',
440
+ selectRegistryTip: '您可以切换 Blocklet 商店以查看更多组件',
441
+ selectInstance: '选择实例',
442
+ selectInstanceTip: '您可以选择已有实例 或 创建新的实例。已有实例将使用之前保存的配置和数据',
443
+ newInstance: '创建新实例',
444
+ noComponent: '暂无组件',
445
+ mountPoint: '组件的挂载点是什么?',
446
+ mountPointTip: "如果你填写了 '/my-prefix',那么所有以其为前缀的请求都会被转发到配置的组件",
447
+ titleTip: '你可以为相同的组件自定义不同的名称',
448
+ delete: '删除组件',
449
+ deleteDescription: '删除后此组件将无法访问。确认删除?',
450
+ purchase: '需要支付',
451
+ tip: {
452
+ stopBlocklet: '请先停止运行 Blocklet',
453
+ notDynamic: '只有动态添加的组件才能被删除'
454
+ },
455
+ choose: '选择',
456
+ addWithName: '添加组件到 {name}',
457
+ installingCanCloseWindowTip: '正在后台安装组件中, 您可以放心关掉此窗口',
458
+ installSuccessTip: '恭喜您,组件安装成功!',
459
+ missDownloadTokenTip: '缺少下载凭证,无法下载',
460
+ purchaseComponentSecondCheckTip: '请在 钱包 提供应用购买凭证',
461
+ installComponentError: '安装组件遇到错误,请重试',
462
+ downloadComponentError: '下载组件遇到错误,请重试',
463
+ addComponentTip: {
464
+ introduction: '欢迎来到添加组件向导',
465
+ isFree: '您可以免费添加 <b>{name}</b> 为组件;',
466
+ isPurchase: '您需要验证凭证才能添加 <b>{name}</b> 为组件;',
467
+ belowInformation: '下面为该组件的信息:',
468
+ verifyNFT: '请选择验证凭证方式',
469
+ config: '请填写组件的相关配置',
470
+ environment: '请填写组件的环境变量',
471
+ fromUrl: '通过 URL 选择组件'
472
+ },
473
+ addNext: '添加 {name}',
474
+ setting: '参数设置'
475
+ },
476
+ router: {
477
+ urlPath: 'URL 路径',
478
+ securitySetting: '安全设置',
479
+ noRunning: 'Blocklet 当前未启动。无法通过以下地址访问!',
480
+ checkUrlAccessible: '检查地址的是否可访问',
481
+ urlInaccessible: '可能因为网络的原因,该地址暂时无法访问',
482
+ noAccessibleUrl: '没有可访问的地址',
483
+ domainLockTooltip: '无法编辑由系统生成的 域名',
484
+ urlLockTooltip: '无法编辑由系统生成的 URL 路径'
485
+ },
486
+ export: {
487
+ title: '导出 Blocklet',
488
+ name: '包名称',
489
+ nameTip: 'e.g. "my-blocklet-name" or "@my-scope/blocklet-name"',
490
+ result: '接下来',
491
+ exportSource: '导出源代码',
492
+ success: 'Blocklet 导出成功',
493
+ resultTipStart: '使用',
494
+ resultTipEnd: '你可以在几分钟内构建并发布这个 Blocklet',
495
+ uploadedComponentTip: '无法导出直接上传的组件:'
496
+ }
497
+ },
498
+ dashboard: {
499
+ nodeDid: '节点地址',
500
+ ownerDid: '所有者地址',
501
+ routingEngine: '路由引擎',
502
+ ownerNftURL: '所有者 NFT',
503
+ expirationLeft: '有效期还剩',
504
+ renewal: '续期'
505
+ },
506
+ store: {
507
+ nameSort: '名称',
508
+ popularSort: '下载量',
509
+ headerDescription: '查找、安装基石程序',
510
+ detail: {
511
+ purchase: '购买 {name}',
512
+ open: '打开 {name}',
513
+ install: '安装 {name}',
514
+ upgrade: '升级 {name}',
515
+ empty: '暂无介绍'
516
+ },
517
+ blockletRegistry: {
518
+ changeFailed: '更改应用商店地址失败:',
519
+ addFailed: '添加应用商店地址失败:',
520
+ editFailed: '编辑应用商店地址失败:',
521
+ switchRegistry: '选择应用商店地址',
522
+ addRegistry: '添加应用商店地址',
523
+ editRegistry: '编辑应用商店地址',
524
+ deleteRegistry: '删除应用商店地址',
525
+ haveSameRegistry: '存在相同的应用商店地址',
526
+ registryName: '应用商店名称',
527
+ registryUrl: '应用商店地址',
528
+ registryNameEmpty: '应用商店名称不能为空',
529
+ registryUrlEmpty: '应用商店地址不能为空',
530
+ deleteDesc: '确认删除应用商店地址 {name} ?<br/><span style="color: {color}">*移除该商店之后,无法更新从此商店安装的应用,除非你再次添加。</span>',
531
+ confirmDesc: '请输入 {name} 以确认删除'
532
+ },
533
+ purchase: {
534
+ title: '购买 {name}',
535
+ confirmed: '你的购买已经验证,安装中',
536
+ declined: '你没有提供有效的购买凭证',
537
+ waiting: '等待购买完成...',
538
+ purchase: {
539
+ title: '获取凭证',
540
+ description: '安装此 Blocklet 之前你需要支付一定数量的通证以完成购买'
541
+ },
542
+ verify: {
543
+ title: '验证凭证',
544
+ description: '如果你已经购买过此 Blocklet,提供购买凭证 NFT 即可完成安装',
545
+ auth: {
546
+ title: '需要验证购买凭证',
547
+ scan: '用你的 DID 钱包扫描下面的二维码以提供购买凭证',
548
+ confirm: '请在 DID 钱包上确认',
549
+ success: '你的购买凭证已经验证通过,Blocklet 正在安装中'
550
+ }
551
+ },
552
+ auth: {
553
+ title: '购买 {name}',
554
+ scan: '用你的 DID 钱包扫描下面的二维码',
555
+ confirm: '请在 DID 钱包上确认',
556
+ success: '购买凭证已经发送到你钱包'
557
+ },
558
+ launch: '启动 {name}',
559
+ autoLaunch: '{name} 购买成功,正在跳转到启动页面...'
560
+ }
561
+ },
562
+ setting: {
563
+ saveSuccess: '保存设置成功',
564
+ unSavedTip: '有尚未保存的更改,请单击“保存”使更改生效。',
565
+ unSavedLeaveTip: '有尚未保存的更改,是否确定离开当前页面?',
566
+ form: {
567
+ name: '节点命名',
568
+ nameRequired: '名称不能为空',
569
+ namePlaceholder: '节点名称',
570
+ description: '节点描述',
571
+ descriptionHolder: '节点描述',
572
+ descriptionRequired: '节点描述不能为空',
573
+ domain: '节点域名',
574
+ domainPlaceholder: '节点域名',
575
+ registry: '应用商店地址',
576
+ registryPlaceholder: '用来拉取基石程序列表',
577
+ registryRequired: '应用商店地址是必填的',
578
+ registerUrl: '应用启动器地址',
579
+ registerUrlPlaceholder: '你可以使用自己运行的"应用启动器", 也可以使用官方提供的版本',
580
+ webWalletUrl: 'DID Wallet 地址',
581
+ webWalletUrlPlaceholder: '你可以使用自己运行的 "DID Wallet", 也可以使用官方提供的版本',
582
+ upgrade: {
583
+ title: '升级节点到 v{version}',
584
+ description: '在升级期间,节点将会进入维护模式几分钟。',
585
+ dialog: '点击 “确认” 安装更新。节点将进入维护模式,直到更新完成并自动返回生产模式。',
586
+ confirm: '升级',
587
+ switchLabel: '自动更新检查',
588
+ setup: '准备升级中',
589
+ installing: '安装节点新版本(v{version})',
590
+ restarting: '重新启动节点',
591
+ cleanup: '迁移节点数据',
592
+ complete: '升级完成!',
593
+ progress: '正在升级节点到 v{version}',
594
+ check: '检查更新',
595
+ latest: '太棒了,你的节点已经是最新版!'
596
+ },
597
+ welcome: {
598
+ switchLabel: 'Welcome 页面'
599
+ },
600
+ register: {
601
+ titleAdded: '当前节点已经添加到应用启动器',
602
+ title: '添加节点到应用启动器',
603
+ description: '添加成功后,你可以快速从 {url} 安装应用到此节点',
604
+ descriptionOnAdded: '你可以快速从 {url} 安装应用到此节点',
605
+ btn: '添加',
606
+ update: '更新',
607
+ added: '已添加',
608
+ addSucceed: '添加成功',
609
+ updateSucceed: '更新成功',
610
+ detecting: '检测中',
611
+ timeout: '检测超时,请检查节点启动器是否启动'
612
+ },
613
+ monitor: {
614
+ diskThreshold: '当磁盘使用率超过(%)时发送报警',
615
+ diskThresholdPlaceholder: '请设置磁盘使用率报警阈值'
616
+ }
617
+ },
618
+ accessKey: {
619
+ accessKeyId: 'Access Key',
620
+ lastUsed: '最后使用',
621
+ tip: '请给 Access Key 起个名字',
622
+ saveSecretTip: '你的 Access Secret 只会展示一次,关闭次窗口后将无法再次查看,不过你可以随时重新创建新的 Access Key',
623
+ iKnow: '我已复制保存好该 Access Secret',
624
+ showSecret: '展示 Secret',
625
+ hideSecret: '隐藏 Secret',
626
+ title: '删除 Access Key',
627
+ descriptionNoTime: '此操作无法撤消。这将永久删除备注为 {name} 并且 Id 为 {key} 的 Access Key (此 Access Key 之前没有被使用过) ',
628
+ description: '此操作无法撤消。这将永久删除备注为 {name} 并且 Id 为 {key} 的 Access Key (最后的使用时间为 {time}, {timeAge})',
629
+ confirm_desc: '请输入 {name} 以确认删除',
630
+ remark: 'Access Key 名称',
631
+ remarkInvalid: 'Access Key 名称不能为空'
632
+ },
633
+ webhook: {
634
+ add: '添加应用集成',
635
+ delTitle: '删除应用集成',
636
+ requiredError: '请输入正确的 {type}',
637
+ confirm_desc: '请输入 {name} 以确认删除',
638
+ test: '测试',
639
+ description: '此操作无法撤消。这将永久删除 ID 为 {id} 的应用集成',
640
+ columns: {
641
+ description: 'ID',
642
+ params: '参数',
643
+ createdAt: '创建时间'
644
+ }
645
+ }
646
+ },
647
+ notification: {
648
+ title: '动态',
649
+ empty: '没有动态',
650
+ viewAll: '查看所有动态',
651
+ showRead: '显示已读',
652
+ markAllAsRead: '全部标记为已读',
653
+ markAsRead: '标记为已读'
654
+ },
655
+ router: {
656
+ routerSetting: '域名和网址',
657
+ certSetting: 'SSL 证书',
658
+ defaultSite: '默认',
659
+ urlHelperText: '不以 HTTP/HTTPS 开头的 URL 将被认为是相对路径',
660
+ empty: '点击 “添加 URL” 来增加映射',
661
+ healthy: {
662
+ ok: '基石程序运行中,可访问',
663
+ error: '基石程序未安装或未运行中,无法访问'
664
+ },
665
+ service: {
666
+ select: '选择和配置服务(可选)',
667
+ what: '服务是把请求转交给基石程序前执行的逻辑,比如要求用户登录,检查权限等'
668
+ },
669
+ nonProvider: {
670
+ title: '变更引擎警告',
671
+ description: '如果你将引擎切换为 none,你当前访问的页面可能不再可用,因为它可能是由引擎来提供服务的,是否要继续?',
672
+ confirm: '我知道风险,继续吧'
673
+ },
674
+ validation: {
675
+ urlRequired: 'URL 是必填的',
676
+ redirectCodeRequired: '重定向码是必选的',
677
+ didRequired: 'Blocklet 是必选的',
678
+ pathPrefixTooLong: '请求的前缀不能超过30个字符',
679
+ pathPrefixCannotBeEmpty: '请求的前缀不能为空',
680
+ domainRequired: '节点域名不能为空',
681
+ invalidUrl: '请填写正确的 URL',
682
+ pathPrefixRequired: 'URL 前缀是必填的',
683
+ redirectUrlRequired: '重定向 URL 是必填的'
684
+ },
685
+ domain: {
686
+ validate: {
687
+ emptyTip: '站点域名不能为空',
688
+ suffixTip: '站点域名不能包含 {suffix}'
689
+ },
690
+ add: {
691
+ title: '添加站点',
692
+ description: '请填写你所拥有的合法的站点地址',
693
+ confirm: '添加',
694
+ cancel: '取消',
695
+ blocklet: '选择基石程序',
696
+ redirect: '重定向到哪里?',
697
+ port: '负责处理请求的服务监听在哪个端口?',
698
+ portTip: '保持默认值就好,如果你想把请求转发到非默认端口,可以根据需要修改',
699
+ type: '服务类型'
700
+ },
701
+ update: {
702
+ title: '更新站点域名',
703
+ label: '站点域名',
704
+ description: '请填写你所拥有的合法的站点域名'
705
+ },
706
+ verify: {
707
+ ok: '该站点解析正常',
708
+ notResolved: '改站点解析异常,请检查你域名服务商的 DNS 配置'
709
+ },
710
+ https: {
711
+ ok: '该域名已启用 HTTPS',
712
+ bad: '该域名尚未启用 HTTPS'
713
+ },
714
+ delete: {
715
+ title: '删除站点',
716
+ description: '确认之后,你会删除掉 “{name}” 站点, 在下面输入“{name}”,选择删除按钮完成修改,或者选择取消按钮关闭当前弹窗。',
717
+ confirm_desc: '请输入 {name} 以确认删除'
718
+ }
719
+ },
720
+ domainAlias: {
721
+ add: {
722
+ title: '添加额外域名',
723
+ domainDescription: '请填写有效的域名',
724
+ forceTip: '当域名已存在时强制添加'
725
+ },
726
+ delete: {
727
+ title: '删除',
728
+ description: '删除别名将会删除域名别用该站点下的所有流量转发规则,是否继续?'
729
+ }
730
+ },
731
+ domainSecurity: {
732
+ title: '更新站点安全设置',
733
+ cors: {
734
+ title: 'CORS 域名白名单',
735
+ description: '此白名单显示的声明可以往 {name} 发送跨域请求的域名, 多个域名用逗号分隔, 可以用 "*" 来允许任何域名(我们不推荐这么做)',
736
+ domainInvalid: '请输入有效的域名列表'
737
+ }
738
+ },
739
+ rule: {
740
+ add: {
741
+ title: '添加 URL',
742
+ confirm: '添加',
743
+ pathPrefix: '请求的前缀是什么?',
744
+ pathPrefixTip: "如果你填写了 '/prefix',那么所有以其为前缀的请求都会被转发到配置的基石程序",
745
+ blocklet: '把请求代理到哪个服务?',
746
+ port: '把请求代理到哪个端口?',
747
+ portTip: '这里的默认值是 Blocklet 默认监听的端口,如果你的 Blocklet 会启用多个端口,你可以根据需要自定义'
748
+ },
749
+ delete: {
750
+ title: '删除规则',
751
+ description: '确认之后,你会删除掉 “{name}” URL映射, 在下面输入“{name}”,选择删除按钮完成修改,或者选择取消按钮关闭当前弹窗。',
752
+ confirm_desc: '请输入 {name} 以确认删除',
753
+ cancel: '取消'
754
+ },
755
+ update: {
756
+ title: '更新规则',
757
+ confirm: '确认,更新吧',
758
+ cancel: '取消'
759
+ }
760
+ },
761
+ cert: {
762
+ name: '证书名称',
763
+ domain: '域名',
764
+ commonName: '通用名称',
765
+ boundDomains: '域名',
766
+ action: '操作',
767
+ expired: '已过期',
768
+ leftDays: ' 天 剩余',
769
+ issuedOn: '签发时间',
770
+ expiryOn: '过期时间',
771
+ fingerprintAlg: '指纹算法',
772
+ validityPeriod: '有效期',
773
+ matchedSites: '匹配站点',
774
+ source: '添加方式',
775
+ upload: '手动上传',
776
+ publicCertHelperText: '公开证书可以下载',
777
+ nonPublicCertHelperText: '非公开的证书不能被下载',
778
+ protectedCertHelperText: '受保护的证书不可以编辑',
779
+ unprotectedCertHelperText: '不受保护的证书可以编辑',
780
+ issuing: '正在生成证书',
781
+ sourceTypes: {
782
+ upload: '手动上传',
783
+ lets_encrypt: "Let's Encrypt"
784
+ },
785
+ table: {
786
+ nodata: '暂无数据'
787
+ },
788
+ delete: {
789
+ title: '删除证书',
790
+ description: '确认删除?',
791
+ confirm: '确认'
792
+ },
793
+ nginx: {
794
+ title: '更新证书',
795
+ titleAdd: '添加证书',
796
+ pem: '证书文件',
797
+ pemTip: '请把证书文件拖拽到这里, 应该以 ".pem" 或 ".crt" 结尾',
798
+ key: '证书私钥',
799
+ keyTip: '请把证书私钥拖拽到这里,应该以 ".pem" 或 ".key" 结尾',
800
+ confirm: '提交',
801
+ cancel: '取消',
802
+ invalidFile: '所选择的文件无效',
803
+ empty: '尚未选择任何文件',
804
+ sourceTypes: {
805
+ upload: '通过上传文件',
806
+ lets_encrypt: "通过 Let's Encrypt 自动生成"
807
+ }
808
+ },
809
+ detail: {
810
+ title: '证书详情'
811
+ },
812
+ genLetsEncryptCert: {
813
+ title: "生成 Let's Encrypt 证书",
814
+ dnsTip: '请确保该域名已经解析到了当前节点。',
815
+ description: '添加证书会让服务变得更安全,节点会在证书过期前自动更新证书。'
816
+ }
817
+ },
818
+ gateway: {
819
+ reqLimit: {
820
+ status: {
821
+ true: '已启动',
822
+ false: '已关闭'
823
+ },
824
+ switchLabel: '请求限流',
825
+ rate: '限流速率({rate} 请求/秒)',
826
+ ipHeaderLabel: '自定义客户端 IP 头部(可选)',
827
+ ipHeaderDesc: '如果 Blocklet Server 运行在一些代理后面,可以在这里设置客户端真实 IP 的头部;可选,如果不填将使用默认值。'
828
+ }
829
+ }
830
+ },
831
+ noMatch: {
832
+ desc: '我们找不到您要找的页面'
833
+ },
834
+ health: {
835
+ connectionErrorTip: '节点服务节点的连接已经断开,可能是出现了网络异常或者节点服务节点故障',
836
+ connectionRecoveryTip: '节点服务节点的连接刚刚恢复正常',
837
+ connectionStoppedTip: '节点服务节点已经被停止',
838
+ wrongAccessUrlTip: '节点访问地址错误,请使用正确的访问地址'
839
+ },
840
+ debug: {
841
+ title: '您的节点已启动并正在运行'
842
+ },
843
+ team: {
844
+ invite: '邀请',
845
+ add: '添加',
846
+ member: {
847
+ name: '姓名',
848
+ passport: '通行证',
849
+ passports: '通行证',
850
+ lastLogin: '上次登录',
851
+ filter: '条件筛选',
852
+ forbidLogin: '禁止登录',
853
+ forbidLoginDescription: '该成员将无法登录此应用',
854
+ allowLogin: '允许登录',
855
+ allowLoginDescription: '该成员将可以登录此应用',
856
+ deleteUser: '删除成员',
857
+ deleteUserDescription: '确认删除成员 “{name}”?',
858
+ updateRole: '更新角色',
859
+ revokePassport: '撤销通行证',
860
+ revokePassportDescription: '通行证一旦被撤销,通行证的持有者将无法用其登录,是否继续?',
861
+ enablePassport: '启用通行证',
862
+ enablePassportDescription: '撤销的通行证一旦被重新启用,通行证持有者将可以继续登陆应用,是否继续?',
863
+ passportPermissionTitle: '该通行证具有以下权限:',
864
+ search: '搜索成员',
865
+ hideBlockedMember: '隐藏被禁止的成员',
866
+ inviteDialog: {
867
+ createInviteLink: '生成邀请链接',
868
+ createSuccessTip: '创建邀请链接成功,请复制并发送给被邀请人。该链接只能使用一次,并将在 {expireDate} 过期'
869
+ },
870
+ error: {
871
+ passportEmpty: '通行证不能为空'
872
+ }
873
+ },
874
+ transferNode: {
875
+ name: '转移所有者',
876
+ inviteDialog: {
877
+ createInviteLink: '生成邀请链接',
878
+ title: '转移节点',
879
+ tips: {
880
+ progress: '转移节点需要对方接受后才能完成转移操作,对方一旦接受,无法再使用当前凭据登录节点。',
881
+ newOwnerPermissions: '新 Owner 将有权管理成员、通行证,以及应用等所有操作。',
882
+ revoke: '如果想收回转移邀请,在"团队 -> 成员 -> 邀请中"页面删除邀请链接即可。'
883
+ },
884
+ createSuccessTip: '创建邀请链接成功,请复制并发送给被邀请人。该链接只能使用一次,并将在 {expireDate} 过期'
885
+ },
886
+ delegateDialog: {
887
+ title: '需要授权',
888
+ scan: '用 DID 钱包扫描下面的二维码,授权节点转让节点的所有权 NFT.',
889
+ confirm: '在您的 DID 钱包上确认',
890
+ success: '授权成功'
891
+ }
892
+ },
893
+ permission: {
894
+ create: {
895
+ title: '创建权限',
896
+ description: "格式:<操作>_<资源>\n举例:'query_user', 'mutate_user'"
897
+ },
898
+ update: {
899
+ title: '更新权限'
900
+ },
901
+ delete: {
902
+ title: '删除权限',
903
+ description: '确认删除 {name}?(角色中关联的 {name} 将会同时被删除)'
904
+ },
905
+ error: {
906
+ actionEmpty: '操作不能为空',
907
+ resourceEmpty: '资源不能为空',
908
+ permissionTooLong: '权限不能超过 {length} 个字符',
909
+ descriptionTooLong: '描述不能超过 {length} 个字符'
910
+ }
911
+ },
912
+ passport: {
913
+ create: {
914
+ title: '创建通行证',
915
+ titleTip: '名称创建后不可修改,建议在14个字母内'
916
+ },
917
+ bind: {
918
+ title: '绑定',
919
+ roleTip: '绑定后将会获得选定的通行证的所有权限',
920
+ permissionTip: '绑定后将会获得选定的权限',
921
+ transferLeftTitle: '所有权限',
922
+ transferRightTitle: '已添加权限'
923
+ },
924
+ delete: {
925
+ title: '删除通行证',
926
+ description: '删除后,用户持有的此通行证的将失去所有权限,是否继续?'
927
+ },
928
+ error: {
929
+ titleEmpty: '名称不能为空',
930
+ titleTooLong: '名称不能超过 {length} 个字符',
931
+ descriptionEmpty: '描述不能为空'
932
+ },
933
+ issuance: {
934
+ pending: '待领取',
935
+ create: {
936
+ title: '生成链接'
937
+ },
938
+ delete: {
939
+ title: '删除领取链接',
940
+ description: '确认删除 {link}?'
941
+ }
942
+ },
943
+ issue: '颁发通行证',
944
+ disableIssuance: '禁止颁发通行证',
945
+ enableIssuance: '允许颁发通行证',
946
+ disableIssuanceTip: '“颁发通行证”,“邀请成员” 等操作将被禁止',
947
+ enableIssuanceTip: '“颁发通行证”,“邀请成员” 等操作将被允许',
948
+ trustedPassportIssuers: '信任的通行证颁发者',
949
+ trustedIssuers: '信任的颁发者',
950
+ externalPassport: '外部的通信证',
951
+ notTrustedIssuerTip: '该通行证无法使用,因为颁发者未在信任的颁发者列表中',
952
+ issuerDid: '颁发者 DID',
953
+ addNodeToTrustedIssuers: '添加当前 node 为信任的通行证颁发者',
954
+ revoked: '撤销',
955
+ noPermission: '没有权限执行此操作',
956
+ shouldNotDeleteCurrent: '无法删除当前正在使用的通行证',
957
+ mappingRule: '映射规则',
958
+ defaultRule: '默认规则',
959
+ search: '搜索通行证',
960
+ searchIssuerDid: '搜索颁发者 DID',
961
+ issueBy: '由 {name} 颁发'
962
+ },
963
+ inviting: {
964
+ link: '邀请链接',
965
+ inviter: '邀请人',
966
+ delete: {
967
+ title: '删除邀请链接',
968
+ description: '确认删除 {link}?'
969
+ },
970
+ disabledTip: '邀请功能未开启'
971
+ },
972
+ whoCanAccess: {
973
+ all: {
974
+ title: '所有人可访问'
975
+ },
976
+ owner: {
977
+ title: '只有我自己可访问'
978
+ },
979
+ invited: {
980
+ title: '只有被邀请的人可以访问'
89
981
  }
90
982
  }
983
+ },
984
+ launcher: {
985
+ provider: '云服务商',
986
+ adminUrl: 'Launcher 管理页面'
987
+ },
988
+ session: {
989
+ forbidLogin: '你已被禁止访问此节点'
990
+ },
991
+ launchBlocklet: {
992
+ appInfo: '应用信息',
993
+ appInfoDesc: '确认应用信息',
994
+ author: '应用作者:{author}',
995
+ setup: '设置应用',
996
+ alreadyRunning: '应用 {name} 已经运行在当前节点',
997
+ alreadyInstalled: '应用 {name} 已经安装到当前节点,无需重复安装',
998
+ alreadyExists: '该应用已经存在,可直接访问',
999
+ launchSuccess: '{appName} 已经启动成功!',
1000
+ selectAbtNode: '选择节点',
1001
+ nextStep: '下一步',
1002
+ purchased: '已购买',
1003
+ purchase: '购买',
1004
+ agreeAll: '同意并继续',
1005
+ agreement: '许可协议',
1006
+ installing: ' 正在节点 {serverName} 上安装 {appName},请稍等片刻',
1007
+ redirecting: '安装成功,现正在启动 {appName}',
1008
+ start: '启动中',
1009
+ launch: '安装应用到节点',
1010
+ installSuccess: '应用已经成功安装到节点 {serverName} 并启动',
1011
+ openInRegistry: '在应用商店中打开',
1012
+ subTitle: '准备在节点 {serverName} 上安装 {appName}',
1013
+ installingSubTitle: '正在安装 {appName}',
1014
+ access: '打开应用',
1015
+ viewApplication: '查看应用',
1016
+ newVersion: '新版本',
1017
+ newVersionDesc: '应用已经存在,但当前版本可更新',
1018
+ later: '稍后',
1019
+ upgradeNow: '现在更新',
1020
+ abtnodeLicenseName: '节点许可',
1021
+ introduction: '简介',
1022
+ welcome: '欢迎来到应用启动向导',
1023
+ accept: '许可协议',
1024
+ license: '应用许可',
1025
+ next: '同意协议并继续',
1026
+ purchaseApp: '购买应用',
1027
+ setupAppDesc: '初始化你的应用',
1028
+ launched: '启动',
1029
+ confirmInstall: '确认安装',
1030
+ dialog: {
1031
+ title: '需要您的授权',
1032
+ freeDescription: '你需要提供节点所有权 NFT 或节点通行证凭据来启动应用',
1033
+ nonFreeDescription: '你需要提供应用购买凭证和节点通行证来启动应用',
1034
+ confirm: '在您的 DID 钱包上确认',
1035
+ success: '授权成功',
1036
+ authorizationTimeout: '授权超时'
1037
+ },
1038
+ waiting: {
1039
+ verifying: '验证应用元数据',
1040
+ downloading: '下载应用包',
1041
+ extracting: '提取应用包的数据',
1042
+ installing: '安装应用和设置组件',
1043
+ done: '安装完成'
1044
+ },
1045
+ error: {
1046
+ loadMetaFailed: '获取应用信息出错',
1047
+ appMetaNotFound: '没有找到该应用的信息',
1048
+ downloadFailed: '下载应用失败,请重试',
1049
+ installFailed: '安装应用失败,请重试',
1050
+ startFailed: '启动应用失败,请重试',
1051
+ launchFailed: '启动应用失败,请重试',
1052
+ installedButStopped: '应用安装成功,但是无法启动,解决启动问题之后后可手动启动',
1053
+ installedButError: '应用已经安装,但是运行出错了',
1054
+ upgradeFailed: '更新失败'
1055
+ }
1056
+ },
1057
+ issuePassport: {
1058
+ title: '领取通行证',
1059
+ description: '使用 DID 钱包领取 {name} 颁发的通行证',
1060
+ dialog: {
1061
+ confirm: '在您的 DID 钱包上确认',
1062
+ success: '通行证已成功添加到您的 DID 钱包',
1063
+ loginWithPassport: '用此通行证连接'
1064
+ }
1065
+ },
1066
+ lostPassport: {
1067
+ title: '找回通行证',
1068
+ description: '{name} 所有者可扫描二维码找回通行证,成员请联系所有者重新颁发通行证',
1069
+ dialog: {
1070
+ scan: '用您的 DID 钱包扫描下面的二维码',
1071
+ confirm: '在您的 DID 钱包上确认',
1072
+ success: '通行证已成功添加到您的 DID 钱包'
1073
+ },
1074
+ return: '使用通行证登录',
1075
+ selectPassport: '选择通行证',
1076
+ receivePassport: '领取通行证'
1077
+ },
1078
+ invite: {
1079
+ message: '{name} 邀请你成为 {dapp} 的 {role}',
1080
+ receive: '领取通行证',
1081
+ validUntil: '过期时间:',
1082
+ viewPermission: '查看权限',
1083
+ emptyPermission: '没有权限',
1084
+ open: '打开',
1085
+ description: {
1086
+ step1: '下载并设置好您的 {wallet}',
1087
+ step2: '点击上面的按钮领取通行证',
1088
+ step3: '使用通行证登录 {dapp}'
1089
+ },
1090
+ transferNFTDialog: {
1091
+ title: '接受节点 {name}',
1092
+ scan: '连接节点启动器,以完成节点的接收。',
1093
+ confirm: '请在 DID 钱包上确认',
1094
+ success: '连接成功,等待确认接收节点。'
1095
+ }
1096
+ },
1097
+ receive: {
1098
+ dialog: {
1099
+ title: '请连接 DID 钱包领取通行证',
1100
+ scan: '用您的 DID 钱包扫描下面的二维码领取通行证',
1101
+ confirm: '在您的 DID 钱包上确认',
1102
+ success: '连接成功'
1103
+ }
91
1104
  }
92
1105
  };