浏览代码

feat: support wildcard certificate #190

0xJacky 1 年之前
父节点
当前提交
a7e523b47b

+ 1 - 0
api/certificate/issue.go

@@ -121,6 +121,7 @@ func IssueCert(c *gin.Context) {
 		Domains:               payload.ServerName,
 		Domains:               payload.ServerName,
 		SSLCertificatePath:    sslCertificatePath,
 		SSLCertificatePath:    sslCertificatePath,
 		SSLCertificateKeyPath: sslCertificateKeyPath,
 		SSLCertificateKeyPath: sslCertificateKeyPath,
+		AutoCert:              model.AutoCertEnabled,
 	})
 	})
 
 
 	if err != nil {
 	if err != nil {

+ 6 - 1
app/src/components/CodeEditor/CodeEditor.vue

@@ -8,6 +8,7 @@ const props = defineProps<{
   content?: string
   content?: string
   defaultHeight?: string
   defaultHeight?: string
   readonly?: boolean
   readonly?: boolean
+  placeholder?: string
 }>()
 }>()
 
 
 const emit = defineEmits(['update:content'])
 const emit = defineEmits(['update:content'])
@@ -32,9 +33,13 @@ const value = computed({
       borderRadius: '5px',
       borderRadius: '5px',
     }"
     }"
     :readonly="readonly"
     :readonly="readonly"
+    :placeholder="placeholder"
   />
   />
 </template>
 </template>
 
 
 <style scoped>
 <style scoped>
-
+:deep(.ace_placeholder) {
+  z-index: 1;
+  position: relative;
+}
 </style>
 </style>

+ 91 - 74
app/src/language/en/app.po

@@ -26,17 +26,11 @@ msgstr "Action"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
-#: src/views/certificate/Certificate.vue:120
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:115
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:308
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:305
 msgid "Add"
 msgid "Add"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
-#, fuzzy
-msgid "Add Certificate"
-msgstr "Certificate Status"
-
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "Add Directive Below"
 msgstr "Add Directive Below"
@@ -46,11 +40,11 @@ msgstr "Add Directive Below"
 msgid "Add Location"
 msgid "Add Location"
 msgstr "Add Location"
 msgstr "Add Location"
 
 
-#: src/routes/index.ts:71 src/views/domain/DomainAdd.vue:91
+#: src/routes/index.ts:71 src/views/domain/DomainAdd.vue:96
 msgid "Add Site"
 msgid "Add Site"
 msgstr "Add Site"
 msgstr "Add Site"
 
 
-#: src/views/certificate/DNSChallenge.vue:95
+#: src/views/certificate/DNSChallenge.vue:94
 #, fuzzy
 #, fuzzy
 msgid "Additional"
 msgid "Additional"
 msgstr "Add Location"
 msgstr "Add Location"
@@ -87,7 +81,7 @@ msgid "Are you sure you want to clear the record of chat?"
 msgstr "Are you sure you want to remove this directive?"
 msgstr "Are you sure you want to remove this directive?"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
-#: src/views/domain/DomainList.vue:144
+#: src/views/domain/DomainList.vue:147
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to delete?"
 msgid "Are you sure you want to delete?"
 msgstr "Are you sure you want to remove this directive?"
 msgstr "Are you sure you want to remove this directive?"
@@ -109,8 +103,8 @@ msgstr ""
 msgid "Assistant"
 msgid "Assistant"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:104
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:118
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:108
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
 msgid "Author"
 msgid "Author"
 msgstr ""
 msgstr ""
 
 
@@ -122,15 +116,15 @@ msgstr ""
 msgid "Auto Refresh"
 msgid "Auto Refresh"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:76
+#: src/views/domain/cert/components/ObtainCert.vue:75
 msgid "Auto-renewal disabled for %{name}"
 msgid "Auto-renewal disabled for %{name}"
 msgstr "Auto-renewal disabled for %{name}"
 msgstr "Auto-renewal disabled for %{name}"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:69
+#: src/views/domain/cert/components/ObtainCert.vue:68
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr "Auto-renewal enabled for %{name}"
 msgstr "Auto-renewal enabled for %{name}"
 
 
-#: src/views/certificate/CertificateEditor.vue:205
+#: src/views/certificate/CertificateEditor.vue:207
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 msgid "Back"
 msgid "Back"
@@ -141,7 +135,7 @@ msgstr "Back"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "Back"
 msgstr "Back"
 
 
-#: src/views/domain/DomainAdd.vue:97
+#: src/views/domain/DomainAdd.vue:102
 msgid "Base information"
 msgid "Base information"
 msgstr "Base information"
 msgstr "Base information"
 
 
@@ -174,10 +168,10 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
-#: src/views/domain/cert/components/ObtainCert.vue:150
+#: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/RightSettings.vue:52
 #: src/views/domain/components/RightSettings.vue:52
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:216
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:213
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 msgid "Cancel"
 msgid "Cancel"
 msgstr "Cancel"
 msgstr "Cancel"
@@ -250,11 +244,11 @@ msgstr "Disabled successfully"
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:284
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:281
 msgid "Comments"
 msgid "Comments"
 msgstr "Comments"
 msgstr "Comments"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:82
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Config Templates"
 msgid "Config Templates"
 msgstr "Configurations"
 msgstr "Configurations"
@@ -263,7 +257,7 @@ msgstr "Configurations"
 msgid "Configuration file is test successful"
 msgid "Configuration file is test successful"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/DomainAdd.vue:103
+#: src/views/domain/DomainAdd.vue:108
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "Configuration Name"
 msgstr "Configuration Name"
 
 
@@ -271,7 +265,7 @@ msgstr "Configuration Name"
 msgid "Configurations"
 msgid "Configurations"
 msgstr "Configurations"
 msgstr "Configurations"
 
 
-#: src/views/domain/DomainAdd.vue:98
+#: src/views/domain/DomainAdd.vue:103
 msgid "Configure SSL"
 msgid "Configure SSL"
 msgstr "Configure SSL"
 msgstr "Configure SSL"
 
 
@@ -297,7 +291,7 @@ msgstr "CPU Status"
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU:"
 msgstr "CPU:"
 
 
-#: src/views/domain/DomainAdd.vue:156
+#: src/views/domain/DomainAdd.vue:161
 msgid "Create Another"
 msgid "Create Another"
 msgstr "Create Another"
 msgstr "Create Another"
 
 
@@ -321,8 +315,8 @@ msgstr ""
 msgid "Current Version"
 msgid "Current Version"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:241
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:126
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:238
 msgid "Custom"
 msgid "Custom"
 msgstr ""
 msgstr ""
 
 
@@ -335,12 +329,12 @@ msgid "Database (Optional, default: database)"
 msgstr "Database (Optional, default: database)"
 msgstr "Database (Optional, default: database)"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
-#: src/views/domain/DomainList.vue:153
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:259
+#: src/views/domain/DomainList.vue:156
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:256
 msgid "Delete"
 msgid "Delete"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/DomainList.vue:77
+#: src/views/domain/DomainList.vue:81
 msgid "Delete site: %{site_name}"
 msgid "Delete site: %{site_name}"
 msgstr ""
 msgstr ""
 
 
@@ -367,8 +361,8 @@ msgstr ""
 msgid "Deploy successfully"
 msgid "Deploy successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:109
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:123
 msgid "Description"
 msgid "Description"
 msgstr ""
 msgstr ""
 
 
@@ -393,22 +387,22 @@ msgstr "Directives"
 msgid "Directory"
 msgid "Directory"
 msgstr "Directive"
 msgstr "Directive"
 
 
-#: src/views/domain/DomainList.vue:36
+#: src/views/domain/DomainList.vue:125
 #, fuzzy
 #, fuzzy
 msgid "Disable"
 msgid "Disable"
 msgstr "Disabled"
 msgstr "Disabled"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:78
+#: src/views/domain/cert/components/ObtainCert.vue:77
 msgid "Disable auto-renewal failed for %{name}"
 msgid "Disable auto-renewal failed for %{name}"
 msgstr "Disable auto-renewal failed for %{name}"
 msgstr "Disable auto-renewal failed for %{name}"
 
 
 #: src/views/domain/cert/ChangeCert.vue:48 src/views/domain/DomainEdit.vue:190
 #: src/views/domain/cert/ChangeCert.vue:48 src/views/domain/DomainEdit.vue:190
-#: src/views/domain/DomainList.vue:122
+#: src/views/domain/DomainList.vue:36
 msgid "Disabled"
 msgid "Disabled"
 msgstr "Disabled"
 msgstr "Disabled"
 
 
 #: src/views/domain/components/RightSettings.vue:39
 #: src/views/domain/components/RightSettings.vue:39
-#: src/views/domain/DomainList.vue:67
+#: src/views/domain/DomainList.vue:70
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "Disabled successfully"
 msgstr "Disabled successfully"
 
 
@@ -436,7 +430,7 @@ msgid_plural "Do you want to deploy this file to remote servers?"
 msgstr[0] "Are you sure you want to remove this directive?"
 msgstr[0] "Are you sure you want to remove this directive?"
 msgstr[1] "Are you sure you want to remove this directive?"
 msgstr[1] "Are you sure you want to remove this directive?"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:146
+#: src/views/domain/cert/components/ObtainCert.vue:133
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
 msgstr ""
 msgstr ""
 
 
@@ -455,12 +449,12 @@ msgstr "Are you sure you want to remove this directive?"
 msgid "Do you want to enable TLS?"
 msgid "Do you want to enable TLS?"
 msgstr "Are you sure you want to remove this directive?"
 msgstr "Are you sure you want to remove this directive?"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:209
 #, fuzzy
 #, fuzzy
 msgid "Do you want to remove this server?"
 msgid "Do you want to remove this server?"
 msgstr "Are you sure you want to remove this directive?"
 msgstr "Are you sure you want to remove this directive?"
 
 
-#: src/views/domain/DomainAdd.vue:146
+#: src/views/domain/DomainAdd.vue:151
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr "Domain Config Created Successfully"
 msgstr "Domain Config Created Successfully"
 
 
@@ -481,7 +475,7 @@ msgid "Dry run mode enabled"
 msgstr ""
 msgstr ""
 
 
 #: src/views/domain/components/SiteDuplicate.vue:128
 #: src/views/domain/components/SiteDuplicate.vue:128
-#: src/views/domain/DomainList.vue:138
+#: src/views/domain/DomainList.vue:141
 msgid "Duplicate"
 msgid "Duplicate"
 msgstr ""
 msgstr ""
 
 
@@ -521,7 +515,7 @@ msgstr "Edit Site"
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "Email (*)"
 msgstr "Email (*)"
 
 
-#: src/views/domain/DomainList.vue:32
+#: src/views/domain/DomainList.vue:133
 #, fuzzy
 #, fuzzy
 msgid "Enable"
 msgid "Enable"
 msgstr "Enabled"
 msgstr "Enabled"
@@ -534,7 +528,7 @@ msgstr ""
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:71
+#: src/views/domain/cert/components/ObtainCert.vue:70
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Enable auto-renewal failed for %{name}"
 msgstr "Enable auto-renewal failed for %{name}"
 
 
@@ -547,20 +541,20 @@ msgstr "Enable failed"
 msgid "Enable successfully"
 msgid "Enable successfully"
 msgstr "Enabled successfully"
 msgstr "Enabled successfully"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:236
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:233
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "Enable TLS"
 msgstr "Enable TLS"
 
 
 #: src/views/domain/cert/ChangeCert.vue:44
 #: src/views/domain/cert/ChangeCert.vue:44
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/domain/DomainEdit.vue:184 src/views/domain/DomainList.vue:130
+#: src/views/domain/DomainEdit.vue:184 src/views/domain/DomainList.vue:32
 msgid "Enabled"
 msgid "Enabled"
 msgstr "Enabled"
 msgstr "Enabled"
 
 
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/SiteDuplicate.vue:100
 #: src/views/domain/components/SiteDuplicate.vue:100
-#: src/views/domain/DomainAdd.vue:45 src/views/domain/DomainList.vue:58
+#: src/views/domain/DomainAdd.vue:45 src/views/domain/DomainList.vue:60
 msgid "Enabled successfully"
 msgid "Enabled successfully"
 msgstr "Enabled successfully"
 msgstr "Enabled successfully"
 
 
@@ -604,12 +598,12 @@ msgid "Export"
 msgstr ""
 msgstr ""
 
 
 #: src/views/domain/components/RightSettings.vue:42
 #: src/views/domain/components/RightSettings.vue:42
-#: src/views/domain/DomainList.vue:70
+#: src/views/domain/DomainList.vue:74
 msgid "Failed to disable %{msg}"
 msgid "Failed to disable %{msg}"
 msgstr "Failed to disable %{msg}"
 msgstr "Failed to disable %{msg}"
 
 
 #: src/views/domain/components/RightSettings.vue:33
 #: src/views/domain/components/RightSettings.vue:33
-#: src/views/domain/DomainList.vue:61
+#: src/views/domain/DomainList.vue:64
 msgid "Failed to enable %{msg}"
 msgid "Failed to enable %{msg}"
 msgstr "Failed to enable %{msg}"
 msgstr "Failed to enable %{msg}"
 
 
@@ -637,7 +631,7 @@ msgstr "File Not Found"
 msgid "Filter"
 msgid "Filter"
 msgstr ""
 msgstr ""
 
 
-#: src/language/constants.ts:23 src/views/domain/DomainAdd.vue:99
+#: src/language/constants.ts:23 src/views/domain/DomainAdd.vue:104
 msgid "Finished"
 msgid "Finished"
 msgstr "Finished"
 msgstr "Finished"
 
 
@@ -717,6 +711,15 @@ msgstr ""
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr ""
 msgstr ""
 
 
+#: src/views/certificate/Certificate.vue:120
+msgid "Import"
+msgstr ""
+
+#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
+#, fuzzy
+msgid "Import Certificate"
+msgstr "Certificate Status"
+
 #: src/constants/index.ts:19
 #: src/constants/index.ts:19
 msgid "Info"
 msgid "Info"
 msgstr ""
 msgstr ""
@@ -763,6 +766,12 @@ msgstr "Leave blank for no change"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgstr ""
 msgstr ""
 
 
+#: src/views/certificate/CertificateEditor.vue:177
+#: src/views/certificate/CertificateEditor.vue:185
+#, fuzzy
+msgid "Leave blank will not change anything"
+msgstr "Leave blank for no change"
+
 #: src/views/system/About.vue:50
 #: src/views/system/About.vue:50
 #, fuzzy
 #, fuzzy
 msgid "License"
 msgid "License"
@@ -791,7 +800,7 @@ msgstr "Location"
 msgid "Locations"
 msgid "Locations"
 msgstr "Locations"
 msgstr "Locations"
 
 
-#: src/views/certificate/CertificateEditor.vue:193
+#: src/views/certificate/CertificateEditor.vue:195
 #, fuzzy
 #, fuzzy
 msgid "Log"
 msgid "Log"
 msgstr "Login"
 msgstr "Login"
@@ -821,7 +830,7 @@ msgstr ""
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "Manage Configs"
 msgstr "Manage Configs"
 
 
-#: src/routes/index.ts:59 src/views/domain/DomainList.vue:102
+#: src/routes/index.ts:59 src/views/domain/DomainList.vue:105
 msgid "Manage Sites"
 msgid "Manage Sites"
 msgstr "Manage Sites"
 msgstr "Manage Sites"
 
 
@@ -854,7 +863,7 @@ msgstr "Modify Config"
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
 
 
-#: src/views/domain/DomainAdd.vue:153
+#: src/views/domain/DomainAdd.vue:158
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "Modify Config"
 msgstr "Modify Config"
 
 
@@ -893,8 +902,8 @@ msgstr "Network Total Send"
 msgid "New version released"
 msgid "New version released"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:216
-#: src/views/domain/DomainAdd.vue:140
+#: src/views/domain/cert/components/ObtainCert.vue:203
+#: src/views/domain/DomainAdd.vue:145
 msgid "Next"
 msgid "Next"
 msgstr "Next"
 msgstr "Next"
 
 
@@ -911,7 +920,7 @@ msgstr ""
 msgid "Nginx Configuration Parse Error"
 msgid "Nginx Configuration Parse Error"
 msgstr "Configuration Name"
 msgstr "Configuration Name"
 
 
-#: src/components/NginxControl/NginxControl.vue:67
+#: src/components/NginxControl/NginxControl.vue:65
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr ""
 msgstr ""
 
 
@@ -923,7 +932,7 @@ msgstr ""
 msgid "Nginx Log"
 msgid "Nginx Log"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NginxControl/NginxControl.vue:23
+#: src/components/NginxControl/NginxControl.vue:25
 #, fuzzy
 #, fuzzy
 msgid "Nginx reloaded successfully"
 msgid "Nginx reloaded successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
@@ -936,7 +945,7 @@ msgstr "Saved successfully"
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/Notification/Notification.vue:84
 #: src/components/Notification/Notification.vue:84
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
-#: src/views/domain/DomainList.vue:142
+#: src/views/domain/DomainList.vue:145
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/notification/Notification.vue:71
 #: src/views/notification/Notification.vue:71
@@ -974,7 +983,7 @@ msgstr "Certificate is valid"
 msgid "Notifications"
 msgid "Notifications"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:191
+#: src/views/domain/cert/components/ObtainCert.vue:178
 #, fuzzy
 #, fuzzy
 msgid "Obtain certificate"
 msgid "Obtain certificate"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
@@ -995,11 +1004,11 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
-#: src/views/domain/cert/components/ObtainCert.vue:149
+#: src/views/domain/cert/components/ObtainCert.vue:136
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/RightSettings.vue:51
 #: src/views/domain/components/RightSettings.vue:51
-#: src/views/domain/DomainList.vue:143
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:215
+#: src/views/domain/DomainList.vue:146
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/notification/Notification.vue:72
 #: src/views/notification/Notification.vue:72
 msgid "OK"
 msgid "OK"
@@ -1159,11 +1168,11 @@ msgid "Release Note"
 msgstr ""
 msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:266
 #: src/components/ChatGPT/ChatGPT.vue:266
-#: src/components/NginxControl/NginxControl.vue:102
+#: src/components/NginxControl/NginxControl.vue:100
 msgid "Reload"
 msgid "Reload"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NginxControl/NginxControl.vue:76
+#: src/components/NginxControl/NginxControl.vue:74
 msgid "Reloading"
 msgid "Reloading"
 msgstr ""
 msgstr ""
 
 
@@ -1205,11 +1214,11 @@ msgstr ""
 msgid "Reset"
 msgid "Reset"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NginxControl/NginxControl.vue:95
+#: src/components/NginxControl/NginxControl.vue:93
 msgid "Restart"
 msgid "Restart"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NginxControl/NginxControl.vue:81
+#: src/components/NginxControl/NginxControl.vue:79
 msgid "Restarting"
 msgid "Restarting"
 msgstr ""
 msgstr ""
 
 
@@ -1218,12 +1227,12 @@ msgstr ""
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "Advance Mode"
 msgstr "Advance Mode"
 
 
-#: src/components/NginxControl/NginxControl.vue:71
+#: src/components/NginxControl/NginxControl.vue:69
 msgid "Running"
 msgid "Running"
 msgstr ""
 msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:212
+#: src/views/certificate/CertificateEditor.vue:214
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/preference/Preference.vue:113
 #: src/views/preference/Preference.vue:113
@@ -1266,13 +1275,13 @@ msgstr ""
 msgid "Send"
 msgid "Send"
 msgstr "Send"
 msgstr "Send"
 
 
-#: src/components/NginxControl/NginxControl.vue:29
+#: src/components/NginxControl/NginxControl.vue:31
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
-#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:79
+#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
 #: src/views/other/Install.vue:72 src/views/preference/Preference.vue:60
 #: src/views/other/Install.vue:72 src/views/preference/Preference.vue:60
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1282,12 +1291,12 @@ msgstr "Server error"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Server Info"
 msgstr "Server Info"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:115
+#: src/views/domain/cert/components/ObtainCert.vue:102
 msgid "server_name not found in directives"
 msgid "server_name not found in directives"
 msgstr "server_name not found in directives"
 msgstr "server_name not found in directives"
 
 
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
-#: src/views/domain/DomainAdd.vue:119
+#: src/views/domain/DomainAdd.vue:124
 msgid "server_name parameter is required"
 msgid "server_name parameter is required"
 msgstr "server_name parameter is required"
 msgstr "server_name parameter is required"
 
 
@@ -1321,7 +1330,7 @@ msgstr "Sites List"
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
 
 
-#: src/views/certificate/CertificateEditor.vue:179
+#: src/views/certificate/CertificateEditor.vue:180
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
@@ -1353,7 +1362,7 @@ msgstr "Enabled"
 msgid "Status"
 msgid "Status"
 msgstr "Status"
 msgstr "Status"
 
 
-#: src/components/NginxControl/NginxControl.vue:86
+#: src/components/NginxControl/NginxControl.vue:84
 msgid "Stopped"
 msgid "Stopped"
 msgstr ""
 msgstr ""
 
 
@@ -1510,7 +1519,7 @@ msgstr "Username (*)"
 msgid "Valid"
 msgid "Valid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:101
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
 msgid "View"
 msgid "View"
 msgstr ""
 msgstr ""
 
 
@@ -1521,7 +1530,7 @@ msgstr "Certificate is valid"
 
 
 #: src/constants/index.ts:18 src/views/config/InspectConfig.vue:36
 #: src/constants/index.ts:18 src/views/config/InspectConfig.vue:36
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
-#: src/views/domain/DomainAdd.vue:114
+#: src/views/domain/DomainAdd.vue:119
 msgid "Warning"
 msgid "Warning"
 msgstr "Warning"
 msgstr "Warning"
 
 
@@ -1531,7 +1540,7 @@ msgid ""
 "ownership verification."
 "ownership verification."
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:147
+#: src/views/domain/cert/components/ObtainCert.vue:134
 msgid ""
 msgid ""
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "Nginx. Are you sure you want to continue?"
 "Nginx. Are you sure you want to continue?"
@@ -1563,6 +1572,14 @@ msgstr ""
 msgid "You can check Nginx UI upgrade at this page."
 msgid "You can check Nginx UI upgrade at this page."
 msgstr ""
 msgstr ""
 
 
+#, fuzzy
+#~ msgid "Add Certificate"
+#~ msgstr "Certificate Status"
+
+#, fuzzy
+#~ msgid "Leave blank will not change anything."
+#~ msgstr "Leave blank for no change"
+
 #, fuzzy
 #, fuzzy
 #~ msgid "Renew certificate"
 #~ msgid "Renew certificate"
 #~ msgstr "Certificate is valid"
 #~ msgstr "Certificate is valid"

+ 92 - 74
app/src/language/es/app.po

@@ -31,17 +31,11 @@ msgstr "Acción"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
-#: src/views/certificate/Certificate.vue:120
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:115
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:308
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:305
 msgid "Add"
 msgid "Add"
 msgstr "Agregar"
 msgstr "Agregar"
 
 
-#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
-#, fuzzy
-msgid "Add Certificate"
-msgstr "Estado del Certificado"
-
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "Añadir directiva a continuación"
 msgstr "Añadir directiva a continuación"
@@ -51,11 +45,11 @@ msgstr "Añadir directiva a continuación"
 msgid "Add Location"
 msgid "Add Location"
 msgstr "Agregar Ubicación"
 msgstr "Agregar Ubicación"
 
 
-#: src/routes/index.ts:71 src/views/domain/DomainAdd.vue:91
+#: src/routes/index.ts:71 src/views/domain/DomainAdd.vue:96
 msgid "Add Site"
 msgid "Add Site"
 msgstr "Agregar Sitio"
 msgstr "Agregar Sitio"
 
 
-#: src/views/certificate/DNSChallenge.vue:95
+#: src/views/certificate/DNSChallenge.vue:94
 msgid "Additional"
 msgid "Additional"
 msgstr "Adicional"
 msgstr "Adicional"
 
 
@@ -90,7 +84,7 @@ msgid "Are you sure you want to clear the record of chat?"
 msgstr "¿Está seguro de que desea borrar el registro del chat?"
 msgstr "¿Está seguro de que desea borrar el registro del chat?"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
-#: src/views/domain/DomainList.vue:144
+#: src/views/domain/DomainList.vue:147
 msgid "Are you sure you want to delete?"
 msgid "Are you sure you want to delete?"
 msgstr "¿Está seguro de que quiere borrar?"
 msgstr "¿Está seguro de que quiere borrar?"
 
 
@@ -110,8 +104,8 @@ msgstr "Preguntar por ayuda a ChatGPT"
 msgid "Assistant"
 msgid "Assistant"
 msgstr "Asistente"
 msgstr "Asistente"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:104
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:118
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:108
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
 msgid "Author"
 msgid "Author"
 msgstr "Autor"
 msgstr "Autor"
 
 
@@ -123,15 +117,15 @@ msgstr "Certificado automático"
 msgid "Auto Refresh"
 msgid "Auto Refresh"
 msgstr "Actualización automática"
 msgstr "Actualización automática"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:76
+#: src/views/domain/cert/components/ObtainCert.vue:75
 msgid "Auto-renewal disabled for %{name}"
 msgid "Auto-renewal disabled for %{name}"
 msgstr "Renovación automática deshabilitada por %{name}"
 msgstr "Renovación automática deshabilitada por %{name}"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:69
+#: src/views/domain/cert/components/ObtainCert.vue:68
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr "Renovación automática habilitada por %{name}"
 msgstr "Renovación automática habilitada por %{name}"
 
 
-#: src/views/certificate/CertificateEditor.vue:205
+#: src/views/certificate/CertificateEditor.vue:207
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 msgid "Back"
 msgid "Back"
@@ -141,7 +135,7 @@ msgstr "Volver"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "Volver al Inicio"
 msgstr "Volver al Inicio"
 
 
-#: src/views/domain/DomainAdd.vue:97
+#: src/views/domain/DomainAdd.vue:102
 msgid "Base information"
 msgid "Base information"
 msgstr "Información general"
 msgstr "Información general"
 
 
@@ -172,10 +166,10 @@ msgstr "Directorio CA"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
-#: src/views/domain/cert/components/ObtainCert.vue:150
+#: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/RightSettings.vue:52
 #: src/views/domain/components/RightSettings.vue:52
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:216
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:213
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 msgid "Cancel"
 msgid "Cancel"
 msgstr "Cancelar"
 msgstr "Cancelar"
@@ -247,11 +241,11 @@ msgstr "Desactivado con éxito"
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:284
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:281
 msgid "Comments"
 msgid "Comments"
 msgstr "Comentarios"
 msgstr "Comentarios"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:82
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:86
 msgid "Config Templates"
 msgid "Config Templates"
 msgstr "Plantillas de configuración"
 msgstr "Plantillas de configuración"
 
 
@@ -259,7 +253,7 @@ msgstr "Plantillas de configuración"
 msgid "Configuration file is test successful"
 msgid "Configuration file is test successful"
 msgstr "El archivo de configuración se probó exitosamente"
 msgstr "El archivo de configuración se probó exitosamente"
 
 
-#: src/views/domain/DomainAdd.vue:103
+#: src/views/domain/DomainAdd.vue:108
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "Nombre de la configuración"
 msgstr "Nombre de la configuración"
 
 
@@ -267,7 +261,7 @@ msgstr "Nombre de la configuración"
 msgid "Configurations"
 msgid "Configurations"
 msgstr "Configuraciones"
 msgstr "Configuraciones"
 
 
-#: src/views/domain/DomainAdd.vue:98
+#: src/views/domain/DomainAdd.vue:103
 msgid "Configure SSL"
 msgid "Configure SSL"
 msgstr "Configurar SSL"
 msgstr "Configurar SSL"
 
 
@@ -293,7 +287,7 @@ msgstr "Estado del CPU"
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU:"
 msgstr "CPU:"
 
 
-#: src/views/domain/DomainAdd.vue:156
+#: src/views/domain/DomainAdd.vue:161
 msgid "Create Another"
 msgid "Create Another"
 msgstr "Crear otro"
 msgstr "Crear otro"
 
 
@@ -317,8 +311,8 @@ msgstr "Credenciales"
 msgid "Current Version"
 msgid "Current Version"
 msgstr "Versión actual"
 msgstr "Versión actual"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:241
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:126
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:238
 msgid "Custom"
 msgid "Custom"
 msgstr "Personalizado"
 msgstr "Personalizado"
 
 
@@ -331,12 +325,12 @@ msgid "Database (Optional, default: database)"
 msgstr "Base de datos (Opcional, default: database)"
 msgstr "Base de datos (Opcional, default: database)"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
-#: src/views/domain/DomainList.vue:153
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:259
+#: src/views/domain/DomainList.vue:156
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:256
 msgid "Delete"
 msgid "Delete"
 msgstr "Eliminar"
 msgstr "Eliminar"
 
 
-#: src/views/domain/DomainList.vue:77
+#: src/views/domain/DomainList.vue:81
 msgid "Delete site: %{site_name}"
 msgid "Delete site: %{site_name}"
 msgstr "Eliminar sitio: %{site_name}"
 msgstr "Eliminar sitio: %{site_name}"
 
 
@@ -362,8 +356,8 @@ msgstr "Desplegado de %{conf_name} a %{node_name} exitoso"
 msgid "Deploy successfully"
 msgid "Deploy successfully"
 msgstr "Desplegado con éxito"
 msgstr "Desplegado con éxito"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:109
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:123
 msgid "Description"
 msgid "Description"
 msgstr "Descripción"
 msgstr "Descripción"
 
 
@@ -388,22 +382,22 @@ msgstr "Directivas"
 msgid "Directory"
 msgid "Directory"
 msgstr "Directiva"
 msgstr "Directiva"
 
 
-#: src/views/domain/DomainList.vue:36
+#: src/views/domain/DomainList.vue:125
 #, fuzzy
 #, fuzzy
 msgid "Disable"
 msgid "Disable"
 msgstr "Desactivado"
 msgstr "Desactivado"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:78
+#: src/views/domain/cert/components/ObtainCert.vue:77
 msgid "Disable auto-renewal failed for %{name}"
 msgid "Disable auto-renewal failed for %{name}"
 msgstr "No se pudo desactivar la renovación automática por %{name}"
 msgstr "No se pudo desactivar la renovación automática por %{name}"
 
 
 #: src/views/domain/cert/ChangeCert.vue:48 src/views/domain/DomainEdit.vue:190
 #: src/views/domain/cert/ChangeCert.vue:48 src/views/domain/DomainEdit.vue:190
-#: src/views/domain/DomainList.vue:122
+#: src/views/domain/DomainList.vue:36
 msgid "Disabled"
 msgid "Disabled"
 msgstr "Desactivado"
 msgstr "Desactivado"
 
 
 #: src/views/domain/components/RightSettings.vue:39
 #: src/views/domain/components/RightSettings.vue:39
-#: src/views/domain/DomainList.vue:67
+#: src/views/domain/DomainList.vue:70
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "Desactivado con éxito"
 msgstr "Desactivado con éxito"
 
 
@@ -430,7 +424,7 @@ msgid_plural "Do you want to deploy this file to remote servers?"
 msgstr[0] "¿Desea desplegar este archivo en un servidor remoto?"
 msgstr[0] "¿Desea desplegar este archivo en un servidor remoto?"
 msgstr[1] "¿Desea desplegar este archivo en los servidores remotos?"
 msgstr[1] "¿Desea desplegar este archivo en los servidores remotos?"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:146
+#: src/views/domain/cert/components/ObtainCert.vue:133
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
 msgstr "¿Desea deshabilitar la renovación automática de certificado?"
 msgstr "¿Desea deshabilitar la renovación automática de certificado?"
 
 
@@ -446,11 +440,11 @@ msgstr "¿Quieres habilitar este sitio?"
 msgid "Do you want to enable TLS?"
 msgid "Do you want to enable TLS?"
 msgstr "¿Quieres habilitar TLS?"
 msgstr "¿Quieres habilitar TLS?"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:209
 msgid "Do you want to remove this server?"
 msgid "Do you want to remove this server?"
 msgstr "¿Quieres eliminar este servidor?"
 msgstr "¿Quieres eliminar este servidor?"
 
 
-#: src/views/domain/DomainAdd.vue:146
+#: src/views/domain/DomainAdd.vue:151
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr "Configuración de dominio creada con éxito"
 msgstr "Configuración de dominio creada con éxito"
 
 
@@ -474,7 +468,7 @@ msgid "Dry run mode enabled"
 msgstr "Modo de ejecución de prueba habilitado"
 msgstr "Modo de ejecución de prueba habilitado"
 
 
 #: src/views/domain/components/SiteDuplicate.vue:128
 #: src/views/domain/components/SiteDuplicate.vue:128
-#: src/views/domain/DomainList.vue:138
+#: src/views/domain/DomainList.vue:141
 msgid "Duplicate"
 msgid "Duplicate"
 msgstr "Duplicar"
 msgstr "Duplicar"
 
 
@@ -510,7 +504,7 @@ msgstr "Editar Sitio"
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "Correo (*)"
 msgstr "Correo (*)"
 
 
-#: src/views/domain/DomainList.vue:32
+#: src/views/domain/DomainList.vue:133
 #, fuzzy
 #, fuzzy
 msgid "Enable"
 msgid "Enable"
 msgstr "Habilitado"
 msgstr "Habilitado"
@@ -523,7 +517,7 @@ msgstr "Falló el habilitado de %{conf_name} en %{node_name}"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr "Habilitado exitoso de %{conf_name} en %{node_name}"
 msgstr "Habilitado exitoso de %{conf_name} en %{node_name}"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:71
+#: src/views/domain/cert/components/ObtainCert.vue:70
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "No se pudo activar la renovación automática por %{name}"
 msgstr "No se pudo activar la renovación automática por %{name}"
 
 
@@ -535,20 +529,20 @@ msgstr "Falló la habilitación"
 msgid "Enable successfully"
 msgid "Enable successfully"
 msgstr "Habilitado con éxito"
 msgstr "Habilitado con éxito"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:236
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:233
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "Habilitar TLS"
 msgstr "Habilitar TLS"
 
 
 #: src/views/domain/cert/ChangeCert.vue:44
 #: src/views/domain/cert/ChangeCert.vue:44
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/domain/DomainEdit.vue:184 src/views/domain/DomainList.vue:130
+#: src/views/domain/DomainEdit.vue:184 src/views/domain/DomainList.vue:32
 msgid "Enabled"
 msgid "Enabled"
 msgstr "Habilitado"
 msgstr "Habilitado"
 
 
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/SiteDuplicate.vue:100
 #: src/views/domain/components/SiteDuplicate.vue:100
-#: src/views/domain/DomainAdd.vue:45 src/views/domain/DomainList.vue:58
+#: src/views/domain/DomainAdd.vue:45 src/views/domain/DomainList.vue:60
 msgid "Enabled successfully"
 msgid "Enabled successfully"
 msgstr "Habilitado con éxito"
 msgstr "Habilitado con éxito"
 
 
@@ -591,12 +585,12 @@ msgid "Export"
 msgstr "Exportar"
 msgstr "Exportar"
 
 
 #: src/views/domain/components/RightSettings.vue:42
 #: src/views/domain/components/RightSettings.vue:42
-#: src/views/domain/DomainList.vue:70
+#: src/views/domain/DomainList.vue:74
 msgid "Failed to disable %{msg}"
 msgid "Failed to disable %{msg}"
 msgstr "Error al deshabilitar %{msg}"
 msgstr "Error al deshabilitar %{msg}"
 
 
 #: src/views/domain/components/RightSettings.vue:33
 #: src/views/domain/components/RightSettings.vue:33
-#: src/views/domain/DomainList.vue:61
+#: src/views/domain/DomainList.vue:64
 msgid "Failed to enable %{msg}"
 msgid "Failed to enable %{msg}"
 msgstr "Error al habilitar %{msg}"
 msgstr "Error al habilitar %{msg}"
 
 
@@ -625,7 +619,7 @@ msgstr "Archivo no encontrado"
 msgid "Filter"
 msgid "Filter"
 msgstr "Filtro"
 msgstr "Filtro"
 
 
-#: src/language/constants.ts:23 src/views/domain/DomainAdd.vue:99
+#: src/language/constants.ts:23 src/views/domain/DomainAdd.vue:104
 msgid "Finished"
 msgid "Finished"
 msgstr "Terminado"
 msgstr "Terminado"
 
 
@@ -703,6 +697,16 @@ msgstr "Puerto HTTP"
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr "HTTP01"
 msgstr "HTTP01"
 
 
+#: src/views/certificate/Certificate.vue:120
+#, fuzzy
+msgid "Import"
+msgstr "Exportar"
+
+#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
+#, fuzzy
+msgid "Import Certificate"
+msgstr "Estado del Certificado"
+
 #: src/constants/index.ts:19
 #: src/constants/index.ts:19
 msgid "Info"
 msgid "Info"
 msgstr ""
 msgstr ""
@@ -747,6 +751,12 @@ msgstr "Para no modificar dejar en blanco"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgstr "Dejar en blanco para el valor predeterminado: https://api.openai.com/"
 msgstr "Dejar en blanco para el valor predeterminado: https://api.openai.com/"
 
 
+#: src/views/certificate/CertificateEditor.vue:177
+#: src/views/certificate/CertificateEditor.vue:185
+#, fuzzy
+msgid "Leave blank will not change anything"
+msgstr "Para no modificar dejar en blanco"
+
 #: src/views/system/About.vue:50
 #: src/views/system/About.vue:50
 #, fuzzy
 #, fuzzy
 msgid "License"
 msgid "License"
@@ -774,7 +784,7 @@ msgstr "Ubicación"
 msgid "Locations"
 msgid "Locations"
 msgstr "Ubicaciones"
 msgstr "Ubicaciones"
 
 
-#: src/views/certificate/CertificateEditor.vue:193
+#: src/views/certificate/CertificateEditor.vue:195
 #, fuzzy
 #, fuzzy
 msgid "Log"
 msgid "Log"
 msgstr "Acceso"
 msgstr "Acceso"
@@ -803,7 +813,7 @@ msgstr ""
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "Administrar configuraciones"
 msgstr "Administrar configuraciones"
 
 
-#: src/routes/index.ts:59 src/views/domain/DomainList.vue:102
+#: src/routes/index.ts:59 src/views/domain/DomainList.vue:105
 msgid "Manage Sites"
 msgid "Manage Sites"
 msgstr "Administrar sitios"
 msgstr "Administrar sitios"
 
 
@@ -835,7 +845,7 @@ msgstr "Modificar"
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "Estado del Certificado"
 msgstr "Estado del Certificado"
 
 
-#: src/views/domain/DomainAdd.vue:153
+#: src/views/domain/DomainAdd.vue:158
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "Modificar configuración"
 msgstr "Modificar configuración"
 
 
@@ -873,8 +883,8 @@ msgstr "Total enviado por la red"
 msgid "New version released"
 msgid "New version released"
 msgstr "Se liberó una nueva versión"
 msgstr "Se liberó una nueva versión"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:216
-#: src/views/domain/DomainAdd.vue:140
+#: src/views/domain/cert/components/ObtainCert.vue:203
+#: src/views/domain/DomainAdd.vue:145
 msgid "Next"
 msgid "Next"
 msgstr "Siguiente"
 msgstr "Siguiente"
 
 
@@ -890,7 +900,7 @@ msgstr "Ruta de registro de acceso de Nginx"
 msgid "Nginx Configuration Parse Error"
 msgid "Nginx Configuration Parse Error"
 msgstr "Error de análisis de configuración de Nginx"
 msgstr "Error de análisis de configuración de Nginx"
 
 
-#: src/components/NginxControl/NginxControl.vue:67
+#: src/components/NginxControl/NginxControl.vue:65
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr "Control de Nginx"
 msgstr "Control de Nginx"
 
 
@@ -902,7 +912,7 @@ msgstr "Ruta de registro de errores de Nginx"
 msgid "Nginx Log"
 msgid "Nginx Log"
 msgstr "Registro Nginx"
 msgstr "Registro Nginx"
 
 
-#: src/components/NginxControl/NginxControl.vue:23
+#: src/components/NginxControl/NginxControl.vue:25
 msgid "Nginx reloaded successfully"
 msgid "Nginx reloaded successfully"
 msgstr "Nginx recargado con éxito"
 msgstr "Nginx recargado con éxito"
 
 
@@ -913,7 +923,7 @@ msgstr "Nginx reiniciado con éxito"
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/Notification/Notification.vue:84
 #: src/components/Notification/Notification.vue:84
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
-#: src/views/domain/DomainList.vue:142
+#: src/views/domain/DomainList.vue:145
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/notification/Notification.vue:71
 #: src/views/notification/Notification.vue:71
@@ -951,7 +961,7 @@ msgstr "Certificación"
 msgid "Notifications"
 msgid "Notifications"
 msgstr "Certificación"
 msgstr "Certificación"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:191
+#: src/views/domain/cert/components/ObtainCert.vue:178
 msgid "Obtain certificate"
 msgid "Obtain certificate"
 msgstr "Obtener certificado"
 msgstr "Obtener certificado"
 
 
@@ -971,11 +981,11 @@ msgstr "Desconectado"
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
-#: src/views/domain/cert/components/ObtainCert.vue:149
+#: src/views/domain/cert/components/ObtainCert.vue:136
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/RightSettings.vue:51
 #: src/views/domain/components/RightSettings.vue:51
-#: src/views/domain/DomainList.vue:143
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:215
+#: src/views/domain/DomainList.vue:146
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/notification/Notification.vue:72
 #: src/views/notification/Notification.vue:72
 msgid "OK"
 msgid "OK"
@@ -1138,11 +1148,11 @@ msgid "Release Note"
 msgstr "Nota de versión"
 msgstr "Nota de versión"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:266
 #: src/components/ChatGPT/ChatGPT.vue:266
-#: src/components/NginxControl/NginxControl.vue:102
+#: src/components/NginxControl/NginxControl.vue:100
 msgid "Reload"
 msgid "Reload"
 msgstr "Recargar"
 msgstr "Recargar"
 
 
-#: src/components/NginxControl/NginxControl.vue:76
+#: src/components/NginxControl/NginxControl.vue:74
 msgid "Reloading"
 msgid "Reloading"
 msgstr "Recargando"
 msgstr "Recargando"
 
 
@@ -1184,11 +1194,11 @@ msgstr "Pedido con parámetros incorrectos"
 msgid "Reset"
 msgid "Reset"
 msgstr "Limpiar"
 msgstr "Limpiar"
 
 
-#: src/components/NginxControl/NginxControl.vue:95
+#: src/components/NginxControl/NginxControl.vue:93
 msgid "Restart"
 msgid "Restart"
 msgstr "Reiniciar"
 msgstr "Reiniciar"
 
 
-#: src/components/NginxControl/NginxControl.vue:81
+#: src/components/NginxControl/NginxControl.vue:79
 msgid "Restarting"
 msgid "Restarting"
 msgstr "Reiniciando"
 msgstr "Reiniciando"
 
 
@@ -1196,12 +1206,12 @@ msgstr "Reiniciando"
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "Modo de ejecución"
 msgstr "Modo de ejecución"
 
 
-#: src/components/NginxControl/NginxControl.vue:71
+#: src/components/NginxControl/NginxControl.vue:69
 msgid "Running"
 msgid "Running"
 msgstr "Corriendo"
 msgstr "Corriendo"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:212
+#: src/views/certificate/CertificateEditor.vue:214
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/preference/Preference.vue:113
 #: src/views/preference/Preference.vue:113
@@ -1242,13 +1252,13 @@ msgstr "Selector"
 msgid "Send"
 msgid "Send"
 msgstr "Enviado"
 msgstr "Enviado"
 
 
-#: src/components/NginxControl/NginxControl.vue:29
+#: src/components/NginxControl/NginxControl.vue:31
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
-#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:79
+#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
 #: src/views/other/Install.vue:72 src/views/preference/Preference.vue:60
 #: src/views/other/Install.vue:72 src/views/preference/Preference.vue:60
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1258,12 +1268,12 @@ msgstr "Error del servidor"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Información del servidor"
 msgstr "Información del servidor"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:115
+#: src/views/domain/cert/components/ObtainCert.vue:102
 msgid "server_name not found in directives"
 msgid "server_name not found in directives"
 msgstr "No se encuentra server_name en las directivas"
 msgstr "No se encuentra server_name en las directivas"
 
 
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
-#: src/views/domain/DomainAdd.vue:119
+#: src/views/domain/DomainAdd.vue:124
 msgid "server_name parameter is required"
 msgid "server_name parameter is required"
 msgstr "Se requiere el parámetro server_name"
 msgstr "Se requiere el parámetro server_name"
 
 
@@ -1298,7 +1308,7 @@ msgstr "Lista de sitios"
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "Contenido de certificado SSL"
 msgstr "Contenido de certificado SSL"
 
 
-#: src/views/certificate/CertificateEditor.vue:179
+#: src/views/certificate/CertificateEditor.vue:180
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr "Contenido de la llave del certificado SSL"
 msgstr "Contenido de la llave del certificado SSL"
@@ -1327,7 +1337,7 @@ msgstr "Estable"
 msgid "Status"
 msgid "Status"
 msgstr "Estado"
 msgstr "Estado"
 
 
-#: src/components/NginxControl/NginxControl.vue:86
+#: src/components/NginxControl/NginxControl.vue:84
 msgid "Stopped"
 msgid "Stopped"
 msgstr "Detenido"
 msgstr "Detenido"
 
 
@@ -1486,7 +1496,7 @@ msgstr "Nombre de usuario (*)"
 msgid "Valid"
 msgid "Valid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:101
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
 msgid "View"
 msgid "View"
 msgstr "Ver"
 msgstr "Ver"
 
 
@@ -1497,7 +1507,7 @@ msgstr "Certificación"
 
 
 #: src/constants/index.ts:18 src/views/config/InspectConfig.vue:36
 #: src/constants/index.ts:18 src/views/config/InspectConfig.vue:36
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
-#: src/views/domain/DomainAdd.vue:114
+#: src/views/domain/DomainAdd.vue:119
 msgid "Warning"
 msgid "Warning"
 msgstr "Advertencia"
 msgstr "Advertencia"
 
 
@@ -1507,7 +1517,7 @@ msgid ""
 "ownership verification."
 "ownership verification."
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:147
+#: src/views/domain/cert/components/ObtainCert.vue:134
 msgid ""
 msgid ""
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "Nginx. Are you sure you want to continue?"
 "Nginx. Are you sure you want to continue?"
@@ -1541,6 +1551,14 @@ msgstr "Estás usando la última versión"
 msgid "You can check Nginx UI upgrade at this page."
 msgid "You can check Nginx UI upgrade at this page."
 msgstr "Puede consultar la actualización de Nginx UI en esta página."
 msgstr "Puede consultar la actualización de Nginx UI en esta página."
 
 
+#, fuzzy
+#~ msgid "Add Certificate"
+#~ msgstr "Estado del Certificado"
+
+#, fuzzy
+#~ msgid "Leave blank will not change anything."
+#~ msgstr "Para no modificar dejar en blanco"
+
 #, fuzzy
 #, fuzzy
 #~ msgid "Renew certificate"
 #~ msgid "Renew certificate"
 #~ msgstr "Obtener certificado"
 #~ msgstr "Obtener certificado"

+ 92 - 74
app/src/language/fr_FR/app.po

@@ -28,17 +28,11 @@ msgstr "Action"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
-#: src/views/certificate/Certificate.vue:120
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:115
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:308
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:305
 msgid "Add"
 msgid "Add"
 msgstr "Ajouter"
 msgstr "Ajouter"
 
 
-#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
-#, fuzzy
-msgid "Add Certificate"
-msgstr "État du certificat"
-
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "Ajouter une directive"
 msgstr "Ajouter une directive"
@@ -48,11 +42,11 @@ msgstr "Ajouter une directive"
 msgid "Add Location"
 msgid "Add Location"
 msgstr "Ajouter une localisation"
 msgstr "Ajouter une localisation"
 
 
-#: src/routes/index.ts:71 src/views/domain/DomainAdd.vue:91
+#: src/routes/index.ts:71 src/views/domain/DomainAdd.vue:96
 msgid "Add Site"
 msgid "Add Site"
 msgstr "Ajouter un site"
 msgstr "Ajouter un site"
 
 
-#: src/views/certificate/DNSChallenge.vue:95
+#: src/views/certificate/DNSChallenge.vue:94
 #, fuzzy
 #, fuzzy
 msgid "Additional"
 msgid "Additional"
 msgstr "Supplémentaire"
 msgstr "Supplémentaire"
@@ -89,7 +83,7 @@ msgid "Are you sure you want to clear the record of chat?"
 msgstr "Voulez-vous vraiment effacer l'historique du chat ?"
 msgstr "Voulez-vous vraiment effacer l'historique du chat ?"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
-#: src/views/domain/DomainList.vue:144
+#: src/views/domain/DomainList.vue:147
 msgid "Are you sure you want to delete?"
 msgid "Are you sure you want to delete?"
 msgstr "Etes-vous sûr que vous voulez supprimer ?"
 msgstr "Etes-vous sûr que vous voulez supprimer ?"
 
 
@@ -110,8 +104,8 @@ msgstr "Modèle ChatGPT"
 msgid "Assistant"
 msgid "Assistant"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:104
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:118
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:108
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
 msgid "Author"
 msgid "Author"
 msgstr "Autheur"
 msgstr "Autheur"
 
 
@@ -123,15 +117,15 @@ msgstr "Auto Cert"
 msgid "Auto Refresh"
 msgid "Auto Refresh"
 msgstr "Actualisation automatique"
 msgstr "Actualisation automatique"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:76
+#: src/views/domain/cert/components/ObtainCert.vue:75
 msgid "Auto-renewal disabled for %{name}"
 msgid "Auto-renewal disabled for %{name}"
 msgstr "Renouvellement automatique désactivé pour %{name}"
 msgstr "Renouvellement automatique désactivé pour %{name}"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:69
+#: src/views/domain/cert/components/ObtainCert.vue:68
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr "Renouvellement automatique activé pour %{name}"
 msgstr "Renouvellement automatique activé pour %{name}"
 
 
-#: src/views/certificate/CertificateEditor.vue:205
+#: src/views/certificate/CertificateEditor.vue:207
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 msgid "Back"
 msgid "Back"
@@ -141,7 +135,7 @@ msgstr "Retour"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "Retour au menu principal"
 msgstr "Retour au menu principal"
 
 
-#: src/views/domain/DomainAdd.vue:97
+#: src/views/domain/DomainAdd.vue:102
 msgid "Base information"
 msgid "Base information"
 msgstr "Information générale"
 msgstr "Information générale"
 
 
@@ -173,10 +167,10 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
-#: src/views/domain/cert/components/ObtainCert.vue:150
+#: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/RightSettings.vue:52
 #: src/views/domain/components/RightSettings.vue:52
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:216
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:213
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 msgid "Cancel"
 msgid "Cancel"
 msgstr "Annuler"
 msgstr "Annuler"
@@ -248,11 +242,11 @@ msgstr "Désactivé avec succès"
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:284
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:281
 msgid "Comments"
 msgid "Comments"
 msgstr "Commentaires"
 msgstr "Commentaires"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:82
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:86
 msgid "Config Templates"
 msgid "Config Templates"
 msgstr "Modèles de configuration"
 msgstr "Modèles de configuration"
 
 
@@ -260,7 +254,7 @@ msgstr "Modèles de configuration"
 msgid "Configuration file is test successful"
 msgid "Configuration file is test successful"
 msgstr "Le fichier de configuration est testé avec succès"
 msgstr "Le fichier de configuration est testé avec succès"
 
 
-#: src/views/domain/DomainAdd.vue:103
+#: src/views/domain/DomainAdd.vue:108
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "Nom de la configuration"
 msgstr "Nom de la configuration"
 
 
@@ -268,7 +262,7 @@ msgstr "Nom de la configuration"
 msgid "Configurations"
 msgid "Configurations"
 msgstr "Configurations"
 msgstr "Configurations"
 
 
-#: src/views/domain/DomainAdd.vue:98
+#: src/views/domain/DomainAdd.vue:103
 msgid "Configure SSL"
 msgid "Configure SSL"
 msgstr "Configurer SSL"
 msgstr "Configurer SSL"
 
 
@@ -294,7 +288,7 @@ msgstr "État du processeur"
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU :"
 msgstr "CPU :"
 
 
-#: src/views/domain/DomainAdd.vue:156
+#: src/views/domain/DomainAdd.vue:161
 msgid "Create Another"
 msgid "Create Another"
 msgstr "Créer un autre"
 msgstr "Créer un autre"
 
 
@@ -318,8 +312,8 @@ msgstr "Identifiants"
 msgid "Current Version"
 msgid "Current Version"
 msgstr "Version actuelle"
 msgstr "Version actuelle"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:241
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:126
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:238
 msgid "Custom"
 msgid "Custom"
 msgstr "Custom"
 msgstr "Custom"
 
 
@@ -332,12 +326,12 @@ msgid "Database (Optional, default: database)"
 msgstr "Base de données (Facultatif, par défaut : database)"
 msgstr "Base de données (Facultatif, par défaut : database)"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
-#: src/views/domain/DomainList.vue:153
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:259
+#: src/views/domain/DomainList.vue:156
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:256
 msgid "Delete"
 msgid "Delete"
 msgstr "Supprimer"
 msgstr "Supprimer"
 
 
-#: src/views/domain/DomainList.vue:77
+#: src/views/domain/DomainList.vue:81
 msgid "Delete site: %{site_name}"
 msgid "Delete site: %{site_name}"
 msgstr "Supprimer le site : %{site_name}"
 msgstr "Supprimer le site : %{site_name}"
 
 
@@ -364,8 +358,8 @@ msgstr ""
 msgid "Deploy successfully"
 msgid "Deploy successfully"
 msgstr "Sauvegarde réussie"
 msgstr "Sauvegarde réussie"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:109
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:123
 msgid "Description"
 msgid "Description"
 msgstr "Description"
 msgstr "Description"
 
 
@@ -390,22 +384,22 @@ msgstr "Directives"
 msgid "Directory"
 msgid "Directory"
 msgstr "Directive"
 msgstr "Directive"
 
 
-#: src/views/domain/DomainList.vue:36
+#: src/views/domain/DomainList.vue:125
 #, fuzzy
 #, fuzzy
 msgid "Disable"
 msgid "Disable"
 msgstr "Désactivé"
 msgstr "Désactivé"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:78
+#: src/views/domain/cert/components/ObtainCert.vue:77
 msgid "Disable auto-renewal failed for %{name}"
 msgid "Disable auto-renewal failed for %{name}"
 msgstr "La désactivation du renouvellement automatique a échoué pour %{name}"
 msgstr "La désactivation du renouvellement automatique a échoué pour %{name}"
 
 
 #: src/views/domain/cert/ChangeCert.vue:48 src/views/domain/DomainEdit.vue:190
 #: src/views/domain/cert/ChangeCert.vue:48 src/views/domain/DomainEdit.vue:190
-#: src/views/domain/DomainList.vue:122
+#: src/views/domain/DomainList.vue:36
 msgid "Disabled"
 msgid "Disabled"
 msgstr "Désactivé"
 msgstr "Désactivé"
 
 
 #: src/views/domain/components/RightSettings.vue:39
 #: src/views/domain/components/RightSettings.vue:39
-#: src/views/domain/DomainList.vue:67
+#: src/views/domain/DomainList.vue:70
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "Désactivé avec succès"
 msgstr "Désactivé avec succès"
 
 
@@ -433,7 +427,7 @@ msgid_plural "Do you want to deploy this file to remote servers?"
 msgstr[0] "Voulez-vous supprimer ce serveur ?"
 msgstr[0] "Voulez-vous supprimer ce serveur ?"
 msgstr[1] "Voulez-vous supprimer ce serveur ?"
 msgstr[1] "Voulez-vous supprimer ce serveur ?"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:146
+#: src/views/domain/cert/components/ObtainCert.vue:133
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
 msgstr "Voulez-vous désactiver le renouvellement automatique des certificats ?"
 msgstr "Voulez-vous désactiver le renouvellement automatique des certificats ?"
 
 
@@ -449,11 +443,11 @@ msgstr "Voulez-vous activer ce site ?"
 msgid "Do you want to enable TLS?"
 msgid "Do you want to enable TLS?"
 msgstr "Voulez-vous activer TLS ?"
 msgstr "Voulez-vous activer TLS ?"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:209
 msgid "Do you want to remove this server?"
 msgid "Do you want to remove this server?"
 msgstr "Voulez-vous supprimer ce serveur ?"
 msgstr "Voulez-vous supprimer ce serveur ?"
 
 
-#: src/views/domain/DomainAdd.vue:146
+#: src/views/domain/DomainAdd.vue:151
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr "La configuration du domaine a été créée avec succès"
 msgstr "La configuration du domaine a été créée avec succès"
 
 
@@ -477,7 +471,7 @@ msgid "Dry run mode enabled"
 msgstr ""
 msgstr ""
 
 
 #: src/views/domain/components/SiteDuplicate.vue:128
 #: src/views/domain/components/SiteDuplicate.vue:128
-#: src/views/domain/DomainList.vue:138
+#: src/views/domain/DomainList.vue:141
 msgid "Duplicate"
 msgid "Duplicate"
 msgstr "Dupliquer"
 msgstr "Dupliquer"
 
 
@@ -517,7 +511,7 @@ msgstr "Modifier le site"
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "Email (*)"
 msgstr "Email (*)"
 
 
-#: src/views/domain/DomainList.vue:32
+#: src/views/domain/DomainList.vue:133
 #, fuzzy
 #, fuzzy
 msgid "Enable"
 msgid "Enable"
 msgstr "Activé"
 msgstr "Activé"
@@ -530,7 +524,7 @@ msgstr ""
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:71
+#: src/views/domain/cert/components/ObtainCert.vue:70
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Échec de l'activation du renouvellement automatique pour %{name}"
 msgstr "Échec de l'activation du renouvellement automatique pour %{name}"
 
 
@@ -543,20 +537,20 @@ msgstr "Échec de l'activation"
 msgid "Enable successfully"
 msgid "Enable successfully"
 msgstr "Activé avec succès"
 msgstr "Activé avec succès"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:236
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:233
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "Activer TLS"
 msgstr "Activer TLS"
 
 
 #: src/views/domain/cert/ChangeCert.vue:44
 #: src/views/domain/cert/ChangeCert.vue:44
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/domain/DomainEdit.vue:184 src/views/domain/DomainList.vue:130
+#: src/views/domain/DomainEdit.vue:184 src/views/domain/DomainList.vue:32
 msgid "Enabled"
 msgid "Enabled"
 msgstr "Activé"
 msgstr "Activé"
 
 
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/SiteDuplicate.vue:100
 #: src/views/domain/components/SiteDuplicate.vue:100
-#: src/views/domain/DomainAdd.vue:45 src/views/domain/DomainList.vue:58
+#: src/views/domain/DomainAdd.vue:45 src/views/domain/DomainList.vue:60
 msgid "Enabled successfully"
 msgid "Enabled successfully"
 msgstr "Activé avec succès"
 msgstr "Activé avec succès"
 
 
@@ -600,12 +594,12 @@ msgid "Export"
 msgstr "Exporter"
 msgstr "Exporter"
 
 
 #: src/views/domain/components/RightSettings.vue:42
 #: src/views/domain/components/RightSettings.vue:42
-#: src/views/domain/DomainList.vue:70
+#: src/views/domain/DomainList.vue:74
 msgid "Failed to disable %{msg}"
 msgid "Failed to disable %{msg}"
 msgstr "Impossible de désactiver %{msg}"
 msgstr "Impossible de désactiver %{msg}"
 
 
 #: src/views/domain/components/RightSettings.vue:33
 #: src/views/domain/components/RightSettings.vue:33
-#: src/views/domain/DomainList.vue:61
+#: src/views/domain/DomainList.vue:64
 msgid "Failed to enable %{msg}"
 msgid "Failed to enable %{msg}"
 msgstr "Impossible d'activer %{msg}"
 msgstr "Impossible d'activer %{msg}"
 
 
@@ -635,7 +629,7 @@ msgstr "Fichier introuvable"
 msgid "Filter"
 msgid "Filter"
 msgstr "Filtrer"
 msgstr "Filtrer"
 
 
-#: src/language/constants.ts:23 src/views/domain/DomainAdd.vue:99
+#: src/language/constants.ts:23 src/views/domain/DomainAdd.vue:104
 msgid "Finished"
 msgid "Finished"
 msgstr "Finie"
 msgstr "Finie"
 
 
@@ -713,6 +707,16 @@ msgstr "Port HTTP"
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr "HTTP01"
 msgstr "HTTP01"
 
 
+#: src/views/certificate/Certificate.vue:120
+#, fuzzy
+msgid "Import"
+msgstr "Exporter"
+
+#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
+#, fuzzy
+msgid "Import Certificate"
+msgstr "État du certificat"
+
 #: src/constants/index.ts:19
 #: src/constants/index.ts:19
 msgid "Info"
 msgid "Info"
 msgstr ""
 msgstr ""
@@ -757,6 +761,12 @@ msgstr "Laisser vide pour aucun changement"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgstr "Laissez vide pour la valeur par défaut : https://api.openai.com/"
 msgstr "Laissez vide pour la valeur par défaut : https://api.openai.com/"
 
 
+#: src/views/certificate/CertificateEditor.vue:177
+#: src/views/certificate/CertificateEditor.vue:185
+#, fuzzy
+msgid "Leave blank will not change anything"
+msgstr "Laisser vide pour aucun changement"
+
 #: src/views/system/About.vue:50
 #: src/views/system/About.vue:50
 #, fuzzy
 #, fuzzy
 msgid "License"
 msgid "License"
@@ -787,7 +797,7 @@ msgstr "Localisation"
 msgid "Locations"
 msgid "Locations"
 msgstr "Localisations"
 msgstr "Localisations"
 
 
-#: src/views/certificate/CertificateEditor.vue:193
+#: src/views/certificate/CertificateEditor.vue:195
 #, fuzzy
 #, fuzzy
 msgid "Log"
 msgid "Log"
 msgstr "Connexion"
 msgstr "Connexion"
@@ -817,7 +827,7 @@ msgstr ""
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "Gérer les configurations"
 msgstr "Gérer les configurations"
 
 
-#: src/routes/index.ts:59 src/views/domain/DomainList.vue:102
+#: src/routes/index.ts:59 src/views/domain/DomainList.vue:105
 msgid "Manage Sites"
 msgid "Manage Sites"
 msgstr "Gérer les sites"
 msgstr "Gérer les sites"
 
 
@@ -849,7 +859,7 @@ msgstr "Modifier"
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "État du certificat"
 msgstr "État du certificat"
 
 
-#: src/views/domain/DomainAdd.vue:153
+#: src/views/domain/DomainAdd.vue:158
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "Modifier la configuration"
 msgstr "Modifier la configuration"
 
 
@@ -887,8 +897,8 @@ msgstr "Envoi total réseau"
 msgid "New version released"
 msgid "New version released"
 msgstr "Nouvelle version publiée"
 msgstr "Nouvelle version publiée"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:216
-#: src/views/domain/DomainAdd.vue:140
+#: src/views/domain/cert/components/ObtainCert.vue:203
+#: src/views/domain/DomainAdd.vue:145
 msgid "Next"
 msgid "Next"
 msgstr "Suivant"
 msgstr "Suivant"
 
 
@@ -905,7 +915,7 @@ msgstr "Chemin du journal d'accès Nginx"
 msgid "Nginx Configuration Parse Error"
 msgid "Nginx Configuration Parse Error"
 msgstr "Erreur d'analyse de configuration Nginx"
 msgstr "Erreur d'analyse de configuration Nginx"
 
 
-#: src/components/NginxControl/NginxControl.vue:67
+#: src/components/NginxControl/NginxControl.vue:65
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr "Contrôle Nginx"
 msgstr "Contrôle Nginx"
 
 
@@ -917,7 +927,7 @@ msgstr "Chemin du journal des erreurs Nginx"
 msgid "Nginx Log"
 msgid "Nginx Log"
 msgstr "Journal Nginx"
 msgstr "Journal Nginx"
 
 
-#: src/components/NginxControl/NginxControl.vue:23
+#: src/components/NginxControl/NginxControl.vue:25
 msgid "Nginx reloaded successfully"
 msgid "Nginx reloaded successfully"
 msgstr "Nginx a été rechargé avec succès"
 msgstr "Nginx a été rechargé avec succès"
 
 
@@ -928,7 +938,7 @@ msgstr "Nginx a redémarré avec succès"
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/Notification/Notification.vue:84
 #: src/components/Notification/Notification.vue:84
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
-#: src/views/domain/DomainList.vue:142
+#: src/views/domain/DomainList.vue:145
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/notification/Notification.vue:71
 #: src/views/notification/Notification.vue:71
@@ -967,7 +977,7 @@ msgstr "Certification"
 msgid "Notifications"
 msgid "Notifications"
 msgstr "Certification"
 msgstr "Certification"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:191
+#: src/views/domain/cert/components/ObtainCert.vue:178
 msgid "Obtain certificate"
 msgid "Obtain certificate"
 msgstr "Obtenir un certificat"
 msgstr "Obtenir un certificat"
 
 
@@ -987,11 +997,11 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
-#: src/views/domain/cert/components/ObtainCert.vue:149
+#: src/views/domain/cert/components/ObtainCert.vue:136
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/RightSettings.vue:51
 #: src/views/domain/components/RightSettings.vue:51
-#: src/views/domain/DomainList.vue:143
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:215
+#: src/views/domain/DomainList.vue:146
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/notification/Notification.vue:72
 #: src/views/notification/Notification.vue:72
 msgid "OK"
 msgid "OK"
@@ -1158,11 +1168,11 @@ msgid "Release Note"
 msgstr "Note de version"
 msgstr "Note de version"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:266
 #: src/components/ChatGPT/ChatGPT.vue:266
-#: src/components/NginxControl/NginxControl.vue:102
+#: src/components/NginxControl/NginxControl.vue:100
 msgid "Reload"
 msgid "Reload"
 msgstr "Recharger"
 msgstr "Recharger"
 
 
-#: src/components/NginxControl/NginxControl.vue:76
+#: src/components/NginxControl/NginxControl.vue:74
 msgid "Reloading"
 msgid "Reloading"
 msgstr "Rechargement"
 msgstr "Rechargement"
 
 
@@ -1204,11 +1214,11 @@ msgstr ""
 msgid "Reset"
 msgid "Reset"
 msgstr "Réinitialiser"
 msgstr "Réinitialiser"
 
 
-#: src/components/NginxControl/NginxControl.vue:95
+#: src/components/NginxControl/NginxControl.vue:93
 msgid "Restart"
 msgid "Restart"
 msgstr "Redémarrer"
 msgstr "Redémarrer"
 
 
-#: src/components/NginxControl/NginxControl.vue:81
+#: src/components/NginxControl/NginxControl.vue:79
 msgid "Restarting"
 msgid "Restarting"
 msgstr "Redémarrage"
 msgstr "Redémarrage"
 
 
@@ -1216,12 +1226,12 @@ msgstr "Redémarrage"
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "Mode d'exécution"
 msgstr "Mode d'exécution"
 
 
-#: src/components/NginxControl/NginxControl.vue:71
+#: src/components/NginxControl/NginxControl.vue:69
 msgid "Running"
 msgid "Running"
 msgstr "En cours d'éxécution"
 msgstr "En cours d'éxécution"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:212
+#: src/views/certificate/CertificateEditor.vue:214
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/preference/Preference.vue:113
 #: src/views/preference/Preference.vue:113
@@ -1262,13 +1272,13 @@ msgstr "Sélecteur"
 msgid "Send"
 msgid "Send"
 msgstr "Envoyer"
 msgstr "Envoyer"
 
 
-#: src/components/NginxControl/NginxControl.vue:29
+#: src/components/NginxControl/NginxControl.vue:31
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
-#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:79
+#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
 #: src/views/other/Install.vue:72 src/views/preference/Preference.vue:60
 #: src/views/other/Install.vue:72 src/views/preference/Preference.vue:60
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1278,12 +1288,12 @@ msgstr "Erreur du serveur"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Informations sur le serveur"
 msgstr "Informations sur le serveur"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:115
+#: src/views/domain/cert/components/ObtainCert.vue:102
 msgid "server_name not found in directives"
 msgid "server_name not found in directives"
 msgstr "server_name introuvable dans les directives"
 msgstr "server_name introuvable dans les directives"
 
 
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
-#: src/views/domain/DomainAdd.vue:119
+#: src/views/domain/DomainAdd.vue:124
 msgid "server_name parameter is required"
 msgid "server_name parameter is required"
 msgstr "Le paramètre server_name est obligatoire"
 msgstr "Le paramètre server_name est obligatoire"
 
 
@@ -1318,7 +1328,7 @@ msgstr "Liste des sites"
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "Contenu de la certification SSL"
 msgstr "Contenu de la certification SSL"
 
 
-#: src/views/certificate/CertificateEditor.vue:179
+#: src/views/certificate/CertificateEditor.vue:180
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr "Contenu de la clé de certification SSL"
 msgstr "Contenu de la clé de certification SSL"
@@ -1348,7 +1358,7 @@ msgstr "Tableau"
 msgid "Status"
 msgid "Status"
 msgstr "Statut"
 msgstr "Statut"
 
 
-#: src/components/NginxControl/NginxControl.vue:86
+#: src/components/NginxControl/NginxControl.vue:84
 msgid "Stopped"
 msgid "Stopped"
 msgstr "Arrêté"
 msgstr "Arrêté"
 
 
@@ -1511,7 +1521,7 @@ msgstr "Nom d'utilisateur (*)"
 msgid "Valid"
 msgid "Valid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:101
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
 msgid "View"
 msgid "View"
 msgstr "Voir"
 msgstr "Voir"
 
 
@@ -1522,7 +1532,7 @@ msgstr "Certification"
 
 
 #: src/constants/index.ts:18 src/views/config/InspectConfig.vue:36
 #: src/constants/index.ts:18 src/views/config/InspectConfig.vue:36
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
-#: src/views/domain/DomainAdd.vue:114
+#: src/views/domain/DomainAdd.vue:119
 msgid "Warning"
 msgid "Warning"
 msgstr "Avertissement"
 msgstr "Avertissement"
 
 
@@ -1532,7 +1542,7 @@ msgid ""
 "ownership verification."
 "ownership verification."
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:147
+#: src/views/domain/cert/components/ObtainCert.vue:134
 msgid ""
 msgid ""
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "Nginx. Are you sure you want to continue?"
 "Nginx. Are you sure you want to continue?"
@@ -1566,6 +1576,14 @@ msgstr "Vous utilisez la dernière version"
 msgid "You can check Nginx UI upgrade at this page."
 msgid "You can check Nginx UI upgrade at this page."
 msgstr "Vous pouvez vérifier la mise à niveau de Nginx UI sur cette page."
 msgstr "Vous pouvez vérifier la mise à niveau de Nginx UI sur cette page."
 
 
+#, fuzzy
+#~ msgid "Add Certificate"
+#~ msgstr "État du certificat"
+
+#, fuzzy
+#~ msgid "Leave blank will not change anything."
+#~ msgstr "Laisser vide pour aucun changement"
+
 #, fuzzy
 #, fuzzy
 #~ msgid "Renew certificate"
 #~ msgid "Renew certificate"
 #~ msgstr "Obtenir un certificat"
 #~ msgstr "Obtenir un certificat"

+ 82 - 74
app/src/language/messages.pot

@@ -23,17 +23,11 @@ msgstr ""
 
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
-#: src/views/certificate/Certificate.vue:120
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:115
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:308
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:305
 msgid "Add"
 msgid "Add"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:123
-#: src/views/certificate/CertificateEditor.vue:84
-msgid "Add Certificate"
-msgstr ""
-
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr ""
 msgstr ""
@@ -44,11 +38,11 @@ msgid "Add Location"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:71
 #: src/routes/index.ts:71
-#: src/views/domain/DomainAdd.vue:91
+#: src/views/domain/DomainAdd.vue:96
 msgid "Add Site"
 msgid "Add Site"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/DNSChallenge.vue:95
+#: src/views/certificate/DNSChallenge.vue:94
 msgid "Additional"
 msgid "Additional"
 msgstr ""
 msgstr ""
 
 
@@ -82,7 +76,7 @@ msgid "Are you sure you want to clear the record of chat?"
 msgstr ""
 msgstr ""
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
-#: src/views/domain/DomainList.vue:144
+#: src/views/domain/DomainList.vue:147
 msgid "Are you sure you want to delete?"
 msgid "Are you sure you want to delete?"
 msgstr ""
 msgstr ""
 
 
@@ -102,8 +96,8 @@ msgstr ""
 msgid "Assistant"
 msgid "Assistant"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:104
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:118
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:108
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
 msgid "Author"
 msgid "Author"
 msgstr ""
 msgstr ""
 
 
@@ -115,15 +109,15 @@ msgstr ""
 msgid "Auto Refresh"
 msgid "Auto Refresh"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:76
+#: src/views/domain/cert/components/ObtainCert.vue:75
 msgid "Auto-renewal disabled for %{name}"
 msgid "Auto-renewal disabled for %{name}"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:69
+#: src/views/domain/cert/components/ObtainCert.vue:68
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:205
+#: src/views/certificate/CertificateEditor.vue:207
 #: src/views/config/Config.vue:75
 #: src/views/config/Config.vue:75
 #: src/views/config/ConfigEdit.vue:89
 #: src/views/config/ConfigEdit.vue:89
 #: src/views/domain/DomainEdit.vue:261
 #: src/views/domain/DomainEdit.vue:261
@@ -135,7 +129,7 @@ msgstr ""
 msgid "Back Home"
 msgid "Back Home"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/DomainAdd.vue:97
+#: src/views/domain/DomainAdd.vue:102
 msgid "Base information"
 msgid "Base information"
 msgstr ""
 msgstr ""
 
 
@@ -166,10 +160,10 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
-#: src/views/domain/cert/components/ObtainCert.vue:150
+#: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/RightSettings.vue:52
 #: src/views/domain/components/RightSettings.vue:52
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:216
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:213
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 msgid "Cancel"
 msgid "Cancel"
 msgstr ""
 msgstr ""
@@ -239,11 +233,11 @@ msgstr ""
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:284
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:281
 msgid "Comments"
 msgid "Comments"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:82
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:86
 msgid "Config Templates"
 msgid "Config Templates"
 msgstr ""
 msgstr ""
 
 
@@ -251,7 +245,7 @@ msgstr ""
 msgid "Configuration file is test successful"
 msgid "Configuration file is test successful"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/DomainAdd.vue:103
+#: src/views/domain/DomainAdd.vue:108
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr ""
 msgstr ""
 
 
@@ -259,7 +253,7 @@ msgstr ""
 msgid "Configurations"
 msgid "Configurations"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/DomainAdd.vue:98
+#: src/views/domain/DomainAdd.vue:103
 msgid "Configure SSL"
 msgid "Configure SSL"
 msgstr ""
 msgstr ""
 
 
@@ -285,7 +279,7 @@ msgstr ""
 msgid "CPU:"
 msgid "CPU:"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/DomainAdd.vue:156
+#: src/views/domain/DomainAdd.vue:161
 msgid "Create Another"
 msgid "Create Another"
 msgstr ""
 msgstr ""
 
 
@@ -310,8 +304,8 @@ msgstr ""
 msgid "Current Version"
 msgid "Current Version"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:241
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:126
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:238
 msgid "Custom"
 msgid "Custom"
 msgstr ""
 msgstr ""
 
 
@@ -324,12 +318,12 @@ msgid "Database (Optional, default: database)"
 msgstr ""
 msgstr ""
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
-#: src/views/domain/DomainList.vue:153
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:259
+#: src/views/domain/DomainList.vue:156
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:256
 msgid "Delete"
 msgid "Delete"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/DomainList.vue:77
+#: src/views/domain/DomainList.vue:81
 msgid "Delete site: %{site_name}"
 msgid "Delete site: %{site_name}"
 msgstr ""
 msgstr ""
 
 
@@ -354,8 +348,8 @@ msgstr ""
 msgid "Deploy successfully"
 msgid "Deploy successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:109
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:123
 msgid "Description"
 msgid "Description"
 msgstr ""
 msgstr ""
 
 
@@ -379,22 +373,22 @@ msgstr ""
 msgid "Directory"
 msgid "Directory"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/DomainList.vue:36
+#: src/views/domain/DomainList.vue:125
 msgid "Disable"
 msgid "Disable"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:78
+#: src/views/domain/cert/components/ObtainCert.vue:77
 msgid "Disable auto-renewal failed for %{name}"
 msgid "Disable auto-renewal failed for %{name}"
 msgstr ""
 msgstr ""
 
 
 #: src/views/domain/cert/ChangeCert.vue:48
 #: src/views/domain/cert/ChangeCert.vue:48
 #: src/views/domain/DomainEdit.vue:190
 #: src/views/domain/DomainEdit.vue:190
-#: src/views/domain/DomainList.vue:122
+#: src/views/domain/DomainList.vue:36
 msgid "Disabled"
 msgid "Disabled"
 msgstr ""
 msgstr ""
 
 
 #: src/views/domain/components/RightSettings.vue:39
 #: src/views/domain/components/RightSettings.vue:39
-#: src/views/domain/DomainList.vue:67
+#: src/views/domain/DomainList.vue:70
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr ""
 msgstr ""
 
 
@@ -422,7 +416,7 @@ msgid_plural "Do you want to deploy this file to remote servers?"
 msgstr[0] ""
 msgstr[0] ""
 msgstr[1] ""
 msgstr[1] ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:146
+#: src/views/domain/cert/components/ObtainCert.vue:133
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
 msgstr ""
 msgstr ""
 
 
@@ -438,11 +432,11 @@ msgstr ""
 msgid "Do you want to enable TLS?"
 msgid "Do you want to enable TLS?"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:209
 msgid "Do you want to remove this server?"
 msgid "Do you want to remove this server?"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/DomainAdd.vue:146
+#: src/views/domain/DomainAdd.vue:151
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr ""
 msgstr ""
 
 
@@ -463,7 +457,7 @@ msgid "Dry run mode enabled"
 msgstr ""
 msgstr ""
 
 
 #: src/views/domain/components/SiteDuplicate.vue:128
 #: src/views/domain/components/SiteDuplicate.vue:128
-#: src/views/domain/DomainList.vue:138
+#: src/views/domain/DomainList.vue:141
 msgid "Duplicate"
 msgid "Duplicate"
 msgstr ""
 msgstr ""
 
 
@@ -500,7 +494,7 @@ msgstr ""
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/DomainList.vue:32
+#: src/views/domain/DomainList.vue:133
 msgid "Enable"
 msgid "Enable"
 msgstr ""
 msgstr ""
 
 
@@ -512,7 +506,7 @@ msgstr ""
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:71
+#: src/views/domain/cert/components/ObtainCert.vue:70
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr ""
 msgstr ""
 
 
@@ -524,7 +518,7 @@ msgstr ""
 msgid "Enable successfully"
 msgid "Enable successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:236
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:233
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr ""
 msgstr ""
 
 
@@ -532,14 +526,14 @@ msgstr ""
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/DomainEdit.vue:184
 #: src/views/domain/DomainEdit.vue:184
-#: src/views/domain/DomainList.vue:130
+#: src/views/domain/DomainList.vue:32
 msgid "Enabled"
 msgid "Enabled"
 msgstr ""
 msgstr ""
 
 
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/SiteDuplicate.vue:100
 #: src/views/domain/components/SiteDuplicate.vue:100
 #: src/views/domain/DomainAdd.vue:45
 #: src/views/domain/DomainAdd.vue:45
-#: src/views/domain/DomainList.vue:58
+#: src/views/domain/DomainList.vue:60
 msgid "Enabled successfully"
 msgid "Enabled successfully"
 msgstr ""
 msgstr ""
 
 
@@ -584,12 +578,12 @@ msgid "Export"
 msgstr ""
 msgstr ""
 
 
 #: src/views/domain/components/RightSettings.vue:42
 #: src/views/domain/components/RightSettings.vue:42
-#: src/views/domain/DomainList.vue:70
+#: src/views/domain/DomainList.vue:74
 msgid "Failed to disable %{msg}"
 msgid "Failed to disable %{msg}"
 msgstr ""
 msgstr ""
 
 
 #: src/views/domain/components/RightSettings.vue:33
 #: src/views/domain/components/RightSettings.vue:33
-#: src/views/domain/DomainList.vue:61
+#: src/views/domain/DomainList.vue:64
 msgid "Failed to enable %{msg}"
 msgid "Failed to enable %{msg}"
 msgstr ""
 msgstr ""
 
 
@@ -618,7 +612,7 @@ msgid "Filter"
 msgstr ""
 msgstr ""
 
 
 #: src/language/constants.ts:23
 #: src/language/constants.ts:23
-#: src/views/domain/DomainAdd.vue:99
+#: src/views/domain/DomainAdd.vue:104
 msgid "Finished"
 msgid "Finished"
 msgstr ""
 msgstr ""
 
 
@@ -694,6 +688,15 @@ msgstr ""
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr ""
 msgstr ""
 
 
+#: src/views/certificate/Certificate.vue:120
+msgid "Import"
+msgstr ""
+
+#: src/routes/index.ts:123
+#: src/views/certificate/CertificateEditor.vue:84
+msgid "Import Certificate"
+msgstr ""
+
 #: src/constants/index.ts:19
 #: src/constants/index.ts:19
 msgid "Info"
 msgid "Info"
 msgstr ""
 msgstr ""
@@ -739,6 +742,11 @@ msgstr ""
 msgid "Leave blank for the default: https://api.openai.com/"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgstr ""
 msgstr ""
 
 
+#: src/views/certificate/CertificateEditor.vue:177
+#: src/views/certificate/CertificateEditor.vue:185
+msgid "Leave blank will not change anything"
+msgstr ""
+
 #: src/views/system/About.vue:50
 #: src/views/system/About.vue:50
 msgid "License"
 msgid "License"
 msgstr ""
 msgstr ""
@@ -764,7 +772,7 @@ msgstr ""
 msgid "Locations"
 msgid "Locations"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:193
+#: src/views/certificate/CertificateEditor.vue:195
 msgid "Log"
 msgid "Log"
 msgstr ""
 msgstr ""
 
 
@@ -791,7 +799,7 @@ msgid "Manage Configs"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:59
 #: src/routes/index.ts:59
-#: src/views/domain/DomainList.vue:102
+#: src/views/domain/DomainList.vue:105
 msgid "Manage Sites"
 msgid "Manage Sites"
 msgstr ""
 msgstr ""
 
 
@@ -823,7 +831,7 @@ msgstr ""
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/DomainAdd.vue:153
+#: src/views/domain/DomainAdd.vue:158
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr ""
 msgstr ""
 
 
@@ -863,8 +871,8 @@ msgstr ""
 msgid "New version released"
 msgid "New version released"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:216
-#: src/views/domain/DomainAdd.vue:140
+#: src/views/domain/cert/components/ObtainCert.vue:203
+#: src/views/domain/DomainAdd.vue:145
 msgid "Next"
 msgid "Next"
 msgstr ""
 msgstr ""
 
 
@@ -880,7 +888,7 @@ msgstr ""
 msgid "Nginx Configuration Parse Error"
 msgid "Nginx Configuration Parse Error"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NginxControl/NginxControl.vue:67
+#: src/components/NginxControl/NginxControl.vue:65
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr ""
 msgstr ""
 
 
@@ -893,7 +901,7 @@ msgstr ""
 msgid "Nginx Log"
 msgid "Nginx Log"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NginxControl/NginxControl.vue:23
+#: src/components/NginxControl/NginxControl.vue:25
 msgid "Nginx reloaded successfully"
 msgid "Nginx reloaded successfully"
 msgstr ""
 msgstr ""
 
 
@@ -904,7 +912,7 @@ msgstr ""
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/Notification/Notification.vue:84
 #: src/components/Notification/Notification.vue:84
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
-#: src/views/domain/DomainList.vue:142
+#: src/views/domain/DomainList.vue:145
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/notification/Notification.vue:71
 #: src/views/notification/Notification.vue:71
@@ -942,7 +950,7 @@ msgstr ""
 msgid "Notifications"
 msgid "Notifications"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:191
+#: src/views/domain/cert/components/ObtainCert.vue:178
 msgid "Obtain certificate"
 msgid "Obtain certificate"
 msgstr ""
 msgstr ""
 
 
@@ -962,11 +970,11 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
-#: src/views/domain/cert/components/ObtainCert.vue:149
+#: src/views/domain/cert/components/ObtainCert.vue:136
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/RightSettings.vue:51
 #: src/views/domain/components/RightSettings.vue:51
-#: src/views/domain/DomainList.vue:143
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:215
+#: src/views/domain/DomainList.vue:146
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/notification/Notification.vue:72
 #: src/views/notification/Notification.vue:72
 msgid "OK"
 msgid "OK"
@@ -1121,11 +1129,11 @@ msgid "Release Note"
 msgstr ""
 msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:266
 #: src/components/ChatGPT/ChatGPT.vue:266
-#: src/components/NginxControl/NginxControl.vue:102
+#: src/components/NginxControl/NginxControl.vue:100
 msgid "Reload"
 msgid "Reload"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NginxControl/NginxControl.vue:76
+#: src/components/NginxControl/NginxControl.vue:74
 msgid "Reloading"
 msgid "Reloading"
 msgstr ""
 msgstr ""
 
 
@@ -1162,11 +1170,11 @@ msgstr ""
 msgid "Reset"
 msgid "Reset"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NginxControl/NginxControl.vue:95
+#: src/components/NginxControl/NginxControl.vue:93
 msgid "Restart"
 msgid "Restart"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NginxControl/NginxControl.vue:81
+#: src/components/NginxControl/NginxControl.vue:79
 msgid "Restarting"
 msgid "Restarting"
 msgstr ""
 msgstr ""
 
 
@@ -1174,12 +1182,12 @@ msgstr ""
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NginxControl/NginxControl.vue:71
+#: src/components/NginxControl/NginxControl.vue:69
 msgid "Running"
 msgid "Running"
 msgstr ""
 msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:212
+#: src/views/certificate/CertificateEditor.vue:214
 #: src/views/config/ConfigEdit.vue:98
 #: src/views/config/ConfigEdit.vue:98
 #: src/views/domain/DomainEdit.vue:268
 #: src/views/domain/DomainEdit.vue:268
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
@@ -1223,14 +1231,14 @@ msgstr ""
 msgid "Send"
 msgid "Send"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NginxControl/NginxControl.vue:29
+#: src/components/NginxControl/NginxControl.vue:31
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
 #: src/views/config/ConfigEdit.vue:42
 #: src/views/config/ConfigEdit.vue:42
-#: src/views/domain/DomainList.vue:79
+#: src/views/domain/DomainList.vue:84
 #: src/views/other/Install.vue:72
 #: src/views/other/Install.vue:72
 #: src/views/preference/Preference.vue:60
 #: src/views/preference/Preference.vue:60
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
@@ -1241,12 +1249,12 @@ msgstr ""
 msgid "Server Info"
 msgid "Server Info"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:115
+#: src/views/domain/cert/components/ObtainCert.vue:102
 msgid "server_name not found in directives"
 msgid "server_name not found in directives"
 msgstr ""
 msgstr ""
 
 
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
-#: src/views/domain/DomainAdd.vue:119
+#: src/views/domain/DomainAdd.vue:124
 msgid "server_name parameter is required"
 msgid "server_name parameter is required"
 msgstr ""
 msgstr ""
 
 
@@ -1278,7 +1286,7 @@ msgstr ""
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:179
+#: src/views/certificate/CertificateEditor.vue:180
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr ""
 msgstr ""
 
 
@@ -1307,7 +1315,7 @@ msgstr ""
 msgid "Status"
 msgid "Status"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NginxControl/NginxControl.vue:86
+#: src/components/NginxControl/NginxControl.vue:84
 msgid "Stopped"
 msgid "Stopped"
 msgstr ""
 msgstr ""
 
 
@@ -1451,7 +1459,7 @@ msgstr ""
 msgid "Valid"
 msgid "Valid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:101
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
 msgid "View"
 msgid "View"
 msgstr ""
 msgstr ""
 
 
@@ -1462,7 +1470,7 @@ msgstr ""
 #: src/constants/index.ts:18
 #: src/constants/index.ts:18
 #: src/views/config/InspectConfig.vue:36
 #: src/views/config/InspectConfig.vue:36
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
-#: src/views/domain/DomainAdd.vue:114
+#: src/views/domain/DomainAdd.vue:119
 msgid "Warning"
 msgid "Warning"
 msgstr ""
 msgstr ""
 
 
@@ -1470,7 +1478,7 @@ msgstr ""
 msgid "We will add one or more TXT records to the DNS records of your domain for ownership verification."
 msgid "We will add one or more TXT records to the DNS records of your domain for ownership verification."
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:147
+#: src/views/domain/cert/components/ObtainCert.vue:134
 msgid "We will remove the HTTPChallenge configuration from this file and reload the Nginx. Are you sure you want to continue?"
 msgid "We will remove the HTTPChallenge configuration from this file and reload the Nginx. Are you sure you want to continue?"
 msgstr ""
 msgstr ""
 
 

+ 92 - 74
app/src/language/ru_RU/app.po

@@ -26,17 +26,11 @@ msgstr "Действие"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
-#: src/views/certificate/Certificate.vue:120
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:115
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:308
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:305
 msgid "Add"
 msgid "Add"
 msgstr "Добавить"
 msgstr "Добавить"
 
 
-#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
-#, fuzzy
-msgid "Add Certificate"
-msgstr "Статус сертификата"
-
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "Добавить директиву ниже"
 msgstr "Добавить директиву ниже"
@@ -46,11 +40,11 @@ msgstr "Добавить директиву ниже"
 msgid "Add Location"
 msgid "Add Location"
 msgstr "Добавить Location"
 msgstr "Добавить Location"
 
 
-#: src/routes/index.ts:71 src/views/domain/DomainAdd.vue:91
+#: src/routes/index.ts:71 src/views/domain/DomainAdd.vue:96
 msgid "Add Site"
 msgid "Add Site"
 msgstr "Добавть Сайт"
 msgstr "Добавть Сайт"
 
 
-#: src/views/certificate/DNSChallenge.vue:95
+#: src/views/certificate/DNSChallenge.vue:94
 #, fuzzy
 #, fuzzy
 msgid "Additional"
 msgid "Additional"
 msgstr "Дополнительно"
 msgstr "Дополнительно"
@@ -87,7 +81,7 @@ msgid "Are you sure you want to clear the record of chat?"
 msgstr "Вы уверены, что хотите удалить эту директиву?"
 msgstr "Вы уверены, что хотите удалить эту директиву?"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
-#: src/views/domain/DomainList.vue:144
+#: src/views/domain/DomainList.vue:147
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to delete?"
 msgid "Are you sure you want to delete?"
 msgstr "Вы уверены, что хотите удалить эту директиву?"
 msgstr "Вы уверены, что хотите удалить эту директиву?"
@@ -109,8 +103,8 @@ msgstr ""
 msgid "Assistant"
 msgid "Assistant"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:104
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:118
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:108
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
 msgid "Author"
 msgid "Author"
 msgstr "Автор"
 msgstr "Автор"
 
 
@@ -122,15 +116,15 @@ msgstr "Авто Сертификат"
 msgid "Auto Refresh"
 msgid "Auto Refresh"
 msgstr "Автообновление"
 msgstr "Автообновление"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:76
+#: src/views/domain/cert/components/ObtainCert.vue:75
 msgid "Auto-renewal disabled for %{name}"
 msgid "Auto-renewal disabled for %{name}"
 msgstr "Автообновление отключено для %{name}"
 msgstr "Автообновление отключено для %{name}"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:69
+#: src/views/domain/cert/components/ObtainCert.vue:68
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr "Автообновление включено для %{name}"
 msgstr "Автообновление включено для %{name}"
 
 
-#: src/views/certificate/CertificateEditor.vue:205
+#: src/views/certificate/CertificateEditor.vue:207
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 msgid "Back"
 msgid "Back"
@@ -141,7 +135,7 @@ msgstr "Назад"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "Вернутся"
 msgstr "Вернутся"
 
 
-#: src/views/domain/DomainAdd.vue:97
+#: src/views/domain/DomainAdd.vue:102
 msgid "Base information"
 msgid "Base information"
 msgstr "Основная информация"
 msgstr "Основная информация"
 
 
@@ -174,10 +168,10 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
-#: src/views/domain/cert/components/ObtainCert.vue:150
+#: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/RightSettings.vue:52
 #: src/views/domain/components/RightSettings.vue:52
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:216
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:213
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 msgid "Cancel"
 msgid "Cancel"
 msgstr "Отмена"
 msgstr "Отмена"
@@ -250,11 +244,11 @@ msgstr "Отключено успешно"
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:284
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:281
 msgid "Comments"
 msgid "Comments"
 msgstr "Комментарии"
 msgstr "Комментарии"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:82
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Config Templates"
 msgid "Config Templates"
 msgstr "Шаблоны конфигураций"
 msgstr "Шаблоны конфигураций"
@@ -263,7 +257,7 @@ msgstr "Шаблоны конфигураций"
 msgid "Configuration file is test successful"
 msgid "Configuration file is test successful"
 msgstr "Проверка конфигурации успешна"
 msgstr "Проверка конфигурации успешна"
 
 
-#: src/views/domain/DomainAdd.vue:103
+#: src/views/domain/DomainAdd.vue:108
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "Название конфигурации"
 msgstr "Название конфигурации"
 
 
@@ -271,7 +265,7 @@ msgstr "Название конфигурации"
 msgid "Configurations"
 msgid "Configurations"
 msgstr "Конфигурации"
 msgstr "Конфигурации"
 
 
-#: src/views/domain/DomainAdd.vue:98
+#: src/views/domain/DomainAdd.vue:103
 msgid "Configure SSL"
 msgid "Configure SSL"
 msgstr "Настроить SSL"
 msgstr "Настроить SSL"
 
 
@@ -297,7 +291,7 @@ msgstr "Нагрузка CPU"
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU:"
 msgstr "CPU:"
 
 
-#: src/views/domain/DomainAdd.vue:156
+#: src/views/domain/DomainAdd.vue:161
 msgid "Create Another"
 msgid "Create Another"
 msgstr "Создать еще"
 msgstr "Создать еще"
 
 
@@ -321,8 +315,8 @@ msgstr "Учетные данные"
 msgid "Current Version"
 msgid "Current Version"
 msgstr "Текущяя версия"
 msgstr "Текущяя версия"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:241
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:126
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:238
 msgid "Custom"
 msgid "Custom"
 msgstr "Пользовательский"
 msgstr "Пользовательский"
 
 
@@ -335,12 +329,12 @@ msgid "Database (Optional, default: database)"
 msgstr "База данных (Опционально, по умолчанию: database)"
 msgstr "База данных (Опционально, по умолчанию: database)"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
-#: src/views/domain/DomainList.vue:153
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:259
+#: src/views/domain/DomainList.vue:156
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:256
 msgid "Delete"
 msgid "Delete"
 msgstr "Удалить"
 msgstr "Удалить"
 
 
-#: src/views/domain/DomainList.vue:77
+#: src/views/domain/DomainList.vue:81
 msgid "Delete site: %{site_name}"
 msgid "Delete site: %{site_name}"
 msgstr ""
 msgstr ""
 
 
@@ -367,8 +361,8 @@ msgstr ""
 msgid "Deploy successfully"
 msgid "Deploy successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:109
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:123
 msgid "Description"
 msgid "Description"
 msgstr "Описание"
 msgstr "Описание"
 
 
@@ -393,22 +387,22 @@ msgstr "Дерективы"
 msgid "Directory"
 msgid "Directory"
 msgstr "Деректива"
 msgstr "Деректива"
 
 
-#: src/views/domain/DomainList.vue:36
+#: src/views/domain/DomainList.vue:125
 #, fuzzy
 #, fuzzy
 msgid "Disable"
 msgid "Disable"
 msgstr "Отключить"
 msgstr "Отключить"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:78
+#: src/views/domain/cert/components/ObtainCert.vue:77
 msgid "Disable auto-renewal failed for %{name}"
 msgid "Disable auto-renewal failed for %{name}"
 msgstr "Не удалось отключить автоматическое продление для %{name}"
 msgstr "Не удалось отключить автоматическое продление для %{name}"
 
 
 #: src/views/domain/cert/ChangeCert.vue:48 src/views/domain/DomainEdit.vue:190
 #: src/views/domain/cert/ChangeCert.vue:48 src/views/domain/DomainEdit.vue:190
-#: src/views/domain/DomainList.vue:122
+#: src/views/domain/DomainList.vue:36
 msgid "Disabled"
 msgid "Disabled"
 msgstr "Отключено"
 msgstr "Отключено"
 
 
 #: src/views/domain/components/RightSettings.vue:39
 #: src/views/domain/components/RightSettings.vue:39
-#: src/views/domain/DomainList.vue:67
+#: src/views/domain/DomainList.vue:70
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "Отключено успешно"
 msgstr "Отключено успешно"
 
 
@@ -436,7 +430,7 @@ msgid_plural "Do you want to deploy this file to remote servers?"
 msgstr[0] "Are you sure you want to remove this directive?"
 msgstr[0] "Are you sure you want to remove this directive?"
 msgstr[1] "Are you sure you want to remove this directive?"
 msgstr[1] "Are you sure you want to remove this directive?"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:146
+#: src/views/domain/cert/components/ObtainCert.vue:133
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
 msgstr "Вы хотите отключить автоматическое обновление сертификата?"
 msgstr "Вы хотите отключить автоматическое обновление сертификата?"
 
 
@@ -455,12 +449,12 @@ msgstr "Вы хотите включить этот сайт?"
 msgid "Do you want to enable TLS?"
 msgid "Do you want to enable TLS?"
 msgstr "Включить TLS?"
 msgstr "Включить TLS?"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:209
 #, fuzzy
 #, fuzzy
 msgid "Do you want to remove this server?"
 msgid "Do you want to remove this server?"
 msgstr "Вы хотите удалить этот сервер?"
 msgstr "Вы хотите удалить этот сервер?"
 
 
-#: src/views/domain/DomainAdd.vue:146
+#: src/views/domain/DomainAdd.vue:151
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr "Конфигурация домена успешно создана"
 msgstr "Конфигурация домена успешно создана"
 
 
@@ -483,7 +477,7 @@ msgid "Dry run mode enabled"
 msgstr "Включен пробный режим"
 msgstr "Включен пробный режим"
 
 
 #: src/views/domain/components/SiteDuplicate.vue:128
 #: src/views/domain/components/SiteDuplicate.vue:128
-#: src/views/domain/DomainList.vue:138
+#: src/views/domain/DomainList.vue:141
 msgid "Duplicate"
 msgid "Duplicate"
 msgstr "Дублировать"
 msgstr "Дублировать"
 
 
@@ -523,7 +517,7 @@ msgstr "Редактировать Сайт"
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "Email (*)"
 msgstr "Email (*)"
 
 
-#: src/views/domain/DomainList.vue:32
+#: src/views/domain/DomainList.vue:133
 #, fuzzy
 #, fuzzy
 msgid "Enable"
 msgid "Enable"
 msgstr "Включить"
 msgstr "Включить"
@@ -536,7 +530,7 @@ msgstr "Включение %{conf_name} in %{node_name} нипалучилася
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr "Включение %{conf_name} in %{node_name} успешно"
 msgstr "Включение %{conf_name} in %{node_name} успешно"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:71
+#: src/views/domain/cert/components/ObtainCert.vue:70
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Не удалось включить автоматическое продление для %{name}"
 msgstr "Не удалось включить автоматическое продление для %{name}"
 
 
@@ -549,20 +543,20 @@ msgstr "Включить не удалось"
 msgid "Enable successfully"
 msgid "Enable successfully"
 msgstr "Активировано успешно"
 msgstr "Активировано успешно"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:236
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:233
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "Включить TLS"
 msgstr "Включить TLS"
 
 
 #: src/views/domain/cert/ChangeCert.vue:44
 #: src/views/domain/cert/ChangeCert.vue:44
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/domain/DomainEdit.vue:184 src/views/domain/DomainList.vue:130
+#: src/views/domain/DomainEdit.vue:184 src/views/domain/DomainList.vue:32
 msgid "Enabled"
 msgid "Enabled"
 msgstr "Включено"
 msgstr "Включено"
 
 
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/SiteDuplicate.vue:100
 #: src/views/domain/components/SiteDuplicate.vue:100
-#: src/views/domain/DomainAdd.vue:45 src/views/domain/DomainList.vue:58
+#: src/views/domain/DomainAdd.vue:45 src/views/domain/DomainList.vue:60
 msgid "Enabled successfully"
 msgid "Enabled successfully"
 msgstr "Активировано успешно"
 msgstr "Активировано успешно"
 
 
@@ -606,12 +600,12 @@ msgid "Export"
 msgstr "Экспорт"
 msgstr "Экспорт"
 
 
 #: src/views/domain/components/RightSettings.vue:42
 #: src/views/domain/components/RightSettings.vue:42
-#: src/views/domain/DomainList.vue:70
+#: src/views/domain/DomainList.vue:74
 msgid "Failed to disable %{msg}"
 msgid "Failed to disable %{msg}"
 msgstr "Не удалось отключить %{msg}"
 msgstr "Не удалось отключить %{msg}"
 
 
 #: src/views/domain/components/RightSettings.vue:33
 #: src/views/domain/components/RightSettings.vue:33
-#: src/views/domain/DomainList.vue:61
+#: src/views/domain/DomainList.vue:64
 msgid "Failed to enable %{msg}"
 msgid "Failed to enable %{msg}"
 msgstr "Не удалось включить %{msg}"
 msgstr "Не удалось включить %{msg}"
 
 
@@ -639,7 +633,7 @@ msgstr "Файл не найден"
 msgid "Filter"
 msgid "Filter"
 msgstr "Фильтр"
 msgstr "Фильтр"
 
 
-#: src/language/constants.ts:23 src/views/domain/DomainAdd.vue:99
+#: src/language/constants.ts:23 src/views/domain/DomainAdd.vue:104
 msgid "Finished"
 msgid "Finished"
 msgstr "Готово"
 msgstr "Готово"
 
 
@@ -719,6 +713,16 @@ msgstr "Порт HTTP"
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr ""
 msgstr ""
 
 
+#: src/views/certificate/Certificate.vue:120
+#, fuzzy
+msgid "Import"
+msgstr "Экспорт"
+
+#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
+#, fuzzy
+msgid "Import Certificate"
+msgstr "Статус сертификата"
+
 #: src/constants/index.ts:19
 #: src/constants/index.ts:19
 msgid "Info"
 msgid "Info"
 msgstr ""
 msgstr ""
@@ -765,6 +769,12 @@ msgstr "Оставьте пустым без изменений"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgstr "Оставьте пустым для значения по умолчанию: https://api.openai.com/"
 msgstr "Оставьте пустым для значения по умолчанию: https://api.openai.com/"
 
 
+#: src/views/certificate/CertificateEditor.vue:177
+#: src/views/certificate/CertificateEditor.vue:185
+#, fuzzy
+msgid "Leave blank will not change anything"
+msgstr "Оставьте пустым без изменений"
+
 #: src/views/system/About.vue:50
 #: src/views/system/About.vue:50
 #, fuzzy
 #, fuzzy
 msgid "License"
 msgid "License"
@@ -793,7 +803,7 @@ msgstr "Location"
 msgid "Locations"
 msgid "Locations"
 msgstr "Locations"
 msgstr "Locations"
 
 
-#: src/views/certificate/CertificateEditor.vue:193
+#: src/views/certificate/CertificateEditor.vue:195
 #, fuzzy
 #, fuzzy
 msgid "Log"
 msgid "Log"
 msgstr "Логин"
 msgstr "Логин"
@@ -823,7 +833,7 @@ msgstr ""
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "Конфигурации"
 msgstr "Конфигурации"
 
 
-#: src/routes/index.ts:59 src/views/domain/DomainList.vue:102
+#: src/routes/index.ts:59 src/views/domain/DomainList.vue:105
 msgid "Manage Sites"
 msgid "Manage Sites"
 msgstr "Сайты"
 msgstr "Сайты"
 
 
@@ -856,7 +866,7 @@ msgstr "Изменить"
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "Статус сертификата"
 msgstr "Статус сертификата"
 
 
-#: src/views/domain/DomainAdd.vue:153
+#: src/views/domain/DomainAdd.vue:158
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "Изменить конфигурацию"
 msgstr "Изменить конфигурацию"
 
 
@@ -895,8 +905,8 @@ msgstr "Всего отправлено"
 msgid "New version released"
 msgid "New version released"
 msgstr "Вышла новая версия"
 msgstr "Вышла новая версия"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:216
-#: src/views/domain/DomainAdd.vue:140
+#: src/views/domain/cert/components/ObtainCert.vue:203
+#: src/views/domain/DomainAdd.vue:145
 msgid "Next"
 msgid "Next"
 msgstr "Дальше"
 msgstr "Дальше"
 
 
@@ -914,7 +924,7 @@ msgstr "Путь для Nginx Access Log"
 msgid "Nginx Configuration Parse Error"
 msgid "Nginx Configuration Parse Error"
 msgstr "Ошибка синтаксического анализа конфигурации Nginx"
 msgstr "Ошибка синтаксического анализа конфигурации Nginx"
 
 
-#: src/components/NginxControl/NginxControl.vue:67
+#: src/components/NginxControl/NginxControl.vue:65
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr "Управление Nginx"
 msgstr "Управление Nginx"
 
 
@@ -926,7 +936,7 @@ msgstr "Путь для Nginx Error Log"
 msgid "Nginx Log"
 msgid "Nginx Log"
 msgstr "Журнал"
 msgstr "Журнал"
 
 
-#: src/components/NginxControl/NginxControl.vue:23
+#: src/components/NginxControl/NginxControl.vue:25
 #, fuzzy
 #, fuzzy
 msgid "Nginx reloaded successfully"
 msgid "Nginx reloaded successfully"
 msgstr "Nginx перезагружен успешно"
 msgstr "Nginx перезагружен успешно"
@@ -939,7 +949,7 @@ msgstr "Nginx успешно перезапущен"
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/Notification/Notification.vue:84
 #: src/components/Notification/Notification.vue:84
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
-#: src/views/domain/DomainList.vue:142
+#: src/views/domain/DomainList.vue:145
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/notification/Notification.vue:71
 #: src/views/notification/Notification.vue:71
@@ -977,7 +987,7 @@ msgstr "Сертификат"
 msgid "Notifications"
 msgid "Notifications"
 msgstr "Сертификат"
 msgstr "Сертификат"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:191
+#: src/views/domain/cert/components/ObtainCert.vue:178
 #, fuzzy
 #, fuzzy
 msgid "Obtain certificate"
 msgid "Obtain certificate"
 msgstr "Получить сертификат"
 msgstr "Получить сертификат"
@@ -998,11 +1008,11 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
-#: src/views/domain/cert/components/ObtainCert.vue:149
+#: src/views/domain/cert/components/ObtainCert.vue:136
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/RightSettings.vue:51
 #: src/views/domain/components/RightSettings.vue:51
-#: src/views/domain/DomainList.vue:143
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:215
+#: src/views/domain/DomainList.vue:146
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/notification/Notification.vue:72
 #: src/views/notification/Notification.vue:72
 msgid "OK"
 msgid "OK"
@@ -1164,11 +1174,11 @@ msgid "Release Note"
 msgstr "Что нового"
 msgstr "Что нового"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:266
 #: src/components/ChatGPT/ChatGPT.vue:266
-#: src/components/NginxControl/NginxControl.vue:102
+#: src/components/NginxControl/NginxControl.vue:100
 msgid "Reload"
 msgid "Reload"
 msgstr "Перегрузить"
 msgstr "Перегрузить"
 
 
-#: src/components/NginxControl/NginxControl.vue:76
+#: src/components/NginxControl/NginxControl.vue:74
 msgid "Reloading"
 msgid "Reloading"
 msgstr "Перезагружается"
 msgstr "Перезагружается"
 
 
@@ -1210,11 +1220,11 @@ msgstr "Запрос с неправильными параметрами"
 msgid "Reset"
 msgid "Reset"
 msgstr "Сброс"
 msgstr "Сброс"
 
 
-#: src/components/NginxControl/NginxControl.vue:95
+#: src/components/NginxControl/NginxControl.vue:93
 msgid "Restart"
 msgid "Restart"
 msgstr "Перезапуск"
 msgstr "Перезапуск"
 
 
-#: src/components/NginxControl/NginxControl.vue:81
+#: src/components/NginxControl/NginxControl.vue:79
 msgid "Restarting"
 msgid "Restarting"
 msgstr "Перезапускается"
 msgstr "Перезапускается"
 
 
@@ -1223,12 +1233,12 @@ msgstr "Перезапускается"
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "Расширенный режим"
 msgstr "Расширенный режим"
 
 
-#: src/components/NginxControl/NginxControl.vue:71
+#: src/components/NginxControl/NginxControl.vue:69
 msgid "Running"
 msgid "Running"
 msgstr "Выполняется"
 msgstr "Выполняется"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:212
+#: src/views/certificate/CertificateEditor.vue:214
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/preference/Preference.vue:113
 #: src/views/preference/Preference.vue:113
@@ -1271,13 +1281,13 @@ msgstr "Выбор"
 msgid "Send"
 msgid "Send"
 msgstr "Отправлено"
 msgstr "Отправлено"
 
 
-#: src/components/NginxControl/NginxControl.vue:29
+#: src/components/NginxControl/NginxControl.vue:31
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
-#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:79
+#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
 #: src/views/other/Install.vue:72 src/views/preference/Preference.vue:60
 #: src/views/other/Install.vue:72 src/views/preference/Preference.vue:60
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1287,12 +1297,12 @@ msgstr "Ошибка сервера"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Информация о сервере"
 msgstr "Информация о сервере"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:115
+#: src/views/domain/cert/components/ObtainCert.vue:102
 msgid "server_name not found in directives"
 msgid "server_name not found in directives"
 msgstr "server_name не нашел в директивах"
 msgstr "server_name не нашел в директивах"
 
 
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
-#: src/views/domain/DomainAdd.vue:119
+#: src/views/domain/DomainAdd.vue:124
 msgid "server_name parameter is required"
 msgid "server_name parameter is required"
 msgstr "server_name параметр обязателен"
 msgstr "server_name параметр обязателен"
 
 
@@ -1326,7 +1336,7 @@ msgstr "Список сайтов"
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "Содержание сертификата SSL"
 msgstr "Содержание сертификата SSL"
 
 
-#: src/views/certificate/CertificateEditor.vue:179
+#: src/views/certificate/CertificateEditor.vue:180
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr "Содержание ключа сертификата SSL"
 msgstr "Содержание ключа сертификата SSL"
@@ -1358,7 +1368,7 @@ msgstr "Таблица"
 msgid "Status"
 msgid "Status"
 msgstr "Статус"
 msgstr "Статус"
 
 
-#: src/components/NginxControl/NginxControl.vue:86
+#: src/components/NginxControl/NginxControl.vue:84
 msgid "Stopped"
 msgid "Stopped"
 msgstr "Остановлен"
 msgstr "Остановлен"
 
 
@@ -1516,7 +1526,7 @@ msgstr "Имя пользователя (*)"
 msgid "Valid"
 msgid "Valid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:101
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
 msgid "View"
 msgid "View"
 msgstr "Просмотр"
 msgstr "Просмотр"
 
 
@@ -1527,7 +1537,7 @@ msgstr "Сертификат"
 
 
 #: src/constants/index.ts:18 src/views/config/InspectConfig.vue:36
 #: src/constants/index.ts:18 src/views/config/InspectConfig.vue:36
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
-#: src/views/domain/DomainAdd.vue:114
+#: src/views/domain/DomainAdd.vue:119
 msgid "Warning"
 msgid "Warning"
 msgstr "Внимание"
 msgstr "Внимание"
 
 
@@ -1537,7 +1547,7 @@ msgid ""
 "ownership verification."
 "ownership verification."
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:147
+#: src/views/domain/cert/components/ObtainCert.vue:134
 msgid ""
 msgid ""
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "Nginx. Are you sure you want to continue?"
 "Nginx. Are you sure you want to continue?"
@@ -1569,6 +1579,14 @@ msgstr "Вы используете последнюю версию"
 msgid "You can check Nginx UI upgrade at this page."
 msgid "You can check Nginx UI upgrade at this page."
 msgstr "Вы можете проверить обновление Nginx UI на этой странице."
 msgstr "Вы можете проверить обновление Nginx UI на этой странице."
 
 
+#, fuzzy
+#~ msgid "Add Certificate"
+#~ msgstr "Статус сертификата"
+
+#, fuzzy
+#~ msgid "Leave blank will not change anything."
+#~ msgstr "Оставьте пустым без изменений"
+
 #, fuzzy
 #, fuzzy
 #~ msgid "Renew certificate"
 #~ msgid "Renew certificate"
 #~ msgstr "Получить сертификат"
 #~ msgstr "Получить сертификат"

+ 48 - 30
app/src/language/vi_VN/app.po

@@ -26,17 +26,11 @@ msgstr "Hành động"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
-#: src/views/certificate/Certificate.vue:120
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:308
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:305
 msgid "Add"
 msgid "Add"
 msgstr "Thêm"
 msgstr "Thêm"
 
 
-#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
-#, fuzzy
-msgid "Add Certificate"
-msgstr "Thêm chứng chỉ SSL"
-
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "Thêm Directive"
 msgstr "Thêm Directive"
@@ -50,7 +44,7 @@ msgstr "Thêm Location"
 msgid "Add Site"
 msgid "Add Site"
 msgstr "Thêm Website"
 msgstr "Thêm Website"
 
 
-#: src/views/certificate/DNSChallenge.vue:95
+#: src/views/certificate/DNSChallenge.vue:94
 #, fuzzy
 #, fuzzy
 msgid "Additional"
 msgid "Additional"
 msgstr "Tùy chọn bổ sung"
 msgstr "Tùy chọn bổ sung"
@@ -122,15 +116,15 @@ msgstr "Tự động ký chứng chỉ SSL"
 msgid "Auto Refresh"
 msgid "Auto Refresh"
 msgstr "Tự động làm mới"
 msgstr "Tự động làm mới"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:76
+#: src/views/domain/cert/components/ObtainCert.vue:75
 msgid "Auto-renewal disabled for %{name}"
 msgid "Auto-renewal disabled for %{name}"
 msgstr "Đã tắt tự động gia hạn SSL cho %{name}"
 msgstr "Đã tắt tự động gia hạn SSL cho %{name}"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:69
+#: src/views/domain/cert/components/ObtainCert.vue:68
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr "Đã bật tự động gia hạn SSL cho %{name}"
 msgstr "Đã bật tự động gia hạn SSL cho %{name}"
 
 
-#: src/views/certificate/CertificateEditor.vue:205
+#: src/views/certificate/CertificateEditor.vue:207
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 msgid "Back"
 msgid "Back"
@@ -174,10 +168,10 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
-#: src/views/domain/cert/components/ObtainCert.vue:150
+#: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/RightSettings.vue:52
 #: src/views/domain/components/RightSettings.vue:52
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:216
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:213
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 msgid "Cancel"
 msgid "Cancel"
 msgstr "Huỷ"
 msgstr "Huỷ"
@@ -250,7 +244,7 @@ msgstr "Đã xóa thành công"
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:284
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:281
 msgid "Comments"
 msgid "Comments"
 msgstr "Bình luận"
 msgstr "Bình luận"
 
 
@@ -322,7 +316,7 @@ msgid "Current Version"
 msgstr "Phiên bản hiện tại"
 msgstr "Phiên bản hiện tại"
 
 
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:126
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:126
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:241
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:238
 msgid "Custom"
 msgid "Custom"
 msgstr "Tuỳ chỉnh"
 msgstr "Tuỳ chỉnh"
 
 
@@ -336,7 +330,7 @@ msgstr "Tên cơ sở dữ liệu (Tuỳ chọn, Mặc định là: database)"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
 #: src/views/domain/DomainList.vue:156
 #: src/views/domain/DomainList.vue:156
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:259
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:256
 msgid "Delete"
 msgid "Delete"
 msgstr "Xoá"
 msgstr "Xoá"
 
 
@@ -398,7 +392,7 @@ msgstr "Thư mục"
 msgid "Disable"
 msgid "Disable"
 msgstr "Tắt"
 msgstr "Tắt"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:78
+#: src/views/domain/cert/components/ObtainCert.vue:77
 msgid "Disable auto-renewal failed for %{name}"
 msgid "Disable auto-renewal failed for %{name}"
 msgstr "Tắt tự động gia hạn SSL cho %{name} thất bại"
 msgstr "Tắt tự động gia hạn SSL cho %{name} thất bại"
 
 
@@ -436,7 +430,7 @@ msgid_plural "Do you want to deploy this file to remote servers?"
 msgstr[0] "Bạn có muốn triển khai tệp này đến máy chủ từ xa không?"
 msgstr[0] "Bạn có muốn triển khai tệp này đến máy chủ từ xa không?"
 msgstr[1] "Bạn có muốn triển khai tệp này đến máy chủ từ xa không?"
 msgstr[1] "Bạn có muốn triển khai tệp này đến máy chủ từ xa không?"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:146
+#: src/views/domain/cert/components/ObtainCert.vue:133
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
 msgstr "Bạn muốn tắt tự động gia hạn chứng chỉ SSL ?"
 msgstr "Bạn muốn tắt tự động gia hạn chứng chỉ SSL ?"
 
 
@@ -455,7 +449,7 @@ msgstr "Bạn muốn bật trang web này ?"
 msgid "Do you want to enable TLS?"
 msgid "Do you want to enable TLS?"
 msgstr "Bạn muốn bật TLS ?"
 msgstr "Bạn muốn bật TLS ?"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:209
 #, fuzzy
 #, fuzzy
 msgid "Do you want to remove this server?"
 msgid "Do you want to remove this server?"
 msgstr "Bạn muốn xóa máy chủ này ?"
 msgstr "Bạn muốn xóa máy chủ này ?"
@@ -536,7 +530,7 @@ msgstr "Không thể bật %{conf_name} trên %{node_name}"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr "Đã bật %{conf_name} trên %{node_name}"
 msgstr "Đã bật %{conf_name} trên %{node_name}"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:71
+#: src/views/domain/cert/components/ObtainCert.vue:70
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Không thể bật tự động gia hạn SSL cho %{name}"
 msgstr "Không thể bật tự động gia hạn SSL cho %{name}"
 
 
@@ -549,7 +543,7 @@ msgstr "Bật không thành công"
 msgid "Enable successfully"
 msgid "Enable successfully"
 msgstr "Đã bật"
 msgstr "Đã bật"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:236
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:233
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "Bật TLS"
 msgstr "Bật TLS"
 
 
@@ -719,6 +713,16 @@ msgstr ""
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr ""
 msgstr ""
 
 
+#: src/views/certificate/Certificate.vue:120
+#, fuzzy
+msgid "Import"
+msgstr "Xuất"
+
+#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
+#, fuzzy
+msgid "Import Certificate"
+msgstr "Chứng chỉ"
+
 #: src/constants/index.ts:19
 #: src/constants/index.ts:19
 msgid "Info"
 msgid "Info"
 msgstr "Thông tin"
 msgstr "Thông tin"
@@ -765,6 +769,12 @@ msgstr "Bỏ trống nếu không thay đổi"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgstr "Bỏ trống để sử dụng địa chỉ mặc định: https://api.openai.com/"
 msgstr "Bỏ trống để sử dụng địa chỉ mặc định: https://api.openai.com/"
 
 
+#: src/views/certificate/CertificateEditor.vue:177
+#: src/views/certificate/CertificateEditor.vue:185
+#, fuzzy
+msgid "Leave blank will not change anything"
+msgstr "Bỏ trống nếu không thay đổi"
+
 #: src/views/system/About.vue:50
 #: src/views/system/About.vue:50
 #, fuzzy
 #, fuzzy
 msgid "License"
 msgid "License"
@@ -793,7 +803,7 @@ msgstr "Location"
 msgid "Locations"
 msgid "Locations"
 msgstr "Locations"
 msgstr "Locations"
 
 
-#: src/views/certificate/CertificateEditor.vue:193
+#: src/views/certificate/CertificateEditor.vue:195
 #, fuzzy
 #, fuzzy
 msgid "Log"
 msgid "Log"
 msgstr "Log"
 msgstr "Log"
@@ -894,7 +904,7 @@ msgstr "Tổng lưu lượng mạng đã gửi"
 msgid "New version released"
 msgid "New version released"
 msgstr "Đã có phiên bản mới"
 msgstr "Đã có phiên bản mới"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:216
+#: src/views/domain/cert/components/ObtainCert.vue:203
 #: src/views/domain/DomainAdd.vue:145
 #: src/views/domain/DomainAdd.vue:145
 msgid "Next"
 msgid "Next"
 msgstr "Tiếp theo"
 msgstr "Tiếp theo"
@@ -975,7 +985,7 @@ msgstr "Thông báo"
 msgid "Notifications"
 msgid "Notifications"
 msgstr "Thông báo"
 msgstr "Thông báo"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:191
+#: src/views/domain/cert/components/ObtainCert.vue:178
 #, fuzzy
 #, fuzzy
 msgid "Obtain certificate"
 msgid "Obtain certificate"
 msgstr "Nhận chứng chỉ"
 msgstr "Nhận chứng chỉ"
@@ -996,11 +1006,11 @@ msgstr "Ngoại tuyến"
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
-#: src/views/domain/cert/components/ObtainCert.vue:149
+#: src/views/domain/cert/components/ObtainCert.vue:136
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/RightSettings.vue:51
 #: src/views/domain/components/RightSettings.vue:51
 #: src/views/domain/DomainList.vue:146
 #: src/views/domain/DomainList.vue:146
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:215
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/notification/Notification.vue:72
 #: src/views/notification/Notification.vue:72
 msgid "OK"
 msgid "OK"
@@ -1228,7 +1238,7 @@ msgid "Running"
 msgstr "Running"
 msgstr "Running"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:212
+#: src/views/certificate/CertificateEditor.vue:214
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/preference/Preference.vue:113
 #: src/views/preference/Preference.vue:113
@@ -1287,7 +1297,7 @@ msgstr "Lỗi máy chủ"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Thông tin máy chủ"
 msgstr "Thông tin máy chủ"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:115
+#: src/views/domain/cert/components/ObtainCert.vue:102
 msgid "server_name not found in directives"
 msgid "server_name not found in directives"
 msgstr "không tìm thấy server_name trong directives"
 msgstr "không tìm thấy server_name trong directives"
 
 
@@ -1326,7 +1336,7 @@ msgstr "Danh sách Website"
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:179
+#: src/views/certificate/CertificateEditor.vue:180
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr ""
 msgstr ""
 
 
@@ -1537,7 +1547,7 @@ msgstr ""
 "Chúng tôi sẽ thêm một hoặc nhiều bản ghi TXT để xác minh quyền sở hữu tên "
 "Chúng tôi sẽ thêm một hoặc nhiều bản ghi TXT để xác minh quyền sở hữu tên "
 "miền của bạn."
 "miền của bạn."
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:147
+#: src/views/domain/cert/components/ObtainCert.vue:134
 msgid ""
 msgid ""
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "Nginx. Are you sure you want to continue?"
 "Nginx. Are you sure you want to continue?"
@@ -1571,6 +1581,14 @@ msgstr "Bạn đang sử dụng phiên bản mới nhất"
 msgid "You can check Nginx UI upgrade at this page."
 msgid "You can check Nginx UI upgrade at this page."
 msgstr "Bạn có thể kiểm tra nâng cấp Nginx UI tại trang này"
 msgstr "Bạn có thể kiểm tra nâng cấp Nginx UI tại trang này"
 
 
+#, fuzzy
+#~ msgid "Add Certificate"
+#~ msgstr "Thêm chứng chỉ SSL"
+
+#, fuzzy
+#~ msgid "Leave blank will not change anything."
+#~ msgstr "Bỏ trống nếu không thay đổi"
+
 #, fuzzy
 #, fuzzy
 #~ msgid "Renew certificate"
 #~ msgid "Renew certificate"
 #~ msgstr "Gia hạn SSL"
 #~ msgstr "Gia hạn SSL"

二进制
app/src/language/zh_CN/app.mo


+ 87 - 73
app/src/language/zh_CN/app.po

@@ -30,16 +30,11 @@ msgstr "操作"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
-#: src/views/certificate/Certificate.vue:120
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:115
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:308
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:305
 msgid "Add"
 msgid "Add"
 msgstr "添加"
 msgstr "添加"
 
 
-#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
-msgid "Add Certificate"
-msgstr "添加证书"
-
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "在下面添加指令"
 msgstr "在下面添加指令"
@@ -49,11 +44,11 @@ msgstr "在下面添加指令"
 msgid "Add Location"
 msgid "Add Location"
 msgstr "添加 Location"
 msgstr "添加 Location"
 
 
-#: src/routes/index.ts:71 src/views/domain/DomainAdd.vue:91
+#: src/routes/index.ts:71 src/views/domain/DomainAdd.vue:96
 msgid "Add Site"
 msgid "Add Site"
 msgstr "添加站点"
 msgstr "添加站点"
 
 
-#: src/views/certificate/DNSChallenge.vue:95
+#: src/views/certificate/DNSChallenge.vue:94
 msgid "Additional"
 msgid "Additional"
 msgstr "额外选项"
 msgstr "额外选项"
 
 
@@ -87,7 +82,7 @@ msgid "Are you sure you want to clear the record of chat?"
 msgstr "你确定你要清除聊天记录吗?"
 msgstr "你确定你要清除聊天记录吗?"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
-#: src/views/domain/DomainList.vue:144
+#: src/views/domain/DomainList.vue:147
 msgid "Are you sure you want to delete?"
 msgid "Are you sure you want to delete?"
 msgstr "您确定要删除吗?"
 msgstr "您确定要删除吗?"
 
 
@@ -107,8 +102,8 @@ msgstr "与ChatGPT聊天"
 msgid "Assistant"
 msgid "Assistant"
 msgstr "助手"
 msgstr "助手"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:104
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:118
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:108
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
 msgid "Author"
 msgid "Author"
 msgstr "作者"
 msgstr "作者"
 
 
@@ -120,15 +115,15 @@ msgstr "自动更新"
 msgid "Auto Refresh"
 msgid "Auto Refresh"
 msgstr "自动刷新"
 msgstr "自动刷新"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:76
+#: src/views/domain/cert/components/ObtainCert.vue:75
 msgid "Auto-renewal disabled for %{name}"
 msgid "Auto-renewal disabled for %{name}"
 msgstr "成功关闭 %{name} 自动续签"
 msgstr "成功关闭 %{name} 自动续签"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:69
+#: src/views/domain/cert/components/ObtainCert.vue:68
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr "成功启用 %{name} 自动续签"
 msgstr "成功启用 %{name} 自动续签"
 
 
-#: src/views/certificate/CertificateEditor.vue:205
+#: src/views/certificate/CertificateEditor.vue:207
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 msgid "Back"
 msgid "Back"
@@ -138,7 +133,7 @@ msgstr "返回"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "返回首页"
 msgstr "返回首页"
 
 
-#: src/views/domain/DomainAdd.vue:97
+#: src/views/domain/DomainAdd.vue:102
 msgid "Base information"
 msgid "Base information"
 msgstr "基本信息"
 msgstr "基本信息"
 
 
@@ -169,10 +164,10 @@ msgstr "CADir"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
-#: src/views/domain/cert/components/ObtainCert.vue:150
+#: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/RightSettings.vue:52
 #: src/views/domain/components/RightSettings.vue:52
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:216
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:213
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 msgid "Cancel"
 msgid "Cancel"
 msgstr "取消"
 msgstr "取消"
@@ -241,11 +236,11 @@ msgstr "清除成功"
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:284
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:281
 msgid "Comments"
 msgid "Comments"
 msgstr "注释"
 msgstr "注释"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:82
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:86
 msgid "Config Templates"
 msgid "Config Templates"
 msgstr "配置"
 msgstr "配置"
 
 
@@ -253,7 +248,7 @@ msgstr "配置"
 msgid "Configuration file is test successful"
 msgid "Configuration file is test successful"
 msgstr "配置文件测试成功"
 msgstr "配置文件测试成功"
 
 
-#: src/views/domain/DomainAdd.vue:103
+#: src/views/domain/DomainAdd.vue:108
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "配置名称"
 msgstr "配置名称"
 
 
@@ -261,7 +256,7 @@ msgstr "配置名称"
 msgid "Configurations"
 msgid "Configurations"
 msgstr "配置"
 msgstr "配置"
 
 
-#: src/views/domain/DomainAdd.vue:98
+#: src/views/domain/DomainAdd.vue:103
 msgid "Configure SSL"
 msgid "Configure SSL"
 msgstr "配置 SSL"
 msgstr "配置 SSL"
 
 
@@ -287,7 +282,7 @@ msgstr "CPU 状态"
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU:"
 msgstr "CPU:"
 
 
-#: src/views/domain/DomainAdd.vue:156
+#: src/views/domain/DomainAdd.vue:161
 msgid "Create Another"
 msgid "Create Another"
 msgstr "再创建一个"
 msgstr "再创建一个"
 
 
@@ -311,8 +306,8 @@ msgstr "凭证"
 msgid "Current Version"
 msgid "Current Version"
 msgstr "当前版本"
 msgstr "当前版本"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:241
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:126
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:238
 msgid "Custom"
 msgid "Custom"
 msgstr "自定义"
 msgstr "自定义"
 
 
@@ -325,12 +320,12 @@ msgid "Database (Optional, default: database)"
 msgstr "数据库 (可选,默认: database)"
 msgstr "数据库 (可选,默认: database)"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
-#: src/views/domain/DomainList.vue:153
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:259
+#: src/views/domain/DomainList.vue:156
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:256
 msgid "Delete"
 msgid "Delete"
 msgstr "删除"
 msgstr "删除"
 
 
-#: src/views/domain/DomainList.vue:77
+#: src/views/domain/DomainList.vue:81
 msgid "Delete site: %{site_name}"
 msgid "Delete site: %{site_name}"
 msgstr "删除站点: %{site_name}"
 msgstr "删除站点: %{site_name}"
 
 
@@ -355,8 +350,8 @@ msgstr "成功地将%{conf_name}部署到%{node_name}"
 msgid "Deploy successfully"
 msgid "Deploy successfully"
 msgstr "部署成功"
 msgstr "部署成功"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:109
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:123
 msgid "Description"
 msgid "Description"
 msgstr "描述"
 msgstr "描述"
 
 
@@ -380,21 +375,21 @@ msgstr "指令"
 msgid "Directory"
 msgid "Directory"
 msgstr "目录"
 msgstr "目录"
 
 
-#: src/views/domain/DomainList.vue:36
+#: src/views/domain/DomainList.vue:125
 msgid "Disable"
 msgid "Disable"
 msgstr "禁用"
 msgstr "禁用"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:78
+#: src/views/domain/cert/components/ObtainCert.vue:77
 msgid "Disable auto-renewal failed for %{name}"
 msgid "Disable auto-renewal failed for %{name}"
 msgstr "关闭 %{name} 自动续签失败"
 msgstr "关闭 %{name} 自动续签失败"
 
 
 #: src/views/domain/cert/ChangeCert.vue:48 src/views/domain/DomainEdit.vue:190
 #: src/views/domain/cert/ChangeCert.vue:48 src/views/domain/DomainEdit.vue:190
-#: src/views/domain/DomainList.vue:122
+#: src/views/domain/DomainList.vue:36
 msgid "Disabled"
 msgid "Disabled"
 msgstr "禁用"
 msgstr "禁用"
 
 
 #: src/views/domain/components/RightSettings.vue:39
 #: src/views/domain/components/RightSettings.vue:39
-#: src/views/domain/DomainList.vue:67
+#: src/views/domain/DomainList.vue:70
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "禁用成功"
 msgstr "禁用成功"
 
 
@@ -420,7 +415,7 @@ msgid "Do you want to deploy this file to remote server?"
 msgid_plural "Do you want to deploy this file to remote servers?"
 msgid_plural "Do you want to deploy this file to remote servers?"
 msgstr[0] "你想把这个文件部署到远程服务器上吗?"
 msgstr[0] "你想把这个文件部署到远程服务器上吗?"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:146
+#: src/views/domain/cert/components/ObtainCert.vue:133
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
 msgstr "你想禁用自动更新证书吗?"
 msgstr "你想禁用自动更新证书吗?"
 
 
@@ -436,11 +431,11 @@ msgstr "你想启用这个网站吗?"
 msgid "Do you want to enable TLS?"
 msgid "Do you want to enable TLS?"
 msgstr "你想启用TLS吗?"
 msgstr "你想启用TLS吗?"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:209
 msgid "Do you want to remove this server?"
 msgid "Do you want to remove this server?"
 msgstr "你想删除这个服务器吗?"
 msgstr "你想删除这个服务器吗?"
 
 
-#: src/views/domain/DomainAdd.vue:146
+#: src/views/domain/DomainAdd.vue:151
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr "域名配置文件创建成功"
 msgstr "域名配置文件创建成功"
 
 
@@ -461,7 +456,7 @@ msgid "Dry run mode enabled"
 msgstr "试运行模式已启动"
 msgstr "试运行模式已启动"
 
 
 #: src/views/domain/components/SiteDuplicate.vue:128
 #: src/views/domain/components/SiteDuplicate.vue:128
-#: src/views/domain/DomainList.vue:138
+#: src/views/domain/DomainList.vue:141
 msgid "Duplicate"
 msgid "Duplicate"
 msgstr "复制"
 msgstr "复制"
 
 
@@ -497,7 +492,7 @@ msgstr "编辑站点"
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "邮箱 (*)"
 msgstr "邮箱 (*)"
 
 
-#: src/views/domain/DomainList.vue:32
+#: src/views/domain/DomainList.vue:133
 msgid "Enable"
 msgid "Enable"
 msgstr "启用"
 msgstr "启用"
 
 
@@ -509,7 +504,7 @@ msgstr "在%{node_name}中启用%{conf_name}失败"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr "成功启用%{node_name}中的%{conf_name}"
 msgstr "成功启用%{node_name}中的%{conf_name}"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:71
+#: src/views/domain/cert/components/ObtainCert.vue:70
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "启用 %{name} 自动续签失败"
 msgstr "启用 %{name} 自动续签失败"
 
 
@@ -521,20 +516,20 @@ msgstr "启用失败"
 msgid "Enable successfully"
 msgid "Enable successfully"
 msgstr "启用成功"
 msgstr "启用成功"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:236
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:233
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "启用 TLS"
 msgstr "启用 TLS"
 
 
 #: src/views/domain/cert/ChangeCert.vue:44
 #: src/views/domain/cert/ChangeCert.vue:44
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/domain/DomainEdit.vue:184 src/views/domain/DomainList.vue:130
+#: src/views/domain/DomainEdit.vue:184 src/views/domain/DomainList.vue:32
 msgid "Enabled"
 msgid "Enabled"
 msgstr "启用"
 msgstr "启用"
 
 
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/SiteDuplicate.vue:100
 #: src/views/domain/components/SiteDuplicate.vue:100
-#: src/views/domain/DomainAdd.vue:45 src/views/domain/DomainList.vue:58
+#: src/views/domain/DomainAdd.vue:45 src/views/domain/DomainList.vue:60
 msgid "Enabled successfully"
 msgid "Enabled successfully"
 msgstr "启用成功"
 msgstr "启用成功"
 
 
@@ -576,12 +571,12 @@ msgid "Export"
 msgstr "导出"
 msgstr "导出"
 
 
 #: src/views/domain/components/RightSettings.vue:42
 #: src/views/domain/components/RightSettings.vue:42
-#: src/views/domain/DomainList.vue:70
+#: src/views/domain/DomainList.vue:74
 msgid "Failed to disable %{msg}"
 msgid "Failed to disable %{msg}"
 msgstr "禁用失败 %{msg}"
 msgstr "禁用失败 %{msg}"
 
 
 #: src/views/domain/components/RightSettings.vue:33
 #: src/views/domain/components/RightSettings.vue:33
-#: src/views/domain/DomainList.vue:61
+#: src/views/domain/DomainList.vue:64
 msgid "Failed to enable %{msg}"
 msgid "Failed to enable %{msg}"
 msgstr "启用失败 %{msg}"
 msgstr "启用失败 %{msg}"
 
 
@@ -609,7 +604,7 @@ msgstr "未找到文件"
 msgid "Filter"
 msgid "Filter"
 msgstr "过滤"
 msgstr "过滤"
 
 
-#: src/language/constants.ts:23 src/views/domain/DomainAdd.vue:99
+#: src/language/constants.ts:23 src/views/domain/DomainAdd.vue:104
 msgid "Finished"
 msgid "Finished"
 msgstr "完成"
 msgstr "完成"
 
 
@@ -685,6 +680,14 @@ msgstr "HTTP 监听端口"
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr "HTTP01"
 msgstr "HTTP01"
 
 
+#: src/views/certificate/Certificate.vue:120
+msgid "Import"
+msgstr "导入"
+
+#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
+msgid "Import Certificate"
+msgstr "导入证书"
+
 #: src/constants/index.ts:19
 #: src/constants/index.ts:19
 msgid "Info"
 msgid "Info"
 msgstr "信息"
 msgstr "信息"
@@ -729,6 +732,11 @@ msgstr "留空表示不修改"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgstr "留空为默认:https://api.openai.com/"
 msgstr "留空为默认:https://api.openai.com/"
 
 
+#: src/views/certificate/CertificateEditor.vue:177
+#: src/views/certificate/CertificateEditor.vue:185
+msgid "Leave blank will not change anything"
+msgstr "留空不做任何更改"
+
 #: src/views/system/About.vue:50
 #: src/views/system/About.vue:50
 msgid "License"
 msgid "License"
 msgstr "开源许可"
 msgstr "开源许可"
@@ -754,7 +762,7 @@ msgstr "Location"
 msgid "Locations"
 msgid "Locations"
 msgstr "Locations"
 msgstr "Locations"
 
 
-#: src/views/certificate/CertificateEditor.vue:193
+#: src/views/certificate/CertificateEditor.vue:195
 msgid "Log"
 msgid "Log"
 msgstr "日志"
 msgstr "日志"
 
 
@@ -782,7 +790,7 @@ msgstr ""
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "配置管理"
 msgstr "配置管理"
 
 
-#: src/routes/index.ts:59 src/views/domain/DomainList.vue:102
+#: src/routes/index.ts:59 src/views/domain/DomainList.vue:105
 msgid "Manage Sites"
 msgid "Manage Sites"
 msgstr "网站管理"
 msgstr "网站管理"
 
 
@@ -812,7 +820,7 @@ msgstr "修改"
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "修改证书"
 msgstr "修改证书"
 
 
-#: src/views/domain/DomainAdd.vue:153
+#: src/views/domain/DomainAdd.vue:158
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "修改配置文件"
 msgstr "修改配置文件"
 
 
@@ -850,8 +858,8 @@ msgstr "上传流量"
 msgid "New version released"
 msgid "New version released"
 msgstr "新版本发布"
 msgstr "新版本发布"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:216
-#: src/views/domain/DomainAdd.vue:140
+#: src/views/domain/cert/components/ObtainCert.vue:203
+#: src/views/domain/DomainAdd.vue:145
 msgid "Next"
 msgid "Next"
 msgstr "下一步"
 msgstr "下一步"
 
 
@@ -867,7 +875,7 @@ msgstr "Nginx 访问日志路径"
 msgid "Nginx Configuration Parse Error"
 msgid "Nginx Configuration Parse Error"
 msgstr "Nginx 配置解析错误"
 msgstr "Nginx 配置解析错误"
 
 
-#: src/components/NginxControl/NginxControl.vue:67
+#: src/components/NginxControl/NginxControl.vue:65
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr "控制 Nginx"
 msgstr "控制 Nginx"
 
 
@@ -879,7 +887,7 @@ msgstr "Nginx 错误日志路径"
 msgid "Nginx Log"
 msgid "Nginx Log"
 msgstr "Nginx 日志"
 msgstr "Nginx 日志"
 
 
-#: src/components/NginxControl/NginxControl.vue:23
+#: src/components/NginxControl/NginxControl.vue:25
 msgid "Nginx reloaded successfully"
 msgid "Nginx reloaded successfully"
 msgstr "Nginx 重载成功"
 msgstr "Nginx 重载成功"
 
 
@@ -890,7 +898,7 @@ msgstr "Nginx 重启成功"
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/Notification/Notification.vue:84
 #: src/components/Notification/Notification.vue:84
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
-#: src/views/domain/DomainList.vue:142
+#: src/views/domain/DomainList.vue:145
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/notification/Notification.vue:71
 #: src/views/notification/Notification.vue:71
@@ -926,7 +934,7 @@ msgstr "通知"
 msgid "Notifications"
 msgid "Notifications"
 msgstr "通知"
 msgstr "通知"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:191
+#: src/views/domain/cert/components/ObtainCert.vue:178
 msgid "Obtain certificate"
 msgid "Obtain certificate"
 msgstr "获取证书"
 msgstr "获取证书"
 
 
@@ -946,11 +954,11 @@ msgstr "离线"
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
-#: src/views/domain/cert/components/ObtainCert.vue:149
+#: src/views/domain/cert/components/ObtainCert.vue:136
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/RightSettings.vue:51
 #: src/views/domain/components/RightSettings.vue:51
-#: src/views/domain/DomainList.vue:143
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:215
+#: src/views/domain/DomainList.vue:146
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/notification/Notification.vue:72
 #: src/views/notification/Notification.vue:72
 msgid "OK"
 msgid "OK"
@@ -1109,11 +1117,11 @@ msgid "Release Note"
 msgstr "发行日志"
 msgstr "发行日志"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:266
 #: src/components/ChatGPT/ChatGPT.vue:266
-#: src/components/NginxControl/NginxControl.vue:102
+#: src/components/NginxControl/NginxControl.vue:100
 msgid "Reload"
 msgid "Reload"
 msgstr "重载"
 msgstr "重载"
 
 
-#: src/components/NginxControl/NginxControl.vue:76
+#: src/components/NginxControl/NginxControl.vue:74
 msgid "Reloading"
 msgid "Reloading"
 msgstr "重载中"
 msgstr "重载中"
 
 
@@ -1150,11 +1158,11 @@ msgstr "请求参数错误"
 msgid "Reset"
 msgid "Reset"
 msgstr "重置"
 msgstr "重置"
 
 
-#: src/components/NginxControl/NginxControl.vue:95
+#: src/components/NginxControl/NginxControl.vue:93
 msgid "Restart"
 msgid "Restart"
 msgstr "重启"
 msgstr "重启"
 
 
-#: src/components/NginxControl/NginxControl.vue:81
+#: src/components/NginxControl/NginxControl.vue:79
 msgid "Restarting"
 msgid "Restarting"
 msgstr "重启中"
 msgstr "重启中"
 
 
@@ -1162,12 +1170,12 @@ msgstr "重启中"
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "运行模式"
 msgstr "运行模式"
 
 
-#: src/components/NginxControl/NginxControl.vue:71
+#: src/components/NginxControl/NginxControl.vue:69
 msgid "Running"
 msgid "Running"
 msgstr "运行中"
 msgstr "运行中"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:212
+#: src/views/certificate/CertificateEditor.vue:214
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/preference/Preference.vue:113
 #: src/views/preference/Preference.vue:113
@@ -1208,13 +1216,13 @@ msgstr "选择器"
 msgid "Send"
 msgid "Send"
 msgstr "上传"
 msgstr "上传"
 
 
-#: src/components/NginxControl/NginxControl.vue:29
+#: src/components/NginxControl/NginxControl.vue:31
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
-#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:79
+#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
 #: src/views/other/Install.vue:72 src/views/preference/Preference.vue:60
 #: src/views/other/Install.vue:72 src/views/preference/Preference.vue:60
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1224,12 +1232,12 @@ msgstr "服务器错误"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "服务器信息"
 msgstr "服务器信息"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:115
+#: src/views/domain/cert/components/ObtainCert.vue:102
 msgid "server_name not found in directives"
 msgid "server_name not found in directives"
 msgstr "未在指令集合中找到 server_name"
 msgstr "未在指令集合中找到 server_name"
 
 
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
-#: src/views/domain/DomainAdd.vue:119
+#: src/views/domain/DomainAdd.vue:124
 msgid "server_name parameter is required"
 msgid "server_name parameter is required"
 msgstr "必须为 server_name 指令指明参数"
 msgstr "必须为 server_name 指令指明参数"
 
 
@@ -1261,7 +1269,7 @@ msgstr "站点列表"
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "SSL 证书内容"
 msgstr "SSL 证书内容"
 
 
-#: src/views/certificate/CertificateEditor.vue:179
+#: src/views/certificate/CertificateEditor.vue:180
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr "SSL 证书密钥内容"
 msgstr "SSL 证书密钥内容"
 
 
@@ -1288,7 +1296,7 @@ msgstr "稳定"
 msgid "Status"
 msgid "Status"
 msgstr "状态"
 msgstr "状态"
 
 
-#: src/components/NginxControl/NginxControl.vue:86
+#: src/components/NginxControl/NginxControl.vue:84
 msgid "Stopped"
 msgid "Stopped"
 msgstr "已停止"
 msgstr "已停止"
 
 
@@ -1438,7 +1446,7 @@ msgstr "用户名 (*)"
 msgid "Valid"
 msgid "Valid"
 msgstr "有效的"
 msgstr "有效的"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:101
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
 msgid "View"
 msgid "View"
 msgstr "查看"
 msgstr "查看"
 
 
@@ -1448,7 +1456,7 @@ msgstr "查看全部通知"
 
 
 #: src/constants/index.ts:18 src/views/config/InspectConfig.vue:36
 #: src/constants/index.ts:18 src/views/config/InspectConfig.vue:36
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
-#: src/views/domain/DomainAdd.vue:114
+#: src/views/domain/DomainAdd.vue:119
 msgid "Warning"
 msgid "Warning"
 msgstr "警告"
 msgstr "警告"
 
 
@@ -1458,7 +1466,7 @@ msgid ""
 "ownership verification."
 "ownership verification."
 msgstr "我们将在您域名的 DNS 记录中添加一个或多个 TXT 记录,以核实域名所有权。"
 msgstr "我们将在您域名的 DNS 记录中添加一个或多个 TXT 记录,以核实域名所有权。"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:147
+#: src/views/domain/cert/components/ObtainCert.vue:134
 msgid ""
 msgid ""
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "Nginx. Are you sure you want to continue?"
 "Nginx. Are you sure you want to continue?"
@@ -1491,6 +1499,12 @@ msgstr "您使用的是最新版本"
 msgid "You can check Nginx UI upgrade at this page."
 msgid "You can check Nginx UI upgrade at this page."
 msgstr "你可以在这个页面检查Nginx UI的升级。"
 msgstr "你可以在这个页面检查Nginx UI的升级。"
 
 
+#~ msgid "Add Certificate"
+#~ msgstr "添加证书"
+
+#~ msgid "Leave blank will not change anything."
+#~ msgstr "留空不会有任何变化。"
+
 #~ msgid "Renew certificate"
 #~ msgid "Renew certificate"
 #~ msgstr "更新证书"
 #~ msgstr "更新证书"
 
 

+ 92 - 74
app/src/language/zh_TW/app.po

@@ -31,17 +31,11 @@ msgstr "操作"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:141
-#: src/views/certificate/Certificate.vue:120
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:115
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:308
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:305
 msgid "Add"
 msgid "Add"
 msgstr "新增"
 msgstr "新增"
 
 
-#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
-#, fuzzy
-msgid "Add Certificate"
-msgstr "憑證狀態"
-
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 #: src/views/domain/ngx_conf/directive/DirectiveAdd.vue:98
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "在下方新增指令"
 msgstr "在下方新增指令"
@@ -51,11 +45,11 @@ msgstr "在下方新增指令"
 msgid "Add Location"
 msgid "Add Location"
 msgstr "新增 Location"
 msgstr "新增 Location"
 
 
-#: src/routes/index.ts:71 src/views/domain/DomainAdd.vue:91
+#: src/routes/index.ts:71 src/views/domain/DomainAdd.vue:96
 msgid "Add Site"
 msgid "Add Site"
 msgstr "新增網站"
 msgstr "新增網站"
 
 
-#: src/views/certificate/DNSChallenge.vue:95
+#: src/views/certificate/DNSChallenge.vue:94
 msgid "Additional"
 msgid "Additional"
 msgstr "其他設定"
 msgstr "其他設定"
 
 
@@ -90,7 +84,7 @@ msgid "Are you sure you want to clear the record of chat?"
 msgstr "您確定要清除聊天記錄嗎?"
 msgstr "您確定要清除聊天記錄嗎?"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:353
-#: src/views/domain/DomainList.vue:144
+#: src/views/domain/DomainList.vue:147
 msgid "Are you sure you want to delete?"
 msgid "Are you sure you want to delete?"
 msgstr "您確定要刪除嗎?"
 msgstr "您確定要刪除嗎?"
 
 
@@ -110,8 +104,8 @@ msgstr "向 ChatGPT 尋求幫助"
 msgid "Assistant"
 msgid "Assistant"
 msgstr "助理"
 msgstr "助理"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:104
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:118
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:108
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
 msgid "Author"
 msgid "Author"
 msgstr "作者"
 msgstr "作者"
 
 
@@ -123,15 +117,15 @@ msgstr "自動憑證"
 msgid "Auto Refresh"
 msgid "Auto Refresh"
 msgstr "自動重新整理"
 msgstr "自動重新整理"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:76
+#: src/views/domain/cert/components/ObtainCert.vue:75
 msgid "Auto-renewal disabled for %{name}"
 msgid "Auto-renewal disabled for %{name}"
 msgstr "已關閉 %{name} 的自動續簽"
 msgstr "已關閉 %{name} 的自動續簽"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:69
+#: src/views/domain/cert/components/ObtainCert.vue:68
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr "已啟用 %{name} 的自動續簽"
 msgstr "已啟用 %{name} 的自動續簽"
 
 
-#: src/views/certificate/CertificateEditor.vue:205
+#: src/views/certificate/CertificateEditor.vue:207
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/config/Config.vue:75 src/views/config/ConfigEdit.vue:89
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:261 src/views/nginx_log/NginxLog.vue:170
 msgid "Back"
 msgid "Back"
@@ -141,7 +135,7 @@ msgstr "返回"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "返回首頁"
 msgstr "返回首頁"
 
 
-#: src/views/domain/DomainAdd.vue:97
+#: src/views/domain/DomainAdd.vue:102
 msgid "Base information"
 msgid "Base information"
 msgstr "基本資訊"
 msgstr "基本資訊"
 
 
@@ -172,10 +166,10 @@ msgstr "CADir"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:58
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:143
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:103
-#: src/views/domain/cert/components/ObtainCert.vue:150
+#: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/Deploy.vue:24
 #: src/views/domain/components/RightSettings.vue:52
 #: src/views/domain/components/RightSettings.vue:52
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:216
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:213
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:48
 msgid "Cancel"
 msgid "Cancel"
 msgstr "取消"
 msgstr "取消"
@@ -247,11 +241,11 @@ msgstr "成功停用"
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:121
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:284
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:281
 msgid "Comments"
 msgid "Comments"
 msgstr "備註"
 msgstr "備註"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:82
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:86
 msgid "Config Templates"
 msgid "Config Templates"
 msgstr "設定模板"
 msgstr "設定模板"
 
 
@@ -259,7 +253,7 @@ msgstr "設定模板"
 msgid "Configuration file is test successful"
 msgid "Configuration file is test successful"
 msgstr "設定檔案測試成功"
 msgstr "設定檔案測試成功"
 
 
-#: src/views/domain/DomainAdd.vue:103
+#: src/views/domain/DomainAdd.vue:108
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "設定名稱"
 msgstr "設定名稱"
 
 
@@ -267,7 +261,7 @@ msgstr "設定名稱"
 msgid "Configurations"
 msgid "Configurations"
 msgstr "設定"
 msgstr "設定"
 
 
-#: src/views/domain/DomainAdd.vue:98
+#: src/views/domain/DomainAdd.vue:103
 msgid "Configure SSL"
 msgid "Configure SSL"
 msgstr "設定 SSL"
 msgstr "設定 SSL"
 
 
@@ -293,7 +287,7 @@ msgstr "中央處理器狀態"
 msgid "CPU:"
 msgid "CPU:"
 msgstr "中央處理器:"
 msgstr "中央處理器:"
 
 
-#: src/views/domain/DomainAdd.vue:156
+#: src/views/domain/DomainAdd.vue:161
 msgid "Create Another"
 msgid "Create Another"
 msgstr "再建立一個"
 msgstr "再建立一個"
 
 
@@ -317,8 +311,8 @@ msgstr "認證資訊"
 msgid "Current Version"
 msgid "Current Version"
 msgstr "目前版本"
 msgstr "目前版本"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:122
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:241
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:126
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:238
 msgid "Custom"
 msgid "Custom"
 msgstr "自訂"
 msgstr "自訂"
 
 
@@ -331,12 +325,12 @@ msgid "Database (Optional, default: database)"
 msgstr "資料庫 (可選,預設: database)"
 msgstr "資料庫 (可選,預設: database)"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:360
-#: src/views/domain/DomainList.vue:153
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:259
+#: src/views/domain/DomainList.vue:156
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:256
 msgid "Delete"
 msgid "Delete"
 msgstr "刪除"
 msgstr "刪除"
 
 
-#: src/views/domain/DomainList.vue:77
+#: src/views/domain/DomainList.vue:81
 msgid "Delete site: %{site_name}"
 msgid "Delete site: %{site_name}"
 msgstr "刪除網站:%{site_name}"
 msgstr "刪除網站:%{site_name}"
 
 
@@ -362,8 +356,8 @@ msgstr "成功部署 %{conf_name} 至 %{node_name}"
 msgid "Deploy successfully"
 msgid "Deploy successfully"
 msgstr "部署成功"
 msgstr "部署成功"
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:119
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:109
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:123
 msgid "Description"
 msgid "Description"
 msgstr "描述"
 msgstr "描述"
 
 
@@ -388,21 +382,21 @@ msgstr "指令"
 msgid "Directory"
 msgid "Directory"
 msgstr "指令"
 msgstr "指令"
 
 
-#: src/views/domain/DomainList.vue:36
+#: src/views/domain/DomainList.vue:125
 msgid "Disable"
 msgid "Disable"
 msgstr "停用"
 msgstr "停用"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:78
+#: src/views/domain/cert/components/ObtainCert.vue:77
 msgid "Disable auto-renewal failed for %{name}"
 msgid "Disable auto-renewal failed for %{name}"
 msgstr "關閉 %{name} 自動續簽失敗"
 msgstr "關閉 %{name} 自動續簽失敗"
 
 
 #: src/views/domain/cert/ChangeCert.vue:48 src/views/domain/DomainEdit.vue:190
 #: src/views/domain/cert/ChangeCert.vue:48 src/views/domain/DomainEdit.vue:190
-#: src/views/domain/DomainList.vue:122
+#: src/views/domain/DomainList.vue:36
 msgid "Disabled"
 msgid "Disabled"
 msgstr "停用"
 msgstr "停用"
 
 
 #: src/views/domain/components/RightSettings.vue:39
 #: src/views/domain/components/RightSettings.vue:39
-#: src/views/domain/DomainList.vue:67
+#: src/views/domain/DomainList.vue:70
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "成功停用"
 msgstr "成功停用"
 
 
@@ -428,7 +422,7 @@ msgid "Do you want to deploy this file to remote server?"
 msgid_plural "Do you want to deploy this file to remote servers?"
 msgid_plural "Do you want to deploy this file to remote servers?"
 msgstr[0] "您要將此檔案部署至遠端伺服器嗎?"
 msgstr[0] "您要將此檔案部署至遠端伺服器嗎?"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:146
+#: src/views/domain/cert/components/ObtainCert.vue:133
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
 msgstr "您要停用自動憑證續訂嗎?"
 msgstr "您要停用自動憑證續訂嗎?"
 
 
@@ -444,11 +438,11 @@ msgstr "您要啟用此網站嗎?"
 msgid "Do you want to enable TLS?"
 msgid "Do you want to enable TLS?"
 msgstr "您想啟用 TLS 嗎?"
 msgstr "您想啟用 TLS 嗎?"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:209
 msgid "Do you want to remove this server?"
 msgid "Do you want to remove this server?"
 msgstr "您要移除此伺服器嗎?"
 msgstr "您要移除此伺服器嗎?"
 
 
-#: src/views/domain/DomainAdd.vue:146
+#: src/views/domain/DomainAdd.vue:151
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr "網域設定檔成功建立"
 msgstr "網域設定檔成功建立"
 
 
@@ -470,7 +464,7 @@ msgid "Dry run mode enabled"
 msgstr "試運轉模式已啟用"
 msgstr "試運轉模式已啟用"
 
 
 #: src/views/domain/components/SiteDuplicate.vue:128
 #: src/views/domain/components/SiteDuplicate.vue:128
-#: src/views/domain/DomainList.vue:138
+#: src/views/domain/DomainList.vue:141
 msgid "Duplicate"
 msgid "Duplicate"
 msgstr "複製"
 msgstr "複製"
 
 
@@ -506,7 +500,7 @@ msgstr "編輯網站"
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "電子郵件 (*)"
 msgstr "電子郵件 (*)"
 
 
-#: src/views/domain/DomainList.vue:32
+#: src/views/domain/DomainList.vue:133
 msgid "Enable"
 msgid "Enable"
 msgstr "啟用"
 msgstr "啟用"
 
 
@@ -518,7 +512,7 @@ msgstr "在 %{node_name} 啟用 %{conf_name} 失敗"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr "成功在 %{node_name} 啟用 %{conf_name}"
 msgstr "成功在 %{node_name} 啟用 %{conf_name}"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:71
+#: src/views/domain/cert/components/ObtainCert.vue:70
 msgid "Enable auto-renewal failed for %{name}"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "啟用 %{name} 自動續簽失敗"
 msgstr "啟用 %{name} 自動續簽失敗"
 
 
@@ -530,20 +524,20 @@ msgstr "啟用失敗"
 msgid "Enable successfully"
 msgid "Enable successfully"
 msgstr "啟用成功"
 msgstr "啟用成功"
 
 
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:236
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:233
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "啟用 TLS"
 msgstr "啟用 TLS"
 
 
 #: src/views/domain/cert/ChangeCert.vue:44
 #: src/views/domain/cert/ChangeCert.vue:44
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/Deploy.vue:89
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/domain/DomainEdit.vue:184 src/views/domain/DomainList.vue:130
+#: src/views/domain/DomainEdit.vue:184 src/views/domain/DomainList.vue:32
 msgid "Enabled"
 msgid "Enabled"
 msgstr "已啟用"
 msgstr "已啟用"
 
 
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/RightSettings.vue:30
 #: src/views/domain/components/SiteDuplicate.vue:100
 #: src/views/domain/components/SiteDuplicate.vue:100
-#: src/views/domain/DomainAdd.vue:45 src/views/domain/DomainList.vue:58
+#: src/views/domain/DomainAdd.vue:45 src/views/domain/DomainList.vue:60
 msgid "Enabled successfully"
 msgid "Enabled successfully"
 msgstr "成功啟用"
 msgstr "成功啟用"
 
 
@@ -586,12 +580,12 @@ msgid "Export"
 msgstr "匯出"
 msgstr "匯出"
 
 
 #: src/views/domain/components/RightSettings.vue:42
 #: src/views/domain/components/RightSettings.vue:42
-#: src/views/domain/DomainList.vue:70
+#: src/views/domain/DomainList.vue:74
 msgid "Failed to disable %{msg}"
 msgid "Failed to disable %{msg}"
 msgstr "停用 %{msg} 失敗"
 msgstr "停用 %{msg} 失敗"
 
 
 #: src/views/domain/components/RightSettings.vue:33
 #: src/views/domain/components/RightSettings.vue:33
-#: src/views/domain/DomainList.vue:61
+#: src/views/domain/DomainList.vue:64
 msgid "Failed to enable %{msg}"
 msgid "Failed to enable %{msg}"
 msgstr "啟用 %{msg} 失敗"
 msgstr "啟用 %{msg} 失敗"
 
 
@@ -619,7 +613,7 @@ msgstr "找不到檔案"
 msgid "Filter"
 msgid "Filter"
 msgstr "篩選"
 msgstr "篩選"
 
 
-#: src/language/constants.ts:23 src/views/domain/DomainAdd.vue:99
+#: src/language/constants.ts:23 src/views/domain/DomainAdd.vue:104
 msgid "Finished"
 msgid "Finished"
 msgstr "完成"
 msgstr "完成"
 
 
@@ -696,6 +690,16 @@ msgstr "HTTP 監聽埠"
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr "HTTP01"
 msgstr "HTTP01"
 
 
+#: src/views/certificate/Certificate.vue:120
+#, fuzzy
+msgid "Import"
+msgstr "匯出"
+
+#: src/routes/index.ts:123 src/views/certificate/CertificateEditor.vue:84
+#, fuzzy
+msgid "Import Certificate"
+msgstr "憑證狀態"
+
 #: src/constants/index.ts:19
 #: src/constants/index.ts:19
 msgid "Info"
 msgid "Info"
 msgstr ""
 msgstr ""
@@ -740,6 +744,12 @@ msgstr "留空表示不修改"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgid "Leave blank for the default: https://api.openai.com/"
 msgstr "預設留空:https://api.openai.com/"
 msgstr "預設留空:https://api.openai.com/"
 
 
+#: src/views/certificate/CertificateEditor.vue:177
+#: src/views/certificate/CertificateEditor.vue:185
+#, fuzzy
+msgid "Leave blank will not change anything"
+msgstr "留空表示不修改"
+
 #: src/views/system/About.vue:50
 #: src/views/system/About.vue:50
 #, fuzzy
 #, fuzzy
 msgid "License"
 msgid "License"
@@ -767,7 +777,7 @@ msgstr "Location"
 msgid "Locations"
 msgid "Locations"
 msgstr "Locations"
 msgstr "Locations"
 
 
-#: src/views/certificate/CertificateEditor.vue:193
+#: src/views/certificate/CertificateEditor.vue:195
 #, fuzzy
 #, fuzzy
 msgid "Log"
 msgid "Log"
 msgstr "登入"
 msgstr "登入"
@@ -795,7 +805,7 @@ msgstr ""
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "管理設定"
 msgstr "管理設定"
 
 
-#: src/routes/index.ts:59 src/views/domain/DomainList.vue:102
+#: src/routes/index.ts:59 src/views/domain/DomainList.vue:105
 msgid "Manage Sites"
 msgid "Manage Sites"
 msgstr "管理網站"
 msgstr "管理網站"
 
 
@@ -827,7 +837,7 @@ msgstr "修改"
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "憑證狀態"
 msgstr "憑證狀態"
 
 
-#: src/views/domain/DomainAdd.vue:153
+#: src/views/domain/DomainAdd.vue:158
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "修改設定"
 msgstr "修改設定"
 
 
@@ -865,8 +875,8 @@ msgstr "上傳流量"
 msgid "New version released"
 msgid "New version released"
 msgstr "新版本發布"
 msgstr "新版本發布"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:216
-#: src/views/domain/DomainAdd.vue:140
+#: src/views/domain/cert/components/ObtainCert.vue:203
+#: src/views/domain/DomainAdd.vue:145
 msgid "Next"
 msgid "Next"
 msgstr "下一步"
 msgstr "下一步"
 
 
@@ -882,7 +892,7 @@ msgstr "Nginx 存取日誌路徑"
 msgid "Nginx Configuration Parse Error"
 msgid "Nginx Configuration Parse Error"
 msgstr "Nginx 設定解析錯誤"
 msgstr "Nginx 設定解析錯誤"
 
 
-#: src/components/NginxControl/NginxControl.vue:67
+#: src/components/NginxControl/NginxControl.vue:65
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr "Nginx 控制元件"
 msgstr "Nginx 控制元件"
 
 
@@ -894,7 +904,7 @@ msgstr "Nginx 錯誤日誌路徑"
 msgid "Nginx Log"
 msgid "Nginx Log"
 msgstr "Nginx 日誌"
 msgstr "Nginx 日誌"
 
 
-#: src/components/NginxControl/NginxControl.vue:23
+#: src/components/NginxControl/NginxControl.vue:25
 msgid "Nginx reloaded successfully"
 msgid "Nginx reloaded successfully"
 msgstr "Nginx 重新載入成功"
 msgstr "Nginx 重新載入成功"
 
 
@@ -905,7 +915,7 @@ msgstr "Nginx 重啟成功"
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/ChatGPT/ChatGPT.vue:277
 #: src/components/Notification/Notification.vue:84
 #: src/components/Notification/Notification.vue:84
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:351
-#: src/views/domain/DomainList.vue:142
+#: src/views/domain/DomainList.vue:145
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:81
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/domain/ngx_conf/LocationEditor.vue:76
 #: src/views/notification/Notification.vue:71
 #: src/views/notification/Notification.vue:71
@@ -943,7 +953,7 @@ msgstr "憑證"
 msgid "Notifications"
 msgid "Notifications"
 msgstr "憑證"
 msgstr "憑證"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:191
+#: src/views/domain/cert/components/ObtainCert.vue:178
 msgid "Obtain certificate"
 msgid "Obtain certificate"
 msgstr "取得憑證"
 msgstr "取得憑證"
 
 
@@ -963,11 +973,11 @@ msgstr "離線"
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:144
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:352
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:104
-#: src/views/domain/cert/components/ObtainCert.vue:149
+#: src/views/domain/cert/components/ObtainCert.vue:136
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/Deploy.vue:23
 #: src/views/domain/components/RightSettings.vue:51
 #: src/views/domain/components/RightSettings.vue:51
-#: src/views/domain/DomainList.vue:143
-#: src/views/domain/ngx_conf/NgxConfigEditor.vue:215
+#: src/views/domain/DomainList.vue:146
+#: src/views/domain/ngx_conf/NgxConfigEditor.vue:212
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:47
 #: src/views/notification/Notification.vue:72
 #: src/views/notification/Notification.vue:72
 msgid "OK"
 msgid "OK"
@@ -1127,11 +1137,11 @@ msgid "Release Note"
 msgstr "發行公告"
 msgstr "發行公告"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:266
 #: src/components/ChatGPT/ChatGPT.vue:266
-#: src/components/NginxControl/NginxControl.vue:102
+#: src/components/NginxControl/NginxControl.vue:100
 msgid "Reload"
 msgid "Reload"
 msgstr "重新載入"
 msgstr "重新載入"
 
 
-#: src/components/NginxControl/NginxControl.vue:76
+#: src/components/NginxControl/NginxControl.vue:74
 msgid "Reloading"
 msgid "Reloading"
 msgstr "重新載入中"
 msgstr "重新載入中"
 
 
@@ -1173,11 +1183,11 @@ msgstr "請求參數錯誤"
 msgid "Reset"
 msgid "Reset"
 msgstr "重設"
 msgstr "重設"
 
 
-#: src/components/NginxControl/NginxControl.vue:95
+#: src/components/NginxControl/NginxControl.vue:93
 msgid "Restart"
 msgid "Restart"
 msgstr "重新啟動"
 msgstr "重新啟動"
 
 
-#: src/components/NginxControl/NginxControl.vue:81
+#: src/components/NginxControl/NginxControl.vue:79
 msgid "Restarting"
 msgid "Restarting"
 msgstr "正在重新啟動"
 msgstr "正在重新啟動"
 
 
@@ -1185,12 +1195,12 @@ msgstr "正在重新啟動"
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "執行模式"
 msgstr "執行模式"
 
 
-#: src/components/NginxControl/NginxControl.vue:71
+#: src/components/NginxControl/NginxControl.vue:69
 msgid "Running"
 msgid "Running"
 msgstr "執行中"
 msgstr "執行中"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:212
+#: src/views/certificate/CertificateEditor.vue:214
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:268
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:111
 #: src/views/preference/Preference.vue:113
 #: src/views/preference/Preference.vue:113
@@ -1231,13 +1241,13 @@ msgstr "選擇器"
 msgid "Send"
 msgid "Send"
 msgstr "傳送"
 msgstr "傳送"
 
 
-#: src/components/NginxControl/NginxControl.vue:29
+#: src/components/NginxControl/NginxControl.vue:31
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/NginxControl/NginxControl.vue:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:45
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:45
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:157
-#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:79
+#: src/views/config/ConfigEdit.vue:42 src/views/domain/DomainList.vue:84
 #: src/views/other/Install.vue:72 src/views/preference/Preference.vue:60
 #: src/views/other/Install.vue:72 src/views/preference/Preference.vue:60
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1247,12 +1257,12 @@ msgstr "伺服器錯誤"
 msgid "Server Info"
 msgid "Server Info"
 msgstr "伺服器資訊"
 msgstr "伺服器資訊"
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:115
+#: src/views/domain/cert/components/ObtainCert.vue:102
 msgid "server_name not found in directives"
 msgid "server_name not found in directives"
 msgstr "在指令中未找到 server_name"
 msgstr "在指令中未找到 server_name"
 
 
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
 #: src/views/domain/cert/components/AutoCertStepOne.vue:29
-#: src/views/domain/DomainAdd.vue:119
+#: src/views/domain/DomainAdd.vue:124
 msgid "server_name parameter is required"
 msgid "server_name parameter is required"
 msgstr "必須提供 server_name 參數"
 msgstr "必須提供 server_name 參數"
 
 
@@ -1287,7 +1297,7 @@ msgstr "網站列表"
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "SSL 認證內容"
 msgstr "SSL 認證內容"
 
 
-#: src/views/certificate/CertificateEditor.vue:179
+#: src/views/certificate/CertificateEditor.vue:180
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr "SSL 憑證金鑰內容"
 msgstr "SSL 憑證金鑰內容"
@@ -1316,7 +1326,7 @@ msgstr "穩定"
 msgid "Status"
 msgid "Status"
 msgstr "狀態"
 msgstr "狀態"
 
 
-#: src/components/NginxControl/NginxControl.vue:86
+#: src/components/NginxControl/NginxControl.vue:84
 msgid "Stopped"
 msgid "Stopped"
 msgstr "已停止"
 msgstr "已停止"
 
 
@@ -1470,7 +1480,7 @@ msgstr "使用者名稱 (*)"
 msgid "Valid"
 msgid "Valid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:101
+#: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:105
 msgid "View"
 msgid "View"
 msgstr "檢視"
 msgstr "檢視"
 
 
@@ -1481,7 +1491,7 @@ msgstr "憑證"
 
 
 #: src/constants/index.ts:18 src/views/config/InspectConfig.vue:36
 #: src/constants/index.ts:18 src/views/config/InspectConfig.vue:36
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
 #: src/views/domain/cert/components/AutoCertStepOne.vue:23
-#: src/views/domain/DomainAdd.vue:114
+#: src/views/domain/DomainAdd.vue:119
 msgid "Warning"
 msgid "Warning"
 msgstr "警告"
 msgstr "警告"
 
 
@@ -1491,7 +1501,7 @@ msgid ""
 "ownership verification."
 "ownership verification."
 msgstr ""
 msgstr ""
 
 
-#: src/views/domain/cert/components/ObtainCert.vue:147
+#: src/views/domain/cert/components/ObtainCert.vue:134
 msgid ""
 msgid ""
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "We will remove the HTTPChallenge configuration from this file and reload the "
 "Nginx. Are you sure you want to continue?"
 "Nginx. Are you sure you want to continue?"
@@ -1525,6 +1535,14 @@ msgstr "您正在使用最新版本"
 msgid "You can check Nginx UI upgrade at this page."
 msgid "You can check Nginx UI upgrade at this page."
 msgstr "您可以在此頁面檢查 Nginx UI 的升級。"
 msgstr "您可以在此頁面檢查 Nginx UI 的升級。"
 
 
+#, fuzzy
+#~ msgid "Add Certificate"
+#~ msgstr "憑證狀態"
+
+#, fuzzy
+#~ msgid "Leave blank will not change anything."
+#~ msgstr "留空表示不修改"
+
 #, fuzzy
 #, fuzzy
 #~ msgid "Renew certificate"
 #~ msgid "Renew certificate"
 #~ msgstr "取得憑證"
 #~ msgstr "取得憑證"

+ 2 - 2
app/src/routes/index.ts

@@ -119,8 +119,8 @@ export const routes: Route[] = [
             },
             },
           },
           },
           {
           {
-            path: 'add',
-            name: () => $gettext('Add Certificate'),
+            path: 'import',
+            name: () => $gettext('Import Certificate'),
             component: () => import('@/views/certificate/CertificateEditor.vue'),
             component: () => import('@/views/certificate/CertificateEditor.vue'),
             meta: {
             meta: {
               hiddenInSidebar: true,
               hiddenInSidebar: true,

+ 25 - 3
app/src/views/certificate/Certificate.vue

@@ -3,6 +3,7 @@ import { useGettext } from 'vue3-gettext'
 import { Badge, Tag } from 'ant-design-vue'
 import { Badge, Tag } from 'ant-design-vue'
 import { h, provide } from 'vue'
 import { h, provide } from 'vue'
 import dayjs from 'dayjs'
 import dayjs from 'dayjs'
+import { CloudUploadOutlined, SafetyCertificateOutlined } from '@ant-design/icons-vue'
 import { input } from '@/components/StdDesign/StdDataEntry'
 import { input } from '@/components/StdDesign/StdDataEntry'
 import type { customRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import type { customRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import { datetime } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import { datetime } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
@@ -11,6 +12,7 @@ import type { Column } from '@/components/StdDesign/types'
 import type { Cert } from '@/api/cert'
 import type { Cert } from '@/api/cert'
 import { AutoCertState } from '@/constants'
 import { AutoCertState } from '@/constants'
 import StdTable from '@/components/StdDesign/StdDataDisplay/StdTable.vue'
 import StdTable from '@/components/StdDesign/StdDataDisplay/StdTable.vue'
+import WildcardCertificate from '@/views/certificate/WildcardCertificate.vue'
 
 
 const { $gettext } = useGettext()
 const { $gettext } = useGettext()
 
 
@@ -111,20 +113,40 @@ const no_server_name = computed(() => {
 })
 })
 
 
 provide('no_server_name', no_server_name)
 provide('no_server_name', no_server_name)
+
+const refWildcard = ref()
+const refTable = ref()
 </script>
 </script>
 
 
 <template>
 <template>
   <ACard :title="$gettext('Certificates')">
   <ACard :title="$gettext('Certificates')">
     <template #extra>
     <template #extra>
-      <a @click="$router.push('/certificates/add')">
-        {{ $gettext('Add') }}
-      </a>
+      <AButton
+        type="link"
+        @click="$router.push('/certificates/import')"
+      >
+        <CloudUploadOutlined />
+        {{ $gettext('Import') }}
+      </AButton>
+
+      <AButton
+        type="link"
+        @click="() => refWildcard.open()"
+      >
+        <SafetyCertificateOutlined />
+        {{ $gettext('Issue wildcard certificate') }}
+      </AButton>
     </template>
     </template>
     <StdTable
     <StdTable
+      ref="refTable"
       :api="cert"
       :api="cert"
       :columns="columns"
       :columns="columns"
       @click-edit="id => $router.push(`/certificates/${id}`)"
       @click-edit="id => $router.push(`/certificates/${id}`)"
     />
     />
+    <WildcardCertificate
+      ref="refWildcard"
+      @issued="() => refTable.get_list()"
+    />
   </ACard>
   </ACard>
 </template>
 </template>
 
 

+ 3 - 1
app/src/views/certificate/CertificateEditor.vue

@@ -81,7 +81,7 @@ const isManaged = computed(() => {
 </script>
 </script>
 
 
 <template>
 <template>
-  <ACard :title="id > 0 ? $gettext('Modify Certificate') : $gettext('Add Certificate')">
+  <ACard :title="id > 0 ? $gettext('Modify Certificate') : $gettext('Import Certificate')">
     <div
     <div
       v-if="isManaged"
       v-if="isManaged"
       class="mb-4"
       class="mb-4"
@@ -174,6 +174,7 @@ const isManaged = computed(() => {
               v-model:content="data.ssl_certificate"
               v-model:content="data.ssl_certificate"
               default-height="300px"
               default-height="300px"
               :readonly="!notShowInAutoCert"
               :readonly="!notShowInAutoCert"
+              :placeholder="$gettext('Leave blank will not change anything')"
             />
             />
           </AFormItem>
           </AFormItem>
           <AFormItem :label="$gettext('SSL Certificate Key Content')">
           <AFormItem :label="$gettext('SSL Certificate Key Content')">
@@ -181,6 +182,7 @@ const isManaged = computed(() => {
               v-model:content="data.ssl_certificate_key"
               v-model:content="data.ssl_certificate_key"
               default-height="300px"
               default-height="300px"
               :readonly="!notShowInAutoCert"
               :readonly="!notShowInAutoCert"
+              :placeholder="$gettext('Leave blank will not change anything')"
             />
             />
           </AFormItem>
           </AFormItem>
         </AForm>
         </AForm>

+ 2 - 2
app/src/views/certificate/RenewCert.vue

@@ -18,7 +18,7 @@ const refObtainCertLive = ref()
 
 
 const data = inject('data') as Ref<Cert>
 const data = inject('data') as Ref<Cert>
 
 
-const issue_cert = () => {
+const issueCert = () => {
   modalVisible.value = true
   modalVisible.value = true
 
 
   refObtainCertLive.value.issue_cert(data.value.name, data.value.domains, () => {
   refObtainCertLive.value.issue_cert(data.value.name, data.value.domains, () => {
@@ -38,7 +38,7 @@ provide('issuing_cert', issuing_cert)
       type="primary"
       type="primary"
       ghost
       ghost
       class="mb-6"
       class="mb-6"
-      @click="issue_cert"
+      @click="issueCert"
     >
     >
       {{ $gettext('Renew Certificate') }}
       {{ $gettext('Renew Certificate') }}
     </AButton>
     </AButton>

+ 101 - 0
app/src/views/certificate/WildcardCertificate.vue

@@ -0,0 +1,101 @@
+<script setup lang="ts">
+import type { Ref } from 'vue'
+import { message } from 'ant-design-vue'
+import { useGettext } from 'vue3-gettext'
+import type { Cert } from '@/api/cert'
+import ObtainCertLive from '@/views/domain/cert/components/ObtainCertLive.vue'
+import DNSChallenge from '@/views/domain/cert/components/DNSChallenge.vue'
+
+const emit = defineEmits<{
+  issued: [void]
+}>()
+
+const { $gettext } = useGettext()
+const step = ref(0)
+const visible = ref(false)
+const data = ref({}) as Ref<Cert>
+const issuing_cert = ref(false)
+
+provide('data', data)
+provide('issuing_cert', issuing_cert)
+function open() {
+  visible.value = true
+  data.value = {
+    challenge_method: 'dns01',
+  } as Cert
+}
+
+defineExpose({
+  open,
+})
+
+const modalVisible = ref(false)
+const modalClosable = ref(true)
+
+const refObtainCertLive = ref()
+const domain = ref('')
+
+const computedDomain = computed(() => {
+  return `*.${domain.value}`
+})
+
+const issueCert = () => {
+  step.value++
+  modalVisible.value = true
+
+  refObtainCertLive.value.issue_cert(computedDomain.value, [computedDomain.value], () => {
+    message.success($gettext('Renew successfully'))
+    emit('issued')
+  })
+}
+</script>
+
+<template>
+  <div>
+    <AModal
+      v-model:open="visible"
+      :mask="false"
+      :title="$gettext('Issue Wildcard Certificate')"
+      destroy-on-close
+      :footer="null"
+      :mask-closable="modalClosable"
+      :closable="modalClosable"
+      force-render
+    >
+      <template v-if="step === 0">
+        <DNSChallenge />
+
+        <AForm layout="vertical">
+          <AFormItem :label="$gettext('Domain')">
+            <AInput
+              v-model:value="domain"
+              addon-before="*."
+            />
+          </AFormItem>
+        </AForm>
+        <div
+          v-if="step === 0"
+          class="flex justify-end"
+        >
+          <AButton
+            type="primary"
+            @click="issueCert"
+          >
+            {{ $gettext('Issue') }}
+          </AButton>
+        </div>
+      </template>
+
+      <ObtainCertLive
+        v-show="step === 1"
+        ref="refObtainCertLive"
+        v-model:modal-closable="modalClosable"
+        v-model:modal-visible="modalVisible"
+      />
+    </AModal>
+  </div>
+</template>
+
+<style scoped lang="less">
+
+</style>

+ 7 - 4
model/cert.go

@@ -7,8 +7,10 @@ import (
 )
 )
 
 
 const (
 const (
-	AutoCertEnabled  = 1
-	AutoCertDisabled = -1
+	AutoCertEnabled           = 1
+	AutoCertDisabled          = -1
+	CertChallengeMethodHTTP01 = "http01"
+	CertChallengeMethodDNS01  = "dns01"
 )
 )
 
 
 type CertDomains []string
 type CertDomains []string
@@ -36,7 +38,8 @@ func FirstCert(confName string) (c Cert, err error) {
 }
 }
 
 
 func FirstOrCreateCert(confName string) (c Cert, err error) {
 func FirstOrCreateCert(confName string) (c Cert, err error) {
-	err = db.FirstOrCreate(&c, &Cert{Filename: confName}).Error
+	// Filename is used to check whether this site is enabled
+	err = db.FirstOrCreate(&c, &Cert{Name: confName, Filename: confName}).Error
 	return
 	return
 }
 }
 
 
@@ -64,7 +67,7 @@ func GetAutoCertList() (c []*Cert) {
 	}
 	}
 
 
 	for _, v := range t {
 	for _, v := range t {
-		if enabledConfigMap[v.Filename] == true {
+		if v.ChallengeMethod == CertChallengeMethodDNS01 || enabledConfigMap[v.Filename] == true {
 			c = append(c, v)
 			c = append(c, v)
 		}
 		}
 	}
 	}