@abtnode/ux 1.8.26 → 1.8.28
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/actions.js +109 -0
- package/lib/blocklet/actions.js +437 -0
- package/lib/blocklet/audit-logs.js +194 -0
- package/lib/blocklet/avatar.js +96 -0
- package/lib/blocklet/blocklet-source.js +56 -0
- package/lib/blocklet/component/configuration.js +124 -0
- package/lib/blocklet/component/delete.js +115 -0
- package/lib/blocklet/component/environment.js +277 -0
- package/lib/blocklet/component/index.js +742 -0
- package/lib/blocklet/component/setting.js +135 -0
- package/lib/blocklet/configuration.js +463 -0
- package/lib/blocklet/disk-info.js +89 -0
- package/lib/blocklet/icons.js +26 -0
- package/lib/blocklet/log.js +55 -0
- package/lib/blocklet/mode.js +33 -0
- package/lib/blocklet/overview.js +184 -0
- package/lib/blocklet/runtime-info.js +85 -0
- package/lib/blocklet/status.js +103 -0
- package/lib/blocklet/util.js +119 -0
- package/lib/blocklet/version.js +178 -0
- package/lib/card-selector.js +9 -22
- package/lib/click-to-copy.js +36 -0
- package/lib/confirm.js +149 -0
- package/lib/contexts/audit-log.js +141 -0
- package/lib/contexts/deleting-blocklets.js +78 -0
- package/lib/contexts/node.js +28 -0
- package/lib/contexts/session.js +20 -0
- package/lib/contexts/team.js +19 -0
- package/lib/did-address.js +75 -0
- package/lib/dot.js +18 -0
- package/lib/form/form-text-input.js +12 -38
- package/lib/form/form-wrapper.js +0 -7
- package/lib/form/required.js +0 -6
- package/lib/hooks/mobile-width.js +19 -0
- package/lib/hooks/use-passport-id.js +0 -5
- package/lib/icons/long-arrow.svg +5 -0
- package/lib/index.js +0 -3
- package/lib/invitation/invitation-app.js +3 -21
- package/lib/invitation/invitation-passport.js +2 -16
- package/lib/invitation/invitation-receive.js +2 -19
- package/lib/invitation/invitation-user.js +0 -16
- package/lib/invitation/invitation.js +0 -23
- package/lib/issue-passport.js +2 -31
- package/lib/launch-blocklet/content-layout.js +3 -19
- package/lib/launch-blocklet/page-header.js +0 -9
- package/lib/layout/addon.js +0 -24
- package/lib/locales/en.js +1046 -38
- package/lib/locales/index.js +0 -3
- package/lib/locales/zh.js +1049 -36
- package/lib/logs/clock.js +19 -0
- package/lib/logs/log-terminal.js +172 -0
- package/lib/lost-passport.js +6 -51
- package/lib/nav-logo.js +12 -33
- package/lib/passport-tag.js +41 -0
- package/lib/permission.js +68 -0
- package/lib/relative-time.js +61 -0
- package/lib/schema-form/color-input.js +2 -15
- package/lib/schema-form/common-prop-types.js +0 -3
- package/lib/schema-form/index.js +8 -45
- package/lib/schema-form/passport-input.js +6 -24
- package/lib/schema-form/text-input.js +9 -26
- package/lib/table-icons.js +42 -0
- package/lib/table.js +13 -0
- package/lib/tag.js +35 -0
- package/lib/team/members/actions.js +99 -0
- package/lib/team/members/index.js +476 -0
- package/lib/team/members/invitations.js +196 -0
- package/lib/team/members/invite-member.js +212 -0
- package/lib/team/members/issue-passport.js +155 -0
- package/lib/team/members/member.js +294 -0
- package/lib/team/members/passport-issuances.js +154 -0
- package/lib/team/members/passports.js +329 -0
- package/lib/team/members/toggle-user-approval.js +128 -0
- package/lib/team/members/transfer-node.js +262 -0
- package/lib/team/members/util.js +20 -0
- package/lib/team/passports/detail.js +261 -0
- package/lib/team/passports/index.js +220 -0
- package/lib/team/passports/mutate-role.js +204 -0
- package/lib/team/passports/trusted-issuer.js +295 -0
- package/lib/team/passports/trusted-issuers.js +238 -0
- package/lib/team/search-input.js +36 -0
- package/lib/team/styles/dialog.js +13 -0
- package/lib/team/styles/list-header.js +13 -0
- package/lib/toast.js +4 -19
- package/lib/util/index.js +504 -38
- package/lib/who-can-access/config.js +0 -6
- package/lib/wrap-locale.js +0 -7
- package/package.json +43 -20
package/lib/locales/en.js
CHANGED
|
@@ -1,58 +1,332 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
module.exports = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
setup: {
|
|
5
|
+
connect: {
|
|
6
|
+
title: 'Signature Required',
|
|
7
|
+
scan: 'Connect your DID Wallet to become the owner of this server',
|
|
8
|
+
confirm: 'Review this operation on your DID Wallet',
|
|
9
|
+
success: 'Your account is connected to this server'
|
|
10
|
+
},
|
|
11
|
+
verify: {
|
|
12
|
+
title: 'Ownership Credential Required',
|
|
13
|
+
scan: 'Connect your DID Wallet to provide ownership credentials',
|
|
14
|
+
confirm: 'Review this operation on your DID Wallet',
|
|
15
|
+
success: 'Your account is connected to this server'
|
|
16
|
+
},
|
|
17
|
+
accept: {
|
|
18
|
+
title: 'Accepting server require ownership certificates',
|
|
19
|
+
scan: 'Connect your DID Wallet to provide ownership credentials',
|
|
20
|
+
confirm: 'Review this operation on your DID Wallet',
|
|
21
|
+
success: 'Your account is connected to this server'
|
|
22
|
+
},
|
|
23
|
+
title: 'Setup Blocklet Server',
|
|
24
|
+
steps: {
|
|
25
|
+
eula: 'End User License Agreement',
|
|
26
|
+
eulaFooter: 'I have read and agreed to the terms of the EULA',
|
|
27
|
+
connect: 'Connect Owner DID Wallet',
|
|
28
|
+
verify: 'Verify Ownership',
|
|
29
|
+
basicSettings: 'Basic Settings',
|
|
30
|
+
complete: 'Complete'
|
|
31
|
+
},
|
|
32
|
+
congratulation: 'Congratulations! Your Blocklet Server is secure and ready to use',
|
|
33
|
+
redirectButton: 'Take me to dashboard!'
|
|
34
|
+
},
|
|
35
|
+
login: {
|
|
36
|
+
loginTo: 'Connect to',
|
|
37
|
+
description: 'Only server owner and approved members can access the dashboard',
|
|
7
38
|
dialog: {
|
|
8
|
-
|
|
39
|
+
title: 'Connect DID Wallet',
|
|
40
|
+
scan: 'Connect your DID Wallet to provide passport',
|
|
9
41
|
confirm: 'Confirm on your DID Wallet',
|
|
10
|
-
success: '
|
|
11
|
-
loginWithPassport: 'Connect with this Passport'
|
|
42
|
+
success: 'You are successfully connected'
|
|
12
43
|
}
|
|
13
44
|
},
|
|
14
|
-
|
|
15
|
-
title: '
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
45
|
+
acceptServer: {
|
|
46
|
+
title: 'Claim Server with Ownership NFT',
|
|
47
|
+
tooltip: 'If you received a server ownership nft, you can claim your owner passport with this link.'
|
|
48
|
+
},
|
|
49
|
+
sidebar: {
|
|
50
|
+
dashboard: 'Dashboard',
|
|
51
|
+
blocklets: 'Blocklets',
|
|
52
|
+
console: 'Console',
|
|
53
|
+
settings: 'Settings'
|
|
54
|
+
},
|
|
55
|
+
system: {
|
|
56
|
+
total: 'Total',
|
|
57
|
+
used: 'Used',
|
|
58
|
+
free: 'Free',
|
|
59
|
+
cores: 'Number of cores'
|
|
25
60
|
},
|
|
26
61
|
common: {
|
|
62
|
+
about: 'About',
|
|
63
|
+
auditLogs: 'Audit Trail',
|
|
64
|
+
logs: 'Logs',
|
|
65
|
+
filter: 'Log Filter',
|
|
66
|
+
category: 'Log Topic',
|
|
67
|
+
timeAgo: '{time} ago',
|
|
68
|
+
afterTime: 'After {time}',
|
|
69
|
+
abtnode: 'Blocklet Server',
|
|
70
|
+
accessKey: 'Access Keys',
|
|
71
|
+
action: 'Action',
|
|
72
|
+
actions: 'Actions',
|
|
73
|
+
add: 'Add',
|
|
74
|
+
address: 'Address',
|
|
75
|
+
allow: 'Allow',
|
|
76
|
+
alreadyExist: 'already exists',
|
|
77
|
+
approve: 'Approve',
|
|
78
|
+
approved: 'approved',
|
|
79
|
+
author: 'Author',
|
|
80
|
+
avatar: 'Avatar',
|
|
81
|
+
back: 'Back',
|
|
82
|
+
basic: 'Basic',
|
|
83
|
+
basicInfo: 'Basic Information',
|
|
84
|
+
bind: 'Bind',
|
|
85
|
+
blocklet: 'Blocklet',
|
|
86
|
+
blocklets: 'Blocklets',
|
|
87
|
+
blockletsStorage: 'Blocklets Storage',
|
|
88
|
+
cacheStorage: 'Cache Storage',
|
|
89
|
+
cancel: 'Cancel',
|
|
90
|
+
certificate: 'certificate',
|
|
91
|
+
click: 'Click to copy',
|
|
92
|
+
close: 'Close',
|
|
93
|
+
collapseAll: 'Collapse All',
|
|
94
|
+
community: 'Community',
|
|
95
|
+
complete: 'Complete',
|
|
96
|
+
componentBasicInfo: 'Component Basic Information',
|
|
97
|
+
components: 'Components',
|
|
98
|
+
config: 'Configure',
|
|
99
|
+
configuration: 'Configuration',
|
|
100
|
+
configSuccess: 'Config successfully',
|
|
101
|
+
confirm: 'Confirm',
|
|
102
|
+
console: 'Console',
|
|
103
|
+
continueWith: 'Continue With',
|
|
104
|
+
copiedTip: 'Copied',
|
|
105
|
+
copyTip: 'Click To Copy',
|
|
106
|
+
coreStorage: 'Core Storage',
|
|
107
|
+
cpu: 'CPU',
|
|
108
|
+
create: 'Create',
|
|
109
|
+
createSuccess: 'Create Access Key',
|
|
110
|
+
created: 'Created At',
|
|
111
|
+
createdAt: 'Created At',
|
|
112
|
+
createdBy: 'Created By',
|
|
113
|
+
dAddress: 'Decentralized Identifiers (DID)',
|
|
114
|
+
dataStorage: 'Data Storage',
|
|
115
|
+
delConfirm: 'Delete',
|
|
116
|
+
delConfirmDescription: 'Confirm delete?',
|
|
117
|
+
delete: 'Delete',
|
|
118
|
+
description: 'Description',
|
|
119
|
+
detail: 'Detail',
|
|
120
|
+
did: 'DID',
|
|
121
|
+
disk: 'Disk',
|
|
122
|
+
diskInfo: 'Disk Info',
|
|
123
|
+
docker: 'IS Docker',
|
|
124
|
+
documentation: 'Documentation',
|
|
125
|
+
domain: 'Domain',
|
|
126
|
+
downgradeTo: 'Downgrade to',
|
|
127
|
+
download: 'Download',
|
|
128
|
+
downloading: 'Downloading',
|
|
129
|
+
edit: 'Edit',
|
|
130
|
+
email: 'Email',
|
|
131
|
+
empty: 'Empty',
|
|
132
|
+
emptyData: 'No results found',
|
|
133
|
+
enable: 'Enable',
|
|
134
|
+
engine: 'Engine',
|
|
135
|
+
env: 'Environment',
|
|
136
|
+
environment: 'Environment',
|
|
137
|
+
expandAll: 'Expand All',
|
|
138
|
+
expired: 'Expired',
|
|
139
|
+
expires: 'Expires',
|
|
140
|
+
export: 'Export',
|
|
141
|
+
externalIp: 'External IP',
|
|
142
|
+
failed: 'failed',
|
|
143
|
+
fingerprint: 'Fingerprint',
|
|
144
|
+
finish: 'Finish',
|
|
145
|
+
forbid: 'Forbid',
|
|
146
|
+
free: 'Free',
|
|
147
|
+
gitpod: 'IS Gitpod',
|
|
148
|
+
goEULA: 'Click to view "End User License Agreement"',
|
|
149
|
+
group: 'Group',
|
|
150
|
+
image: 'IS Image',
|
|
151
|
+
install: 'Install',
|
|
152
|
+
installed: 'Installed',
|
|
153
|
+
installedAt: 'Installed At',
|
|
154
|
+
installSuccess: 'Successfully installed',
|
|
155
|
+
installing: 'Installing',
|
|
156
|
+
internalIp: 'Internal IP',
|
|
157
|
+
invite: 'Invite',
|
|
158
|
+
inviting: 'Inviting',
|
|
159
|
+
ip: 'IP',
|
|
160
|
+
isPublic: 'Public',
|
|
161
|
+
issue: 'Issue',
|
|
162
|
+
issuer: 'Issuer',
|
|
163
|
+
item: 'Item',
|
|
164
|
+
joined: 'Joined',
|
|
165
|
+
key: 'Key',
|
|
166
|
+
lastPublishedAt: 'Published At',
|
|
167
|
+
launcher: 'Launcher Information',
|
|
168
|
+
leavePageTip: 'Are you sure to leave the page?',
|
|
169
|
+
loading: 'loading',
|
|
170
|
+
log: 'View Logs',
|
|
171
|
+
logStorage: 'Log Storage',
|
|
172
|
+
login: 'Login',
|
|
173
|
+
logo: 'Logo',
|
|
174
|
+
logout: 'Logout',
|
|
175
|
+
manageTeam: 'Manage Team',
|
|
176
|
+
marketplace: 'Marketplace',
|
|
177
|
+
member: 'Member',
|
|
178
|
+
members: 'Members',
|
|
179
|
+
memory: 'Memory',
|
|
180
|
+
meta: 'Meta Data',
|
|
181
|
+
monitor: 'Monitor',
|
|
182
|
+
more: 'More',
|
|
183
|
+
mountPoint: 'MountPoint',
|
|
184
|
+
name: 'Name',
|
|
27
185
|
next: 'Next',
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
receive: 'Receive with',
|
|
33
|
-
validUntil: 'Valid until:',
|
|
34
|
-
viewPermission: 'View Permission',
|
|
35
|
-
emptyPermission: 'Empty Permission',
|
|
186
|
+
no: 'No',
|
|
187
|
+
noData: 'No records to display',
|
|
188
|
+
notice: 'Unexpected bad things will happen if you don’t read this!',
|
|
189
|
+
noticeTitle: 'Notice',
|
|
36
190
|
open: 'Open',
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
191
|
+
management: 'Management',
|
|
192
|
+
os: 'Operating System',
|
|
193
|
+
overview: 'Overview',
|
|
194
|
+
owner: 'Owner',
|
|
195
|
+
page404: '404 Page',
|
|
196
|
+
passport: 'Passport',
|
|
197
|
+
permission: 'Permission',
|
|
198
|
+
port: 'Port',
|
|
199
|
+
pre: 'Previous',
|
|
200
|
+
protected: 'Protected',
|
|
201
|
+
protocol: 'Protocol',
|
|
202
|
+
published: 'published',
|
|
203
|
+
purchase: 'Purchase',
|
|
204
|
+
redirect: 'Redirect',
|
|
205
|
+
redirectCode: 'Redirect Code',
|
|
206
|
+
redirectPermanently: 'Permanent Redirect',
|
|
207
|
+
redirectTemporary: 'Temporary Redirect',
|
|
208
|
+
redirectUrl: 'Redirect URL',
|
|
209
|
+
reject: 'Reject',
|
|
210
|
+
reload: 'Reload',
|
|
211
|
+
remark: 'Remark',
|
|
212
|
+
remove: 'Remove',
|
|
213
|
+
requiredErrorText: '{name} is required',
|
|
214
|
+
resource: 'Resource',
|
|
215
|
+
restart: 'Restart',
|
|
216
|
+
retry: 'Retry',
|
|
217
|
+
revoke: 'Revoke',
|
|
218
|
+
role: 'Role',
|
|
219
|
+
running: 'running',
|
|
220
|
+
runtimeInfo: 'Runtime Info',
|
|
221
|
+
save: 'Save',
|
|
222
|
+
saveChanges: 'Save Changes',
|
|
223
|
+
saveSuccess: 'Saved successfully',
|
|
224
|
+
scheduleFailed: 'schedule failed',
|
|
225
|
+
scheduleSuccess: 'successfully scheduled',
|
|
226
|
+
search: 'Search',
|
|
227
|
+
setting: 'Settings',
|
|
228
|
+
start: 'Start',
|
|
229
|
+
status: 'Status',
|
|
230
|
+
stop: 'Stop',
|
|
231
|
+
storage: 'Storage',
|
|
232
|
+
store: 'Store',
|
|
233
|
+
success: 'success',
|
|
234
|
+
support: 'Support',
|
|
235
|
+
team: 'Team',
|
|
236
|
+
the: 'The',
|
|
237
|
+
title: 'Title',
|
|
238
|
+
type: 'Type',
|
|
239
|
+
unavailable: 'Unavailable',
|
|
240
|
+
update: 'Update',
|
|
241
|
+
updateAvailable: 'New version {version} available',
|
|
242
|
+
updatedAt: 'Updated At',
|
|
243
|
+
updatedBy: 'Updated By',
|
|
244
|
+
upgrade: 'Upgrade',
|
|
245
|
+
upgradeTo: 'Upgrade to',
|
|
246
|
+
upgrading: 'Upgrading',
|
|
247
|
+
uptime: 'Uptime',
|
|
248
|
+
url: 'URL',
|
|
249
|
+
valid: 'Valid',
|
|
250
|
+
value: 'Value',
|
|
251
|
+
version: 'Version',
|
|
252
|
+
visit: 'Visit',
|
|
253
|
+
waiting: 'Waiting',
|
|
254
|
+
webhook: 'Integrations',
|
|
255
|
+
yes: 'Yes',
|
|
256
|
+
invalidParam: 'Invalid Params',
|
|
257
|
+
launch: 'Launch',
|
|
258
|
+
price: 'Price',
|
|
259
|
+
redirecting: 'Redirecting',
|
|
260
|
+
error: 'Error',
|
|
261
|
+
reminder: 'Reminder',
|
|
262
|
+
normal: 'Normal',
|
|
263
|
+
gateway: 'Gateway',
|
|
264
|
+
verifyNFT: 'Verify NFT',
|
|
265
|
+
errorMessage: 'Error Message:'
|
|
50
266
|
},
|
|
51
267
|
blocklet: {
|
|
268
|
+
notFound: 'Blocklet not found on this server, maybe it has been deleted',
|
|
269
|
+
installFromMarket: 'Install New Blocklets',
|
|
270
|
+
installFromUrl: 'Install From Url',
|
|
271
|
+
installFromCreate: 'Create Blocklet',
|
|
272
|
+
installedAt: 'Installed At',
|
|
273
|
+
startedAt: 'Started At',
|
|
274
|
+
stoppedAt: 'Stopped At',
|
|
275
|
+
urlEmptyTip: 'No Access URL, ',
|
|
276
|
+
goToAddRule: 'Go To Add',
|
|
277
|
+
services: 'Exposed Services',
|
|
278
|
+
upstreamPort: 'Upstream Port',
|
|
279
|
+
noService: 'No Services',
|
|
280
|
+
appId: 'App ID',
|
|
281
|
+
reloadSuccess: 'Blocklet was reloaded successfully',
|
|
282
|
+
statusTip: 'Blocklet is {status}',
|
|
283
|
+
initialUptime: 'Less than 1m',
|
|
284
|
+
fromUrl: {
|
|
285
|
+
title: 'Install Blocklet',
|
|
286
|
+
label: 'Blocklet Meta URL',
|
|
287
|
+
description: 'The URL should point to the Meta File of the Blocklet. If you need to refer to a local file, please add the file:// prefix, e.g. file:///Users/foo/blocklet.json.',
|
|
288
|
+
confirm: 'Install',
|
|
289
|
+
step0: 'Input URL',
|
|
290
|
+
step1: 'Confirm Meta Info',
|
|
291
|
+
existTipPrefix: 'Blocklet with the same DID already exists, the version is',
|
|
292
|
+
existTipSuffix: ', Please install a higher version.'
|
|
293
|
+
},
|
|
294
|
+
action: {
|
|
295
|
+
stopDescription: 'Stopping the blocklet will make its public interfaces unaccessible, which may cause end user failures',
|
|
296
|
+
confirmStop: 'Yes, Stop It',
|
|
297
|
+
cancelDownloadDescription: 'Cancel download {name} ?',
|
|
298
|
+
removeDescription: 'Removing the blocklet will erase code and data generated by this blocklet, which is not recoverable if you do not have any backups',
|
|
299
|
+
removeComponentDescription: 'Removing the component will erase code and data generated by this component, which is not recoverable if you do not have any backups',
|
|
300
|
+
forceRemoveDescription: 'Deleting this Blocklet will delete all data',
|
|
301
|
+
removeKeepData: 'Keep data for this blocklet, only remove code',
|
|
302
|
+
removeComponentKeepData: 'Keep data for this component, only remove code',
|
|
303
|
+
removeComplete: 'Remove both code and data for this blocklet',
|
|
304
|
+
confirmRemove: 'Yes, Remove It',
|
|
305
|
+
removeComponentComplete: 'Remove both code and data for this component',
|
|
306
|
+
confirmComponentRemove: 'Yes, Remove It',
|
|
307
|
+
upgradeDescription: 'Upgrading the blocklet will make it temporarily unavailable, are you sure to continue?',
|
|
308
|
+
confirmUpgrade: 'Yes, Upgrade It',
|
|
309
|
+
confirmRestart: 'Yes, Restart It',
|
|
310
|
+
restartDescription: 'Restarting the blocklet will temporarily suspended and may not start because of a configuration change'
|
|
311
|
+
},
|
|
312
|
+
dev: {
|
|
313
|
+
modeTip: 'Please switch Blocklet Server to DEBUG mode'
|
|
314
|
+
},
|
|
315
|
+
index: {
|
|
316
|
+
tableTitle: 'Manage Your Blocklets',
|
|
317
|
+
noBlocklet: 'No blocklets found in this Blocklet Server, install a blocklet from market place to start.'
|
|
318
|
+
},
|
|
319
|
+
admin: {
|
|
320
|
+
iframeTitle: 'Blocklet Admin Interface',
|
|
321
|
+
title: 'Admin Interface',
|
|
322
|
+
noContent: 'This blocklet does not have a admin interface',
|
|
323
|
+
securityError: 'SecurityError: Can not open the admin url from accessing a cross-origin frame'
|
|
324
|
+
},
|
|
52
325
|
config: {
|
|
53
326
|
name: 'Blocklet Name',
|
|
54
327
|
description: 'Blocklet Description',
|
|
55
328
|
sk: 'Secret key for the blocklet wallet',
|
|
329
|
+
logo: 'Logo URL or path for the blocklet',
|
|
56
330
|
clusterSize: 'Instance count when run this blocklet in cluster mode',
|
|
57
331
|
deletable: {
|
|
58
332
|
name: 'Delete Protection',
|
|
@@ -86,7 +360,741 @@ module.exports = {
|
|
|
86
360
|
},
|
|
87
361
|
publicToStore: 'Public On Store',
|
|
88
362
|
publicInstanceTip: 'The access address of this blocklet will be displayed in the Store (along with your DID for accepting donations)'
|
|
363
|
+
},
|
|
364
|
+
disabledText: 'Please edit environment variables in ".env" file or "blocklet.yml" file',
|
|
365
|
+
changedTip: 'Configuration updated, please restart Blocklet',
|
|
366
|
+
missingRequired: 'Missing required configuration to start the blocklet',
|
|
367
|
+
gotoFix: 'Go to fix',
|
|
368
|
+
environment: {
|
|
369
|
+
key: 'Configuration key',
|
|
370
|
+
value: 'Configuration value',
|
|
371
|
+
keyValueRequired: 'Configuration key and value must be specified',
|
|
372
|
+
invalidKey: 'Configuration key must not start with BLOCKLET_',
|
|
373
|
+
deleteForbidden: 'This configuration is required and should not be deleted',
|
|
374
|
+
tip: 'Configurations prefixed with BWA_ should not contain sensitive information because they will be sent to the browser'
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
overview: {
|
|
378
|
+
source: 'Source',
|
|
379
|
+
deployedFrom: 'Deployed From',
|
|
380
|
+
accessControl: 'Access Control',
|
|
381
|
+
viewInStore: 'View It In Store'
|
|
382
|
+
},
|
|
383
|
+
diskInfo: {
|
|
384
|
+
empty: 'Disk info not available now!',
|
|
385
|
+
appDir: 'App Directory',
|
|
386
|
+
dataDir: 'Data Directory',
|
|
387
|
+
logDir: 'Log Directory',
|
|
388
|
+
cacheDir: 'Cache Directory'
|
|
389
|
+
},
|
|
390
|
+
runtimeInfo: {
|
|
391
|
+
noRunning: 'Runtime information will be available when blocklet is running!',
|
|
392
|
+
memoryUsage: 'Memory Usage',
|
|
393
|
+
cpuUsage: 'CPU Usage',
|
|
394
|
+
uptime: 'Uptime',
|
|
395
|
+
port: 'Port',
|
|
396
|
+
processId: 'Process ID'
|
|
397
|
+
},
|
|
398
|
+
dist: {
|
|
399
|
+
downloadLink: 'Download Link',
|
|
400
|
+
verify: 'Verify'
|
|
401
|
+
},
|
|
402
|
+
status: {
|
|
403
|
+
added: 'Added',
|
|
404
|
+
waiting: 'Waiting',
|
|
405
|
+
downloading: 'Downloading',
|
|
406
|
+
installing: 'Installing',
|
|
407
|
+
upgrading: 'Upgrading',
|
|
408
|
+
installed: 'Installed',
|
|
409
|
+
created: 'Created',
|
|
410
|
+
starting: 'Starting',
|
|
411
|
+
running: 'Running',
|
|
412
|
+
stopping: 'Stopping',
|
|
413
|
+
stopped: 'Stopped',
|
|
414
|
+
error: 'Error',
|
|
415
|
+
deleting: 'Deleting',
|
|
416
|
+
corrupted: 'Corrupted',
|
|
417
|
+
purchasing: 'Waiting for purchase',
|
|
418
|
+
purchased: 'Purchased',
|
|
419
|
+
verifying: 'Verifying purchase'
|
|
420
|
+
},
|
|
421
|
+
list: {
|
|
422
|
+
download: 'Download',
|
|
423
|
+
star: 'Star'
|
|
424
|
+
},
|
|
425
|
+
component: {
|
|
426
|
+
checkUpdateTitle: 'Check for Updates',
|
|
427
|
+
updateTitle: 'Update Components',
|
|
428
|
+
noUpdate: 'No components to update',
|
|
429
|
+
add: 'Add Component',
|
|
430
|
+
selectComponent: 'Select Component',
|
|
431
|
+
selectRegistry: 'Select Blocklet Store',
|
|
432
|
+
selectRegistryTip: 'You can switch blocklet store to see more components',
|
|
433
|
+
selectInstance: 'Select Instance',
|
|
434
|
+
selectInstanceTip: 'You can select an existing instance or create a new instance. Existing instances will use previously saved configuration and data',
|
|
435
|
+
newInstance: 'Create New Instance',
|
|
436
|
+
noComponent: 'No components',
|
|
437
|
+
mountPoint: "What's the mount point?",
|
|
438
|
+
mountPointTip: "If you set mount point to '/my-prefix', then all requests that begins with that mount point will be routed to the selected component",
|
|
439
|
+
titleTip: 'You can customize different titles for identical components',
|
|
440
|
+
delete: 'Delete Component',
|
|
441
|
+
deleteDescription: 'This component will not be accessible after deletion. Confirm delete?',
|
|
442
|
+
purchase: 'Payment Required',
|
|
443
|
+
tip: {
|
|
444
|
+
stopBlocklet: 'Please stop running Blocklet first',
|
|
445
|
+
notDynamic: 'Only dynamically added component can be removed'
|
|
446
|
+
},
|
|
447
|
+
choose: 'Choose',
|
|
448
|
+
addWithName: 'Add Component To {name}',
|
|
449
|
+
installingCanCloseWindowTip: 'Installing component in the background, you can safely close this window',
|
|
450
|
+
installSuccessTip: 'Congratulations, the component was installed successfully!',
|
|
451
|
+
missDownloadTokenTip: 'Cannot add paid component without valid download token',
|
|
452
|
+
purchaseComponentSecondCheckTip: 'Please present your blocklet purchase NFT to continue',
|
|
453
|
+
installComponentError: 'There was an error installing the component, please retry again',
|
|
454
|
+
downloadComponentError: 'There was an error downloading the component, please retry again',
|
|
455
|
+
addComponentTip: {
|
|
456
|
+
introduction: 'Welcome to the Add Component Wizard',
|
|
457
|
+
isFree: 'You can use <b>{name}</b> as a component for free;',
|
|
458
|
+
isPurchase: 'You need to Verify NFT before use <b>{name}</b> as a component;',
|
|
459
|
+
belowInformation: 'Below is the information for the component: ',
|
|
460
|
+
verifyNFT: 'Please select the Verify NFT method',
|
|
461
|
+
config: 'Please fill in the configuration of the component',
|
|
462
|
+
environment: 'Please fill in the environment of the component',
|
|
463
|
+
fromUrl: 'Add Component From Url'
|
|
464
|
+
},
|
|
465
|
+
addNext: 'Add {name}',
|
|
466
|
+
setting: 'Settings'
|
|
467
|
+
},
|
|
468
|
+
router: {
|
|
469
|
+
urlPath: 'URL Path',
|
|
470
|
+
noRunning: 'The blocklet is not currently started. Unable to access through the following address!',
|
|
471
|
+
securitySetting: 'Security Setting',
|
|
472
|
+
checkUrlAccessible: 'Check the accessibility of the address',
|
|
473
|
+
urlInaccessible: 'It may be due to network reasons, the address is temporarily inaccessible',
|
|
474
|
+
noAccessibleUrl: 'No accessible URL',
|
|
475
|
+
domainLockTooltip: 'The system generated Domain cannot be edited.',
|
|
476
|
+
urlLockTooltip: 'The system generated URL Path cannot be edited.'
|
|
477
|
+
},
|
|
478
|
+
export: {
|
|
479
|
+
title: 'Export Blocklet',
|
|
480
|
+
name: 'Bundle Name',
|
|
481
|
+
nameTip: 'e.g. "my-blocklet-name" or "@my-scope/blocklet-name"',
|
|
482
|
+
result: "What's next",
|
|
483
|
+
exportSource: 'Export Source',
|
|
484
|
+
success: 'Blocklet successfully exported',
|
|
485
|
+
resultTipStart: 'With',
|
|
486
|
+
resultTipEnd: 'you can build and publish this blocklet within minutes',
|
|
487
|
+
uploadedComponentTip: 'Directly uploaded components cannot be exported:'
|
|
488
|
+
}
|
|
489
|
+
},
|
|
490
|
+
dashboard: {
|
|
491
|
+
nodeDid: 'Node',
|
|
492
|
+
ownerDid: 'Owner',
|
|
493
|
+
routingEngine: 'Routing Engine',
|
|
494
|
+
ownerNftURL: 'Owner NFT',
|
|
495
|
+
expirationLeft: 'Expiration Left',
|
|
496
|
+
renewal: 'Renewal'
|
|
497
|
+
},
|
|
498
|
+
store: {
|
|
499
|
+
nameSort: 'Name',
|
|
500
|
+
popularSort: 'Popularity',
|
|
501
|
+
headerDescription: 'Find and Install Your Blocklets',
|
|
502
|
+
detail: {
|
|
503
|
+
purchase: 'Purchase {name}',
|
|
504
|
+
open: 'Open {name}',
|
|
505
|
+
install: 'Install {name}',
|
|
506
|
+
upgrade: 'Upgrade {name}',
|
|
507
|
+
empty: 'No introduction'
|
|
508
|
+
},
|
|
509
|
+
blockletRegistry: {
|
|
510
|
+
changeFailed: 'Change Blocklet Store Failed: ',
|
|
511
|
+
addFailed: 'Add Blocklet Store Failed: ',
|
|
512
|
+
editFailed: 'Edit Blocklet Store Failed: ',
|
|
513
|
+
switchRegistry: 'Switch Blocklet Store',
|
|
514
|
+
addRegistry: 'Add Blocklet Store',
|
|
515
|
+
editRegistry: 'Edit Blocklet Store',
|
|
516
|
+
deleteRegistry: 'Delete Blocklet Store',
|
|
517
|
+
haveSameRegistry: 'The same blocklet store exists',
|
|
518
|
+
registryName: 'Blocklet Store Name',
|
|
519
|
+
registryUrl: 'Blocklet Store URL',
|
|
520
|
+
registryNameEmpty: 'Blocklet Store name cannot be empty',
|
|
521
|
+
registryUrlEmpty: 'Blocklet store url cannot be empty',
|
|
522
|
+
deleteDesc: 'Confirm Delete blocklet store {name} ?<br/><span style="color: {color}">*After removing this blocklet store, you cannot update the apps installed from this blocklet store unless you add them again.</span>',
|
|
523
|
+
confirmDesc: 'Please input {name} to delete'
|
|
524
|
+
},
|
|
525
|
+
purchase: {
|
|
526
|
+
title: 'Purchase {name}',
|
|
527
|
+
confirmed: 'Your blocklet purchase NFT is verified',
|
|
528
|
+
declined: 'You do not provided valid the blocklet purchase NFT',
|
|
529
|
+
waiting: 'Waiting for purchase complete...',
|
|
530
|
+
purchase: {
|
|
531
|
+
title: 'Purchase NFT',
|
|
532
|
+
description: 'Pay some token before installing this blocklet if you have not purchased this blocklet'
|
|
533
|
+
},
|
|
534
|
+
verify: {
|
|
535
|
+
title: 'Verify NFT',
|
|
536
|
+
description: 'Your NFT will be verified before installing this blocklet if you have purchased and hold the purchase NFT in your DID Wallet',
|
|
537
|
+
auth: {
|
|
538
|
+
title: 'Purchase Credential Required',
|
|
539
|
+
scan: 'Connect DID Wallet to provide blocklet purchase NFT',
|
|
540
|
+
confirm: 'Review this operation on your DID Wallet',
|
|
541
|
+
success: 'Your purchase NFT is verified, and installing has started'
|
|
542
|
+
}
|
|
543
|
+
},
|
|
544
|
+
auth: {
|
|
545
|
+
title: 'Purchase {name}',
|
|
546
|
+
scan: 'Scan following QRCode with your DID Wallet',
|
|
547
|
+
confirm: 'Confirm on your DID Wallet',
|
|
548
|
+
success: 'Purchase NFT sent to your DID Wallet'
|
|
549
|
+
},
|
|
550
|
+
launch: 'Launch {name}',
|
|
551
|
+
autoLaunch: '{name} successfully purchased, redirecting to launch page...'
|
|
552
|
+
}
|
|
553
|
+
},
|
|
554
|
+
setting: {
|
|
555
|
+
saveSuccess: 'Settings Saved Successfully',
|
|
556
|
+
unSavedTip: 'There are unsaved changes, please click "Save Changes" to save them.',
|
|
557
|
+
unSavedLeaveTip: 'There are unsaved changes, are you sure to leave the page?',
|
|
558
|
+
form: {
|
|
559
|
+
name: 'Name Your Server',
|
|
560
|
+
nameRequired: 'Server description is required',
|
|
561
|
+
namePlaceholder: 'Server Name',
|
|
562
|
+
description: 'Describe Your Server',
|
|
563
|
+
descriptionHolder: 'Server Description',
|
|
564
|
+
descriptionRequired: 'Server description is required',
|
|
565
|
+
domain: 'Your Server Domain Name',
|
|
566
|
+
domainPlaceholder: 'Server Domain Name',
|
|
567
|
+
domainRequired: 'Server domain is required',
|
|
568
|
+
ipPlaceholder: 'IP',
|
|
569
|
+
ipRequired: 'IP is required',
|
|
570
|
+
registry: 'Blocklet Store',
|
|
571
|
+
registryPlaceholder: 'Blocklet store to fetch blocklets',
|
|
572
|
+
registryRequired: 'Blocklet store is required ',
|
|
573
|
+
registerUrl: 'Blocklet Launcher URL',
|
|
574
|
+
registerUrlPlaceholder: 'Input the URL of your preferred Blocklet Launcher, you can use the official one safely',
|
|
575
|
+
webWalletUrl: 'DID Wallet URL',
|
|
576
|
+
webWalletUrlPlaceholder: 'Please input the URL of your hosted "DID Wallet", you can use the official one safely',
|
|
577
|
+
enableWelcomePage: 'Enable welcome page',
|
|
578
|
+
welcome: {
|
|
579
|
+
switchLabel: 'Welcome Page'
|
|
580
|
+
},
|
|
581
|
+
upgrade: {
|
|
582
|
+
title: 'Upgrade Blocklet Server to v{version}',
|
|
583
|
+
description: 'During the upgrade, your Blocklet Server will enter maintenance mode for a few minutes while the update is completed.',
|
|
584
|
+
dialog: 'Click on "confirm" to install the update. Blocklet Server will enter maintenance mode until the update is completed and return to production mode automatically.',
|
|
585
|
+
confirm: 'Upgrade',
|
|
586
|
+
switchLabel: 'Auto Update Check',
|
|
587
|
+
setup: 'Preparing the update',
|
|
588
|
+
installing: 'Installing Blocklet Server v{version}',
|
|
589
|
+
restarting: 'Restarting Blocklet Server',
|
|
590
|
+
cleanup: 'Migrating Blocklet Server data',
|
|
591
|
+
complete: 'Upgrade complete!',
|
|
592
|
+
progress: 'Upgrading Blocklet Server to v{version}',
|
|
593
|
+
check: 'Check for Updates',
|
|
594
|
+
latest: 'You are running the latest version.'
|
|
595
|
+
},
|
|
596
|
+
register: {
|
|
597
|
+
titleAdded: 'Added to Blocklet Launcher',
|
|
598
|
+
title: 'Add to Blocklet Launcher',
|
|
599
|
+
description: 'Once added, you can launch blocklets to this blocklet server from {url}.',
|
|
600
|
+
descriptionOnAdded: 'you can launch blocklets to this blocklet server from {url}.',
|
|
601
|
+
btn: 'Add',
|
|
602
|
+
update: 'Update',
|
|
603
|
+
added: 'Added',
|
|
604
|
+
addSucceed: 'Add succeed',
|
|
605
|
+
updateSucceed: 'Update succeed',
|
|
606
|
+
detecting: 'Detecting',
|
|
607
|
+
timeout: 'Detection timeout, please check if the blocklet launcher is started'
|
|
608
|
+
},
|
|
609
|
+
monitor: {
|
|
610
|
+
diskThreshold: 'Send alert when disk usage exceeds (%)',
|
|
611
|
+
diskThresholdPlaceholder: 'Please set the disk usage alert threshold'
|
|
612
|
+
}
|
|
613
|
+
},
|
|
614
|
+
accessKey: {
|
|
615
|
+
accessKeyId: 'ACCESS KEY',
|
|
616
|
+
lastUsed: 'Last Used At',
|
|
617
|
+
tip: 'Please enter a name for this access key for future reference:',
|
|
618
|
+
saveSecretTip: 'This is the only time that your Access Secret key can be viewed and cannot be recovered. However, you can create new access keys at any time',
|
|
619
|
+
iKnow: 'I have copied and saved the Access Secret',
|
|
620
|
+
showSecret: 'Show Secret Access Key',
|
|
621
|
+
hideSecret: 'Hide Secret',
|
|
622
|
+
title: 'Delete Access Key',
|
|
623
|
+
descriptionNoTime: 'This will permanently delete the access key {key} with name {name}, which is (never used before)',
|
|
624
|
+
description: 'This will permanently delete access key {key} with name {name}, which is (last used on {time}, {timeAge})',
|
|
625
|
+
confirm_desc: 'Please input {name} to delete',
|
|
626
|
+
remark: 'Access Key Name',
|
|
627
|
+
remarkInvalid: 'Access Key Name is required'
|
|
628
|
+
},
|
|
629
|
+
webhook: {
|
|
630
|
+
add: 'Add Integration',
|
|
631
|
+
delTitle: 'Delete Integration',
|
|
632
|
+
requiredError: 'Please provide a valid {type}',
|
|
633
|
+
confirm_desc: 'Please input {name} to delete',
|
|
634
|
+
test: 'Test',
|
|
635
|
+
description: 'This will permanently delete integration with ID {id}',
|
|
636
|
+
columns: {
|
|
637
|
+
description: 'ID',
|
|
638
|
+
params: 'Params',
|
|
639
|
+
createdAt: 'createdAt'
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
},
|
|
643
|
+
notification: {
|
|
644
|
+
title: 'Activities',
|
|
645
|
+
empty: 'No activities yet',
|
|
646
|
+
viewAll: 'View All',
|
|
647
|
+
showRead: 'Show Read',
|
|
648
|
+
markAllAsRead: 'Mark All as Read',
|
|
649
|
+
markAsRead: 'Mark As Read'
|
|
650
|
+
},
|
|
651
|
+
router: {
|
|
652
|
+
routerSetting: 'Domains & URLs',
|
|
653
|
+
certSetting: 'SSL Certificates',
|
|
654
|
+
defaultSite: 'Default',
|
|
655
|
+
urlHelperText: 'URL that do not start with HTTP/HTTPS are considered relative paths',
|
|
656
|
+
empty: 'Click on Actions to setup URL Mapping',
|
|
657
|
+
healthy: {
|
|
658
|
+
ok: 'Blocklet or service is running',
|
|
659
|
+
error: 'Blocklet or service is not running or not installed'
|
|
660
|
+
},
|
|
661
|
+
service: {
|
|
662
|
+
select: 'Select Blocklet Services (Optional)',
|
|
663
|
+
what: 'Blocklet Services are pipelines executed against the request before redirecting to upstream blocklet'
|
|
664
|
+
},
|
|
665
|
+
nonProvider: {
|
|
666
|
+
title: 'Engine Change Warning',
|
|
667
|
+
description: 'If you change engine to none, your current page may not work properly because the previous engine will be stopped, are you sure to continue?',
|
|
668
|
+
confirm: 'I understand, continue'
|
|
669
|
+
},
|
|
670
|
+
validation: {
|
|
671
|
+
urlRequired: 'URL is required',
|
|
672
|
+
redirectCodeRequired: 'Redirect code is required',
|
|
673
|
+
didRequired: 'Blocklet is required',
|
|
674
|
+
pathPrefixTooLong: 'The URL Prefix cannot exceed {length} characters',
|
|
675
|
+
pathPrefixCannotBeEmpty: 'The URL Prefix cannot be empty',
|
|
676
|
+
domainRequired: 'Server domain is required',
|
|
677
|
+
invalidUrl: 'Please provide a valid URL',
|
|
678
|
+
pathPrefixRequired: 'URL prefix is required',
|
|
679
|
+
redirectUrlRequired: 'Redirect URL is required'
|
|
680
|
+
},
|
|
681
|
+
domain: {
|
|
682
|
+
validate: {
|
|
683
|
+
emptyTip: 'Site domain cannot be empty',
|
|
684
|
+
suffixTip: 'Site domain cannot include {suffix}'
|
|
685
|
+
},
|
|
686
|
+
add: {
|
|
687
|
+
title: 'Add Site',
|
|
688
|
+
description: 'Please provide a valid site name address',
|
|
689
|
+
confirm: 'Add',
|
|
690
|
+
cancel: 'Cancel',
|
|
691
|
+
blocklet: 'Select the blocklet to handle the traffic',
|
|
692
|
+
redirect: 'Where to redirect the traffic?',
|
|
693
|
+
port: 'What port does your request handler need to listen to?',
|
|
694
|
+
portTip: 'This defaults to the main port of request handler, you can customize this',
|
|
695
|
+
type: 'Traffic Handler'
|
|
696
|
+
},
|
|
697
|
+
update: {
|
|
698
|
+
title: 'Update Site Domain',
|
|
699
|
+
label: 'Site Domain',
|
|
700
|
+
description: 'Please provide a valid site domain'
|
|
701
|
+
},
|
|
702
|
+
verify: {
|
|
703
|
+
ok: 'This site is resolved',
|
|
704
|
+
notResolved: 'This site neither resolved nor accessible, please check your DNS configuration'
|
|
705
|
+
},
|
|
706
|
+
https: {
|
|
707
|
+
ok: 'This domain has https enabled',
|
|
708
|
+
bad: 'This domain has not enabled https'
|
|
709
|
+
},
|
|
710
|
+
delete: {
|
|
711
|
+
title: 'Delete Site',
|
|
712
|
+
description: 'By confirming, you will delete your existing "{name}" site. Type "{name}" below and select Delete to complete the change, or select Cancel if you want to leave your site',
|
|
713
|
+
confirm_desc: 'Please input {name} to confirm'
|
|
714
|
+
}
|
|
715
|
+
},
|
|
716
|
+
domainAlias: {
|
|
717
|
+
add: {
|
|
718
|
+
title: 'Add Additional Domain',
|
|
719
|
+
domainDescription: 'Please provide a valid domain name',
|
|
720
|
+
forceTip: 'Force add if domain name already exists'
|
|
721
|
+
},
|
|
722
|
+
delete: {
|
|
723
|
+
title: 'Delete',
|
|
724
|
+
description: 'After removing a domain alias, access to that alias may not be handled properly.'
|
|
89
725
|
}
|
|
726
|
+
},
|
|
727
|
+
domainSecurity: {
|
|
728
|
+
title: 'Update Domain Security',
|
|
729
|
+
cors: {
|
|
730
|
+
title: 'Allowed CORS Domains',
|
|
731
|
+
description: 'Domain list that can send cross origin requests to {name}, comma separated, use "*" to allow anyone, which is not recommended',
|
|
732
|
+
domainInvalid: 'Please input a valid list of domain names'
|
|
733
|
+
}
|
|
734
|
+
},
|
|
735
|
+
rule: {
|
|
736
|
+
add: {
|
|
737
|
+
title: 'Add URL Mapping',
|
|
738
|
+
confirm: 'Add',
|
|
739
|
+
pathPrefix: "What's the URL Prefix?",
|
|
740
|
+
pathPrefixTip: "If you set prefix to '/my-prefix', then all requests that begins with that prefix will be routed to the configured blocklet",
|
|
741
|
+
blocklet: 'Which Blocklet will be handling those requests?',
|
|
742
|
+
port: 'Which port of the blocklet will be handling requests?',
|
|
743
|
+
portTip: 'This defaults to the main port of blocklet, if your blocklet listens on multiple ports, you can customize this'
|
|
744
|
+
},
|
|
745
|
+
delete: {
|
|
746
|
+
title: 'Delete URL Mapping',
|
|
747
|
+
description: 'By confirming, you will delete your existing "{name}" URL Mapping. Type "{name}" below and select Delete to complete the change, or select Cancel if you want to leave your URL Mapping.',
|
|
748
|
+
confirm_desc: 'Please input {name} to delete',
|
|
749
|
+
cancel: 'Cancel'
|
|
750
|
+
},
|
|
751
|
+
update: {
|
|
752
|
+
title: 'Update URL Mapping',
|
|
753
|
+
confirm: 'Yes, Update',
|
|
754
|
+
cancel: 'Cancel'
|
|
755
|
+
}
|
|
756
|
+
},
|
|
757
|
+
cert: {
|
|
758
|
+
name: 'Certificate Name',
|
|
759
|
+
domain: 'Domain Name',
|
|
760
|
+
action: 'Action',
|
|
761
|
+
commonName: 'Common Name',
|
|
762
|
+
boundDomains: 'Domains',
|
|
763
|
+
source: 'Source',
|
|
764
|
+
expired: 'Expired',
|
|
765
|
+
leftDays: ' days left',
|
|
766
|
+
issuedOn: 'Issued On',
|
|
767
|
+
expiryOn: 'Expiry On',
|
|
768
|
+
fingerprintAlg: 'Fingerprint Algorithm',
|
|
769
|
+
validityPeriod: 'Validity Period',
|
|
770
|
+
matchedSites: 'Matched Sites',
|
|
771
|
+
upload: 'Manual Upload',
|
|
772
|
+
publicCertHelperText: 'Public certificates can be downloaded',
|
|
773
|
+
nonPublicCertHelperText: 'Non-public certificates cannot be downloaded',
|
|
774
|
+
protectedCertHelperText: 'Protected certificates cannot be edited',
|
|
775
|
+
unprotectedCertHelperText: 'Unprotected certificates can be edited',
|
|
776
|
+
issuing: 'Certificate being generated',
|
|
777
|
+
sourceTypes: {
|
|
778
|
+
upload: 'Manual Upload',
|
|
779
|
+
lets_encrypt: "Let's Encrypt"
|
|
780
|
+
},
|
|
781
|
+
table: {
|
|
782
|
+
nodata: 'No data'
|
|
783
|
+
},
|
|
784
|
+
delete: {
|
|
785
|
+
title: 'Delete Certificate',
|
|
786
|
+
description: 'Confirm delete?',
|
|
787
|
+
confirm: 'Confirm'
|
|
788
|
+
},
|
|
789
|
+
nginx: {
|
|
790
|
+
title: 'Update Certificate',
|
|
791
|
+
titleAdd: 'Add Certificate',
|
|
792
|
+
pem: 'SSL Certificate File',
|
|
793
|
+
pemTip: 'Please drop your server certificate file here, it should ends with ".pem" or ".crt"',
|
|
794
|
+
key: 'Private Key File',
|
|
795
|
+
keyTip: 'Please drop your server private key file here, it should ends with ".pem" or ".key"',
|
|
796
|
+
confirm: 'Save',
|
|
797
|
+
cancel: 'Cancel',
|
|
798
|
+
invalidFile: 'You have selected an invalid file',
|
|
799
|
+
empty: 'No file selected yet',
|
|
800
|
+
source: 'Source',
|
|
801
|
+
sourceTypes: {
|
|
802
|
+
upload: 'Manual Upload',
|
|
803
|
+
lets_encrypt: "Let's Encrypt"
|
|
804
|
+
}
|
|
805
|
+
},
|
|
806
|
+
detail: {
|
|
807
|
+
title: 'Certificate Details'
|
|
808
|
+
},
|
|
809
|
+
genLetsEncryptCert: {
|
|
810
|
+
title: "Generate Let's Encrypt certificate",
|
|
811
|
+
dnsTip: 'Please make sure the domain name has point to the current Blocklet Server.',
|
|
812
|
+
description: 'Adding a certificate will make the service more secure, and Blocklet Server will automatically renew the certificate before it expires.'
|
|
813
|
+
}
|
|
814
|
+
},
|
|
815
|
+
gateway: {
|
|
816
|
+
reqLimit: {
|
|
817
|
+
status: {
|
|
818
|
+
true: 'Enabled',
|
|
819
|
+
false: 'Disabled'
|
|
820
|
+
},
|
|
821
|
+
switchLabel: 'Request Limit',
|
|
822
|
+
rate: 'Request Limit({rate} Request/Second)',
|
|
823
|
+
ipHeaderLabel: 'Customize client IP header(Optional)',
|
|
824
|
+
ipHeaderDesc: "If the Blocklet Server is running behind some proxies, you can set the header of the client's real IP here. Optional, leave empty to use default."
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
},
|
|
828
|
+
noMatch: {
|
|
829
|
+
desc: "We can't find the page that you're looking for"
|
|
830
|
+
},
|
|
831
|
+
health: {
|
|
832
|
+
connectionErrorTip: "Blocklet Server can't connect to the network, please check if Blocklet Server has been stopped or there is a network issue",
|
|
833
|
+
connectionRecoveryTip: 'Blocklet Server connectivity has been recovered',
|
|
834
|
+
connectionStoppedTip: 'Blocklet Server has been stopped',
|
|
835
|
+
wrongAccessUrlTip: 'Blocklet Server access address is wrong, please use the correct access address'
|
|
836
|
+
},
|
|
837
|
+
debug: {
|
|
838
|
+
title: 'Your Blocklet Server is up and running!'
|
|
839
|
+
},
|
|
840
|
+
team: {
|
|
841
|
+
invite: 'Invite New',
|
|
842
|
+
add: 'Add New',
|
|
843
|
+
member: {
|
|
844
|
+
name: 'Name',
|
|
845
|
+
passport: 'Passport',
|
|
846
|
+
passports: 'Passports',
|
|
847
|
+
lastLogin: 'Last Login',
|
|
848
|
+
filter: 'Filter by',
|
|
849
|
+
forbidLogin: 'Forbid Login',
|
|
850
|
+
forbidLoginDescription: 'The user will not be able to connect to this application',
|
|
851
|
+
allowLogin: 'Allow Login',
|
|
852
|
+
allowLoginDescription: 'The user will be able to connect to this application',
|
|
853
|
+
updateRole: 'Update Role',
|
|
854
|
+
deleteUser: 'Delete User',
|
|
855
|
+
deleteUserDescription: 'Confirm delete user "{name}"?',
|
|
856
|
+
revokePassport: 'Revoke Passport',
|
|
857
|
+
revokePassportDescription: 'Once the passport is revoked, the passport holder can not use it to login again, are you sure to continue?',
|
|
858
|
+
enablePassport: 'Enable Passport',
|
|
859
|
+
enablePassportDescription: 'Once the revoked passport is enabled again, the passport holder can use it to login again, are you sure to continue?',
|
|
860
|
+
passportPermissionTitle: 'The passport has the following permissions:',
|
|
861
|
+
search: 'Search Member',
|
|
862
|
+
hideBlockedMember: 'Hide Unapproved Members',
|
|
863
|
+
inviteDialog: {
|
|
864
|
+
createInviteLink: 'Generate Invitation Link',
|
|
865
|
+
createSuccessTip: 'The invitation link is successfully created, click to copy and send the link to the invited member, please note that this invitation link can not be reused and will expire on {expireDate}'
|
|
866
|
+
},
|
|
867
|
+
error: {
|
|
868
|
+
passportEmpty: 'Passport should not be empty'
|
|
869
|
+
}
|
|
870
|
+
},
|
|
871
|
+
transferNode: {
|
|
872
|
+
name: 'Transfer Ownership',
|
|
873
|
+
inviteDialog: {
|
|
874
|
+
title: 'Transfer Blocklet Server',
|
|
875
|
+
tips: {
|
|
876
|
+
progress: 'Transfer the server needs to be accepted by the receiver to complete the transfer operation, and once the receiver accepts it, you cannot log in to the server with the current passport again.',
|
|
877
|
+
newOwnerPermissions: 'The new Owner will have the right to manage all operations such as members, passports, and Blocklets.',
|
|
878
|
+
revoke: 'If you want to withdraw the transfer invitation, you can delete the invitation link in the "Team -> Members -> Inviting" page.'
|
|
879
|
+
},
|
|
880
|
+
createInviteLink: 'Generate Invitation Link',
|
|
881
|
+
createSuccessTip: 'The invitation link is successfully created, click to copy and send the link to the invited member, please note that this invitation link can not be reused and will expire on {expireDate}'
|
|
882
|
+
},
|
|
883
|
+
delegateDialog: {
|
|
884
|
+
title: 'Authorize Required',
|
|
885
|
+
scan: 'Scan following QR code with DID Wallet to authorize server to transfer server ownership NFT.',
|
|
886
|
+
confirm: 'Confirm on your DID Wallet',
|
|
887
|
+
success: 'Authorization Successfully'
|
|
888
|
+
}
|
|
889
|
+
},
|
|
890
|
+
permission: {
|
|
891
|
+
create: {
|
|
892
|
+
title: 'Create Permission',
|
|
893
|
+
description: "Format: <action>_<resource>\n e.g. 'query_user', 'mutate_user'"
|
|
894
|
+
},
|
|
895
|
+
delete: {
|
|
896
|
+
title: 'Delete Permission',
|
|
897
|
+
description: 'Confirm delete {name}?'
|
|
898
|
+
},
|
|
899
|
+
error: {
|
|
900
|
+
actionEmpty: 'action cannot be empty',
|
|
901
|
+
resourceEmpty: 'resource cannot be empty',
|
|
902
|
+
permissionTooLong: 'permission cannot exceed {length} characters',
|
|
903
|
+
descriptionTooLong: 'description cannot exceed {length} characters'
|
|
904
|
+
}
|
|
905
|
+
},
|
|
906
|
+
passport: {
|
|
907
|
+
create: {
|
|
908
|
+
title: 'Create Passport',
|
|
909
|
+
titleTip: 'Title cannot be modified after created, recommended within 14 letters'
|
|
910
|
+
},
|
|
911
|
+
bind: {
|
|
912
|
+
title: 'Bind Permission',
|
|
913
|
+
roleTip: 'You will get all the permissions of the selected passport after binding',
|
|
914
|
+
permissionTip: 'You will get the selected permissions after binding',
|
|
915
|
+
transferLeftTitle: 'All permissions',
|
|
916
|
+
transferRightTitle: 'Granted permissions'
|
|
917
|
+
},
|
|
918
|
+
delete: {
|
|
919
|
+
title: 'Delete Passport',
|
|
920
|
+
description: 'The passports holds by user will lose all permissions after it is deleted. Are you sure to continue?'
|
|
921
|
+
},
|
|
922
|
+
error: {
|
|
923
|
+
titleEmpty: 'title cannot be empty',
|
|
924
|
+
titleTooLong: 'title cannot exceed {length} characters',
|
|
925
|
+
descriptionEmpty: 'description cannot be empty'
|
|
926
|
+
},
|
|
927
|
+
issuance: {
|
|
928
|
+
pending: 'Pending',
|
|
929
|
+
create: {
|
|
930
|
+
title: 'Generate Link'
|
|
931
|
+
},
|
|
932
|
+
delete: {
|
|
933
|
+
title: 'Delete Receive Link',
|
|
934
|
+
description: 'Confirm delete {link}?'
|
|
935
|
+
}
|
|
936
|
+
},
|
|
937
|
+
issue: 'Issue Passport',
|
|
938
|
+
disableIssuance: 'Disable Passport Issuance',
|
|
939
|
+
enableIssuance: 'Enable Passport Issuance',
|
|
940
|
+
disableIssuanceTip: '"Issue Passport", "Invite Member" and other operations will be disabled',
|
|
941
|
+
enableIssuanceTip: '"Issue Passport", "Invite Member" and other operations will be enabled',
|
|
942
|
+
trustedPassportIssuers: 'Trusted Passport Issuers',
|
|
943
|
+
trustedIssuers: 'Trusted Issuers',
|
|
944
|
+
externalPassport: 'External Passport',
|
|
945
|
+
notTrustedIssuerTip: 'The passport cannot be used because the issuer is not on the list of trusted issuers',
|
|
946
|
+
issuerDid: 'Issuer DID',
|
|
947
|
+
addNodeToTrustedIssuers: 'Add current server as a trusted passport issuer',
|
|
948
|
+
revoked: 'Revoked',
|
|
949
|
+
noPermission: 'No permission to perform this operation',
|
|
950
|
+
shouldNotDeleteCurrent: 'You can not revoke your passport currently in use',
|
|
951
|
+
mappingRule: 'Mapping rule',
|
|
952
|
+
defaultRule: 'Default rule',
|
|
953
|
+
search: 'Search Passport',
|
|
954
|
+
searchIssuerDid: 'Search Issuer DID',
|
|
955
|
+
issueBy: 'Issue by {name}'
|
|
956
|
+
},
|
|
957
|
+
inviting: {
|
|
958
|
+
link: 'Invite Link',
|
|
959
|
+
inviter: 'Inviter',
|
|
960
|
+
delete: {
|
|
961
|
+
title: 'Delete Invite Link',
|
|
962
|
+
description: 'Confirm delete {link}?'
|
|
963
|
+
},
|
|
964
|
+
disabledTip: 'Invitation is not enabled'
|
|
965
|
+
},
|
|
966
|
+
whoCanAccess: {
|
|
967
|
+
all: {
|
|
968
|
+
title: 'Accessible to all'
|
|
969
|
+
},
|
|
970
|
+
owner: {
|
|
971
|
+
title: 'Owner only'
|
|
972
|
+
},
|
|
973
|
+
invited: {
|
|
974
|
+
title: 'Invited user only'
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
},
|
|
978
|
+
launcher: {
|
|
979
|
+
provider: 'Provider',
|
|
980
|
+
adminUrl: 'URL'
|
|
981
|
+
},
|
|
982
|
+
session: {
|
|
983
|
+
forbidLogin: 'You have been blocked from access this server'
|
|
984
|
+
},
|
|
985
|
+
launchBlocklet: {
|
|
986
|
+
appInfo: 'Application Information',
|
|
987
|
+
appInfoDesc: 'Confirm the application information',
|
|
988
|
+
author: 'Application Author: {author}',
|
|
989
|
+
setup: 'Setup Blocklet',
|
|
990
|
+
alreadyRunning: 'Application {name} is already running on this Blocklet Server',
|
|
991
|
+
alreadyInstalled: 'Application {name} is already installed on this Blocklet Server',
|
|
992
|
+
alreadyExists: 'This application already exists, please visit',
|
|
993
|
+
selectAbtNode: 'Select Blocklet Server',
|
|
994
|
+
purchased: 'Already Purchased',
|
|
995
|
+
purchase: 'Purchase',
|
|
996
|
+
nextStep: 'Next Step',
|
|
997
|
+
agreement: 'License Agreement',
|
|
998
|
+
agreeAll: 'Agree & Continue',
|
|
999
|
+
installing: 'Installing {appName} on {serverName}, it may take minutes to complete, please stay tuned...',
|
|
1000
|
+
redirecting: '{appName} is successfully installed, now starting...',
|
|
1001
|
+
start: 'Launching',
|
|
1002
|
+
launch: 'Install Blocklet to Server',
|
|
1003
|
+
launchSuccess: '{appName} is successfully launched!',
|
|
1004
|
+
installSuccess: 'Blocklet is successfully installed and launched on {serverName}',
|
|
1005
|
+
openInRegistry: 'View in Blocklet Store',
|
|
1006
|
+
subTitle: 'Ready to install Blocklet {appName} on {serverName}',
|
|
1007
|
+
installingSubTitle: '{appName} installing',
|
|
1008
|
+
access: 'Open the application',
|
|
1009
|
+
viewApplication: 'View Application',
|
|
1010
|
+
newVersion: 'New Version',
|
|
1011
|
+
newVersionDesc: 'The application already exists, but the current version can be upgraded',
|
|
1012
|
+
upgradeNow: 'Upgrade Now',
|
|
1013
|
+
later: 'Later',
|
|
1014
|
+
abtnodeLicenseName: 'Blocklet Server License',
|
|
1015
|
+
introduction: 'Introduction',
|
|
1016
|
+
welcome: 'Welcome to the Blocklet Launch Wizard',
|
|
1017
|
+
accept: 'I agree to the Blocklet EULA',
|
|
1018
|
+
license: 'Application License',
|
|
1019
|
+
next: 'Agree to the EULA and continue',
|
|
1020
|
+
purchaseApp: 'Purchase Blocklet',
|
|
1021
|
+
setupAppDesc: 'Initialize your Blocklet',
|
|
1022
|
+
launched: 'Complete',
|
|
1023
|
+
confirmInstall: 'Confirm Installation',
|
|
1024
|
+
dialog: {
|
|
1025
|
+
title: 'Authorization Required',
|
|
1026
|
+
freeDescription: 'You need to present Blocklet Server Ownership NFT or Blocklet Server Passport to launch application',
|
|
1027
|
+
nonFreeDescription: 'You need to present application purchase NFT and Blocklet Server NFT to launch application',
|
|
1028
|
+
confirm: 'Confirm on your DID Wallet',
|
|
1029
|
+
success: 'Authorization Successfully',
|
|
1030
|
+
authorizationTimeout: 'Authorization timeout'
|
|
1031
|
+
},
|
|
1032
|
+
waiting: {
|
|
1033
|
+
verifying: 'Verifying blocklet meta',
|
|
1034
|
+
downloading: 'Downloading blocklet bundle',
|
|
1035
|
+
extracting: 'Extracting blocklet bundle',
|
|
1036
|
+
installing: 'Installing blocklet and setup components',
|
|
1037
|
+
done: 'Installation Complete'
|
|
1038
|
+
},
|
|
1039
|
+
error: {
|
|
1040
|
+
loadMetaFailed: 'Load Blocklet information failed',
|
|
1041
|
+
appMetaNotFound: 'No information found for this Blocklet',
|
|
1042
|
+
downloadFailed: 'Failed to download the Blocklet, please try again',
|
|
1043
|
+
installFailed: 'Failed to install the Blocklet, please try again',
|
|
1044
|
+
startFailed: 'Failed to start the Blocklet, please try again',
|
|
1045
|
+
launchFailed: 'Failed to launch the Blocklet, please try again',
|
|
1046
|
+
installedButStopped: 'The Blocklet is installed successfully, but cannot be started. You can start it manually after resolving blocking issues',
|
|
1047
|
+
installedButError: 'The Blocklet is successfully installed, but failed to start',
|
|
1048
|
+
upgradeFailed: 'Upgrade Failed'
|
|
1049
|
+
}
|
|
1050
|
+
},
|
|
1051
|
+
issuePassport: {
|
|
1052
|
+
title: 'Receive Passport',
|
|
1053
|
+
description: 'Use DID Wallet to receive the passport issued by {name}',
|
|
1054
|
+
dialog: {
|
|
1055
|
+
scan: 'Use your DID Wallet to claim the passport',
|
|
1056
|
+
confirm: 'Confirm on your DID Wallet',
|
|
1057
|
+
success: 'The passport has been successfully added in your wallet',
|
|
1058
|
+
loginWithPassport: 'Connect with this Passport'
|
|
1059
|
+
}
|
|
1060
|
+
},
|
|
1061
|
+
lostPassport: {
|
|
1062
|
+
title: 'Lost Passport',
|
|
1063
|
+
description: 'The owner of {name} can scan the QR code to retrieve the passport, members please contact the owner to reissue the passport',
|
|
1064
|
+
dialog: {
|
|
1065
|
+
scan: 'Use your DID Wallet to recover the passport',
|
|
1066
|
+
confirm: 'Confirm on your DID Wallet',
|
|
1067
|
+
success: 'The passport has been successfully added in your wallet'
|
|
1068
|
+
},
|
|
1069
|
+
return: 'Connect with passport',
|
|
1070
|
+
selectPassport: 'Select passport',
|
|
1071
|
+
receivePassport: 'Receive passport'
|
|
1072
|
+
},
|
|
1073
|
+
invite: {
|
|
1074
|
+
message: '{name} invite you to be the {role} of {dapp}',
|
|
1075
|
+
receive: 'Receive with',
|
|
1076
|
+
validUntil: 'Valid until:',
|
|
1077
|
+
viewPermission: 'View Permission',
|
|
1078
|
+
emptyPermission: 'Empty Permission',
|
|
1079
|
+
open: 'Open',
|
|
1080
|
+
description: {
|
|
1081
|
+
step1: 'Download and setup your {wallet}',
|
|
1082
|
+
step2: 'Click above button to receive passport',
|
|
1083
|
+
step3: 'Login in {dapp} with received passport'
|
|
1084
|
+
},
|
|
1085
|
+
transferNFTDialog: {
|
|
1086
|
+
title: 'Accept Blocklet Server {name}',
|
|
1087
|
+
scan: 'Connect the Launcher to complete the reception of the Blocklet Server.',
|
|
1088
|
+
confirm: 'Review this operation on your DID Wallet',
|
|
1089
|
+
success: 'Connect successfully, waiting for confirmation of receiving the Server'
|
|
1090
|
+
}
|
|
1091
|
+
},
|
|
1092
|
+
receive: {
|
|
1093
|
+
dialog: {
|
|
1094
|
+
title: 'Use your DID Wallet to receive passport',
|
|
1095
|
+
scan: 'Connect your DID Wallet to receive passport',
|
|
1096
|
+
confirm: 'Confirm on your DID Wallet',
|
|
1097
|
+
success: 'You are successfully connected'
|
|
90
1098
|
}
|
|
91
1099
|
}
|
|
92
1100
|
};
|