mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 12:40:25 +08:00
feat: 添加前端翻译
This commit is contained in:
@@ -68,7 +68,9 @@ msgstr ""
|
||||
#: src/views/database/ServerList.vue:135 src/views/database/UserList.vue:152
|
||||
#: src/views/file/ListTable.vue:185 src/views/file/SearchModal.vue:48
|
||||
#: src/views/firewall/ForwardView.vue:80 src/views/firewall/IpRuleView.vue:122
|
||||
#: src/views/firewall/RuleView.vue:159 src/views/website/IndexView.vue:95
|
||||
#: src/views/firewall/RuleView.vue:159 src/views/task/CronView.vue:103
|
||||
#: src/views/task/SystemView.vue:96 src/views/task/TaskView.vue:55
|
||||
#: src/views/website/IndexView.vue:95
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
|
||||
@@ -158,14 +160,15 @@ msgstr ""
|
||||
#: src/views/file/ToolBar.vue:282 src/views/firewall/CreateForwardModal.vue:88
|
||||
#: src/views/firewall/CreateIpModal.vue:122
|
||||
#: src/views/firewall/CreateModal.vue:143 src/views/ssh/CreateModal.vue:98
|
||||
#: src/views/ssh/UpdateModal.vue:104
|
||||
#: src/views/ssh/UpdateModal.vue:104 src/views/task/CreateModal.vue:159
|
||||
#: src/views/website/ProxyBuilderModal.vue:189
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/backup/IndexView.vue:37 src/views/backup/ListView.vue:217
|
||||
#: src/views/backup/ListView.vue:250 src/views/cert/CertView.vue:464
|
||||
#: src/views/cert/CertView.vue:527 src/views/cert/CreateCertModal.vue:86
|
||||
#: src/views/dashboard/IndexView.vue:418
|
||||
#: src/views/dashboard/IndexView.vue:418 src/views/task/CreateModal.vue:130
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
||||
@@ -205,6 +208,7 @@ msgstr ""
|
||||
#: src/views/file/SearchModal.vue:98 src/views/file/ToolBar.vue:238
|
||||
#: src/views/firewall/ForwardView.vue:105 src/views/firewall/IpRuleView.vue:147
|
||||
#: src/views/firewall/RuleView.vue:184 src/views/ssh/IndexView.vue:93
|
||||
#: src/views/task/CronView.vue:157 src/views/task/TaskView.vue:99
|
||||
#: src/views/website/IndexView.vue:169
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
@@ -220,7 +224,7 @@ msgstr ""
|
||||
#: src/views/database/CreateUserModal.vue:28 src/views/file/ToolBar.vue:45
|
||||
#: src/views/firewall/CreateForwardModal.vue:41
|
||||
#: src/views/firewall/CreateModal.vue:84 src/views/ssh/CreateModal.vue:38
|
||||
#: src/views/website/IndexView.vue:309
|
||||
#: src/views/task/CreateModal.vue:51 src/views/website/IndexView.vue:309
|
||||
#, fuzzy
|
||||
msgid "Created successfully"
|
||||
msgstr "Saved successfully"
|
||||
@@ -241,7 +245,8 @@ msgstr "Saved successfully"
|
||||
#: src/views/firewall/ForwardView.vue:132
|
||||
#: src/views/firewall/ForwardView.vue:150 src/views/firewall/IpRuleView.vue:174
|
||||
#: src/views/firewall/IpRuleView.vue:192 src/views/firewall/RuleView.vue:211
|
||||
#: src/views/firewall/RuleView.vue:229 src/views/website/IndexView.vue:270
|
||||
#: src/views/firewall/RuleView.vue:229 src/views/task/CronView.vue:200
|
||||
#: src/views/task/TaskView.vue:125 src/views/website/IndexView.vue:270
|
||||
#: src/views/website/IndexView.vue:324
|
||||
#, fuzzy
|
||||
msgid "Deleted successfully"
|
||||
@@ -261,7 +266,8 @@ msgstr ""
|
||||
|
||||
#: src/views/backup/ListView.vue:220
|
||||
#: src/views/database/CreateDatabaseModal.vue:70
|
||||
#: src/views/database/DatabaseList.vue:35 src/views/website/IndexView.vue:468
|
||||
#: src/views/database/DatabaseList.vue:35 src/views/task/CreateModal.vue:146
|
||||
#: src/views/task/CreateModal.vue:148 src/views/website/IndexView.vue:468
|
||||
#: src/views/website/IndexView.vue:473
|
||||
msgid "Database Name"
|
||||
msgstr ""
|
||||
@@ -273,7 +279,8 @@ msgstr ""
|
||||
msgid "Enter database name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/backup/ListView.vue:228
|
||||
#: src/views/backup/ListView.vue:228 src/views/task/CreateModal.vue:150
|
||||
#: src/views/task/CreateModal.vue:151
|
||||
msgid "Save Directory"
|
||||
msgstr ""
|
||||
|
||||
@@ -390,7 +397,7 @@ msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:64 src/views/cert/CertView.vue:448
|
||||
#: src/views/cert/CreateCertModal.vue:70 src/views/cert/ObtainModal.vue:53
|
||||
#: src/views/website/IndexView.vue:412
|
||||
#: src/views/website/EditView.vue:228 src/views/website/IndexView.vue:412
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
@@ -422,7 +429,7 @@ msgstr ""
|
||||
msgid "Associated Account"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:130
|
||||
#: src/views/cert/CertView.vue:130 src/views/website/EditView.vue:297
|
||||
msgid "Issuer"
|
||||
msgstr ""
|
||||
|
||||
@@ -443,7 +450,7 @@ msgid "Deploy"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:233 src/views/cert/ObtainModal.vue:24
|
||||
#: src/views/cert/ObtainModal.vue:77
|
||||
#: src/views/cert/ObtainModal.vue:77 src/views/website/EditView.vue:133
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
@@ -505,11 +512,12 @@ msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:488 src/views/cert/CertView.vue:551
|
||||
#: src/views/cert/route.ts:19 src/views/cert/UploadCertModal.vue:38
|
||||
#: src/views/setting/SettingHttps.vue:39
|
||||
#: src/views/setting/SettingHttps.vue:39 src/views/website/EditView.vue:342
|
||||
msgid "Certificate"
|
||||
msgstr "Certificate"
|
||||
|
||||
#: src/views/cert/CertView.vue:492 src/views/cert/UploadCertModal.vue:42
|
||||
#: src/views/website/EditView.vue:346
|
||||
msgid "Enter the content of the PEM certificate file"
|
||||
msgstr ""
|
||||
|
||||
@@ -517,10 +525,12 @@ msgstr ""
|
||||
#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingHttps.vue:46
|
||||
#: src/views/ssh/CreateModal.vue:78 src/views/ssh/CreateModal.vue:89
|
||||
#: src/views/ssh/UpdateModal.vue:84 src/views/ssh/UpdateModal.vue:95
|
||||
#: src/views/website/EditView.vue:350
|
||||
msgid "Private Key"
|
||||
msgstr "Private Key"
|
||||
|
||||
#: src/views/cert/CertView.vue:500 src/views/cert/UploadCertModal.vue:50
|
||||
#: src/views/website/EditView.vue:354
|
||||
msgid "Enter the content of the KEY private key file"
|
||||
msgstr ""
|
||||
|
||||
@@ -786,6 +796,7 @@ msgstr ""
|
||||
#: src/views/database/UpdateServerModal.vue:55 src/views/file/ListTable.vue:99
|
||||
#: src/views/file/SearchModal.vue:20 src/views/file/ToolBar.vue:257
|
||||
#: src/views/ssh/CreateModal.vue:57 src/views/ssh/UpdateModal.vue:63
|
||||
#: src/views/task/SystemView.vue:18
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
@@ -797,19 +808,21 @@ msgstr ""
|
||||
#: src/views/container/ComposeView.vue:58
|
||||
#: src/views/container/ContainerView.vue:32
|
||||
#: src/views/database/ServerList.vue:114 src/views/database/UserList.vue:131
|
||||
#: src/views/firewall/RuleView.vue:62
|
||||
#: src/views/firewall/RuleView.vue:62 src/views/task/SystemView.vue:43
|
||||
#: src/views/task/TaskView.vue:22
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/container/ComposeView.vue:65 src/views/container/ImageView.vue:60
|
||||
#: src/views/container/NetworkView.vue:100
|
||||
#: src/views/container/VolumeView.vue:54
|
||||
#: src/views/container/VolumeView.vue:54 src/views/task/CronView.vue:84
|
||||
#: src/views/task/TaskView.vue:37
|
||||
msgid "Creation Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/container/ComposeView.vue:97 src/views/file/ListTable.vue:64
|
||||
#: src/views/file/ListTable.vue:216 src/views/ssh/IndexView.vue:71
|
||||
#: src/views/website/IndexView.vue:111
|
||||
#: src/views/task/CronView.vue:135 src/views/website/IndexView.vue:111
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
@@ -1023,6 +1036,7 @@ msgstr ""
|
||||
#: src/views/container/ContainerCreate.vue:291
|
||||
#: src/views/dashboard/IndexView.vue:530 src/views/monitor/IndexView.vue:205
|
||||
#: src/views/monitor/IndexView.vue:216 src/views/monitor/IndexView.vue:238
|
||||
#: src/views/task/SystemView.vue:78
|
||||
msgid "Memory"
|
||||
msgstr ""
|
||||
|
||||
@@ -1082,7 +1096,8 @@ msgid "Running Status"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/container/ContainerView.vue:103
|
||||
#: src/views/container/ContainerView.vue:439
|
||||
#: src/views/container/ContainerView.vue:439 src/views/task/CronView.vue:122
|
||||
#: src/views/task/TaskView.vue:75
|
||||
msgid "Logs"
|
||||
msgstr ""
|
||||
|
||||
@@ -1201,6 +1216,7 @@ msgstr ""
|
||||
#: src/views/container/ImageView.vue:85 src/views/container/NetworkView.vue:125
|
||||
#: src/views/container/VolumeView.vue:79 src/views/firewall/ForwardView.vue:94
|
||||
#: src/views/firewall/IpRuleView.vue:136 src/views/firewall/RuleView.vue:173
|
||||
#: src/views/task/TaskView.vue:88
|
||||
msgid "Are you sure you want to delete?"
|
||||
msgstr ""
|
||||
|
||||
@@ -1409,7 +1425,7 @@ msgstr "Saved successfully"
|
||||
msgid "Current version is the latest"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/IndexView.vue:431
|
||||
#: src/views/dashboard/IndexView.vue:431 src/views/task/IndexView.vue:29
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
@@ -1830,12 +1846,13 @@ msgstr ""
|
||||
#: src/views/database/UpdateServerModal.vue:21
|
||||
#: src/views/database/UpdateUserModal.vue:18
|
||||
#: src/views/database/UserList.vue:223 src/views/file/PermissionModal.vue:29
|
||||
#: src/views/task/CronView.vue:182 src/views/task/CronView.vue:209
|
||||
#: src/views/website/IndexView.vue:253 src/views/website/IndexView.vue:279
|
||||
#, fuzzy
|
||||
msgid "Modified successfully"
|
||||
msgstr "Saved successfully"
|
||||
|
||||
#: src/views/database/IndexView.vue:48
|
||||
#: src/views/database/IndexView.vue:48 src/views/task/SystemView.vue:37
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
@@ -1949,6 +1966,7 @@ msgstr ""
|
||||
|
||||
#: src/views/file/EditModal.vue:31 src/views/file/ListTable.vue:703
|
||||
#: src/views/setting/SettingBase.vue:95 src/views/setting/SettingHttps.vue:56
|
||||
#: src/views/website/EditView.vue:211
|
||||
msgid "Save"
|
||||
msgstr "Save"
|
||||
|
||||
@@ -2455,7 +2473,7 @@ msgstr "Saved successfully"
|
||||
msgid "Clear Monitoring Records"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/monitor/IndexView.vue:449
|
||||
#: src/views/monitor/IndexView.vue:449 src/views/website/EditView.vue:220
|
||||
msgid "Are you sure you want to clear?"
|
||||
msgstr ""
|
||||
|
||||
@@ -2489,6 +2507,7 @@ msgid "Panel Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/setting/SettingBase.vue:35 src/views/setting/SettingHttps.vue:27
|
||||
#: src/views/website/EditView.vue:115
|
||||
msgid "Saved successfully"
|
||||
msgstr "Saved successfully"
|
||||
|
||||
@@ -2604,14 +2623,345 @@ msgstr "Saved successfully"
|
||||
msgid "Update Host"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:23 src/views/website/IndexView.vue:398
|
||||
msgid "Website Name"
|
||||
#: src/views/task/CreateModal.vue:22
|
||||
msgid "# Enter your script content here"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:89
|
||||
#, fuzzy
|
||||
msgid "Create Scheduled Task"
|
||||
msgstr "Certificate"
|
||||
|
||||
#: src/views/task/CreateModal.vue:96 src/views/task/CronView.vue:36
|
||||
msgid "Task Type"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:100 src/views/task/CronView.vue:49
|
||||
msgid "Run Script"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:101 src/views/task/CronView.vue:51
|
||||
msgid "Backup Data"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:102 src/views/task/CronView.vue:52
|
||||
msgid "Log Rotation"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:107 src/views/task/CreateModal.vue:108
|
||||
#: src/views/task/CronView.vue:29 src/views/task/CronView.vue:259
|
||||
#: src/views/task/CronView.vue:260 src/views/task/TaskView.vue:15
|
||||
msgid "Task Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:110 src/views/task/CronView.vue:74
|
||||
#: src/views/task/CronView.vue:262
|
||||
msgid "Task Schedule"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:114
|
||||
msgid "Script Content"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:128
|
||||
msgid "Backup Type"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:131
|
||||
msgid "MySQL Database"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:132
|
||||
msgid "PostgreSQL Database"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:140 src/views/task/CreateModal.vue:142
|
||||
#, fuzzy
|
||||
msgid "Select Website"
|
||||
msgstr "Certificate"
|
||||
|
||||
#: src/views/task/CreateModal.vue:153
|
||||
msgid "Retention Count"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:59
|
||||
msgid "Enabled"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:94
|
||||
msgid "Last Update Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:146
|
||||
msgid "Are you sure you want to delete this task?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:251
|
||||
msgid "Edit Task"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/IndexView.vue:25
|
||||
#, fuzzy
|
||||
msgid "Create Task"
|
||||
msgstr "Certificate"
|
||||
|
||||
#: src/views/task/IndexView.vue:32
|
||||
msgid "System Processes"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/IndexView.vue:35
|
||||
#, fuzzy
|
||||
msgid "Panel Tasks"
|
||||
msgstr "Panel HTTPS"
|
||||
|
||||
#: src/views/task/route.ts:19
|
||||
msgid "Background Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:25
|
||||
msgid "Parent PID"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:31
|
||||
msgid "Threads"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:50 src/views/task/TaskView.vue:33
|
||||
#: src/views/website/IndexView.vue:30
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:52
|
||||
msgid "Sleeping"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:54
|
||||
msgid "Stopped"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:56
|
||||
msgid "Idle"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:58
|
||||
msgid "Zombie"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:60 src/views/task/TaskView.vue:30
|
||||
msgid "Waiting"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:62
|
||||
msgid "Locked"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:87
|
||||
msgid "Start Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:108
|
||||
msgid "Process %{ pid } has been terminated"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:114
|
||||
msgid "Are you sure you want to terminate process %{ pid }?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:124
|
||||
msgid "Terminate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:28
|
||||
msgid "Completed"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:32
|
||||
msgid "Failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:46
|
||||
msgid "Completion Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:136
|
||||
msgid "If logs cannot be loaded, please disable ad blockers!"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:54 src/views/website/IndexView.vue:210
|
||||
msgid "Not used"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:83
|
||||
#, fuzzy
|
||||
msgid "Edit Website - %{ name }"
|
||||
msgstr "Certificate"
|
||||
|
||||
#: src/views/website/EditView.vue:85 src/views/website/route.ts:31
|
||||
#, fuzzy
|
||||
msgid "Edit Website"
|
||||
msgstr "Certificate"
|
||||
|
||||
#: src/views/website/EditView.vue:122
|
||||
#, fuzzy
|
||||
msgid "Reset successfully"
|
||||
msgstr "Saved successfully"
|
||||
|
||||
#: src/views/website/EditView.vue:139
|
||||
#, fuzzy
|
||||
msgid "Issued successfully"
|
||||
msgstr "Saved successfully"
|
||||
|
||||
#: src/views/website/EditView.vue:153
|
||||
msgid "The selected certificate is invalid"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:160
|
||||
#, fuzzy
|
||||
msgid "Cleared successfully"
|
||||
msgstr "Saved successfully"
|
||||
|
||||
#: src/views/website/EditView.vue:178
|
||||
msgid ""
|
||||
"If you modify the original text, other modifications will not take effect "
|
||||
"after clicking save!"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:184
|
||||
msgid "Reset Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:187
|
||||
msgid "Are you sure you want to reset the configuration?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:196
|
||||
#: src/views/website/ProxyBuilderModal.vue:121
|
||||
msgid "Generate Reverse Proxy Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:207
|
||||
msgid "One-click Certificate Issuance"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:217
|
||||
msgid "Clear Logs"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:226
|
||||
msgid "Domain & Listening"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:236
|
||||
msgid "Listening Address"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:254
|
||||
msgid "Basic Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:256
|
||||
msgid "Website Directory"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:257
|
||||
msgid "Enter website directory (absolute path)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:259
|
||||
msgid "Running Directory"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:262
|
||||
msgid "Enter running directory (needed for Laravel etc.) (absolute path)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:265
|
||||
msgid "Default Document"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:268 src/views/website/IndexView.vue:435
|
||||
msgid "PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:273 src/views/website/IndexView.vue:439
|
||||
msgid "Select PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:278
|
||||
msgid "Anti-XSS Attack (PHP)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:287
|
||||
#, fuzzy
|
||||
msgid "Certificate Information"
|
||||
msgstr "Certificate"
|
||||
|
||||
#: src/views/website/EditView.vue:289
|
||||
#, fuzzy
|
||||
msgid "Certificate Validity"
|
||||
msgstr "Certificate"
|
||||
|
||||
#: src/views/website/EditView.vue:303
|
||||
msgid "Domains"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:318
|
||||
msgid "Main Switch"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:321
|
||||
#, fuzzy
|
||||
msgid "Use Existing Certificate"
|
||||
msgstr "Certificate"
|
||||
|
||||
#: src/views/website/EditView.vue:334
|
||||
msgid "HTTP Redirect"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:337
|
||||
msgid "OCSP Stapling"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:362
|
||||
msgid "Rewrite"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:365
|
||||
msgid "Presets"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:388
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:391
|
||||
msgid ""
|
||||
"If you do not understand the configuration rules, please do not modify them "
|
||||
"arbitrarily, otherwise it may cause the website to be inaccessible or panel "
|
||||
"function abnormalities! If you have already encountered a problem, try "
|
||||
"resetting the configuration!"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:407
|
||||
msgid "Access Log"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:411 src/views/website/EditView.vue:423
|
||||
msgid "All logs can be viewed by downloading the file"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:413 src/views/website/EditView.vue:425
|
||||
msgid "view"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:419
|
||||
msgid "Error Log"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:23 src/views/website/IndexView.vue:398
|
||||
msgid "Website Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:78 src/views/website/IndexView.vue:516
|
||||
#: src/views/website/IndexView.vue:521
|
||||
msgid "Remark"
|
||||
@@ -2629,10 +2979,6 @@ msgstr ""
|
||||
msgid "Delete local database with the same name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:210
|
||||
msgid "Not used"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:240
|
||||
msgid "Already %{ status }"
|
||||
msgstr ""
|
||||
@@ -2670,14 +3016,6 @@ msgid ""
|
||||
"setting"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:435
|
||||
msgid "PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:439
|
||||
msgid "Select PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:451
|
||||
msgid "Select Database"
|
||||
msgstr ""
|
||||
@@ -2707,3 +3045,125 @@ msgstr ""
|
||||
#: src/views/website/IndexView.vue:554
|
||||
msgid "Stop Page"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:23
|
||||
msgid "Disabled buffer and enabled cache cannot be used simultaneously"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:27
|
||||
msgid "Matching expression cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:31
|
||||
msgid "Proxy address cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:35
|
||||
msgid "Exact match expression must start with /"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:42
|
||||
msgid "Prefix match expression must start with /"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:48
|
||||
msgid "Proxy address format error"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:100
|
||||
#, fuzzy
|
||||
msgid "Configuration generated successfully"
|
||||
msgstr "Saved successfully"
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:128
|
||||
msgid ""
|
||||
"After generating the reverse proxy configuration, the original rewrite rules "
|
||||
"will be overwritten."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:130
|
||||
msgid ""
|
||||
"If you need to proxy static resources like JS/CSS, please remove the static "
|
||||
"log recording part from the original configuration."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:133
|
||||
msgid "Auto Refresh Resolution"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:136
|
||||
msgid "Enable SNI"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:139
|
||||
msgid "Enable Cache"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:142
|
||||
msgid "Disable Buffer"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:147
|
||||
msgid "Match Type"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:151
|
||||
msgid "Exact Match (=)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:152
|
||||
msgid "Priority Prefix Match (^~)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:153
|
||||
msgid "Normal Prefix Match ( )"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:154
|
||||
msgid "Case Sensitive Regex Match (~)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:155
|
||||
msgid "Case Insensitive Regex Match (~*)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:159
|
||||
msgid "Match Expression"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:162
|
||||
msgid "Proxy Address"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:165
|
||||
msgid "Send Domain"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:168
|
||||
msgid "Cache Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:174
|
||||
msgid "Cache time (minutes)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:176
|
||||
msgid "minutes"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:179
|
||||
msgid "Content Replacement"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:184
|
||||
msgid "Target content"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:185
|
||||
msgid "Replacement content"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/route.ts:19
|
||||
#, fuzzy
|
||||
msgid "Websites"
|
||||
msgstr "Certificate"
|
||||
|
||||
@@ -69,6 +69,9 @@ msgstr ""
|
||||
#: src/views/firewall/ForwardView.vue:80
|
||||
#: src/views/firewall/IpRuleView.vue:122
|
||||
#: src/views/firewall/RuleView.vue:159
|
||||
#: src/views/task/CronView.vue:103
|
||||
#: src/views/task/SystemView.vue:96
|
||||
#: src/views/task/TaskView.vue:55
|
||||
#: src/views/website/IndexView.vue:95
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
@@ -164,6 +167,8 @@ msgstr ""
|
||||
#: src/views/firewall/CreateModal.vue:143
|
||||
#: src/views/ssh/CreateModal.vue:98
|
||||
#: src/views/ssh/UpdateModal.vue:104
|
||||
#: src/views/task/CreateModal.vue:159
|
||||
#: src/views/website/ProxyBuilderModal.vue:189
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
@@ -174,6 +179,7 @@ msgstr ""
|
||||
#: src/views/cert/CertView.vue:527
|
||||
#: src/views/cert/CreateCertModal.vue:86
|
||||
#: src/views/dashboard/IndexView.vue:418
|
||||
#: src/views/task/CreateModal.vue:130
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
||||
@@ -225,6 +231,8 @@ msgstr ""
|
||||
#: src/views/firewall/IpRuleView.vue:147
|
||||
#: src/views/firewall/RuleView.vue:184
|
||||
#: src/views/ssh/IndexView.vue:93
|
||||
#: src/views/task/CronView.vue:157
|
||||
#: src/views/task/TaskView.vue:99
|
||||
#: src/views/website/IndexView.vue:169
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
@@ -244,6 +252,7 @@ msgstr ""
|
||||
#: src/views/firewall/CreateForwardModal.vue:41
|
||||
#: src/views/firewall/CreateModal.vue:84
|
||||
#: src/views/ssh/CreateModal.vue:38
|
||||
#: src/views/task/CreateModal.vue:51
|
||||
#: src/views/website/IndexView.vue:309
|
||||
msgid "Created successfully"
|
||||
msgstr ""
|
||||
@@ -270,6 +279,8 @@ msgstr ""
|
||||
#: src/views/firewall/IpRuleView.vue:192
|
||||
#: src/views/firewall/RuleView.vue:211
|
||||
#: src/views/firewall/RuleView.vue:229
|
||||
#: src/views/task/CronView.vue:200
|
||||
#: src/views/task/TaskView.vue:125
|
||||
#: src/views/website/IndexView.vue:270
|
||||
#: src/views/website/IndexView.vue:324
|
||||
msgid "Deleted successfully"
|
||||
@@ -293,6 +304,8 @@ msgstr ""
|
||||
#: src/views/backup/ListView.vue:220
|
||||
#: src/views/database/CreateDatabaseModal.vue:70
|
||||
#: src/views/database/DatabaseList.vue:35
|
||||
#: src/views/task/CreateModal.vue:146
|
||||
#: src/views/task/CreateModal.vue:148
|
||||
#: src/views/website/IndexView.vue:468
|
||||
#: src/views/website/IndexView.vue:473
|
||||
msgid "Database Name"
|
||||
@@ -306,6 +319,8 @@ msgid "Enter database name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/backup/ListView.vue:228
|
||||
#: src/views/task/CreateModal.vue:150
|
||||
#: src/views/task/CreateModal.vue:151
|
||||
msgid "Save Directory"
|
||||
msgstr ""
|
||||
|
||||
@@ -437,6 +452,7 @@ msgstr ""
|
||||
#: src/views/cert/CertView.vue:448
|
||||
#: src/views/cert/CreateCertModal.vue:70
|
||||
#: src/views/cert/ObtainModal.vue:53
|
||||
#: src/views/website/EditView.vue:228
|
||||
#: src/views/website/IndexView.vue:412
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
@@ -479,6 +495,7 @@ msgid "Associated Account"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:130
|
||||
#: src/views/website/EditView.vue:297
|
||||
msgid "Issuer"
|
||||
msgstr ""
|
||||
|
||||
@@ -502,6 +519,7 @@ msgstr ""
|
||||
#: src/views/cert/CertView.vue:233
|
||||
#: src/views/cert/ObtainModal.vue:24
|
||||
#: src/views/cert/ObtainModal.vue:77
|
||||
#: src/views/website/EditView.vue:133
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
@@ -565,11 +583,13 @@ msgstr ""
|
||||
#: src/views/cert/route.ts:19
|
||||
#: src/views/cert/UploadCertModal.vue:38
|
||||
#: src/views/setting/SettingHttps.vue:39
|
||||
#: src/views/website/EditView.vue:342
|
||||
msgid "Certificate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:492
|
||||
#: src/views/cert/UploadCertModal.vue:42
|
||||
#: src/views/website/EditView.vue:346
|
||||
msgid "Enter the content of the PEM certificate file"
|
||||
msgstr ""
|
||||
|
||||
@@ -581,11 +601,13 @@ msgstr ""
|
||||
#: src/views/ssh/CreateModal.vue:89
|
||||
#: src/views/ssh/UpdateModal.vue:84
|
||||
#: src/views/ssh/UpdateModal.vue:95
|
||||
#: src/views/website/EditView.vue:350
|
||||
msgid "Private Key"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:500
|
||||
#: src/views/cert/UploadCertModal.vue:50
|
||||
#: src/views/website/EditView.vue:354
|
||||
msgid "Enter the content of the KEY private key file"
|
||||
msgstr ""
|
||||
|
||||
@@ -869,6 +891,7 @@ msgstr ""
|
||||
#: src/views/file/ToolBar.vue:257
|
||||
#: src/views/ssh/CreateModal.vue:57
|
||||
#: src/views/ssh/UpdateModal.vue:63
|
||||
#: src/views/task/SystemView.vue:18
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
@@ -883,6 +906,8 @@ msgstr ""
|
||||
#: src/views/database/ServerList.vue:114
|
||||
#: src/views/database/UserList.vue:131
|
||||
#: src/views/firewall/RuleView.vue:62
|
||||
#: src/views/task/SystemView.vue:43
|
||||
#: src/views/task/TaskView.vue:22
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
@@ -890,6 +915,8 @@ msgstr ""
|
||||
#: src/views/container/ImageView.vue:60
|
||||
#: src/views/container/NetworkView.vue:100
|
||||
#: src/views/container/VolumeView.vue:54
|
||||
#: src/views/task/CronView.vue:84
|
||||
#: src/views/task/TaskView.vue:37
|
||||
msgid "Creation Time"
|
||||
msgstr ""
|
||||
|
||||
@@ -897,6 +924,7 @@ msgstr ""
|
||||
#: src/views/file/ListTable.vue:64
|
||||
#: src/views/file/ListTable.vue:216
|
||||
#: src/views/ssh/IndexView.vue:71
|
||||
#: src/views/task/CronView.vue:135
|
||||
#: src/views/website/IndexView.vue:111
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
@@ -1114,6 +1142,7 @@ msgstr ""
|
||||
#: src/views/monitor/IndexView.vue:205
|
||||
#: src/views/monitor/IndexView.vue:216
|
||||
#: src/views/monitor/IndexView.vue:238
|
||||
#: src/views/task/SystemView.vue:78
|
||||
msgid "Memory"
|
||||
msgstr ""
|
||||
|
||||
@@ -1174,6 +1203,8 @@ msgstr ""
|
||||
|
||||
#: src/views/container/ContainerView.vue:103
|
||||
#: src/views/container/ContainerView.vue:439
|
||||
#: src/views/task/CronView.vue:122
|
||||
#: src/views/task/TaskView.vue:75
|
||||
msgid "Logs"
|
||||
msgstr ""
|
||||
|
||||
@@ -1292,6 +1323,7 @@ msgstr ""
|
||||
#: src/views/firewall/ForwardView.vue:94
|
||||
#: src/views/firewall/IpRuleView.vue:136
|
||||
#: src/views/firewall/RuleView.vue:173
|
||||
#: src/views/task/TaskView.vue:88
|
||||
msgid "Are you sure you want to delete?"
|
||||
msgstr ""
|
||||
|
||||
@@ -1509,6 +1541,7 @@ msgid "Current version is the latest"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/IndexView.vue:431
|
||||
#: src/views/task/IndexView.vue:29
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
@@ -1948,12 +1981,15 @@ msgstr ""
|
||||
#: src/views/database/UpdateUserModal.vue:18
|
||||
#: src/views/database/UserList.vue:223
|
||||
#: src/views/file/PermissionModal.vue:29
|
||||
#: src/views/task/CronView.vue:182
|
||||
#: src/views/task/CronView.vue:209
|
||||
#: src/views/website/IndexView.vue:253
|
||||
#: src/views/website/IndexView.vue:279
|
||||
msgid "Modified successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/database/IndexView.vue:48
|
||||
#: src/views/task/SystemView.vue:37
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
@@ -2070,6 +2106,7 @@ msgstr ""
|
||||
#: src/views/file/ListTable.vue:703
|
||||
#: src/views/setting/SettingBase.vue:95
|
||||
#: src/views/setting/SettingHttps.vue:56
|
||||
#: src/views/website/EditView.vue:211
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
@@ -2629,6 +2666,7 @@ msgid "Clear Monitoring Records"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/monitor/IndexView.vue:449
|
||||
#: src/views/website/EditView.vue:220
|
||||
msgid "Are you sure you want to clear?"
|
||||
msgstr ""
|
||||
|
||||
@@ -2662,6 +2700,7 @@ msgstr ""
|
||||
|
||||
#: src/views/setting/SettingBase.vue:35
|
||||
#: src/views/setting/SettingHttps.vue:27
|
||||
#: src/views/website/EditView.vue:115
|
||||
msgid "Saved successfully"
|
||||
msgstr ""
|
||||
|
||||
@@ -2775,15 +2814,345 @@ msgstr ""
|
||||
msgid "Update Host"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:22
|
||||
msgid "# Enter your script content here"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:89
|
||||
msgid "Create Scheduled Task"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:96
|
||||
#: src/views/task/CronView.vue:36
|
||||
msgid "Task Type"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:100
|
||||
#: src/views/task/CronView.vue:49
|
||||
msgid "Run Script"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:101
|
||||
#: src/views/task/CronView.vue:51
|
||||
msgid "Backup Data"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:102
|
||||
#: src/views/task/CronView.vue:52
|
||||
msgid "Log Rotation"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:107
|
||||
#: src/views/task/CreateModal.vue:108
|
||||
#: src/views/task/CronView.vue:29
|
||||
#: src/views/task/CronView.vue:259
|
||||
#: src/views/task/CronView.vue:260
|
||||
#: src/views/task/TaskView.vue:15
|
||||
msgid "Task Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:110
|
||||
#: src/views/task/CronView.vue:74
|
||||
#: src/views/task/CronView.vue:262
|
||||
msgid "Task Schedule"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:114
|
||||
msgid "Script Content"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:128
|
||||
msgid "Backup Type"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:131
|
||||
msgid "MySQL Database"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:132
|
||||
msgid "PostgreSQL Database"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:140
|
||||
#: src/views/task/CreateModal.vue:142
|
||||
msgid "Select Website"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:153
|
||||
msgid "Retention Count"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:59
|
||||
msgid "Enabled"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:94
|
||||
msgid "Last Update Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:146
|
||||
msgid "Are you sure you want to delete this task?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:251
|
||||
msgid "Edit Task"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/IndexView.vue:25
|
||||
msgid "Create Task"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/IndexView.vue:32
|
||||
msgid "System Processes"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/IndexView.vue:35
|
||||
msgid "Panel Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/route.ts:19
|
||||
msgid "Background Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:25
|
||||
msgid "Parent PID"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:31
|
||||
msgid "Threads"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:50
|
||||
#: src/views/task/TaskView.vue:33
|
||||
#: src/views/website/IndexView.vue:30
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:52
|
||||
msgid "Sleeping"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:54
|
||||
msgid "Stopped"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:56
|
||||
msgid "Idle"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:58
|
||||
msgid "Zombie"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:60
|
||||
#: src/views/task/TaskView.vue:30
|
||||
msgid "Waiting"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:62
|
||||
msgid "Locked"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:87
|
||||
msgid "Start Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:108
|
||||
msgid "Process %{ pid } has been terminated"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:114
|
||||
msgid "Are you sure you want to terminate process %{ pid }?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:124
|
||||
msgid "Terminate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:28
|
||||
msgid "Completed"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:32
|
||||
msgid "Failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:46
|
||||
msgid "Completion Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:136
|
||||
msgid "If logs cannot be loaded, please disable ad blockers!"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:54
|
||||
#: src/views/website/IndexView.vue:210
|
||||
msgid "Not used"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:83
|
||||
msgid "Edit Website - %{ name }"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:85
|
||||
#: src/views/website/route.ts:31
|
||||
msgid "Edit Website"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:122
|
||||
msgid "Reset successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:139
|
||||
msgid "Issued successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:153
|
||||
msgid "The selected certificate is invalid"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:160
|
||||
msgid "Cleared successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:178
|
||||
msgid "If you modify the original text, other modifications will not take effect after clicking save!"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:184
|
||||
msgid "Reset Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:187
|
||||
msgid "Are you sure you want to reset the configuration?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:196
|
||||
#: src/views/website/ProxyBuilderModal.vue:121
|
||||
msgid "Generate Reverse Proxy Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:207
|
||||
msgid "One-click Certificate Issuance"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:217
|
||||
msgid "Clear Logs"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:226
|
||||
msgid "Domain & Listening"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:236
|
||||
msgid "Listening Address"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:254
|
||||
msgid "Basic Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:256
|
||||
msgid "Website Directory"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:257
|
||||
msgid "Enter website directory (absolute path)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:259
|
||||
msgid "Running Directory"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:262
|
||||
msgid "Enter running directory (needed for Laravel etc.) (absolute path)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:265
|
||||
msgid "Default Document"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:268
|
||||
#: src/views/website/IndexView.vue:435
|
||||
msgid "PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:273
|
||||
#: src/views/website/IndexView.vue:439
|
||||
msgid "Select PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:278
|
||||
msgid "Anti-XSS Attack (PHP)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:287
|
||||
msgid "Certificate Information"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:289
|
||||
msgid "Certificate Validity"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:303
|
||||
msgid "Domains"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:318
|
||||
msgid "Main Switch"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:321
|
||||
msgid "Use Existing Certificate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:334
|
||||
msgid "HTTP Redirect"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:337
|
||||
msgid "OCSP Stapling"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:362
|
||||
msgid "Rewrite"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:365
|
||||
msgid "Presets"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:388
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:391
|
||||
msgid "If you do not understand the configuration rules, please do not modify them arbitrarily, otherwise it may cause the website to be inaccessible or panel function abnormalities! If you have already encountered a problem, try resetting the configuration!"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:407
|
||||
msgid "Access Log"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:411
|
||||
#: src/views/website/EditView.vue:423
|
||||
msgid "All logs can be viewed by downloading the file"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:413
|
||||
#: src/views/website/EditView.vue:425
|
||||
msgid "view"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:419
|
||||
msgid "Error Log"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:23
|
||||
#: src/views/website/IndexView.vue:398
|
||||
msgid "Website Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:30
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:78
|
||||
#: src/views/website/IndexView.vue:516
|
||||
#: src/views/website/IndexView.vue:521
|
||||
@@ -2802,10 +3171,6 @@ msgstr ""
|
||||
msgid "Delete local database with the same name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:210
|
||||
msgid "Not used"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:240
|
||||
msgid "Already %{ status }"
|
||||
msgstr ""
|
||||
@@ -2840,14 +3205,6 @@ msgstr ""
|
||||
msgid "Recommended to use English for the website name, it cannot be modified after setting"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:435
|
||||
msgid "PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:439
|
||||
msgid "Select PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:451
|
||||
msgid "Select Database"
|
||||
msgstr ""
|
||||
@@ -2879,3 +3236,119 @@ msgstr ""
|
||||
#: src/views/website/IndexView.vue:554
|
||||
msgid "Stop Page"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:23
|
||||
msgid "Disabled buffer and enabled cache cannot be used simultaneously"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:27
|
||||
msgid "Matching expression cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:31
|
||||
msgid "Proxy address cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:35
|
||||
msgid "Exact match expression must start with /"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:42
|
||||
msgid "Prefix match expression must start with /"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:48
|
||||
msgid "Proxy address format error"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:100
|
||||
msgid "Configuration generated successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:128
|
||||
msgid "After generating the reverse proxy configuration, the original rewrite rules will be overwritten."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:130
|
||||
msgid "If you need to proxy static resources like JS/CSS, please remove the static log recording part from the original configuration."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:133
|
||||
msgid "Auto Refresh Resolution"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:136
|
||||
msgid "Enable SNI"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:139
|
||||
msgid "Enable Cache"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:142
|
||||
msgid "Disable Buffer"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:147
|
||||
msgid "Match Type"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:151
|
||||
msgid "Exact Match (=)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:152
|
||||
msgid "Priority Prefix Match (^~)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:153
|
||||
msgid "Normal Prefix Match ( )"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:154
|
||||
msgid "Case Sensitive Regex Match (~)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:155
|
||||
msgid "Case Insensitive Regex Match (~*)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:159
|
||||
msgid "Match Expression"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:162
|
||||
msgid "Proxy Address"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:165
|
||||
msgid "Send Domain"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:168
|
||||
msgid "Cache Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:174
|
||||
msgid "Cache time (minutes)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:176
|
||||
msgid "minutes"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:179
|
||||
msgid "Content Replacement"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:184
|
||||
msgid "Target content"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:185
|
||||
msgid "Replacement content"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/route.ts:19
|
||||
msgid "Websites"
|
||||
msgstr ""
|
||||
|
||||
@@ -67,7 +67,9 @@ msgstr ""
|
||||
#: src/views/database/ServerList.vue:135 src/views/database/UserList.vue:152
|
||||
#: src/views/file/ListTable.vue:185 src/views/file/SearchModal.vue:48
|
||||
#: src/views/firewall/ForwardView.vue:80 src/views/firewall/IpRuleView.vue:122
|
||||
#: src/views/firewall/RuleView.vue:159 src/views/website/IndexView.vue:95
|
||||
#: src/views/firewall/RuleView.vue:159 src/views/task/CronView.vue:103
|
||||
#: src/views/task/SystemView.vue:96 src/views/task/TaskView.vue:55
|
||||
#: src/views/website/IndexView.vue:95
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
|
||||
@@ -155,14 +157,15 @@ msgstr ""
|
||||
#: src/views/file/ToolBar.vue:282 src/views/firewall/CreateForwardModal.vue:88
|
||||
#: src/views/firewall/CreateIpModal.vue:122
|
||||
#: src/views/firewall/CreateModal.vue:143 src/views/ssh/CreateModal.vue:98
|
||||
#: src/views/ssh/UpdateModal.vue:104
|
||||
#: src/views/ssh/UpdateModal.vue:104 src/views/task/CreateModal.vue:159
|
||||
#: src/views/website/ProxyBuilderModal.vue:189
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/backup/IndexView.vue:37 src/views/backup/ListView.vue:217
|
||||
#: src/views/backup/ListView.vue:250 src/views/cert/CertView.vue:464
|
||||
#: src/views/cert/CertView.vue:527 src/views/cert/CreateCertModal.vue:86
|
||||
#: src/views/dashboard/IndexView.vue:418
|
||||
#: src/views/dashboard/IndexView.vue:418 src/views/task/CreateModal.vue:130
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
||||
@@ -202,6 +205,7 @@ msgstr ""
|
||||
#: src/views/file/SearchModal.vue:98 src/views/file/ToolBar.vue:238
|
||||
#: src/views/firewall/ForwardView.vue:105 src/views/firewall/IpRuleView.vue:147
|
||||
#: src/views/firewall/RuleView.vue:184 src/views/ssh/IndexView.vue:93
|
||||
#: src/views/task/CronView.vue:157 src/views/task/TaskView.vue:99
|
||||
#: src/views/website/IndexView.vue:169
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
@@ -217,7 +221,7 @@ msgstr ""
|
||||
#: src/views/database/CreateUserModal.vue:28 src/views/file/ToolBar.vue:45
|
||||
#: src/views/firewall/CreateForwardModal.vue:41
|
||||
#: src/views/firewall/CreateModal.vue:84 src/views/ssh/CreateModal.vue:38
|
||||
#: src/views/website/IndexView.vue:309
|
||||
#: src/views/task/CreateModal.vue:51 src/views/website/IndexView.vue:309
|
||||
msgid "Created successfully"
|
||||
msgstr ""
|
||||
|
||||
@@ -236,7 +240,8 @@ msgstr ""
|
||||
#: src/views/firewall/ForwardView.vue:132
|
||||
#: src/views/firewall/ForwardView.vue:150 src/views/firewall/IpRuleView.vue:174
|
||||
#: src/views/firewall/IpRuleView.vue:192 src/views/firewall/RuleView.vue:211
|
||||
#: src/views/firewall/RuleView.vue:229 src/views/website/IndexView.vue:270
|
||||
#: src/views/firewall/RuleView.vue:229 src/views/task/CronView.vue:200
|
||||
#: src/views/task/TaskView.vue:125 src/views/website/IndexView.vue:270
|
||||
#: src/views/website/IndexView.vue:324
|
||||
msgid "Deleted successfully"
|
||||
msgstr ""
|
||||
@@ -255,7 +260,8 @@ msgstr ""
|
||||
|
||||
#: src/views/backup/ListView.vue:220
|
||||
#: src/views/database/CreateDatabaseModal.vue:70
|
||||
#: src/views/database/DatabaseList.vue:35 src/views/website/IndexView.vue:468
|
||||
#: src/views/database/DatabaseList.vue:35 src/views/task/CreateModal.vue:146
|
||||
#: src/views/task/CreateModal.vue:148 src/views/website/IndexView.vue:468
|
||||
#: src/views/website/IndexView.vue:473
|
||||
msgid "Database Name"
|
||||
msgstr ""
|
||||
@@ -267,7 +273,8 @@ msgstr ""
|
||||
msgid "Enter database name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/backup/ListView.vue:228
|
||||
#: src/views/backup/ListView.vue:228 src/views/task/CreateModal.vue:150
|
||||
#: src/views/task/CreateModal.vue:151
|
||||
msgid "Save Directory"
|
||||
msgstr ""
|
||||
|
||||
@@ -382,7 +389,7 @@ msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:64 src/views/cert/CertView.vue:448
|
||||
#: src/views/cert/CreateCertModal.vue:70 src/views/cert/ObtainModal.vue:53
|
||||
#: src/views/website/IndexView.vue:412
|
||||
#: src/views/website/EditView.vue:228 src/views/website/IndexView.vue:412
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
@@ -414,7 +421,7 @@ msgstr ""
|
||||
msgid "Associated Account"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:130
|
||||
#: src/views/cert/CertView.vue:130 src/views/website/EditView.vue:297
|
||||
msgid "Issuer"
|
||||
msgstr ""
|
||||
|
||||
@@ -435,7 +442,7 @@ msgid "Deploy"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:233 src/views/cert/ObtainModal.vue:24
|
||||
#: src/views/cert/ObtainModal.vue:77
|
||||
#: src/views/cert/ObtainModal.vue:77 src/views/website/EditView.vue:133
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
@@ -494,11 +501,12 @@ msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:488 src/views/cert/CertView.vue:551
|
||||
#: src/views/cert/route.ts:19 src/views/cert/UploadCertModal.vue:38
|
||||
#: src/views/setting/SettingHttps.vue:39
|
||||
#: src/views/setting/SettingHttps.vue:39 src/views/website/EditView.vue:342
|
||||
msgid "Certificate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:492 src/views/cert/UploadCertModal.vue:42
|
||||
#: src/views/website/EditView.vue:346
|
||||
msgid "Enter the content of the PEM certificate file"
|
||||
msgstr ""
|
||||
|
||||
@@ -506,10 +514,12 @@ msgstr ""
|
||||
#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingHttps.vue:46
|
||||
#: src/views/ssh/CreateModal.vue:78 src/views/ssh/CreateModal.vue:89
|
||||
#: src/views/ssh/UpdateModal.vue:84 src/views/ssh/UpdateModal.vue:95
|
||||
#: src/views/website/EditView.vue:350
|
||||
msgid "Private Key"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:500 src/views/cert/UploadCertModal.vue:50
|
||||
#: src/views/website/EditView.vue:354
|
||||
msgid "Enter the content of the KEY private key file"
|
||||
msgstr ""
|
||||
|
||||
@@ -768,6 +778,7 @@ msgstr ""
|
||||
#: src/views/database/UpdateServerModal.vue:55 src/views/file/ListTable.vue:99
|
||||
#: src/views/file/SearchModal.vue:20 src/views/file/ToolBar.vue:257
|
||||
#: src/views/ssh/CreateModal.vue:57 src/views/ssh/UpdateModal.vue:63
|
||||
#: src/views/task/SystemView.vue:18
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
@@ -779,19 +790,21 @@ msgstr ""
|
||||
#: src/views/container/ComposeView.vue:58
|
||||
#: src/views/container/ContainerView.vue:32
|
||||
#: src/views/database/ServerList.vue:114 src/views/database/UserList.vue:131
|
||||
#: src/views/firewall/RuleView.vue:62
|
||||
#: src/views/firewall/RuleView.vue:62 src/views/task/SystemView.vue:43
|
||||
#: src/views/task/TaskView.vue:22
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/container/ComposeView.vue:65 src/views/container/ImageView.vue:60
|
||||
#: src/views/container/NetworkView.vue:100
|
||||
#: src/views/container/VolumeView.vue:54
|
||||
#: src/views/container/VolumeView.vue:54 src/views/task/CronView.vue:84
|
||||
#: src/views/task/TaskView.vue:37
|
||||
msgid "Creation Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/container/ComposeView.vue:97 src/views/file/ListTable.vue:64
|
||||
#: src/views/file/ListTable.vue:216 src/views/ssh/IndexView.vue:71
|
||||
#: src/views/website/IndexView.vue:111
|
||||
#: src/views/task/CronView.vue:135 src/views/website/IndexView.vue:111
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
@@ -1001,6 +1014,7 @@ msgstr ""
|
||||
#: src/views/container/ContainerCreate.vue:291
|
||||
#: src/views/dashboard/IndexView.vue:530 src/views/monitor/IndexView.vue:205
|
||||
#: src/views/monitor/IndexView.vue:216 src/views/monitor/IndexView.vue:238
|
||||
#: src/views/task/SystemView.vue:78
|
||||
msgid "Memory"
|
||||
msgstr ""
|
||||
|
||||
@@ -1060,7 +1074,8 @@ msgid "Running Status"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/container/ContainerView.vue:103
|
||||
#: src/views/container/ContainerView.vue:439
|
||||
#: src/views/container/ContainerView.vue:439 src/views/task/CronView.vue:122
|
||||
#: src/views/task/TaskView.vue:75
|
||||
msgid "Logs"
|
||||
msgstr ""
|
||||
|
||||
@@ -1173,6 +1188,7 @@ msgstr ""
|
||||
#: src/views/container/ImageView.vue:85 src/views/container/NetworkView.vue:125
|
||||
#: src/views/container/VolumeView.vue:79 src/views/firewall/ForwardView.vue:94
|
||||
#: src/views/firewall/IpRuleView.vue:136 src/views/firewall/RuleView.vue:173
|
||||
#: src/views/task/TaskView.vue:88
|
||||
msgid "Are you sure you want to delete?"
|
||||
msgstr ""
|
||||
|
||||
@@ -1379,7 +1395,7 @@ msgstr ""
|
||||
msgid "Current version is the latest"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/IndexView.vue:431
|
||||
#: src/views/dashboard/IndexView.vue:431 src/views/task/IndexView.vue:29
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
@@ -1798,11 +1814,12 @@ msgstr ""
|
||||
#: src/views/database/UpdateServerModal.vue:21
|
||||
#: src/views/database/UpdateUserModal.vue:18
|
||||
#: src/views/database/UserList.vue:223 src/views/file/PermissionModal.vue:29
|
||||
#: src/views/task/CronView.vue:182 src/views/task/CronView.vue:209
|
||||
#: src/views/website/IndexView.vue:253 src/views/website/IndexView.vue:279
|
||||
msgid "Modified successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/database/IndexView.vue:48
|
||||
#: src/views/database/IndexView.vue:48 src/views/task/SystemView.vue:37
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
@@ -1911,6 +1928,7 @@ msgstr ""
|
||||
|
||||
#: src/views/file/EditModal.vue:31 src/views/file/ListTable.vue:703
|
||||
#: src/views/setting/SettingBase.vue:95 src/views/setting/SettingHttps.vue:56
|
||||
#: src/views/website/EditView.vue:211
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
@@ -2406,7 +2424,7 @@ msgstr ""
|
||||
msgid "Clear Monitoring Records"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/monitor/IndexView.vue:449
|
||||
#: src/views/monitor/IndexView.vue:449 src/views/website/EditView.vue:220
|
||||
msgid "Are you sure you want to clear?"
|
||||
msgstr ""
|
||||
|
||||
@@ -2439,6 +2457,7 @@ msgid "Panel Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/setting/SettingBase.vue:35 src/views/setting/SettingHttps.vue:27
|
||||
#: src/views/website/EditView.vue:115
|
||||
msgid "Saved successfully"
|
||||
msgstr ""
|
||||
|
||||
@@ -2551,14 +2570,333 @@ msgstr ""
|
||||
msgid "Update Host"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:23 src/views/website/IndexView.vue:398
|
||||
msgid "Website Name"
|
||||
#: src/views/task/CreateModal.vue:22
|
||||
msgid "# Enter your script content here"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:89
|
||||
msgid "Create Scheduled Task"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:96 src/views/task/CronView.vue:36
|
||||
msgid "Task Type"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:100 src/views/task/CronView.vue:49
|
||||
msgid "Run Script"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:101 src/views/task/CronView.vue:51
|
||||
msgid "Backup Data"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:102 src/views/task/CronView.vue:52
|
||||
msgid "Log Rotation"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:107 src/views/task/CreateModal.vue:108
|
||||
#: src/views/task/CronView.vue:29 src/views/task/CronView.vue:259
|
||||
#: src/views/task/CronView.vue:260 src/views/task/TaskView.vue:15
|
||||
msgid "Task Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:110 src/views/task/CronView.vue:74
|
||||
#: src/views/task/CronView.vue:262
|
||||
msgid "Task Schedule"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:114
|
||||
msgid "Script Content"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:128
|
||||
msgid "Backup Type"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:131
|
||||
msgid "MySQL Database"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:132
|
||||
msgid "PostgreSQL Database"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:140 src/views/task/CreateModal.vue:142
|
||||
msgid "Select Website"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:153
|
||||
msgid "Retention Count"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:59
|
||||
msgid "Enabled"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:94
|
||||
msgid "Last Update Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:146
|
||||
msgid "Are you sure you want to delete this task?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:251
|
||||
msgid "Edit Task"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/IndexView.vue:25
|
||||
msgid "Create Task"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/IndexView.vue:32
|
||||
msgid "System Processes"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/IndexView.vue:35
|
||||
msgid "Panel Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/route.ts:19
|
||||
msgid "Background Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:25
|
||||
msgid "Parent PID"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:31
|
||||
msgid "Threads"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:50 src/views/task/TaskView.vue:33
|
||||
#: src/views/website/IndexView.vue:30
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:52
|
||||
msgid "Sleeping"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:54
|
||||
msgid "Stopped"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:56
|
||||
msgid "Idle"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:58
|
||||
msgid "Zombie"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:60 src/views/task/TaskView.vue:30
|
||||
msgid "Waiting"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:62
|
||||
msgid "Locked"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:87
|
||||
msgid "Start Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:108
|
||||
msgid "Process %{ pid } has been terminated"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:114
|
||||
msgid "Are you sure you want to terminate process %{ pid }?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:124
|
||||
msgid "Terminate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:28
|
||||
msgid "Completed"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:32
|
||||
msgid "Failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:46
|
||||
msgid "Completion Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:136
|
||||
msgid "If logs cannot be loaded, please disable ad blockers!"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:54 src/views/website/IndexView.vue:210
|
||||
msgid "Not used"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:83
|
||||
msgid "Edit Website - %{ name }"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:85 src/views/website/route.ts:31
|
||||
msgid "Edit Website"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:122
|
||||
msgid "Reset successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:139
|
||||
msgid "Issued successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:153
|
||||
msgid "The selected certificate is invalid"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:160
|
||||
msgid "Cleared successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:178
|
||||
msgid ""
|
||||
"If you modify the original text, other modifications will not take effect "
|
||||
"after clicking save!"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:184
|
||||
msgid "Reset Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:187
|
||||
msgid "Are you sure you want to reset the configuration?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:196
|
||||
#: src/views/website/ProxyBuilderModal.vue:121
|
||||
msgid "Generate Reverse Proxy Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:207
|
||||
msgid "One-click Certificate Issuance"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:217
|
||||
msgid "Clear Logs"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:226
|
||||
msgid "Domain & Listening"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:236
|
||||
msgid "Listening Address"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:254
|
||||
msgid "Basic Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:256
|
||||
msgid "Website Directory"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:257
|
||||
msgid "Enter website directory (absolute path)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:259
|
||||
msgid "Running Directory"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:262
|
||||
msgid "Enter running directory (needed for Laravel etc.) (absolute path)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:265
|
||||
msgid "Default Document"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:268 src/views/website/IndexView.vue:435
|
||||
msgid "PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:273 src/views/website/IndexView.vue:439
|
||||
msgid "Select PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:278
|
||||
msgid "Anti-XSS Attack (PHP)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:287
|
||||
msgid "Certificate Information"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:289
|
||||
msgid "Certificate Validity"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:303
|
||||
msgid "Domains"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:318
|
||||
msgid "Main Switch"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:321
|
||||
msgid "Use Existing Certificate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:334
|
||||
msgid "HTTP Redirect"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:337
|
||||
msgid "OCSP Stapling"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:362
|
||||
msgid "Rewrite"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:365
|
||||
msgid "Presets"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:388
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:391
|
||||
msgid ""
|
||||
"If you do not understand the configuration rules, please do not modify them "
|
||||
"arbitrarily, otherwise it may cause the website to be inaccessible or panel "
|
||||
"function abnormalities! If you have already encountered a problem, try "
|
||||
"resetting the configuration!"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:407
|
||||
msgid "Access Log"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:411 src/views/website/EditView.vue:423
|
||||
msgid "All logs can be viewed by downloading the file"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:413 src/views/website/EditView.vue:425
|
||||
msgid "view"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:419
|
||||
msgid "Error Log"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:23 src/views/website/IndexView.vue:398
|
||||
msgid "Website Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:78 src/views/website/IndexView.vue:516
|
||||
#: src/views/website/IndexView.vue:521
|
||||
msgid "Remark"
|
||||
@@ -2576,10 +2914,6 @@ msgstr ""
|
||||
msgid "Delete local database with the same name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:210
|
||||
msgid "Not used"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:240
|
||||
msgid "Already %{ status }"
|
||||
msgstr ""
|
||||
@@ -2616,14 +2950,6 @@ msgid ""
|
||||
"setting"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:435
|
||||
msgid "PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:439
|
||||
msgid "Select PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:451
|
||||
msgid "Select Database"
|
||||
msgstr ""
|
||||
@@ -2653,3 +2979,123 @@ msgstr ""
|
||||
#: src/views/website/IndexView.vue:554
|
||||
msgid "Stop Page"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:23
|
||||
msgid "Disabled buffer and enabled cache cannot be used simultaneously"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:27
|
||||
msgid "Matching expression cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:31
|
||||
msgid "Proxy address cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:35
|
||||
msgid "Exact match expression must start with /"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:42
|
||||
msgid "Prefix match expression must start with /"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:48
|
||||
msgid "Proxy address format error"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:100
|
||||
msgid "Configuration generated successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:128
|
||||
msgid ""
|
||||
"After generating the reverse proxy configuration, the original rewrite rules "
|
||||
"will be overwritten."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:130
|
||||
msgid ""
|
||||
"If you need to proxy static resources like JS/CSS, please remove the static "
|
||||
"log recording part from the original configuration."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:133
|
||||
msgid "Auto Refresh Resolution"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:136
|
||||
msgid "Enable SNI"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:139
|
||||
msgid "Enable Cache"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:142
|
||||
msgid "Disable Buffer"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:147
|
||||
msgid "Match Type"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:151
|
||||
msgid "Exact Match (=)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:152
|
||||
msgid "Priority Prefix Match (^~)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:153
|
||||
msgid "Normal Prefix Match ( )"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:154
|
||||
msgid "Case Sensitive Regex Match (~)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:155
|
||||
msgid "Case Insensitive Regex Match (~*)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:159
|
||||
msgid "Match Expression"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:162
|
||||
msgid "Proxy Address"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:165
|
||||
msgid "Send Domain"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:168
|
||||
msgid "Cache Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:174
|
||||
msgid "Cache time (minutes)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:176
|
||||
msgid "minutes"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:179
|
||||
msgid "Content Replacement"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:184
|
||||
msgid "Target content"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:185
|
||||
msgid "Replacement content"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/route.ts:19
|
||||
msgid "Websites"
|
||||
msgstr ""
|
||||
|
||||
@@ -67,7 +67,9 @@ msgstr ""
|
||||
#: src/views/database/ServerList.vue:135 src/views/database/UserList.vue:152
|
||||
#: src/views/file/ListTable.vue:185 src/views/file/SearchModal.vue:48
|
||||
#: src/views/firewall/ForwardView.vue:80 src/views/firewall/IpRuleView.vue:122
|
||||
#: src/views/firewall/RuleView.vue:159 src/views/website/IndexView.vue:95
|
||||
#: src/views/firewall/RuleView.vue:159 src/views/task/CronView.vue:103
|
||||
#: src/views/task/SystemView.vue:96 src/views/task/TaskView.vue:55
|
||||
#: src/views/website/IndexView.vue:95
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
|
||||
@@ -155,14 +157,15 @@ msgstr ""
|
||||
#: src/views/file/ToolBar.vue:282 src/views/firewall/CreateForwardModal.vue:88
|
||||
#: src/views/firewall/CreateIpModal.vue:122
|
||||
#: src/views/firewall/CreateModal.vue:143 src/views/ssh/CreateModal.vue:98
|
||||
#: src/views/ssh/UpdateModal.vue:104
|
||||
#: src/views/ssh/UpdateModal.vue:104 src/views/task/CreateModal.vue:159
|
||||
#: src/views/website/ProxyBuilderModal.vue:189
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/backup/IndexView.vue:37 src/views/backup/ListView.vue:217
|
||||
#: src/views/backup/ListView.vue:250 src/views/cert/CertView.vue:464
|
||||
#: src/views/cert/CertView.vue:527 src/views/cert/CreateCertModal.vue:86
|
||||
#: src/views/dashboard/IndexView.vue:418
|
||||
#: src/views/dashboard/IndexView.vue:418 src/views/task/CreateModal.vue:130
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
||||
@@ -202,6 +205,7 @@ msgstr ""
|
||||
#: src/views/file/SearchModal.vue:98 src/views/file/ToolBar.vue:238
|
||||
#: src/views/firewall/ForwardView.vue:105 src/views/firewall/IpRuleView.vue:147
|
||||
#: src/views/firewall/RuleView.vue:184 src/views/ssh/IndexView.vue:93
|
||||
#: src/views/task/CronView.vue:157 src/views/task/TaskView.vue:99
|
||||
#: src/views/website/IndexView.vue:169
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
@@ -217,7 +221,7 @@ msgstr ""
|
||||
#: src/views/database/CreateUserModal.vue:28 src/views/file/ToolBar.vue:45
|
||||
#: src/views/firewall/CreateForwardModal.vue:41
|
||||
#: src/views/firewall/CreateModal.vue:84 src/views/ssh/CreateModal.vue:38
|
||||
#: src/views/website/IndexView.vue:309
|
||||
#: src/views/task/CreateModal.vue:51 src/views/website/IndexView.vue:309
|
||||
msgid "Created successfully"
|
||||
msgstr ""
|
||||
|
||||
@@ -236,7 +240,8 @@ msgstr ""
|
||||
#: src/views/firewall/ForwardView.vue:132
|
||||
#: src/views/firewall/ForwardView.vue:150 src/views/firewall/IpRuleView.vue:174
|
||||
#: src/views/firewall/IpRuleView.vue:192 src/views/firewall/RuleView.vue:211
|
||||
#: src/views/firewall/RuleView.vue:229 src/views/website/IndexView.vue:270
|
||||
#: src/views/firewall/RuleView.vue:229 src/views/task/CronView.vue:200
|
||||
#: src/views/task/TaskView.vue:125 src/views/website/IndexView.vue:270
|
||||
#: src/views/website/IndexView.vue:324
|
||||
msgid "Deleted successfully"
|
||||
msgstr ""
|
||||
@@ -255,7 +260,8 @@ msgstr ""
|
||||
|
||||
#: src/views/backup/ListView.vue:220
|
||||
#: src/views/database/CreateDatabaseModal.vue:70
|
||||
#: src/views/database/DatabaseList.vue:35 src/views/website/IndexView.vue:468
|
||||
#: src/views/database/DatabaseList.vue:35 src/views/task/CreateModal.vue:146
|
||||
#: src/views/task/CreateModal.vue:148 src/views/website/IndexView.vue:468
|
||||
#: src/views/website/IndexView.vue:473
|
||||
msgid "Database Name"
|
||||
msgstr ""
|
||||
@@ -267,7 +273,8 @@ msgstr ""
|
||||
msgid "Enter database name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/backup/ListView.vue:228
|
||||
#: src/views/backup/ListView.vue:228 src/views/task/CreateModal.vue:150
|
||||
#: src/views/task/CreateModal.vue:151
|
||||
msgid "Save Directory"
|
||||
msgstr ""
|
||||
|
||||
@@ -382,7 +389,7 @@ msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:64 src/views/cert/CertView.vue:448
|
||||
#: src/views/cert/CreateCertModal.vue:70 src/views/cert/ObtainModal.vue:53
|
||||
#: src/views/website/IndexView.vue:412
|
||||
#: src/views/website/EditView.vue:228 src/views/website/IndexView.vue:412
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
@@ -414,7 +421,7 @@ msgstr ""
|
||||
msgid "Associated Account"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:130
|
||||
#: src/views/cert/CertView.vue:130 src/views/website/EditView.vue:297
|
||||
msgid "Issuer"
|
||||
msgstr ""
|
||||
|
||||
@@ -435,7 +442,7 @@ msgid "Deploy"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:233 src/views/cert/ObtainModal.vue:24
|
||||
#: src/views/cert/ObtainModal.vue:77
|
||||
#: src/views/cert/ObtainModal.vue:77 src/views/website/EditView.vue:133
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
@@ -494,11 +501,12 @@ msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:488 src/views/cert/CertView.vue:551
|
||||
#: src/views/cert/route.ts:19 src/views/cert/UploadCertModal.vue:38
|
||||
#: src/views/setting/SettingHttps.vue:39
|
||||
#: src/views/setting/SettingHttps.vue:39 src/views/website/EditView.vue:342
|
||||
msgid "Certificate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:492 src/views/cert/UploadCertModal.vue:42
|
||||
#: src/views/website/EditView.vue:346
|
||||
msgid "Enter the content of the PEM certificate file"
|
||||
msgstr ""
|
||||
|
||||
@@ -506,10 +514,12 @@ msgstr ""
|
||||
#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingHttps.vue:46
|
||||
#: src/views/ssh/CreateModal.vue:78 src/views/ssh/CreateModal.vue:89
|
||||
#: src/views/ssh/UpdateModal.vue:84 src/views/ssh/UpdateModal.vue:95
|
||||
#: src/views/website/EditView.vue:350
|
||||
msgid "Private Key"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/cert/CertView.vue:500 src/views/cert/UploadCertModal.vue:50
|
||||
#: src/views/website/EditView.vue:354
|
||||
msgid "Enter the content of the KEY private key file"
|
||||
msgstr ""
|
||||
|
||||
@@ -768,6 +778,7 @@ msgstr ""
|
||||
#: src/views/database/UpdateServerModal.vue:55 src/views/file/ListTable.vue:99
|
||||
#: src/views/file/SearchModal.vue:20 src/views/file/ToolBar.vue:257
|
||||
#: src/views/ssh/CreateModal.vue:57 src/views/ssh/UpdateModal.vue:63
|
||||
#: src/views/task/SystemView.vue:18
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
@@ -779,19 +790,21 @@ msgstr ""
|
||||
#: src/views/container/ComposeView.vue:58
|
||||
#: src/views/container/ContainerView.vue:32
|
||||
#: src/views/database/ServerList.vue:114 src/views/database/UserList.vue:131
|
||||
#: src/views/firewall/RuleView.vue:62
|
||||
#: src/views/firewall/RuleView.vue:62 src/views/task/SystemView.vue:43
|
||||
#: src/views/task/TaskView.vue:22
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/container/ComposeView.vue:65 src/views/container/ImageView.vue:60
|
||||
#: src/views/container/NetworkView.vue:100
|
||||
#: src/views/container/VolumeView.vue:54
|
||||
#: src/views/container/VolumeView.vue:54 src/views/task/CronView.vue:84
|
||||
#: src/views/task/TaskView.vue:37
|
||||
msgid "Creation Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/container/ComposeView.vue:97 src/views/file/ListTable.vue:64
|
||||
#: src/views/file/ListTable.vue:216 src/views/ssh/IndexView.vue:71
|
||||
#: src/views/website/IndexView.vue:111
|
||||
#: src/views/task/CronView.vue:135 src/views/website/IndexView.vue:111
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
@@ -1001,6 +1014,7 @@ msgstr ""
|
||||
#: src/views/container/ContainerCreate.vue:291
|
||||
#: src/views/dashboard/IndexView.vue:530 src/views/monitor/IndexView.vue:205
|
||||
#: src/views/monitor/IndexView.vue:216 src/views/monitor/IndexView.vue:238
|
||||
#: src/views/task/SystemView.vue:78
|
||||
msgid "Memory"
|
||||
msgstr ""
|
||||
|
||||
@@ -1060,7 +1074,8 @@ msgid "Running Status"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/container/ContainerView.vue:103
|
||||
#: src/views/container/ContainerView.vue:439
|
||||
#: src/views/container/ContainerView.vue:439 src/views/task/CronView.vue:122
|
||||
#: src/views/task/TaskView.vue:75
|
||||
msgid "Logs"
|
||||
msgstr ""
|
||||
|
||||
@@ -1173,6 +1188,7 @@ msgstr ""
|
||||
#: src/views/container/ImageView.vue:85 src/views/container/NetworkView.vue:125
|
||||
#: src/views/container/VolumeView.vue:79 src/views/firewall/ForwardView.vue:94
|
||||
#: src/views/firewall/IpRuleView.vue:136 src/views/firewall/RuleView.vue:173
|
||||
#: src/views/task/TaskView.vue:88
|
||||
msgid "Are you sure you want to delete?"
|
||||
msgstr ""
|
||||
|
||||
@@ -1379,7 +1395,7 @@ msgstr ""
|
||||
msgid "Current version is the latest"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/IndexView.vue:431
|
||||
#: src/views/dashboard/IndexView.vue:431 src/views/task/IndexView.vue:29
|
||||
msgid "Scheduled Tasks"
|
||||
msgstr ""
|
||||
|
||||
@@ -1798,11 +1814,12 @@ msgstr ""
|
||||
#: src/views/database/UpdateServerModal.vue:21
|
||||
#: src/views/database/UpdateUserModal.vue:18
|
||||
#: src/views/database/UserList.vue:223 src/views/file/PermissionModal.vue:29
|
||||
#: src/views/task/CronView.vue:182 src/views/task/CronView.vue:209
|
||||
#: src/views/website/IndexView.vue:253 src/views/website/IndexView.vue:279
|
||||
msgid "Modified successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/database/IndexView.vue:48
|
||||
#: src/views/database/IndexView.vue:48 src/views/task/SystemView.vue:37
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
@@ -1911,6 +1928,7 @@ msgstr ""
|
||||
|
||||
#: src/views/file/EditModal.vue:31 src/views/file/ListTable.vue:703
|
||||
#: src/views/setting/SettingBase.vue:95 src/views/setting/SettingHttps.vue:56
|
||||
#: src/views/website/EditView.vue:211
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
@@ -2406,7 +2424,7 @@ msgstr ""
|
||||
msgid "Clear Monitoring Records"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/monitor/IndexView.vue:449
|
||||
#: src/views/monitor/IndexView.vue:449 src/views/website/EditView.vue:220
|
||||
msgid "Are you sure you want to clear?"
|
||||
msgstr ""
|
||||
|
||||
@@ -2439,6 +2457,7 @@ msgid "Panel Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/setting/SettingBase.vue:35 src/views/setting/SettingHttps.vue:27
|
||||
#: src/views/website/EditView.vue:115
|
||||
msgid "Saved successfully"
|
||||
msgstr ""
|
||||
|
||||
@@ -2551,14 +2570,333 @@ msgstr ""
|
||||
msgid "Update Host"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:23 src/views/website/IndexView.vue:398
|
||||
msgid "Website Name"
|
||||
#: src/views/task/CreateModal.vue:22
|
||||
msgid "# Enter your script content here"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:89
|
||||
msgid "Create Scheduled Task"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:96 src/views/task/CronView.vue:36
|
||||
msgid "Task Type"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:100 src/views/task/CronView.vue:49
|
||||
msgid "Run Script"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:101 src/views/task/CronView.vue:51
|
||||
msgid "Backup Data"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:102 src/views/task/CronView.vue:52
|
||||
msgid "Log Rotation"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:107 src/views/task/CreateModal.vue:108
|
||||
#: src/views/task/CronView.vue:29 src/views/task/CronView.vue:259
|
||||
#: src/views/task/CronView.vue:260 src/views/task/TaskView.vue:15
|
||||
msgid "Task Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:110 src/views/task/CronView.vue:74
|
||||
#: src/views/task/CronView.vue:262
|
||||
msgid "Task Schedule"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:114
|
||||
msgid "Script Content"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:128
|
||||
msgid "Backup Type"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:131
|
||||
msgid "MySQL Database"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:132
|
||||
msgid "PostgreSQL Database"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:140 src/views/task/CreateModal.vue:142
|
||||
msgid "Select Website"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CreateModal.vue:153
|
||||
msgid "Retention Count"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:59
|
||||
msgid "Enabled"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:94
|
||||
msgid "Last Update Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:146
|
||||
msgid "Are you sure you want to delete this task?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/CronView.vue:251
|
||||
msgid "Edit Task"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/IndexView.vue:25
|
||||
msgid "Create Task"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/IndexView.vue:32
|
||||
msgid "System Processes"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/IndexView.vue:35
|
||||
msgid "Panel Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/route.ts:19
|
||||
msgid "Background Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:25
|
||||
msgid "Parent PID"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:31
|
||||
msgid "Threads"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:50 src/views/task/TaskView.vue:33
|
||||
#: src/views/website/IndexView.vue:30
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:52
|
||||
msgid "Sleeping"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:54
|
||||
msgid "Stopped"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:56
|
||||
msgid "Idle"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:58
|
||||
msgid "Zombie"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:60 src/views/task/TaskView.vue:30
|
||||
msgid "Waiting"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:62
|
||||
msgid "Locked"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:87
|
||||
msgid "Start Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:108
|
||||
msgid "Process %{ pid } has been terminated"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:114
|
||||
msgid "Are you sure you want to terminate process %{ pid }?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/SystemView.vue:124
|
||||
msgid "Terminate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:28
|
||||
msgid "Completed"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:32
|
||||
msgid "Failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:46
|
||||
msgid "Completion Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/task/TaskView.vue:136
|
||||
msgid "If logs cannot be loaded, please disable ad blockers!"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:54 src/views/website/IndexView.vue:210
|
||||
msgid "Not used"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:83
|
||||
msgid "Edit Website - %{ name }"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:85 src/views/website/route.ts:31
|
||||
msgid "Edit Website"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:122
|
||||
msgid "Reset successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:139
|
||||
msgid "Issued successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:153
|
||||
msgid "The selected certificate is invalid"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:160
|
||||
msgid "Cleared successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:178
|
||||
msgid ""
|
||||
"If you modify the original text, other modifications will not take effect "
|
||||
"after clicking save!"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:184
|
||||
msgid "Reset Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:187
|
||||
msgid "Are you sure you want to reset the configuration?"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:196
|
||||
#: src/views/website/ProxyBuilderModal.vue:121
|
||||
msgid "Generate Reverse Proxy Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:207
|
||||
msgid "One-click Certificate Issuance"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:217
|
||||
msgid "Clear Logs"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:226
|
||||
msgid "Domain & Listening"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:236
|
||||
msgid "Listening Address"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:254
|
||||
msgid "Basic Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:256
|
||||
msgid "Website Directory"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:257
|
||||
msgid "Enter website directory (absolute path)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:259
|
||||
msgid "Running Directory"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:262
|
||||
msgid "Enter running directory (needed for Laravel etc.) (absolute path)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:265
|
||||
msgid "Default Document"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:268 src/views/website/IndexView.vue:435
|
||||
msgid "PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:273 src/views/website/IndexView.vue:439
|
||||
msgid "Select PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:278
|
||||
msgid "Anti-XSS Attack (PHP)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:287
|
||||
msgid "Certificate Information"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:289
|
||||
msgid "Certificate Validity"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:303
|
||||
msgid "Domains"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:318
|
||||
msgid "Main Switch"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:321
|
||||
msgid "Use Existing Certificate"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:334
|
||||
msgid "HTTP Redirect"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:337
|
||||
msgid "OCSP Stapling"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:362
|
||||
msgid "Rewrite"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:365
|
||||
msgid "Presets"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:388
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:391
|
||||
msgid ""
|
||||
"If you do not understand the configuration rules, please do not modify them "
|
||||
"arbitrarily, otherwise it may cause the website to be inaccessible or panel "
|
||||
"function abnormalities! If you have already encountered a problem, try "
|
||||
"resetting the configuration!"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:407
|
||||
msgid "Access Log"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:411 src/views/website/EditView.vue:423
|
||||
msgid "All logs can be viewed by downloading the file"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:413 src/views/website/EditView.vue:425
|
||||
msgid "view"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/EditView.vue:419
|
||||
msgid "Error Log"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:23 src/views/website/IndexView.vue:398
|
||||
msgid "Website Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:78 src/views/website/IndexView.vue:516
|
||||
#: src/views/website/IndexView.vue:521
|
||||
msgid "Remark"
|
||||
@@ -2576,10 +2914,6 @@ msgstr ""
|
||||
msgid "Delete local database with the same name"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:210
|
||||
msgid "Not used"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:240
|
||||
msgid "Already %{ status }"
|
||||
msgstr ""
|
||||
@@ -2616,14 +2950,6 @@ msgid ""
|
||||
"setting"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:435
|
||||
msgid "PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:439
|
||||
msgid "Select PHP Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/IndexView.vue:451
|
||||
msgid "Select Database"
|
||||
msgstr ""
|
||||
@@ -2653,3 +2979,123 @@ msgstr ""
|
||||
#: src/views/website/IndexView.vue:554
|
||||
msgid "Stop Page"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:23
|
||||
msgid "Disabled buffer and enabled cache cannot be used simultaneously"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:27
|
||||
msgid "Matching expression cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:31
|
||||
msgid "Proxy address cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:35
|
||||
msgid "Exact match expression must start with /"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:42
|
||||
msgid "Prefix match expression must start with /"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:48
|
||||
msgid "Proxy address format error"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:100
|
||||
msgid "Configuration generated successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:128
|
||||
msgid ""
|
||||
"After generating the reverse proxy configuration, the original rewrite rules "
|
||||
"will be overwritten."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:130
|
||||
msgid ""
|
||||
"If you need to proxy static resources like JS/CSS, please remove the static "
|
||||
"log recording part from the original configuration."
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:133
|
||||
msgid "Auto Refresh Resolution"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:136
|
||||
msgid "Enable SNI"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:139
|
||||
msgid "Enable Cache"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:142
|
||||
msgid "Disable Buffer"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:147
|
||||
msgid "Match Type"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:151
|
||||
msgid "Exact Match (=)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:152
|
||||
msgid "Priority Prefix Match (^~)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:153
|
||||
msgid "Normal Prefix Match ( )"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:154
|
||||
msgid "Case Sensitive Regex Match (~)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:155
|
||||
msgid "Case Insensitive Regex Match (~*)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:159
|
||||
msgid "Match Expression"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:162
|
||||
msgid "Proxy Address"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:165
|
||||
msgid "Send Domain"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:168
|
||||
msgid "Cache Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:174
|
||||
msgid "Cache time (minutes)"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:176
|
||||
msgid "minutes"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:179
|
||||
msgid "Content Replacement"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:184
|
||||
msgid "Target content"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/ProxyBuilderModal.vue:185
|
||||
msgid "Replacement content"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/website/route.ts:19
|
||||
msgid "Websites"
|
||||
msgstr ""
|
||||
|
||||
@@ -6,7 +6,9 @@ import website from '@/api/panel/website'
|
||||
import Editor from '@guolao/vue-monaco-editor'
|
||||
import { CronNaive } from '@vue-js-cron/naive-ui'
|
||||
import { NInput } from 'naive-ui'
|
||||
import { useGettext } from 'vue3-gettext'
|
||||
|
||||
const { $gettext } = useGettext()
|
||||
const show = defineModel<boolean>('show', { type: Boolean, required: true })
|
||||
const loading = ref(false)
|
||||
|
||||
@@ -17,7 +19,7 @@ const createModel = ref({
|
||||
save: 1,
|
||||
backup_type: 'website',
|
||||
backup_path: '',
|
||||
script: '# 在此输入您要执行的脚本内容',
|
||||
script: $gettext('# Enter your script content here'),
|
||||
time: '* * * * *'
|
||||
})
|
||||
|
||||
@@ -46,7 +48,7 @@ const handleSubmit = async () => {
|
||||
loading.value = true
|
||||
useRequest(cron.create(createModel.value))
|
||||
.onSuccess(() => {
|
||||
window.$message.success('创建成功')
|
||||
window.$message.success($gettext('Created successfully'))
|
||||
window.$bus.emit('task:refresh-cron')
|
||||
})
|
||||
.onComplete(() => {
|
||||
@@ -84,32 +86,32 @@ onMounted(() => {
|
||||
<n-modal
|
||||
v-model:show="show"
|
||||
preset="card"
|
||||
title="创建计划任务"
|
||||
:title="$gettext('Create Scheduled Task')"
|
||||
style="width: 60vw"
|
||||
size="huge"
|
||||
:bordered="false"
|
||||
:segmented="false"
|
||||
>
|
||||
<n-form>
|
||||
<n-form-item label="任务类型">
|
||||
<n-form-item :label="$gettext('Task Type')">
|
||||
<n-select
|
||||
v-model:value="createModel.type"
|
||||
:options="[
|
||||
{ label: '运行脚本', value: 'shell' },
|
||||
{ label: '备份数据', value: 'backup' },
|
||||
{ label: '切割日志', value: 'cutoff' }
|
||||
{ label: $gettext('Run Script'), value: 'shell' },
|
||||
{ label: $gettext('Backup Data'), value: 'backup' },
|
||||
{ label: $gettext('Log Rotation'), value: 'cutoff' }
|
||||
]"
|
||||
>
|
||||
</n-select>
|
||||
</n-form-item>
|
||||
<n-form-item label="任务名称">
|
||||
<n-input v-model:value="createModel.name" placeholder="任务名称" />
|
||||
<n-form-item :label="$gettext('Task Name')">
|
||||
<n-input v-model:value="createModel.name" :placeholder="$gettext('Task Name')" />
|
||||
</n-form-item>
|
||||
<n-form-item label="任务周期">
|
||||
<n-form-item :label="$gettext('Task Schedule')">
|
||||
<cron-naive v-model="createModel.time" locale="zh-cn"></cron-naive>
|
||||
</n-form-item>
|
||||
<div v-if="createModel.type === 'shell'">
|
||||
<n-text>脚本内容</n-text>
|
||||
<n-text>{{ $gettext('Script Content') }}</n-text>
|
||||
<Editor
|
||||
v-model:value="createModel.script"
|
||||
language="shell"
|
||||
@@ -123,11 +125,11 @@ onMounted(() => {
|
||||
}"
|
||||
/>
|
||||
</div>
|
||||
<n-form-item v-if="createModel.type === 'backup'" label="备份类型">
|
||||
<n-form-item v-if="createModel.type === 'backup'" :label="$gettext('Backup Type')">
|
||||
<n-radio-group v-model:value="createModel.backup_type">
|
||||
<n-radio value="website">网站</n-radio>
|
||||
<n-radio value="mysql" :disabled="!mySQLInstalled"> MySQL 数据库</n-radio>
|
||||
<n-radio value="postgres" :disabled="!postgreSQLInstalled"> PostgreSQL 数据库 </n-radio>
|
||||
<n-radio value="website">{{ $gettext('Website') }}</n-radio>
|
||||
<n-radio value="mysql" :disabled="!mySQLInstalled"> {{ $gettext('MySQL Database') }}</n-radio>
|
||||
<n-radio value="postgres" :disabled="!postgreSQLInstalled"> {{ $gettext('PostgreSQL Database') }} </n-radio>
|
||||
</n-radio-group>
|
||||
</n-form-item>
|
||||
<n-form-item
|
||||
@@ -135,26 +137,26 @@ onMounted(() => {
|
||||
(createModel.backup_type === 'website' && createModel.type === 'backup') ||
|
||||
createModel.type === 'cutoff'
|
||||
"
|
||||
label="选择网站"
|
||||
:label="$gettext('Select Website')"
|
||||
>
|
||||
<n-select v-model:value="createModel.target" :options="websites" placeholder="选择网站" />
|
||||
<n-select v-model:value="createModel.target" :options="websites" :placeholder="$gettext('Select Website')" />
|
||||
</n-form-item>
|
||||
<n-form-item
|
||||
v-if="createModel.backup_type !== 'website' && createModel.type === 'backup'"
|
||||
label="数据库名"
|
||||
:label="$gettext('Database Name')"
|
||||
>
|
||||
<n-input v-model:value="createModel.target" placeholder="数据库名" />
|
||||
<n-input v-model:value="createModel.target" :placeholder="$gettext('Database Name')" />
|
||||
</n-form-item>
|
||||
<n-form-item v-if="createModel.type === 'backup'" label="保存目录">
|
||||
<n-input v-model:value="createModel.backup_path" placeholder="保存目录" />
|
||||
<n-form-item v-if="createModel.type === 'backup'" :label="$gettext('Save Directory')">
|
||||
<n-input v-model:value="createModel.backup_path" :placeholder="$gettext('Save Directory')" />
|
||||
</n-form-item>
|
||||
<n-form-item v-if="createModel.type !== 'shell'" label="保留份数">
|
||||
<n-form-item v-if="createModel.type !== 'shell'" :label="$gettext('Retention Count')">
|
||||
<n-input-number v-model:value="createModel.save" />
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
<n-row :gutter="[0, 24]" pt-20>
|
||||
<n-col :span="24">
|
||||
<n-button type="info" block :loading="loading" @click="handleSubmit"> 提交 </n-button>
|
||||
<n-button type="info" block :loading="loading" @click="handleSubmit"> {{ $gettext('Submit') }} </n-button>
|
||||
</n-col>
|
||||
</n-row>
|
||||
</n-modal>
|
||||
|
||||
@@ -4,12 +4,14 @@ import 'cronstrue/locales/zh_CN'
|
||||
|
||||
import Editor from '@guolao/vue-monaco-editor'
|
||||
import { NButton, NDataTable, NInput, NPopconfirm, NSwitch, NTag } from 'naive-ui'
|
||||
import { useGettext } from 'vue3-gettext'
|
||||
|
||||
import cron from '@/api/panel/cron'
|
||||
import file from '@/api/panel/file'
|
||||
import { decodeBase64, formatDateTime, renderIcon } from '@/utils'
|
||||
import { CronNaive } from '@vue-js-cron/naive-ui'
|
||||
|
||||
const { $gettext } = useGettext()
|
||||
const logPath = ref('')
|
||||
const logModal = ref(false)
|
||||
const editModal = ref(false)
|
||||
@@ -24,14 +26,14 @@ const editTask = ref({
|
||||
const columns: any = [
|
||||
{ type: 'selection', fixed: 'left' },
|
||||
{
|
||||
title: '任务名',
|
||||
title: $gettext('Task Name'),
|
||||
key: 'name',
|
||||
minWidth: 150,
|
||||
resizable: true,
|
||||
ellipsis: { tooltip: true }
|
||||
},
|
||||
{
|
||||
title: '任务类型',
|
||||
title: $gettext('Task Type'),
|
||||
key: 'type',
|
||||
width: 100,
|
||||
resizable: true,
|
||||
@@ -44,17 +46,17 @@ const columns: any = [
|
||||
{
|
||||
default: () => {
|
||||
return row.type === 'shell'
|
||||
? '运行脚本'
|
||||
? $gettext('Run Script')
|
||||
: row.type === 'backup'
|
||||
? '备份数据'
|
||||
: '切割日志'
|
||||
? $gettext('Backup Data')
|
||||
: $gettext('Log Rotation')
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '启用',
|
||||
title: $gettext('Enabled'),
|
||||
key: 'status',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
@@ -69,7 +71,7 @@ const columns: any = [
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '任务周期',
|
||||
title: $gettext('Task Schedule'),
|
||||
key: 'time',
|
||||
width: 200,
|
||||
resizable: true,
|
||||
@@ -79,7 +81,7 @@ const columns: any = [
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '创建时间',
|
||||
title: $gettext('Creation Time'),
|
||||
key: 'created_at',
|
||||
width: 200,
|
||||
resizable: true,
|
||||
@@ -89,7 +91,7 @@ const columns: any = [
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '最后更新时间',
|
||||
title: $gettext('Last Update Time'),
|
||||
key: 'updated_at',
|
||||
width: 200,
|
||||
ellipsis: { tooltip: true },
|
||||
@@ -98,7 +100,7 @@ const columns: any = [
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
title: $gettext('Actions'),
|
||||
key: 'actions',
|
||||
width: 280,
|
||||
align: 'center',
|
||||
@@ -117,7 +119,7 @@ const columns: any = [
|
||||
}
|
||||
},
|
||||
{
|
||||
default: () => '日志',
|
||||
default: () => $gettext('Logs'),
|
||||
icon: renderIcon('majesticons:eye-line', { size: 14 })
|
||||
}
|
||||
),
|
||||
@@ -130,7 +132,7 @@ const columns: any = [
|
||||
onClick: () => handleEdit(row)
|
||||
},
|
||||
{
|
||||
default: () => '修改',
|
||||
default: () => $gettext('Edit'),
|
||||
icon: renderIcon('material-symbols:edit-outline', { size: 14 })
|
||||
}
|
||||
),
|
||||
@@ -141,7 +143,7 @@ const columns: any = [
|
||||
},
|
||||
{
|
||||
default: () => {
|
||||
return '确定删除任务吗?'
|
||||
return $gettext('Are you sure you want to delete this task?')
|
||||
},
|
||||
trigger: () => {
|
||||
return h(
|
||||
@@ -152,7 +154,7 @@ const columns: any = [
|
||||
style: 'margin-left: 15px;'
|
||||
},
|
||||
{
|
||||
default: () => '删除',
|
||||
default: () => $gettext('Delete'),
|
||||
icon: renderIcon('material-symbols:delete-outline', { size: 14 })
|
||||
}
|
||||
)
|
||||
@@ -177,7 +179,7 @@ const { loading, data, page, total, pageSize, pageCount, refresh } = usePaginati
|
||||
const handleStatusChange = (row: any) => {
|
||||
useRequest(cron.status(row.id, !row.status)).onSuccess(() => {
|
||||
row.status = !row.status
|
||||
window.$message.success('修改成功')
|
||||
window.$message.success($gettext('Modified successfully'))
|
||||
})
|
||||
}
|
||||
|
||||
@@ -195,7 +197,7 @@ const handleEdit = (row: any) => {
|
||||
|
||||
const handleDelete = async (id: number) => {
|
||||
useRequest(cron.delete(id)).onSuccess(() => {
|
||||
window.$message.success('删除成功')
|
||||
window.$message.success($gettext('Deleted successfully'))
|
||||
window.$bus.emit('task:refresh-cron')
|
||||
})
|
||||
}
|
||||
@@ -204,7 +206,7 @@ const saveTaskEdit = async () => {
|
||||
useRequest(
|
||||
cron.update(editTask.value.id, editTask.value.name, editTask.value.time, editTask.value.script)
|
||||
).onSuccess(() => {
|
||||
window.$message.success('修改成功')
|
||||
window.$message.success($gettext('Modified successfully'))
|
||||
window.$bus.emit('task:refresh-cron')
|
||||
})
|
||||
}
|
||||
@@ -246,7 +248,7 @@ onUnmounted(() => {
|
||||
<n-modal
|
||||
v-model:show="editModal"
|
||||
preset="card"
|
||||
title="编辑任务"
|
||||
:title="$gettext('Edit Task')"
|
||||
style="width: 80vw"
|
||||
size="huge"
|
||||
:bordered="false"
|
||||
@@ -254,10 +256,10 @@ onUnmounted(() => {
|
||||
@close="saveTaskEdit"
|
||||
>
|
||||
<n-form inline>
|
||||
<n-form-item label="任务名称">
|
||||
<n-input v-model:value="editTask.name" placeholder="任务名称" />
|
||||
<n-form-item :label="$gettext('Task Name')">
|
||||
<n-input v-model:value="editTask.name" :placeholder="$gettext('Task Name')" />
|
||||
</n-form-item>
|
||||
<n-form-item label="任务周期">
|
||||
<n-form-item :label="$gettext('Task Schedule')">
|
||||
<cron-naive v-model="editTask.time" locale="zh-cn"></cron-naive>
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
|
||||
@@ -9,7 +9,9 @@ import CronView from '@/views/task/CronView.vue'
|
||||
import SystemView from '@/views/task/SystemView.vue'
|
||||
import TaskView from '@/views/task/TaskView.vue'
|
||||
import { NButton } from 'naive-ui'
|
||||
import { useGettext } from 'vue3-gettext'
|
||||
|
||||
const { $gettext } = useGettext()
|
||||
const current = ref('cron')
|
||||
|
||||
const create = ref(false)
|
||||
@@ -20,17 +22,17 @@ const create = ref(false)
|
||||
<template #action>
|
||||
<n-button v-if="current == 'cron'" type="primary" @click="create = true">
|
||||
<TheIcon :size="18" icon="material-symbols:add" />
|
||||
创建任务
|
||||
{{ $gettext('Create Task') }}
|
||||
</n-button>
|
||||
</template>
|
||||
<n-tabs v-model:value="current" type="line" animated>
|
||||
<n-tab-pane name="cron" tab="计划任务">
|
||||
<n-tab-pane name="cron" :tab="$gettext('Scheduled Tasks')">
|
||||
<cron-view />
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="system" tab="系统进程">
|
||||
<n-tab-pane name="system" :tab="$gettext('System Processes')">
|
||||
<system-view />
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="task" tab="面板任务">
|
||||
<n-tab-pane name="task" :tab="$gettext('Panel Tasks')">
|
||||
<task-view />
|
||||
</n-tab-pane>
|
||||
</n-tabs>
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
<script setup lang="ts">
|
||||
import { NButton, NDataTable, NPopconfirm, NTag } from 'naive-ui'
|
||||
import { useGettext } from 'vue3-gettext'
|
||||
|
||||
import process from '@/api/panel/process'
|
||||
import { formatBytes, formatDateTime, formatPercent, renderIcon } from '@/utils'
|
||||
|
||||
const { $gettext } = useGettext()
|
||||
|
||||
const columns: any = [
|
||||
{
|
||||
title: 'PID',
|
||||
@@ -12,51 +15,51 @@ const columns: any = [
|
||||
ellipsis: { tooltip: true }
|
||||
},
|
||||
{
|
||||
title: '名称',
|
||||
title: $gettext('Name'),
|
||||
key: 'name',
|
||||
minWidth: 250,
|
||||
resizable: true,
|
||||
ellipsis: { tooltip: true }
|
||||
},
|
||||
{
|
||||
title: '父进程 ID',
|
||||
title: $gettext('Parent PID'),
|
||||
key: 'ppid',
|
||||
width: 120,
|
||||
ellipsis: { tooltip: true }
|
||||
},
|
||||
{
|
||||
title: '线程数',
|
||||
title: $gettext('Threads'),
|
||||
key: 'num_threads',
|
||||
width: 100,
|
||||
ellipsis: { tooltip: true }
|
||||
},
|
||||
{
|
||||
title: '用户',
|
||||
title: $gettext('User'),
|
||||
key: 'username',
|
||||
minWidth: 100,
|
||||
ellipsis: { tooltip: true }
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
title: $gettext('Status'),
|
||||
key: 'status',
|
||||
minWidth: 150,
|
||||
ellipsis: { tooltip: true },
|
||||
render(row: any) {
|
||||
switch (row.status) {
|
||||
case 'R':
|
||||
return h(NTag, { type: 'success' }, { default: () => '运行' })
|
||||
return h(NTag, { type: 'success' }, { default: () => $gettext('Running') })
|
||||
case 'S':
|
||||
return h(NTag, { type: 'warning' }, { default: () => '睡眠' })
|
||||
return h(NTag, { type: 'warning' }, { default: () => $gettext('Sleeping') })
|
||||
case 'T':
|
||||
return h(NTag, { type: 'error' }, { default: () => '停止' })
|
||||
return h(NTag, { type: 'error' }, { default: () => $gettext('Stopped') })
|
||||
case 'I':
|
||||
return h(NTag, { type: 'primary' }, { default: () => '空闲' })
|
||||
return h(NTag, { type: 'primary' }, { default: () => $gettext('Idle') })
|
||||
case 'Z':
|
||||
return h(NTag, { type: 'error' }, { default: () => '僵尸' })
|
||||
return h(NTag, { type: 'error' }, { default: () => $gettext('Zombie') })
|
||||
case 'W':
|
||||
return h(NTag, { type: 'warning' }, { default: () => '等待' })
|
||||
return h(NTag, { type: 'warning' }, { default: () => $gettext('Waiting') })
|
||||
case 'L':
|
||||
return h(NTag, { type: 'info' }, { default: () => '锁定' })
|
||||
return h(NTag, { type: 'info' }, { default: () => $gettext('Locked') })
|
||||
default:
|
||||
return h(NTag, { type: 'default' }, { default: () => row.status })
|
||||
}
|
||||
@@ -72,7 +75,7 @@ const columns: any = [
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '内存',
|
||||
title: $gettext('Memory'),
|
||||
key: 'rss',
|
||||
minWidth: 100,
|
||||
ellipsis: { tooltip: true },
|
||||
@@ -81,7 +84,7 @@ const columns: any = [
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '启动时间',
|
||||
title: $gettext('Start Time'),
|
||||
key: 'start_time',
|
||||
width: 160,
|
||||
ellipsis: { tooltip: true },
|
||||
@@ -90,7 +93,7 @@ const columns: any = [
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
title: $gettext('Actions'),
|
||||
key: 'actions',
|
||||
width: 150,
|
||||
align: 'center',
|
||||
@@ -102,13 +105,13 @@ const columns: any = [
|
||||
onPositiveClick: () => {
|
||||
useRequest(process.kill(row.pid)).onSuccess(() => {
|
||||
refresh()
|
||||
window.$message.success(`进程 ${row.pid} 已终止`)
|
||||
window.$message.success($gettext('Process %{ pid } has been terminated', { pid: row.pid }))
|
||||
})
|
||||
}
|
||||
},
|
||||
{
|
||||
default: () => {
|
||||
return '确定终止进程 ' + row.pid + ' ?'
|
||||
return $gettext('Are you sure you want to terminate process %{ pid }?', { pid: row.pid })
|
||||
},
|
||||
trigger: () => {
|
||||
return h(
|
||||
@@ -118,7 +121,7 @@ const columns: any = [
|
||||
type: 'error'
|
||||
},
|
||||
{
|
||||
default: () => '终止',
|
||||
default: () => $gettext('Terminate'),
|
||||
icon: renderIcon('material-symbols:stop-circle-outline-rounded', { size: 14 })
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,38 +1,40 @@
|
||||
<script setup lang="ts">
|
||||
import { NButton, NDataTable, NPopconfirm } from 'naive-ui'
|
||||
import { useGettext } from 'vue3-gettext'
|
||||
|
||||
import task from '@/api/panel/task'
|
||||
import RealtimeLogModal from '@/components/common/RealtimeLogModal.vue'
|
||||
import { formatDateTime, renderIcon } from '@/utils'
|
||||
|
||||
const { $gettext } = useGettext()
|
||||
const logModal = ref(false)
|
||||
const logPath = ref('')
|
||||
|
||||
const columns: any = [
|
||||
{
|
||||
title: '任务名',
|
||||
title: $gettext('Task Name'),
|
||||
key: 'name',
|
||||
minWidth: 200,
|
||||
resizable: true,
|
||||
ellipsis: { tooltip: true }
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
title: $gettext('Status'),
|
||||
key: 'status',
|
||||
width: 150,
|
||||
ellipsis: { tooltip: true },
|
||||
render(row: any) {
|
||||
return row.status === 'finished'
|
||||
? '已完成'
|
||||
? $gettext('Completed')
|
||||
: row.status === 'waiting'
|
||||
? '等待中'
|
||||
? $gettext('Waiting')
|
||||
: row.status === 'failed'
|
||||
? '已失败'
|
||||
: '运行中'
|
||||
? $gettext('Failed')
|
||||
: $gettext('Running')
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '创建时间',
|
||||
title: $gettext('Creation Time'),
|
||||
key: 'created_at',
|
||||
width: 200,
|
||||
ellipsis: { tooltip: true },
|
||||
@@ -41,7 +43,7 @@ const columns: any = [
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '完成时间',
|
||||
title: $gettext('Completion Time'),
|
||||
key: 'updated_at',
|
||||
width: 200,
|
||||
ellipsis: { tooltip: true },
|
||||
@@ -50,7 +52,7 @@ const columns: any = [
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
title: $gettext('Actions'),
|
||||
key: 'actions',
|
||||
width: 200,
|
||||
align: 'center',
|
||||
@@ -70,7 +72,7 @@ const columns: any = [
|
||||
}
|
||||
},
|
||||
{
|
||||
default: () => '日志',
|
||||
default: () => $gettext('Logs'),
|
||||
icon: renderIcon('material-symbols:visibility', { size: 14 })
|
||||
}
|
||||
)
|
||||
@@ -83,7 +85,7 @@ const columns: any = [
|
||||
},
|
||||
{
|
||||
default: () => {
|
||||
return '确定要删除吗?'
|
||||
return $gettext('Are you sure you want to delete?')
|
||||
},
|
||||
trigger: () => {
|
||||
return h(
|
||||
@@ -94,7 +96,7 @@ const columns: any = [
|
||||
style: 'margin-left: 15px;'
|
||||
},
|
||||
{
|
||||
default: () => '删除',
|
||||
default: () => $gettext('Delete'),
|
||||
icon: renderIcon('material-symbols:delete-outline', { size: 14 })
|
||||
}
|
||||
)
|
||||
@@ -120,7 +122,7 @@ const { loading, data, page, total, pageSize, pageCount, refresh } = usePaginati
|
||||
const handleDelete = (id: number) => {
|
||||
useRequest(task.delete(id)).onSuccess(() => {
|
||||
refresh()
|
||||
window.$message.success('删除成功')
|
||||
window.$message.success($gettext('Deleted successfully'))
|
||||
})
|
||||
}
|
||||
|
||||
@@ -131,7 +133,7 @@ onMounted(() => {
|
||||
|
||||
<template>
|
||||
<n-flex vertical>
|
||||
<n-alert type="info">若日志无法加载,请关闭广告拦截应用!</n-alert>
|
||||
<n-alert type="info">{{ $gettext('If logs cannot be loaded, please disable ad blockers!') }}</n-alert>
|
||||
<n-data-table
|
||||
striped
|
||||
remote
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import type { RouteType } from '~/types/router'
|
||||
import { $gettext } from '@/utils/gettext'
|
||||
|
||||
const Layout = () => import('@/layout/IndexView.vue')
|
||||
|
||||
@@ -15,7 +16,7 @@ export default {
|
||||
path: '',
|
||||
component: () => import('./IndexView.vue'),
|
||||
meta: {
|
||||
title: '后台任务',
|
||||
title: $gettext('Background Tasks'),
|
||||
icon: 'mdi:timetable',
|
||||
role: ['admin'],
|
||||
requireAuth: true
|
||||
|
||||
@@ -6,12 +6,14 @@ defineOptions({
|
||||
import Editor from '@guolao/vue-monaco-editor'
|
||||
import type { MessageReactive } from 'naive-ui'
|
||||
import { NButton } from 'naive-ui'
|
||||
import { useGettext } from 'vue3-gettext'
|
||||
|
||||
import cert from '@/api/panel/cert'
|
||||
import dashboard from '@/api/panel/dashboard'
|
||||
import website from '@/api/panel/website'
|
||||
import ProxyBuilderModal from '@/views/website/ProxyBuilderModal.vue'
|
||||
|
||||
const { $gettext } = useGettext()
|
||||
let messageReactive: MessageReactive | null = null
|
||||
|
||||
const current = ref('listen')
|
||||
@@ -49,7 +51,7 @@ const { data: installedDbAndPhp } = useRequest(dashboard.installedDbAndPhp, {
|
||||
initialData: {
|
||||
php: [
|
||||
{
|
||||
label: '不使用',
|
||||
label: $gettext('Not used'),
|
||||
value: 0
|
||||
}
|
||||
],
|
||||
@@ -78,9 +80,9 @@ const rewriteOptions = computed(() => {
|
||||
const rewriteValue = ref(null)
|
||||
const title = computed(() => {
|
||||
if (setting.value) {
|
||||
return `编辑网站 - ${setting.value.name}`
|
||||
return $gettext('Edit Website - %{ name }', { name: setting.value.name })
|
||||
}
|
||||
return '编辑网站'
|
||||
return $gettext('Edit Website')
|
||||
})
|
||||
const certOptions = computed(() => {
|
||||
return certs.value.map((item: any) => ({
|
||||
@@ -110,14 +112,14 @@ const handleSave = () => {
|
||||
|
||||
useRequest(website.saveConfig(Number(id), setting.value)).onSuccess(() => {
|
||||
fetchSetting()
|
||||
window.$message.success('保存成功')
|
||||
window.$message.success($gettext('Saved successfully'))
|
||||
})
|
||||
}
|
||||
|
||||
const handleReset = () => {
|
||||
useRequest(website.resetConfig(Number(id))).onSuccess(() => {
|
||||
fetchSetting()
|
||||
window.$message.success('重置成功')
|
||||
window.$message.success($gettext('Reset successfully'))
|
||||
})
|
||||
}
|
||||
|
||||
@@ -128,13 +130,13 @@ const handleRewrite = (value: string) => {
|
||||
const isObtainCert = ref(false)
|
||||
const handleObtainCert = () => {
|
||||
isObtainCert.value = true
|
||||
messageReactive = window.$message.loading('请稍后...', {
|
||||
messageReactive = window.$message.loading($gettext('Please wait...'), {
|
||||
duration: 0
|
||||
})
|
||||
useRequest(website.obtainCert(Number(id)))
|
||||
.onSuccess(() => {
|
||||
fetchSetting()
|
||||
window.$message.success('签发成功')
|
||||
window.$message.success($gettext('Issued successfully'))
|
||||
})
|
||||
.onComplete(() => {
|
||||
isObtainCert.value = false
|
||||
@@ -148,14 +150,14 @@ const handleSelectCert = (value: number) => {
|
||||
setting.value.ssl_certificate = cert.cert
|
||||
setting.value.ssl_certificate_key = cert.key
|
||||
} else {
|
||||
window.$message.error('选择的证书无效')
|
||||
window.$message.error($gettext('The selected certificate is invalid'))
|
||||
}
|
||||
}
|
||||
|
||||
const clearLog = async () => {
|
||||
useRequest(website.clearLog(Number(id))).onSuccess(() => {
|
||||
fetchSetting()
|
||||
window.$message.success('清空成功')
|
||||
window.$message.success($gettext('Cleared successfully'))
|
||||
})
|
||||
}
|
||||
|
||||
@@ -173,16 +175,16 @@ const onCreateListen = () => {
|
||||
<template #action>
|
||||
<n-flex>
|
||||
<n-tag v-if="current === 'config'" type="warning">
|
||||
如果您修改了原文,那么点击保存后,其余的修改将不会生效!
|
||||
{{ $gettext('If you modify the original text, other modifications will not take effect after clicking save!') }}
|
||||
</n-tag>
|
||||
<n-popconfirm v-if="current === 'config'" @positive-click="handleReset">
|
||||
<template #trigger>
|
||||
<n-button type="success">
|
||||
<TheIcon :size="18" icon="material-symbols:refresh" />
|
||||
重置配置
|
||||
{{ $gettext('Reset Configuration') }}
|
||||
</n-button>
|
||||
</template>
|
||||
确定要重置配置吗?
|
||||
{{ $gettext('Are you sure you want to reset the configuration?') }}
|
||||
</n-popconfirm>
|
||||
<n-button
|
||||
v-if="current === 'rewrite'"
|
||||
@@ -191,7 +193,7 @@ const onCreateListen = () => {
|
||||
@click="proxyBuilderModal = true"
|
||||
>
|
||||
<TheIcon :size="18" icon="material-symbols:build-outline-rounded" />
|
||||
生成反代配置
|
||||
{{ $gettext('Generate Reverse Proxy Configuration') }}
|
||||
</n-button>
|
||||
<n-button
|
||||
v-if="current === 'https'"
|
||||
@@ -202,28 +204,28 @@ const onCreateListen = () => {
|
||||
@click="handleObtainCert"
|
||||
>
|
||||
<TheIcon :size="18" icon="material-symbols:done-rounded" />
|
||||
一键签发证书
|
||||
{{ $gettext('One-click Certificate Issuance') }}
|
||||
</n-button>
|
||||
<n-button v-if="current !== 'log'" class="ml-16" type="primary" @click="handleSave">
|
||||
<TheIcon :size="18" icon="material-symbols:save-outline" />
|
||||
保存
|
||||
{{ $gettext('Save') }}
|
||||
</n-button>
|
||||
<n-popconfirm v-if="current === 'log'" @positive-click="clearLog">
|
||||
<template #trigger>
|
||||
<n-button type="primary">
|
||||
<TheIcon :size="18" icon="material-symbols:delete-outline" />
|
||||
清空日志
|
||||
{{ $gettext('Clear Logs') }}
|
||||
</n-button>
|
||||
</template>
|
||||
确定要清空吗?
|
||||
{{ $gettext('Are you sure you want to clear?') }}
|
||||
</n-popconfirm>
|
||||
</n-flex>
|
||||
</template>
|
||||
|
||||
<n-tabs v-model:value="current" type="line" animated>
|
||||
<n-tab-pane name="listen" tab="域名监听">
|
||||
<n-tab-pane name="listen" :tab="$gettext('Domain & Listening')">
|
||||
<n-form v-if="setting">
|
||||
<n-form-item label="域名">
|
||||
<n-form-item :label="$gettext('Domain')">
|
||||
<n-dynamic-input
|
||||
v-model:value="setting.domains"
|
||||
placeholder="example.com"
|
||||
@@ -231,7 +233,7 @@ const onCreateListen = () => {
|
||||
show-sort-button
|
||||
/>
|
||||
</n-form-item>
|
||||
<n-form-item label="监听地址">
|
||||
<n-form-item :label="$gettext('Listening Address')">
|
||||
<n-dynamic-input
|
||||
v-model:value="setting.listens"
|
||||
show-sort-button
|
||||
@@ -249,31 +251,31 @@ const onCreateListen = () => {
|
||||
</n-form>
|
||||
<n-skeleton v-else text :repeat="10" />
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="basic" tab="基本设置">
|
||||
<n-tab-pane name="basic" :tab="$gettext('Basic Settings')">
|
||||
<n-form v-if="setting">
|
||||
<n-form-item label="网站目录">
|
||||
<n-input v-model:value="setting.path" placeholder="输入网站目录(绝对路径)" />
|
||||
<n-form-item :label="$gettext('Website Directory')">
|
||||
<n-input v-model:value="setting.path" :placeholder="$gettext('Enter website directory (absolute path)')" />
|
||||
</n-form-item>
|
||||
<n-form-item label="运行目录">
|
||||
<n-form-item :label="$gettext('Running Directory')">
|
||||
<n-input
|
||||
v-model:value="setting.root"
|
||||
placeholder="输入运行目录(Laravel 等程序需要)(绝对路径)"
|
||||
:placeholder="$gettext('Enter running directory (needed for Laravel etc.) (absolute path)')"
|
||||
/>
|
||||
</n-form-item>
|
||||
<n-form-item label="默认文档">
|
||||
<n-form-item :label="$gettext('Default Document')">
|
||||
<n-dynamic-tags v-model:value="setting.index" />
|
||||
</n-form-item>
|
||||
<n-form-item label="PHP 版本">
|
||||
<n-form-item :label="$gettext('PHP Version')">
|
||||
<n-select
|
||||
v-model:value="setting.php"
|
||||
:default-value="0"
|
||||
:options="installedDbAndPhp.php"
|
||||
placeholder="选择PHP版本"
|
||||
:placeholder="$gettext('Select PHP Version')"
|
||||
@keydown.enter.prevent
|
||||
>
|
||||
</n-select>
|
||||
</n-form-item>
|
||||
<n-form-item label="防跨站攻击(PHP)">
|
||||
<n-form-item :label="$gettext('Anti-XSS Attack (PHP)')">
|
||||
<n-switch v-model:value="setting.open_basedir" />
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
@@ -282,9 +284,9 @@ const onCreateListen = () => {
|
||||
<n-tab-pane name="https" tab="HTTPS">
|
||||
<n-flex vertical v-if="setting">
|
||||
<n-card v-if="setting.https && setting.ssl_issuer != ''">
|
||||
<n-descriptions title="证书信息" :column="2">
|
||||
<n-descriptions :title="$gettext('Certificate Information')" :column="2">
|
||||
<n-descriptions-item>
|
||||
<template #label>证书有效期</template>
|
||||
<template #label>{{ $gettext('Certificate Validity') }}</template>
|
||||
<n-flex>
|
||||
<n-tag>{{ setting.ssl_not_before }}</n-tag>
|
||||
-
|
||||
@@ -292,13 +294,13 @@ const onCreateListen = () => {
|
||||
</n-flex>
|
||||
</n-descriptions-item>
|
||||
<n-descriptions-item>
|
||||
<template #label>颁发者</template>
|
||||
<template #label>{{ $gettext('Issuer') }}</template>
|
||||
<n-flex>
|
||||
<n-tag>{{ setting.ssl_issuer }}</n-tag>
|
||||
</n-flex>
|
||||
</n-descriptions-item>
|
||||
<n-descriptions-item>
|
||||
<template #label>域名</template>
|
||||
<template #label>{{ $gettext('Domains') }}</template>
|
||||
<n-flex>
|
||||
<n-tag v-for="item in setting.ssl_dns_names" :key="item">{{ item }}</n-tag>
|
||||
</n-flex>
|
||||
@@ -313,10 +315,10 @@ const onCreateListen = () => {
|
||||
</n-card>
|
||||
<n-form>
|
||||
<n-grid :cols="24" :x-gap="24">
|
||||
<n-form-item-gi :span="12" label="总开关">
|
||||
<n-form-item-gi :span="12" :label="$gettext('Main Switch')">
|
||||
<n-switch v-model:value="setting.https" />
|
||||
</n-form-item-gi>
|
||||
<n-form-item-gi v-if="setting.https" :span="12" label="使用已有证书">
|
||||
<n-form-item-gi v-if="setting.https" :span="12" :label="$gettext('Use Existing Certificate')">
|
||||
<n-select
|
||||
v-model:value="selectedCert"
|
||||
:options="certOptions"
|
||||
@@ -329,27 +331,27 @@ const onCreateListen = () => {
|
||||
<n-form-item label="HSTS">
|
||||
<n-switch v-model:value="setting.hsts" />
|
||||
</n-form-item>
|
||||
<n-form-item label="HTTP 跳转">
|
||||
<n-form-item :label="$gettext('HTTP Redirect')">
|
||||
<n-switch v-model:value="setting.http_redirect" />
|
||||
</n-form-item>
|
||||
<n-form-item label="OCSP 装订">
|
||||
<n-form-item :label="$gettext('OCSP Stapling')">
|
||||
<n-switch v-model:value="setting.ocsp" />
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
<n-form v-if="setting.https">
|
||||
<n-form-item label="证书">
|
||||
<n-form-item :label="$gettext('Certificate')">
|
||||
<n-input
|
||||
v-model:value="setting.ssl_certificate"
|
||||
type="textarea"
|
||||
placeholder="输入 PEM 证书文件的内容"
|
||||
:placeholder="$gettext('Enter the content of the PEM certificate file')"
|
||||
:autosize="{ minRows: 10, maxRows: 15 }"
|
||||
/>
|
||||
</n-form-item>
|
||||
<n-form-item label="私钥">
|
||||
<n-form-item :label="$gettext('Private Key')">
|
||||
<n-input
|
||||
v-model:value="setting.ssl_certificate_key"
|
||||
type="textarea"
|
||||
placeholder="输入 KEY 私钥文件的内容"
|
||||
:placeholder="$gettext('Enter the content of the KEY private key file')"
|
||||
:autosize="{ minRows: 10, maxRows: 15 }"
|
||||
/>
|
||||
</n-form-item>
|
||||
@@ -357,10 +359,10 @@ const onCreateListen = () => {
|
||||
</n-flex>
|
||||
<n-skeleton v-else text :repeat="10" />
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="rewrite" tab="伪静态">
|
||||
<n-tab-pane name="rewrite" :tab="$gettext('Rewrite')">
|
||||
<n-flex vertical>
|
||||
<n-form label-placement="left" label-width="auto">
|
||||
<n-form-item label="预设">
|
||||
<n-form-item :label="$gettext('Presets')">
|
||||
<n-select
|
||||
v-model:value="rewriteValue"
|
||||
clearable
|
||||
@@ -383,10 +385,10 @@ const onCreateListen = () => {
|
||||
/>
|
||||
</n-flex>
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="config" tab="配置原文">
|
||||
<n-tab-pane name="config" :tab="$gettext('Configuration')">
|
||||
<n-flex vertical>
|
||||
<n-alert type="warning" w-full>
|
||||
如果您不了解配置规则,请勿随意修改,否则可能会导致网站无法访问或面板功能异常!如果已经遇到问题,可尝试重置配置!
|
||||
{{ $gettext('If you do not understand the configuration rules, please do not modify them arbitrarily, otherwise it may cause the website to be inaccessible or panel function abnormalities! If you have already encountered a problem, try resetting the configuration!') }}
|
||||
</n-alert>
|
||||
<Editor
|
||||
v-if="setting"
|
||||
@@ -402,25 +404,25 @@ const onCreateListen = () => {
|
||||
/>
|
||||
</n-flex>
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="log" tab="访问日志">
|
||||
<n-tab-pane name="log" :tab="$gettext('Access Log')">
|
||||
<n-flex vertical>
|
||||
<n-flex flex items-center>
|
||||
<n-alert type="warning" w-full>
|
||||
全部日志可通过下载文件
|
||||
{{ $gettext('All logs can be viewed by downloading the file') }}
|
||||
<n-tag>{{ setting.log }}</n-tag>
|
||||
查看。
|
||||
{{ $gettext('view') }}.
|
||||
</n-alert>
|
||||
</n-flex>
|
||||
<realtime-log :path="setting.log" />
|
||||
</n-flex>
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="error_log" tab="错误日志">
|
||||
<n-tab-pane name="error_log" :tab="$gettext('Error Log')">
|
||||
<n-flex vertical>
|
||||
<n-flex flex items-center>
|
||||
<n-alert type="warning" w-full>
|
||||
全部日志可通过下载文件
|
||||
{{ $gettext('All logs can be viewed by downloading the file') }}
|
||||
<n-tag>{{ setting.error_log }}</n-tag>
|
||||
查看。
|
||||
{{ $gettext('view') }}.
|
||||
</n-alert>
|
||||
</n-flex>
|
||||
<realtime-log :path="setting.error_log" />
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<script setup lang="ts">
|
||||
import { NInput } from 'naive-ui'
|
||||
import { useGettext } from 'vue3-gettext'
|
||||
|
||||
const { $gettext } = useGettext()
|
||||
const show = defineModel<boolean>('show', { type: Boolean, required: true })
|
||||
const config = defineModel<string>('config', { type: String, required: true })
|
||||
const setting = ref({
|
||||
@@ -18,32 +20,32 @@ const setting = ref({
|
||||
|
||||
const handleSubmit = () => {
|
||||
if (setting.value.cache && setting.value.no_buffer) {
|
||||
window.$message.error('禁用缓冲区与启用缓存不能同时使用')
|
||||
window.$message.error($gettext('Disabled buffer and enabled cache cannot be used simultaneously'))
|
||||
return
|
||||
}
|
||||
if (setting.value.match.length === 0) {
|
||||
window.$message.error('匹配表达式不能为空')
|
||||
window.$message.error($gettext('Matching expression cannot be empty'))
|
||||
return
|
||||
}
|
||||
if (setting.value.proxy_pass.length === 0) {
|
||||
window.$message.error('代理地址不能为空')
|
||||
window.$message.error($gettext('Proxy address cannot be empty'))
|
||||
return
|
||||
}
|
||||
if (setting.value.match_type === '=' && setting.value.match[0] !== '/') {
|
||||
window.$message.error('精确匹配的表达式必须以 / 开头')
|
||||
window.$message.error($gettext('Exact match expression must start with /'))
|
||||
return
|
||||
}
|
||||
if (
|
||||
(setting.value.match_type === '^~' || setting.value.match_type === ' ') &&
|
||||
setting.value.match[0] !== '/'
|
||||
) {
|
||||
window.$message.error('前缀匹配的表达式必须以 / 开头')
|
||||
window.$message.error($gettext('Prefix match expression must start with /'))
|
||||
return
|
||||
}
|
||||
try {
|
||||
new URL(setting.value.proxy_pass)
|
||||
} catch (error) {
|
||||
window.$message.error('代理地址格式错误')
|
||||
window.$message.error($gettext('Proxy address format error'))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -95,7 +97,7 @@ const handleSubmit = () => {
|
||||
builder += `}\n`
|
||||
config.value = builder
|
||||
show.value = false
|
||||
window.$message.success('配置生成成功')
|
||||
window.$message.success($gettext('Configuration generated successfully'))
|
||||
}
|
||||
|
||||
// 通过代理地址尝试自动获取发送域名
|
||||
@@ -116,75 +118,75 @@ watch(
|
||||
<n-modal
|
||||
v-model:show="show"
|
||||
preset="card"
|
||||
title="生成反代配置"
|
||||
:title="$gettext('Generate Reverse Proxy Configuration')"
|
||||
style="width: 40vw"
|
||||
size="huge"
|
||||
:bordered="false"
|
||||
:segmented="false"
|
||||
>
|
||||
<n-flex vertical>
|
||||
<n-alert type="warning"> 生成反代配置后,原有伪静态规则将被覆盖。 </n-alert>
|
||||
<n-alert type="warning"> {{ $gettext('After generating the reverse proxy configuration, the original rewrite rules will be overwritten.') }} </n-alert>
|
||||
<n-alert type="info">
|
||||
如需反代 JS/CSS 等静态资源请移除配置原文中的不记录静态日志部分。
|
||||
{{ $gettext('If you need to proxy static resources like JS/CSS, please remove the static log recording part from the original configuration.') }}
|
||||
</n-alert>
|
||||
<n-form inline>
|
||||
<n-form-item label="自动刷新解析">
|
||||
<n-form-item :label="$gettext('Auto Refresh Resolution')">
|
||||
<n-switch v-model:value="setting.auto_resolve" />
|
||||
</n-form-item>
|
||||
<n-form-item label="启用 SNI">
|
||||
<n-form-item :label="$gettext('Enable SNI')">
|
||||
<n-switch v-model:value="setting.sni" />
|
||||
</n-form-item>
|
||||
<n-form-item label="启用缓存">
|
||||
<n-form-item :label="$gettext('Enable Cache')">
|
||||
<n-switch v-model:value="setting.cache" />
|
||||
</n-form-item>
|
||||
<n-form-item label="禁用缓冲区">
|
||||
<n-form-item :label="$gettext('Disable Buffer')">
|
||||
<n-switch v-model:value="setting.no_buffer" />
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
<n-form>
|
||||
<n-form-item label="匹配方式">
|
||||
<n-form-item :label="$gettext('Match Type')">
|
||||
<n-select
|
||||
v-model:value="setting.match_type"
|
||||
:options="[
|
||||
{ label: '精确匹配 (=)', value: '=' },
|
||||
{ label: '优先前缀匹配 (^~)', value: '^~' },
|
||||
{ label: '普通前缀匹配 ( )', value: ' ' },
|
||||
{ label: '区分大小写正则匹配 (~)', value: '~' },
|
||||
{ label: '不区分大小写正则匹配 (~*)', value: '~*' }
|
||||
{ label: $gettext('Exact Match (=)'), value: '=' },
|
||||
{ label: $gettext('Priority Prefix Match (^~)'), value: '^~' },
|
||||
{ label: $gettext('Normal Prefix Match ( )'), value: ' ' },
|
||||
{ label: $gettext('Case Sensitive Regex Match (~)'), value: '~' },
|
||||
{ label: $gettext('Case Insensitive Regex Match (~*)'), value: '~*' }
|
||||
]"
|
||||
/>
|
||||
</n-form-item>
|
||||
<n-form-item label="匹配表达式">
|
||||
<n-form-item :label="$gettext('Match Expression')">
|
||||
<n-input v-model:value="setting.match" placeholder="/" />
|
||||
</n-form-item>
|
||||
<n-form-item label="代理地址">
|
||||
<n-form-item :label="$gettext('Proxy Address')">
|
||||
<n-input v-model:value="setting.proxy_pass" placeholder="http://127.0.0.1:3000" />
|
||||
</n-form-item>
|
||||
<n-form-item label="发送域名">
|
||||
<n-form-item :label="$gettext('Send Domain')">
|
||||
<n-input v-model:value="setting.host" placeholder="$host" />
|
||||
</n-form-item>
|
||||
<n-form-item v-if="setting.cache" label="缓存时间">
|
||||
<n-form-item v-if="setting.cache" :label="$gettext('Cache Time')">
|
||||
<n-input-number
|
||||
v-model:value="setting.cache_time"
|
||||
w-full
|
||||
:min="1"
|
||||
:step="1"
|
||||
:placeholder="'缓存时间(分钟)'"
|
||||
:placeholder="$gettext('Cache time (minutes)')"
|
||||
>
|
||||
<template #suffix> 分钟 </template>
|
||||
<template #suffix> {{ $gettext('minutes') }} </template>
|
||||
</n-input-number>
|
||||
</n-form-item>
|
||||
<n-form-item label="内容替换">
|
||||
<n-form-item :label="$gettext('Content Replacement')">
|
||||
<n-dynamic-input
|
||||
v-model:value="setting.replace"
|
||||
preset="pair"
|
||||
:max="5"
|
||||
key-placeholder="目标内容"
|
||||
value-placeholder="替换内容"
|
||||
:key-placeholder="$gettext('Target content')"
|
||||
:value-placeholder="$gettext('Replacement content')"
|
||||
/>
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
<n-button type="info" block @click="handleSubmit"> 提交 </n-button>
|
||||
<n-button type="info" block @click="handleSubmit"> {{ $gettext('Submit') }} </n-button>
|
||||
</n-flex>
|
||||
</n-modal>
|
||||
</template>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import type { RouteType } from '~/types/router'
|
||||
import { $gettext } from '@/utils/gettext'
|
||||
|
||||
const Layout = () => import('@/layout/IndexView.vue')
|
||||
|
||||
@@ -15,7 +16,7 @@ export default {
|
||||
path: '',
|
||||
component: () => import('./IndexView.vue'),
|
||||
meta: {
|
||||
title: '网站',
|
||||
title: $gettext('Websites'),
|
||||
icon: 'mdi:web',
|
||||
role: ['admin'],
|
||||
requireAuth: true
|
||||
@@ -27,7 +28,7 @@ export default {
|
||||
component: () => import('./EditView.vue'),
|
||||
isHidden: true,
|
||||
meta: {
|
||||
title: '编辑网站',
|
||||
title: $gettext('Edit Website'),
|
||||
icon: 'mdi:web',
|
||||
role: ['admin'],
|
||||
requireAuth: true
|
||||
|
||||
Reference in New Issue
Block a user