Browse Source

chore: update zh_CN translations

0xJacky 1 year ago
parent
commit
0381d2290c

+ 1 - 1
app/src/language/LINGUAS

@@ -1 +1 @@
-es fr_FR ru_RU vi_VN zh_CN zh_TW
+en zh_CN zh_TW fr_FR es ru_RU vi_VN

+ 93 - 53
app/src/language/en/app.po

@@ -66,15 +66,15 @@ msgstr "Add Location"
 msgid "Advance Mode"
 msgid "Advance Mode"
 msgstr "Advance Mode"
 msgstr "Advance Mode"
 
 
-#: src/views/preference/OpenAISettings.vue:29
+#: src/views/preference/OpenAISettings.vue:31
 msgid "API Base Url"
 msgid "API Base Url"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:35
+#: src/views/preference/OpenAISettings.vue:43
 msgid "API Proxy"
 msgid "API Proxy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:41
+#: src/views/preference/OpenAISettings.vue:55
 msgid "API Token"
 msgid "API Token"
 msgstr ""
 msgstr ""
 
 
@@ -137,7 +137,7 @@ msgstr "Auto-renewal disabled for %{name}"
 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:207
+#: src/views/certificate/CertificateEditor.vue:238
 #: 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:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/stream/StreamEdit.vue:246
 #: src/views/stream/StreamEdit.vue:246
@@ -155,7 +155,7 @@ msgstr "Base information"
 
 
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/domain/components/RightSettings.vue:76
 #: src/views/domain/components/RightSettings.vue:76
-#: src/views/preference/Preference.vue:90
+#: src/views/preference/Preference.vue:96
 #: src/views/stream/components/RightSettings.vue:76
 #: src/views/stream/components/RightSettings.vue:76
 #, fuzzy
 #, fuzzy
 msgid "Basic"
 msgid "Basic"
@@ -175,7 +175,7 @@ msgstr "Modify Config"
 msgid "Build with"
 msgid "Build with"
 msgstr "Build with"
 msgstr "Build with"
 
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/BasicSettings.vue:47
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
 
 
@@ -202,7 +202,7 @@ msgstr "Certificate has expired"
 msgid "Certificate is valid"
 msgid "Certificate is valid"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/views/certificate/CertificateEditor.vue:127
+#: src/views/certificate/CertificateEditor.vue:130
 #: src/views/domain/cert/Cert.vue:35
 #: src/views/domain/cert/Cert.vue:35
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
@@ -231,7 +231,7 @@ msgstr "Certificate is valid"
 msgid "Channel"
 msgid "Channel"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:13
+#: src/views/preference/OpenAISettings.vue:14
 msgid "ChatGPT Model"
 msgid "ChatGPT Model"
 msgstr ""
 msgstr ""
 
 
@@ -239,10 +239,6 @@ msgstr ""
 msgid "Check again"
 msgid "Check again"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:36
-msgid "Chinese user: https://mirror.ghproxy.com/"
-msgstr ""
-
 #: src/language/constants.ts:17
 #: src/language/constants.ts:17
 msgid "Cleaning environment variables"
 msgid "Cleaning environment variables"
 msgstr ""
 msgstr ""
@@ -347,7 +343,7 @@ msgstr ""
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "Dashboard"
 msgstr "Dashboard"
 
 
-#: src/views/other/Install.vue:124
+#: src/views/other/Install.vue:123
 msgid "Database (Optional, default: database)"
 msgid "Database (Optional, default: database)"
 msgstr "Database (Optional, default: database)"
 msgstr "Database (Optional, default: database)"
 
 
@@ -515,7 +511,7 @@ msgstr ""
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr "Domain Config Created Successfully"
 msgstr "Domain Config Created Successfully"
 
 
-#: src/views/certificate/CertificateEditor.vue:111
+#: src/views/certificate/CertificateEditor.vue:114
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgstr ""
 msgstr ""
 
 
@@ -579,7 +575,7 @@ msgstr "Edit Site"
 msgid "Edit Stream"
 msgid "Edit Stream"
 msgstr "Edit Site"
 msgstr "Edit Site"
 
 
-#: src/views/other/Install.vue:93
+#: src/views/other/Install.vue:92
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "Email (*)"
 msgstr "Email (*)"
 
 
@@ -705,6 +701,12 @@ msgstr ""
 msgid "File exists"
 msgid "File exists"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:27
+#, fuzzy
+msgid "File not found"
+msgstr "File Not Found"
+
 #: src/views/other/Error.vue:14
 #: src/views/other/Error.vue:14
 msgid "File Not Found"
 msgid "File Not Found"
 msgstr "File Not Found"
 msgstr "File Not Found"
@@ -717,6 +719,10 @@ msgstr ""
 msgid "Finished"
 msgid "Finished"
 msgstr "Finished"
 msgstr "Finished"
 
 
+#: src/views/preference/BasicSettings.vue:43
+msgid "For Chinese user: https://mirror.ghproxy.com/"
+msgstr ""
+
 #: src/views/config/ConfigEdit.vue:92
 #: src/views/config/ConfigEdit.vue:92
 msgid "Format Code"
 msgid "Format Code"
 msgstr ""
 msgstr ""
@@ -753,23 +759,23 @@ msgstr "Base information"
 msgid "Getting the certificate, please wait..."
 msgid "Getting the certificate, please wait..."
 msgstr "Getting the certificate, please wait..."
 msgstr "Getting the certificate, please wait..."
 
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/BasicSettings.vue:35
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:25
+#: src/views/preference/OpenAISettings.vue:26
 msgid "GPT-3.5-Turbo"
 msgid "GPT-3.5-Turbo"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:19
+#: src/views/preference/OpenAISettings.vue:20
 msgid "GPT-4"
 msgid "GPT-4"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:22
+#: src/views/preference/OpenAISettings.vue:23
 msgid "GPT-4-32K"
 msgid "GPT-4-32K"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:16
+#: src/views/preference/OpenAISettings.vue:17
 msgid "GPT-4-Turbo"
 msgid "GPT-4-Turbo"
 msgstr ""
 msgstr ""
 
 
@@ -777,15 +783,15 @@ msgstr ""
 msgid "Home"
 msgid "Home"
 msgstr "Home"
 msgstr "Home"
 
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/BasicSettings.vue:31
 msgid "HTTP Challenge Port"
 msgid "HTTP Challenge Port"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:12
+#: src/views/preference/BasicSettings.vue:13
 msgid "HTTP Host"
 msgid "HTTP Host"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:15
+#: src/views/preference/BasicSettings.vue:16
 msgid "HTTP Port"
 msgid "HTTP Port"
 msgstr ""
 msgstr ""
 
 
@@ -797,7 +803,7 @@ msgstr ""
 msgid "Import"
 msgid "Import"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
@@ -814,7 +820,7 @@ msgstr ""
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:237 src/views/other/Install.vue:139
+#: src/routes/index.ts:237 src/views/other/Install.vue:138
 msgid "Install"
 msgid "Install"
 msgstr "Install"
 msgstr "Install"
 
 
@@ -842,7 +848,7 @@ msgstr "Certificate Status"
 msgid "Issued certificate successfully"
 msgid "Issued certificate successfully"
 msgstr "Enabled successfully"
 msgstr "Enabled successfully"
 
 
-#: src/views/preference/BasicSettings.vue:21
+#: src/views/preference/BasicSettings.vue:22
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr ""
 msgstr ""
 
 
@@ -854,12 +860,12 @@ msgstr ""
 msgid "Leave blank for no change"
 msgid "Leave blank for no change"
 msgstr "Leave blank for no change"
 msgstr "Leave blank for no change"
 
 
-#: src/views/preference/OpenAISettings.vue:32
+#: src/views/preference/OpenAISettings.vue:39
 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
+#: src/views/certificate/CertificateEditor.vue:203
+#: src/views/certificate/CertificateEditor.vue:216
 #, fuzzy
 #, fuzzy
 msgid "Leave blank will not change anything"
 msgid "Leave blank will not change anything"
 msgstr "Leave blank for no change"
 msgstr "Leave blank for no change"
@@ -892,7 +898,7 @@ msgstr "Location"
 msgid "Locations"
 msgid "Locations"
 msgstr "Locations"
 msgstr "Locations"
 
 
-#: src/views/certificate/CertificateEditor.vue:195
+#: src/views/certificate/CertificateEditor.vue:226
 #, fuzzy
 #, fuzzy
 msgid "Log"
 msgid "Log"
 msgstr "Login"
 msgstr "Login"
@@ -955,7 +961,7 @@ msgstr "Memory and Storage"
 msgid "Modify"
 msgid "Modify"
 msgstr "Modify Config"
 msgstr "Modify Config"
 
 
-#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
@@ -970,7 +976,7 @@ msgid "Multi-line Directive"
 msgstr "Single Directive"
 msgstr "Single Directive"
 
 
 #: src/views/certificate/Certificate.vue:24
 #: src/views/certificate/Certificate.vue:24
-#: src/views/certificate/CertificateEditor.vue:145
+#: src/views/certificate/CertificateEditor.vue:149
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/components/RightSettings.vue:84
 #: src/views/domain/components/RightSettings.vue:84
@@ -1010,11 +1016,11 @@ msgstr ""
 msgid "Next"
 msgid "Next"
 msgstr "Next"
 msgstr "Next"
 
 
-#: src/views/preference/Preference.vue:96
+#: src/views/preference/Preference.vue:102
 msgid "Nginx"
 msgid "Nginx"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/NginxSettings.vue:13
+#: src/views/preference/NginxSettings.vue:15
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr ""
 msgstr ""
 
 
@@ -1027,7 +1033,7 @@ msgstr "Configuration Name"
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/NginxSettings.vue:16
+#: src/views/preference/NginxSettings.vue:24
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr ""
 msgstr ""
 
 
@@ -1056,7 +1062,7 @@ msgstr "Saved successfully"
 msgid "No"
 msgid "No"
 msgstr "No"
 msgstr "No"
 
 
-#: src/views/preference/BasicSettings.vue:24
+#: src/views/preference/BasicSettings.vue:25
 msgid "Node Secret"
 msgid "Node Secret"
 msgstr ""
 msgstr ""
 
 
@@ -1133,7 +1139,7 @@ msgstr ""
 msgid "Online"
 msgid "Online"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:102
+#: src/views/preference/Preference.vue:108
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr ""
 msgstr ""
 
 
@@ -1164,7 +1170,7 @@ msgstr "Params"
 msgid "Password"
 msgid "Password"
 msgstr "Password"
 msgstr "Password"
 
 
-#: src/views/other/Install.vue:113
+#: src/views/other/Install.vue:112
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "Password (*)"
 msgstr "Password (*)"
 
 
@@ -1227,7 +1233,7 @@ msgstr ""
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:210 src/views/preference/Preference.vue:85
+#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
 msgid "Preference"
 msgid "Preference"
 msgstr ""
 msgstr ""
 
 
@@ -1340,7 +1346,7 @@ msgstr ""
 msgid "Restarting"
 msgid "Restarting"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:18
+#: src/views/preference/BasicSettings.vue:19
 #, fuzzy
 #, fuzzy
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "Advance Mode"
 msgstr "Advance Mode"
@@ -1350,10 +1356,10 @@ msgid "Running"
 msgstr ""
 msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:214
+#: src/views/certificate/CertificateEditor.vue:245
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
-#: src/views/preference/Preference.vue:113 src/views/stream/StreamEdit.vue:253
+#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
 msgid "Save"
 msgid "Save"
 msgstr "Save"
 msgstr "Save"
 
 
@@ -1367,8 +1373,8 @@ msgid "Save error %{msg}"
 msgstr "Save error %{msg}"
 msgstr "Save error %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
-#: src/views/certificate/CertificateEditor.vue:47
-#: src/views/preference/Preference.vue:58
+#: src/views/certificate/CertificateEditor.vue:48
+#: src/views/preference/Preference.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
@@ -1401,7 +1407,7 @@ msgstr "Send"
 #: 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:84
 #: 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:65
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1445,24 +1451,24 @@ msgstr "Sites List"
 msgid "Sites List"
 msgid "Sites List"
 msgstr "Sites List"
 msgstr "Sites List"
 
 
-#: src/views/certificate/CertificateEditor.vue:172
+#: src/views/certificate/CertificateEditor.vue:194
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
 
 
-#: src/views/certificate/CertificateEditor.vue:180
+#: src/views/certificate/CertificateEditor.vue:207
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
 
 
 #: src/views/certificate/Certificate.vue:73
 #: src/views/certificate/Certificate.vue:73
-#: src/views/certificate/CertificateEditor.vue:163
+#: src/views/certificate/CertificateEditor.vue:179
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Key Path"
 msgid "SSL Certificate Key Path"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
 
 
 #: src/views/certificate/Certificate.vue:65
 #: src/views/certificate/Certificate.vue:65
-#: src/views/certificate/CertificateEditor.vue:154
+#: src/views/certificate/CertificateEditor.vue:164
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
@@ -1529,7 +1535,7 @@ msgstr ""
 msgid "Terminal"
 msgid "Terminal"
 msgstr "Terminal"
 msgstr "Terminal"
 
 
-#: src/views/preference/BasicSettings.vue:27
+#: src/views/preference/BasicSettings.vue:28
 msgid "Terminal Start Command"
 msgid "Terminal Start Command"
 msgstr ""
 msgstr ""
 
 
@@ -1546,6 +1552,23 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "The filename cannot contain the following characters: %{c}"
 msgstr "The filename cannot contain the following characters: %{c}"
 
 
+#: src/views/certificate/CertificateEditor.vue:197
+msgid "The input is not a SSL Certificate"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:210
+#, fuzzy
+msgid "The input is not a SSL Certificate Key"
+msgstr "Certificate Status"
+
+#: src/views/certificate/CertificateEditor.vue:183
+msgid "The path exists, but the file is not a private key"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:168
+msgid "The path exists, but the file is not a public key"
+msgstr ""
+
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
@@ -1555,18 +1578,31 @@ msgstr ""
 "Note: The server_name in the current configuration must be the domain name "
 "Note: The server_name in the current configuration must be the domain name "
 "you need to get the certificate."
 "you need to get the certificate."
 
 
+#: src/views/preference/BasicSettings.vue:38
+#: src/views/preference/BasicSettings.vue:50
+#: src/views/preference/OpenAISettings.vue:34
+#: src/views/preference/OpenAISettings.vue:46
+msgid "The url is not valid"
+msgstr ""
+
 #: src/language/constants.ts:6
 #: src/language/constants.ts:6
 msgid "The username or password is incorrect"
 msgid "The username or password is incorrect"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:101
+#: src/views/certificate/CertificateEditor.vue:104
 msgid "This Auto Cert item is invalid, please remove it."
 msgid "This Auto Cert item is invalid, please remove it."
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:91
+#: src/views/certificate/CertificateEditor.vue:94
 msgid "This certificate is managed by Nginx UI"
 msgid "This certificate is managed by Nginx UI"
 msgstr ""
 msgstr ""
 
 
+#: src/views/certificate/CertificateEditor.vue:152
+#: src/views/certificate/CertificateEditor.vue:166
+#: src/views/certificate/CertificateEditor.vue:181
+msgid "This field is required"
+msgstr ""
+
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 msgid "This field should not be empty"
 msgid "This field should not be empty"
 msgstr ""
 msgstr ""
@@ -1583,6 +1619,10 @@ msgid ""
 "continue?"
 "continue?"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/OpenAISettings.vue:58
+msgid "Token is not valid"
+msgstr ""
+
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/notification/Notification.vue:15
 #: src/views/notification/Notification.vue:15
 msgid "Type"
 msgid "Type"
@@ -1637,7 +1677,7 @@ msgstr "Username"
 msgid "Username"
 msgid "Username"
 msgstr "Username"
 msgstr "Username"
 
 
-#: src/views/other/Install.vue:103
+#: src/views/other/Install.vue:102
 msgid "Username (*)"
 msgid "Username (*)"
 msgstr "Username (*)"
 msgstr "Username (*)"
 
 

+ 94 - 53
app/src/language/es/app.po

@@ -68,15 +68,15 @@ msgstr "Adicional"
 msgid "Advance Mode"
 msgid "Advance Mode"
 msgstr "Modo avanzado"
 msgstr "Modo avanzado"
 
 
-#: src/views/preference/OpenAISettings.vue:29
+#: src/views/preference/OpenAISettings.vue:31
 msgid "API Base Url"
 msgid "API Base Url"
 msgstr "URL Base de la API"
 msgstr "URL Base de la API"
 
 
-#: src/views/preference/OpenAISettings.vue:35
+#: src/views/preference/OpenAISettings.vue:43
 msgid "API Proxy"
 msgid "API Proxy"
 msgstr "Proxy de la API"
 msgstr "Proxy de la API"
 
 
-#: src/views/preference/OpenAISettings.vue:41
+#: src/views/preference/OpenAISettings.vue:55
 msgid "API Token"
 msgid "API Token"
 msgstr "Token de la API"
 msgstr "Token de la API"
 
 
@@ -135,7 +135,7 @@ msgstr "Renovación automática deshabilitada por %{name}"
 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:207
+#: src/views/certificate/CertificateEditor.vue:238
 #: 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:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/stream/StreamEdit.vue:246
 #: src/views/stream/StreamEdit.vue:246
@@ -152,7 +152,7 @@ msgstr "Información general"
 
 
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/domain/components/RightSettings.vue:76
 #: src/views/domain/components/RightSettings.vue:76
-#: src/views/preference/Preference.vue:90
+#: src/views/preference/Preference.vue:96
 #: src/views/stream/components/RightSettings.vue:76
 #: src/views/stream/components/RightSettings.vue:76
 msgid "Basic"
 msgid "Basic"
 msgstr "Básico"
 msgstr "Básico"
@@ -170,7 +170,7 @@ msgstr "Modificar por lotes"
 msgid "Build with"
 msgid "Build with"
 msgstr "Desarrollado con"
 msgstr "Desarrollado con"
 
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/BasicSettings.vue:47
 msgid "CADir"
 msgid "CADir"
 msgstr "Directorio CA"
 msgstr "Directorio CA"
 
 
@@ -197,7 +197,7 @@ msgstr "El certificado expiró"
 msgid "Certificate is valid"
 msgid "Certificate is valid"
 msgstr "El certificado es válido"
 msgstr "El certificado es válido"
 
 
-#: src/views/certificate/CertificateEditor.vue:127
+#: src/views/certificate/CertificateEditor.vue:130
 #: src/views/domain/cert/Cert.vue:35
 #: src/views/domain/cert/Cert.vue:35
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgstr "Estado del Certificado"
 msgstr "Estado del Certificado"
@@ -223,7 +223,7 @@ msgstr "Cambiar Certificado"
 msgid "Channel"
 msgid "Channel"
 msgstr "Canal"
 msgstr "Canal"
 
 
-#: src/views/preference/OpenAISettings.vue:13
+#: src/views/preference/OpenAISettings.vue:14
 msgid "ChatGPT Model"
 msgid "ChatGPT Model"
 msgstr "Modelo de ChatGPT"
 msgstr "Modelo de ChatGPT"
 
 
@@ -231,10 +231,6 @@ msgstr "Modelo de ChatGPT"
 msgid "Check again"
 msgid "Check again"
 msgstr "Intentar nuevamente"
 msgstr "Intentar nuevamente"
 
 
-#: src/views/preference/BasicSettings.vue:36
-msgid "Chinese user: https://mirror.ghproxy.com/"
-msgstr "Usuario chino: https://mirror.ghproxy.com/"
-
 #: src/language/constants.ts:17
 #: src/language/constants.ts:17
 msgid "Cleaning environment variables"
 msgid "Cleaning environment variables"
 msgstr "Borrar las variables de entorno"
 msgstr "Borrar las variables de entorno"
@@ -336,7 +332,7 @@ msgstr "Personalizado"
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "Panel"
 msgstr "Panel"
 
 
-#: src/views/other/Install.vue:124
+#: src/views/other/Install.vue:123
 msgid "Database (Optional, default: database)"
 msgid "Database (Optional, default: database)"
 msgstr "Base de datos (Opcional, default: database)"
 msgstr "Base de datos (Opcional, default: database)"
 
 
@@ -497,7 +493,7 @@ msgstr "Dominio"
 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"
 
 
-#: src/views/certificate/CertificateEditor.vue:111
+#: src/views/certificate/CertificateEditor.vue:114
 #, fuzzy
 #, fuzzy
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgstr ""
 msgstr ""
@@ -560,7 +556,7 @@ msgstr "Editar Sitio"
 msgid "Edit Stream"
 msgid "Edit Stream"
 msgstr "Editar Sitio"
 msgstr "Editar Sitio"
 
 
-#: src/views/other/Install.vue:93
+#: src/views/other/Install.vue:92
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "Correo (*)"
 msgstr "Correo (*)"
 
 
@@ -685,6 +681,12 @@ msgstr "Archivo"
 msgid "File exists"
 msgid "File exists"
 msgstr "El archivo existe"
 msgstr "El archivo existe"
 
 
+#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:27
+#, fuzzy
+msgid "File not found"
+msgstr "Archivo no encontrado"
+
 #: src/views/other/Error.vue:14
 #: src/views/other/Error.vue:14
 msgid "File Not Found"
 msgid "File Not Found"
 msgstr "Archivo no encontrado"
 msgstr "Archivo no encontrado"
@@ -697,6 +699,11 @@ msgstr "Filtro"
 msgid "Finished"
 msgid "Finished"
 msgstr "Terminado"
 msgstr "Terminado"
 
 
+#: src/views/preference/BasicSettings.vue:43
+#, fuzzy
+msgid "For Chinese user: https://mirror.ghproxy.com/"
+msgstr "Usuario chino: https://mirror.ghproxy.com/"
+
 #: src/views/config/ConfigEdit.vue:92
 #: src/views/config/ConfigEdit.vue:92
 msgid "Format Code"
 msgid "Format Code"
 msgstr "Código de formato"
 msgstr "Código de formato"
@@ -730,23 +737,23 @@ msgstr "Obtener error de información de versión"
 msgid "Getting the certificate, please wait..."
 msgid "Getting the certificate, please wait..."
 msgstr "Obteniendo el certificado, por favor espere..."
 msgstr "Obteniendo el certificado, por favor espere..."
 
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/BasicSettings.vue:35
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr "Proxy Github"
 msgstr "Proxy Github"
 
 
-#: src/views/preference/OpenAISettings.vue:25
+#: src/views/preference/OpenAISettings.vue:26
 msgid "GPT-3.5-Turbo"
 msgid "GPT-3.5-Turbo"
 msgstr "GPT-3.5-Turbo"
 msgstr "GPT-3.5-Turbo"
 
 
-#: src/views/preference/OpenAISettings.vue:19
+#: src/views/preference/OpenAISettings.vue:20
 msgid "GPT-4"
 msgid "GPT-4"
 msgstr "GPT-4"
 msgstr "GPT-4"
 
 
-#: src/views/preference/OpenAISettings.vue:22
+#: src/views/preference/OpenAISettings.vue:23
 msgid "GPT-4-32K"
 msgid "GPT-4-32K"
 msgstr "GPT-4-32K"
 msgstr "GPT-4-32K"
 
 
-#: src/views/preference/OpenAISettings.vue:16
+#: src/views/preference/OpenAISettings.vue:17
 #, fuzzy
 #, fuzzy
 msgid "GPT-4-Turbo"
 msgid "GPT-4-Turbo"
 msgstr "GPT-3.5-Turbo"
 msgstr "GPT-3.5-Turbo"
@@ -755,15 +762,15 @@ msgstr "GPT-3.5-Turbo"
 msgid "Home"
 msgid "Home"
 msgstr "Inicio"
 msgstr "Inicio"
 
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/BasicSettings.vue:31
 msgid "HTTP Challenge Port"
 msgid "HTTP Challenge Port"
 msgstr "Puerto de desafío HTTP"
 msgstr "Puerto de desafío HTTP"
 
 
-#: src/views/preference/BasicSettings.vue:12
+#: src/views/preference/BasicSettings.vue:13
 msgid "HTTP Host"
 msgid "HTTP Host"
 msgstr "Host HTTP"
 msgstr "Host HTTP"
 
 
-#: src/views/preference/BasicSettings.vue:15
+#: src/views/preference/BasicSettings.vue:16
 msgid "HTTP Port"
 msgid "HTTP Port"
 msgstr "Puerto HTTP"
 msgstr "Puerto HTTP"
 
 
@@ -776,7 +783,7 @@ msgstr "HTTP01"
 msgid "Import"
 msgid "Import"
 msgstr "Exportar"
 msgstr "Exportar"
 
 
-#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Estado del Certificado"
 msgstr "Estado del Certificado"
@@ -793,7 +800,7 @@ msgstr "Error de actualización de kernel inicial"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "Inicializando la actualización del kernel"
 msgstr "Inicializando la actualización del kernel"
 
 
-#: src/routes/index.ts:237 src/views/other/Install.vue:139
+#: src/routes/index.ts:237 src/views/other/Install.vue:138
 msgid "Install"
 msgid "Install"
 msgstr "Instalar"
 msgstr "Instalar"
 
 
@@ -819,7 +826,7 @@ msgstr "Estado del Certificado"
 msgid "Issued certificate successfully"
 msgid "Issued certificate successfully"
 msgstr "Certificado emitido con éxito"
 msgstr "Certificado emitido con éxito"
 
 
-#: src/views/preference/BasicSettings.vue:21
+#: src/views/preference/BasicSettings.vue:22
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "Secreto Jwt"
 msgstr "Secreto Jwt"
 
 
@@ -831,12 +838,12 @@ msgstr "Comprobado por última vez el"
 msgid "Leave blank for no change"
 msgid "Leave blank for no change"
 msgstr "Para no modificar dejar en blanco"
 msgstr "Para no modificar dejar en blanco"
 
 
-#: src/views/preference/OpenAISettings.vue:32
+#: src/views/preference/OpenAISettings.vue:39
 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
+#: src/views/certificate/CertificateEditor.vue:203
+#: src/views/certificate/CertificateEditor.vue:216
 #, fuzzy
 #, fuzzy
 msgid "Leave blank will not change anything"
 msgid "Leave blank will not change anything"
 msgstr "Para no modificar dejar en blanco"
 msgstr "Para no modificar dejar en blanco"
@@ -868,7 +875,7 @@ msgstr "Ubicación"
 msgid "Locations"
 msgid "Locations"
 msgstr "Ubicaciones"
 msgstr "Ubicaciones"
 
 
-#: src/views/certificate/CertificateEditor.vue:195
+#: src/views/certificate/CertificateEditor.vue:226
 #, fuzzy
 #, fuzzy
 msgid "Log"
 msgid "Log"
 msgstr "Acceso"
 msgstr "Acceso"
@@ -929,7 +936,7 @@ msgstr "Memoria y almacenamiento"
 msgid "Modify"
 msgid "Modify"
 msgstr "Modificar"
 msgstr "Modificar"
 
 
-#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "Estado del Certificado"
 msgstr "Estado del Certificado"
@@ -943,7 +950,7 @@ msgid "Multi-line Directive"
 msgstr "Directiva multilínea"
 msgstr "Directiva multilínea"
 
 
 #: src/views/certificate/Certificate.vue:24
 #: src/views/certificate/Certificate.vue:24
-#: src/views/certificate/CertificateEditor.vue:145
+#: src/views/certificate/CertificateEditor.vue:149
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/components/RightSettings.vue:84
 #: src/views/domain/components/RightSettings.vue:84
@@ -983,11 +990,11 @@ msgstr "Se liberó una nueva versión"
 msgid "Next"
 msgid "Next"
 msgstr "Siguiente"
 msgstr "Siguiente"
 
 
-#: src/views/preference/Preference.vue:96
+#: src/views/preference/Preference.vue:102
 msgid "Nginx"
 msgid "Nginx"
 msgstr "Nginx"
 msgstr "Nginx"
 
 
-#: src/views/preference/NginxSettings.vue:13
+#: src/views/preference/NginxSettings.vue:15
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr "Ruta de registro de acceso de Nginx"
 msgstr "Ruta de registro de acceso de Nginx"
 
 
@@ -999,7 +1006,7 @@ msgstr "Error de análisis de configuración de Nginx"
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr "Control de Nginx"
 msgstr "Control de Nginx"
 
 
-#: src/views/preference/NginxSettings.vue:16
+#: src/views/preference/NginxSettings.vue:24
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr "Ruta de registro de errores de Nginx"
 msgstr "Ruta de registro de errores de Nginx"
 
 
@@ -1026,7 +1033,7 @@ msgstr "Nginx reiniciado con éxito"
 msgid "No"
 msgid "No"
 msgstr "No"
 msgstr "No"
 
 
-#: src/views/preference/BasicSettings.vue:24
+#: src/views/preference/BasicSettings.vue:25
 msgid "Node Secret"
 msgid "Node Secret"
 msgstr "Secreto del nodo"
 msgstr "Secreto del nodo"
 
 
@@ -1102,7 +1109,7 @@ msgstr "Una vez que se complete la verificación, los registros se eliminarán."
 msgid "Online"
 msgid "Online"
 msgstr "En línea"
 msgstr "En línea"
 
 
-#: src/views/preference/Preference.vue:102
+#: src/views/preference/Preference.vue:108
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
@@ -1132,7 +1139,7 @@ msgstr "Parámetros"
 msgid "Password"
 msgid "Password"
 msgstr "Contraseña"
 msgstr "Contraseña"
 
 
-#: src/views/other/Install.vue:113
+#: src/views/other/Install.vue:112
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "Contraseña (*)"
 msgstr "Contraseña (*)"
 
 
@@ -1201,7 +1208,7 @@ msgstr "¡Seleccione al menos un nodo!"
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr "Prelanzamiento"
 msgstr "Prelanzamiento"
 
 
-#: src/routes/index.ts:210 src/views/preference/Preference.vue:85
+#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
 msgid "Preference"
 msgid "Preference"
 msgstr "Configuración"
 msgstr "Configuración"
 
 
@@ -1312,7 +1319,7 @@ msgstr "Reiniciar"
 msgid "Restarting"
 msgid "Restarting"
 msgstr "Reiniciando"
 msgstr "Reiniciando"
 
 
-#: src/views/preference/BasicSettings.vue:18
+#: src/views/preference/BasicSettings.vue:19
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "Modo de ejecución"
 msgstr "Modo de ejecución"
 
 
@@ -1321,10 +1328,10 @@ msgid "Running"
 msgstr "Corriendo"
 msgstr "Corriendo"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:214
+#: src/views/certificate/CertificateEditor.vue:245
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
-#: src/views/preference/Preference.vue:113 src/views/stream/StreamEdit.vue:253
+#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
 msgid "Save"
 msgid "Save"
 msgstr "Guardar"
 msgstr "Guardar"
 
 
@@ -1338,8 +1345,8 @@ msgid "Save error %{msg}"
 msgstr "Error al guardar %{msg}"
 msgstr "Error al guardar %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
-#: src/views/certificate/CertificateEditor.vue:47
-#: src/views/preference/Preference.vue:58
+#: src/views/certificate/CertificateEditor.vue:48
+#: src/views/preference/Preference.vue:61
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "Guardado con éxito"
 msgstr "Guardado con éxito"
 
 
@@ -1370,7 +1377,7 @@ msgstr "Enviado"
 #: 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:84
 #: 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:65
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1415,23 +1422,23 @@ msgstr "Registros del sitio"
 msgid "Sites List"
 msgid "Sites List"
 msgstr "Lista de sitios"
 msgstr "Lista de sitios"
 
 
-#: src/views/certificate/CertificateEditor.vue:172
+#: src/views/certificate/CertificateEditor.vue:194
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "Contenido de certificado SSL"
 msgstr "Contenido de certificado SSL"
 
 
-#: src/views/certificate/CertificateEditor.vue:180
+#: src/views/certificate/CertificateEditor.vue:207
 #, 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"
 
 
 #: src/views/certificate/Certificate.vue:73
 #: src/views/certificate/Certificate.vue:73
-#: src/views/certificate/CertificateEditor.vue:163
+#: src/views/certificate/CertificateEditor.vue:179
 msgid "SSL Certificate Key Path"
 msgid "SSL Certificate Key Path"
 msgstr "Ruta de la llave del certificado SSL"
 msgstr "Ruta de la llave del certificado SSL"
 
 
 #: src/views/certificate/Certificate.vue:65
 #: src/views/certificate/Certificate.vue:65
-#: src/views/certificate/CertificateEditor.vue:154
+#: src/views/certificate/CertificateEditor.vue:164
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "Ruta del certificado SSL"
 msgstr "Ruta del certificado SSL"
 
 
@@ -1495,7 +1502,7 @@ msgstr "Objetivo"
 msgid "Terminal"
 msgid "Terminal"
 msgstr "Terminal"
 msgstr "Terminal"
 
 
-#: src/views/preference/BasicSettings.vue:27
+#: src/views/preference/BasicSettings.vue:28
 msgid "Terminal Start Command"
 msgid "Terminal Start Command"
 msgstr "Comando de inicio de terminal"
 msgstr "Comando de inicio de terminal"
 
 
@@ -1513,6 +1520,23 @@ msgid "The filename cannot contain the following characters: %{c}"
 msgstr ""
 msgstr ""
 "El nombre del archivo no puede contener los siguientes caracteres: %{c}"
 "El nombre del archivo no puede contener los siguientes caracteres: %{c}"
 
 
+#: src/views/certificate/CertificateEditor.vue:197
+msgid "The input is not a SSL Certificate"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:210
+#, fuzzy
+msgid "The input is not a SSL Certificate Key"
+msgstr "Ruta de la llave del certificado SSL"
+
+#: src/views/certificate/CertificateEditor.vue:183
+msgid "The path exists, but the file is not a private key"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:168
+msgid "The path exists, but the file is not a public key"
+msgstr ""
+
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
@@ -1522,19 +1546,32 @@ msgstr ""
 "El server_name en la configuración actual debe ser el nombre de dominio que "
 "El server_name en la configuración actual debe ser el nombre de dominio que "
 "necesita para obtener el certificado, soporta dominios múltiples."
 "necesita para obtener el certificado, soporta dominios múltiples."
 
 
+#: src/views/preference/BasicSettings.vue:38
+#: src/views/preference/BasicSettings.vue:50
+#: src/views/preference/OpenAISettings.vue:34
+#: src/views/preference/OpenAISettings.vue:46
+msgid "The url is not valid"
+msgstr ""
+
 #: src/language/constants.ts:6
 #: src/language/constants.ts:6
 msgid "The username or password is incorrect"
 msgid "The username or password is incorrect"
 msgstr "El nombre de usuario o contraseña son incorrectos"
 msgstr "El nombre de usuario o contraseña son incorrectos"
 
 
-#: src/views/certificate/CertificateEditor.vue:101
+#: src/views/certificate/CertificateEditor.vue:104
 #, fuzzy
 #, fuzzy
 msgid "This Auto Cert item is invalid, please remove it."
 msgid "This Auto Cert item is invalid, please remove it."
 msgstr "Este elemento de auto-cert es inválido, elimínelo por favor."
 msgstr "Este elemento de auto-cert es inválido, elimínelo por favor."
 
 
-#: src/views/certificate/CertificateEditor.vue:91
+#: src/views/certificate/CertificateEditor.vue:94
 msgid "This certificate is managed by Nginx UI"
 msgid "This certificate is managed by Nginx UI"
 msgstr "Este certificado es administrado por Nginx UI"
 msgstr "Este certificado es administrado por Nginx UI"
 
 
+#: src/views/certificate/CertificateEditor.vue:152
+#: src/views/certificate/CertificateEditor.vue:166
+#: src/views/certificate/CertificateEditor.vue:181
+msgid "This field is required"
+msgstr ""
+
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 msgid "This field should not be empty"
 msgid "This field should not be empty"
 msgstr "Este campo no debe estar vacío"
 msgstr "Este campo no debe estar vacío"
@@ -1555,6 +1592,10 @@ msgstr ""
 "de la autoridad al backend, y debemos guardar este archivo y volver a cargar "
 "de la autoridad al backend, y debemos guardar este archivo y volver a cargar "
 "Nginx. ¿Estás seguro de que quieres continuar?"
 "Nginx. ¿Estás seguro de que quieres continuar?"
 
 
+#: src/views/preference/OpenAISettings.vue:58
+msgid "Token is not valid"
+msgstr ""
+
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/notification/Notification.vue:15
 #: src/views/notification/Notification.vue:15
 msgid "Type"
 msgid "Type"
@@ -1606,7 +1647,7 @@ msgstr "Usuario"
 msgid "Username"
 msgid "Username"
 msgstr "Nombre de usuario"
 msgstr "Nombre de usuario"
 
 
-#: src/views/other/Install.vue:103
+#: src/views/other/Install.vue:102
 msgid "Username (*)"
 msgid "Username (*)"
 msgstr "Nombre de usuario (*)"
 msgstr "Nombre de usuario (*)"
 
 

+ 94 - 53
app/src/language/fr_FR/app.po

@@ -68,15 +68,15 @@ msgstr "Supplémentaire"
 msgid "Advance Mode"
 msgid "Advance Mode"
 msgstr "Mode avancé"
 msgstr "Mode avancé"
 
 
-#: src/views/preference/OpenAISettings.vue:29
+#: src/views/preference/OpenAISettings.vue:31
 msgid "API Base Url"
 msgid "API Base Url"
 msgstr "URL de base de l'API"
 msgstr "URL de base de l'API"
 
 
-#: src/views/preference/OpenAISettings.vue:35
+#: src/views/preference/OpenAISettings.vue:43
 msgid "API Proxy"
 msgid "API Proxy"
 msgstr "Proxy d'API"
 msgstr "Proxy d'API"
 
 
-#: src/views/preference/OpenAISettings.vue:41
+#: src/views/preference/OpenAISettings.vue:55
 msgid "API Token"
 msgid "API Token"
 msgstr "Jeton d'API"
 msgstr "Jeton d'API"
 
 
@@ -138,7 +138,7 @@ msgstr "Renouvellement automatique désactivé pour %{name}"
 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:207
+#: src/views/certificate/CertificateEditor.vue:238
 #: 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:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/stream/StreamEdit.vue:246
 #: src/views/stream/StreamEdit.vue:246
@@ -155,7 +155,7 @@ msgstr "Information générale"
 
 
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/domain/components/RightSettings.vue:76
 #: src/views/domain/components/RightSettings.vue:76
-#: src/views/preference/Preference.vue:90
+#: src/views/preference/Preference.vue:96
 #: src/views/stream/components/RightSettings.vue:76
 #: src/views/stream/components/RightSettings.vue:76
 msgid "Basic"
 msgid "Basic"
 msgstr "Basique"
 msgstr "Basique"
@@ -174,7 +174,7 @@ msgstr "Batch Modify"
 msgid "Build with"
 msgid "Build with"
 msgstr "Build avec"
 msgstr "Build avec"
 
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/BasicSettings.vue:47
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
 
 
@@ -201,7 +201,7 @@ msgstr "Le certificat a expiré"
 msgid "Certificate is valid"
 msgid "Certificate is valid"
 msgstr "Le certificat est valide"
 msgstr "Le certificat est valide"
 
 
-#: src/views/certificate/CertificateEditor.vue:127
+#: src/views/certificate/CertificateEditor.vue:130
 #: src/views/domain/cert/Cert.vue:35
 #: src/views/domain/cert/Cert.vue:35
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgstr "État du certificat"
 msgstr "État du certificat"
@@ -229,7 +229,7 @@ msgstr "Changer de certificat"
 msgid "Channel"
 msgid "Channel"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:13
+#: src/views/preference/OpenAISettings.vue:14
 msgid "ChatGPT Model"
 msgid "ChatGPT Model"
 msgstr "Modèle ChatGPT"
 msgstr "Modèle ChatGPT"
 
 
@@ -237,10 +237,6 @@ msgstr "Modèle ChatGPT"
 msgid "Check again"
 msgid "Check again"
 msgstr "Revérifier"
 msgstr "Revérifier"
 
 
-#: src/views/preference/BasicSettings.vue:36
-msgid "Chinese user: https://mirror.ghproxy.com/"
-msgstr "Utilisateur chinois : https://mirror.ghproxy.com/"
-
 #: src/language/constants.ts:17
 #: src/language/constants.ts:17
 msgid "Cleaning environment variables"
 msgid "Cleaning environment variables"
 msgstr "Nettoyage des variables d'environnement"
 msgstr "Nettoyage des variables d'environnement"
@@ -344,7 +340,7 @@ msgstr "Custom"
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "Dashboard"
 msgstr "Dashboard"
 
 
-#: src/views/other/Install.vue:124
+#: src/views/other/Install.vue:123
 msgid "Database (Optional, default: database)"
 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)"
 
 
@@ -509,7 +505,7 @@ msgstr ""
 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"
 
 
-#: src/views/certificate/CertificateEditor.vue:111
+#: src/views/certificate/CertificateEditor.vue:114
 #, fuzzy
 #, fuzzy
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgstr ""
 msgstr ""
@@ -576,7 +572,7 @@ msgstr "Modifier le site"
 msgid "Edit Stream"
 msgid "Edit Stream"
 msgstr "Modifier le site"
 msgstr "Modifier le site"
 
 
-#: src/views/other/Install.vue:93
+#: src/views/other/Install.vue:92
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "Email (*)"
 msgstr "Email (*)"
 
 
@@ -704,6 +700,12 @@ msgstr "Fichier"
 msgid "File exists"
 msgid "File exists"
 msgstr "Le fichier existe"
 msgstr "Le fichier existe"
 
 
+#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:27
+#, fuzzy
+msgid "File not found"
+msgstr "Fichier introuvable"
+
 #: src/views/other/Error.vue:14
 #: src/views/other/Error.vue:14
 msgid "File Not Found"
 msgid "File Not Found"
 msgstr "Fichier introuvable"
 msgstr "Fichier introuvable"
@@ -716,6 +718,11 @@ msgstr "Filtrer"
 msgid "Finished"
 msgid "Finished"
 msgstr "Finie"
 msgstr "Finie"
 
 
+#: src/views/preference/BasicSettings.vue:43
+#, fuzzy
+msgid "For Chinese user: https://mirror.ghproxy.com/"
+msgstr "Utilisateur chinois : https://mirror.ghproxy.com/"
+
 #: src/views/config/ConfigEdit.vue:92
 #: src/views/config/ConfigEdit.vue:92
 msgid "Format Code"
 msgid "Format Code"
 msgstr "Code de formatage"
 msgstr "Code de formatage"
@@ -749,23 +756,23 @@ msgstr "Erreur d'obtention des informations sur la version"
 msgid "Getting the certificate, please wait..."
 msgid "Getting the certificate, please wait..."
 msgstr "Obtention du certificat, veuillez patienter..."
 msgstr "Obtention du certificat, veuillez patienter..."
 
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/BasicSettings.vue:35
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr "Proxy Github"
 msgstr "Proxy Github"
 
 
-#: src/views/preference/OpenAISettings.vue:25
+#: src/views/preference/OpenAISettings.vue:26
 msgid "GPT-3.5-Turbo"
 msgid "GPT-3.5-Turbo"
 msgstr "GPT-3.5-Turbo"
 msgstr "GPT-3.5-Turbo"
 
 
-#: src/views/preference/OpenAISettings.vue:19
+#: src/views/preference/OpenAISettings.vue:20
 msgid "GPT-4"
 msgid "GPT-4"
 msgstr "GPT-4"
 msgstr "GPT-4"
 
 
-#: src/views/preference/OpenAISettings.vue:22
+#: src/views/preference/OpenAISettings.vue:23
 msgid "GPT-4-32K"
 msgid "GPT-4-32K"
 msgstr "GPT-4-32K"
 msgstr "GPT-4-32K"
 
 
-#: src/views/preference/OpenAISettings.vue:16
+#: src/views/preference/OpenAISettings.vue:17
 #, fuzzy
 #, fuzzy
 msgid "GPT-4-Turbo"
 msgid "GPT-4-Turbo"
 msgstr "GPT-3.5-Turbo"
 msgstr "GPT-3.5-Turbo"
@@ -774,15 +781,15 @@ msgstr "GPT-3.5-Turbo"
 msgid "Home"
 msgid "Home"
 msgstr "Menu principal"
 msgstr "Menu principal"
 
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/BasicSettings.vue:31
 msgid "HTTP Challenge Port"
 msgid "HTTP Challenge Port"
 msgstr "Port de challenge HTTP"
 msgstr "Port de challenge HTTP"
 
 
-#: src/views/preference/BasicSettings.vue:12
+#: src/views/preference/BasicSettings.vue:13
 msgid "HTTP Host"
 msgid "HTTP Host"
 msgstr "Host HTTP"
 msgstr "Host HTTP"
 
 
-#: src/views/preference/BasicSettings.vue:15
+#: src/views/preference/BasicSettings.vue:16
 msgid "HTTP Port"
 msgid "HTTP Port"
 msgstr "Port HTTP"
 msgstr "Port HTTP"
 
 
@@ -795,7 +802,7 @@ msgstr "HTTP01"
 msgid "Import"
 msgid "Import"
 msgstr "Exporter"
 msgstr "Exporter"
 
 
-#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "État du certificat"
 msgstr "État du certificat"
@@ -812,7 +819,7 @@ msgstr "Erreur du programme de mise à niveau initial du core"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "Initialisation du programme de mise à niveau du core"
 msgstr "Initialisation du programme de mise à niveau du core"
 
 
-#: src/routes/index.ts:237 src/views/other/Install.vue:139
+#: src/routes/index.ts:237 src/views/other/Install.vue:138
 msgid "Install"
 msgid "Install"
 msgstr "Installer"
 msgstr "Installer"
 
 
@@ -838,7 +845,7 @@ msgstr "État du certificat"
 msgid "Issued certificate successfully"
 msgid "Issued certificate successfully"
 msgstr "Certificat délivré avec succès"
 msgstr "Certificat délivré avec succès"
 
 
-#: src/views/preference/BasicSettings.vue:21
+#: src/views/preference/BasicSettings.vue:22
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "Secret Jwt"
 msgstr "Secret Jwt"
 
 
@@ -850,12 +857,12 @@ msgstr "Dernière vérification le"
 msgid "Leave blank for no change"
 msgid "Leave blank for no change"
 msgstr "Laisser vide pour aucun changement"
 msgstr "Laisser vide pour aucun changement"
 
 
-#: src/views/preference/OpenAISettings.vue:32
+#: src/views/preference/OpenAISettings.vue:39
 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
+#: src/views/certificate/CertificateEditor.vue:203
+#: src/views/certificate/CertificateEditor.vue:216
 #, fuzzy
 #, fuzzy
 msgid "Leave blank will not change anything"
 msgid "Leave blank will not change anything"
 msgstr "Laisser vide pour aucun changement"
 msgstr "Laisser vide pour aucun changement"
@@ -890,7 +897,7 @@ msgstr "Localisation"
 msgid "Locations"
 msgid "Locations"
 msgstr "Localisations"
 msgstr "Localisations"
 
 
-#: src/views/certificate/CertificateEditor.vue:195
+#: src/views/certificate/CertificateEditor.vue:226
 #, fuzzy
 #, fuzzy
 msgid "Log"
 msgid "Log"
 msgstr "Connexion"
 msgstr "Connexion"
@@ -952,7 +959,7 @@ msgstr "Mémoire et stockage"
 msgid "Modify"
 msgid "Modify"
 msgstr "Modifier"
 msgstr "Modifier"
 
 
-#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "État du certificat"
 msgstr "État du certificat"
@@ -966,7 +973,7 @@ msgid "Multi-line Directive"
 msgstr "Directive multiligne"
 msgstr "Directive multiligne"
 
 
 #: src/views/certificate/Certificate.vue:24
 #: src/views/certificate/Certificate.vue:24
-#: src/views/certificate/CertificateEditor.vue:145
+#: src/views/certificate/CertificateEditor.vue:149
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/components/RightSettings.vue:84
 #: src/views/domain/components/RightSettings.vue:84
@@ -1006,12 +1013,12 @@ msgstr "Nouvelle version publiée"
 msgid "Next"
 msgid "Next"
 msgstr "Suivant"
 msgstr "Suivant"
 
 
-#: src/views/preference/Preference.vue:96
+#: src/views/preference/Preference.vue:102
 #, fuzzy
 #, fuzzy
 msgid "Nginx"
 msgid "Nginx"
 msgstr "Journal Nginx"
 msgstr "Journal Nginx"
 
 
-#: src/views/preference/NginxSettings.vue:13
+#: src/views/preference/NginxSettings.vue:15
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr "Chemin du journal d'accès Nginx"
 msgstr "Chemin du journal d'accès Nginx"
 
 
@@ -1023,7 +1030,7 @@ msgstr "Erreur d'analyse de configuration Nginx"
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr "Contrôle Nginx"
 msgstr "Contrôle Nginx"
 
 
-#: src/views/preference/NginxSettings.vue:16
+#: src/views/preference/NginxSettings.vue:24
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr "Chemin du journal des erreurs Nginx"
 msgstr "Chemin du journal des erreurs Nginx"
 
 
@@ -1050,7 +1057,7 @@ msgstr "Nginx a redémarré avec succès"
 msgid "No"
 msgid "No"
 msgstr "Non"
 msgstr "Non"
 
 
-#: src/views/preference/BasicSettings.vue:24
+#: src/views/preference/BasicSettings.vue:25
 #, fuzzy
 #, fuzzy
 msgid "Node Secret"
 msgid "Node Secret"
 msgstr "Secret Jwt"
 msgstr "Secret Jwt"
@@ -1127,7 +1134,7 @@ msgstr ""
 msgid "Online"
 msgid "Online"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:102
+#: src/views/preference/Preference.vue:108
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
@@ -1157,7 +1164,7 @@ msgstr "Paramètres"
 msgid "Password"
 msgid "Password"
 msgstr "Mot de passe"
 msgstr "Mot de passe"
 
 
-#: src/views/other/Install.vue:113
+#: src/views/other/Install.vue:112
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "Mot de passe (*)"
 msgstr "Mot de passe (*)"
 
 
@@ -1227,7 +1234,7 @@ msgstr ""
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:210 src/views/preference/Preference.vue:85
+#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
 msgid "Preference"
 msgid "Preference"
 msgstr "Préférence"
 msgstr "Préférence"
 
 
@@ -1341,7 +1348,7 @@ msgstr "Redémarrer"
 msgid "Restarting"
 msgid "Restarting"
 msgstr "Redémarrage"
 msgstr "Redémarrage"
 
 
-#: src/views/preference/BasicSettings.vue:18
+#: src/views/preference/BasicSettings.vue:19
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "Mode d'exécution"
 msgstr "Mode d'exécution"
 
 
@@ -1350,10 +1357,10 @@ 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:214
+#: src/views/certificate/CertificateEditor.vue:245
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
-#: src/views/preference/Preference.vue:113 src/views/stream/StreamEdit.vue:253
+#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
 msgid "Save"
 msgid "Save"
 msgstr "Enregistrer"
 msgstr "Enregistrer"
 
 
@@ -1367,8 +1374,8 @@ msgid "Save error %{msg}"
 msgstr "Enregistrer l'erreur %{msg}"
 msgstr "Enregistrer l'erreur %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
-#: src/views/certificate/CertificateEditor.vue:47
-#: src/views/preference/Preference.vue:58
+#: src/views/certificate/CertificateEditor.vue:48
+#: src/views/preference/Preference.vue:61
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "Sauvegarde réussie"
 msgstr "Sauvegarde réussie"
 
 
@@ -1399,7 +1406,7 @@ msgstr "Envoyer"
 #: 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:84
 #: 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:65
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1444,23 +1451,23 @@ msgstr "Journaux du site"
 msgid "Sites List"
 msgid "Sites List"
 msgstr "Liste des sites"
 msgstr "Liste des sites"
 
 
-#: src/views/certificate/CertificateEditor.vue:172
+#: src/views/certificate/CertificateEditor.vue:194
 #, fuzzy
 #, fuzzy
 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:180
+#: src/views/certificate/CertificateEditor.vue:207
 #, 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"
 
 
 #: src/views/certificate/Certificate.vue:73
 #: src/views/certificate/Certificate.vue:73
-#: src/views/certificate/CertificateEditor.vue:163
+#: src/views/certificate/CertificateEditor.vue:179
 msgid "SSL Certificate Key Path"
 msgid "SSL Certificate Key Path"
 msgstr "Chemin de la clé du certificat SSL"
 msgstr "Chemin de la clé du certificat SSL"
 
 
 #: src/views/certificate/Certificate.vue:65
 #: src/views/certificate/Certificate.vue:65
-#: src/views/certificate/CertificateEditor.vue:154
+#: src/views/certificate/CertificateEditor.vue:164
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "Chemin du certificat SSL"
 msgstr "Chemin du certificat SSL"
 
 
@@ -1526,7 +1533,7 @@ msgstr ""
 msgid "Terminal"
 msgid "Terminal"
 msgstr "Terminal"
 msgstr "Terminal"
 
 
-#: src/views/preference/BasicSettings.vue:27
+#: src/views/preference/BasicSettings.vue:28
 msgid "Terminal Start Command"
 msgid "Terminal Start Command"
 msgstr "Commande de démarrage du terminal"
 msgstr "Commande de démarrage du terminal"
 
 
@@ -1543,6 +1550,23 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "Le nom de fichier ne peut pas contenir les caractères suivants : %{c}"
 msgstr "Le nom de fichier ne peut pas contenir les caractères suivants : %{c}"
 
 
+#: src/views/certificate/CertificateEditor.vue:197
+msgid "The input is not a SSL Certificate"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:210
+#, fuzzy
+msgid "The input is not a SSL Certificate Key"
+msgstr "Chemin de la clé du certificat SSL"
+
+#: src/views/certificate/CertificateEditor.vue:183
+msgid "The path exists, but the file is not a private key"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:168
+msgid "The path exists, but the file is not a public key"
+msgstr ""
+
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
@@ -1553,21 +1577,34 @@ msgstr ""
 "dont vous avez besoin pour obtenir le certificat, prendre en charge "
 "dont vous avez besoin pour obtenir le certificat, prendre en charge "
 "plusieurs domaines."
 "plusieurs domaines."
 
 
+#: src/views/preference/BasicSettings.vue:38
+#: src/views/preference/BasicSettings.vue:50
+#: src/views/preference/OpenAISettings.vue:34
+#: src/views/preference/OpenAISettings.vue:46
+msgid "The url is not valid"
+msgstr ""
+
 #: src/language/constants.ts:6
 #: src/language/constants.ts:6
 msgid "The username or password is incorrect"
 msgid "The username or password is incorrect"
 msgstr "Le pseudo ou mot de passe est incorect"
 msgstr "Le pseudo ou mot de passe est incorect"
 
 
-#: src/views/certificate/CertificateEditor.vue:101
+#: src/views/certificate/CertificateEditor.vue:104
 #, fuzzy
 #, fuzzy
 msgid "This Auto Cert item is invalid, please remove it."
 msgid "This Auto Cert item is invalid, please remove it."
 msgstr ""
 msgstr ""
 "Cet élément de certification automatique n'est pas valide, veuillez le "
 "Cet élément de certification automatique n'est pas valide, veuillez le "
 "supprimer."
 "supprimer."
 
 
-#: src/views/certificate/CertificateEditor.vue:91
+#: src/views/certificate/CertificateEditor.vue:94
 msgid "This certificate is managed by Nginx UI"
 msgid "This certificate is managed by Nginx UI"
 msgstr ""
 msgstr ""
 
 
+#: src/views/certificate/CertificateEditor.vue:152
+#: src/views/certificate/CertificateEditor.vue:166
+#: src/views/certificate/CertificateEditor.vue:181
+msgid "This field is required"
+msgstr ""
+
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 msgid "This field should not be empty"
 msgid "This field should not be empty"
 msgstr ""
 msgstr ""
@@ -1588,6 +1625,10 @@ msgstr ""
 "transmettre la demande de l'autorité au backend, et nous devons enregistrer "
 "transmettre la demande de l'autorité au backend, et nous devons enregistrer "
 "ce fichier et recharger le Nginx. Êtes-vous sûr de vouloir continuer?"
 "ce fichier et recharger le Nginx. Êtes-vous sûr de vouloir continuer?"
 
 
+#: src/views/preference/OpenAISettings.vue:58
+msgid "Token is not valid"
+msgstr ""
+
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/notification/Notification.vue:15
 #: src/views/notification/Notification.vue:15
 msgid "Type"
 msgid "Type"
@@ -1640,7 +1681,7 @@ msgstr "Nom d'utilisateur"
 msgid "Username"
 msgid "Username"
 msgstr "Nom d'utilisateur"
 msgstr "Nom d'utilisateur"
 
 
-#: src/views/other/Install.vue:103
+#: src/views/other/Install.vue:102
 msgid "Username (*)"
 msgid "Username (*)"
 msgstr "Nom d'utilisateur (*)"
 msgstr "Nom d'utilisateur (*)"
 
 

+ 91 - 53
app/src/language/messages.pot

@@ -62,15 +62,15 @@ msgstr ""
 msgid "Advance Mode"
 msgid "Advance Mode"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:29
+#: src/views/preference/OpenAISettings.vue:31
 msgid "API Base Url"
 msgid "API Base Url"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:35
+#: src/views/preference/OpenAISettings.vue:43
 msgid "API Proxy"
 msgid "API Proxy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:41
+#: src/views/preference/OpenAISettings.vue:55
 msgid "API Token"
 msgid "API Token"
 msgstr ""
 msgstr ""
 
 
@@ -130,7 +130,7 @@ msgstr ""
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:207
+#: src/views/certificate/CertificateEditor.vue:238
 #: 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:256
 #: src/views/domain/DomainEdit.vue:256
@@ -149,7 +149,7 @@ msgstr ""
 
 
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/domain/components/RightSettings.vue:76
 #: src/views/domain/components/RightSettings.vue:76
-#: src/views/preference/Preference.vue:90
+#: src/views/preference/Preference.vue:96
 #: src/views/stream/components/RightSettings.vue:76
 #: src/views/stream/components/RightSettings.vue:76
 msgid "Basic"
 msgid "Basic"
 msgstr ""
 msgstr ""
@@ -168,7 +168,7 @@ msgstr ""
 msgid "Build with"
 msgid "Build with"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/BasicSettings.vue:47
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
 
 
@@ -195,7 +195,7 @@ msgstr ""
 msgid "Certificate is valid"
 msgid "Certificate is valid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:127
+#: src/views/certificate/CertificateEditor.vue:130
 #: src/views/domain/cert/Cert.vue:35
 #: src/views/domain/cert/Cert.vue:35
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgstr ""
 msgstr ""
@@ -222,7 +222,7 @@ msgstr ""
 msgid "Channel"
 msgid "Channel"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:13
+#: src/views/preference/OpenAISettings.vue:14
 msgid "ChatGPT Model"
 msgid "ChatGPT Model"
 msgstr ""
 msgstr ""
 
 
@@ -230,10 +230,6 @@ msgstr ""
 msgid "Check again"
 msgid "Check again"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:36
-msgid "Chinese user: https://mirror.ghproxy.com/"
-msgstr ""
-
 #: src/language/constants.ts:17
 #: src/language/constants.ts:17
 msgid "Cleaning environment variables"
 msgid "Cleaning environment variables"
 msgstr ""
 msgstr ""
@@ -336,7 +332,7 @@ msgstr ""
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Install.vue:124
+#: src/views/other/Install.vue:123
 msgid "Database (Optional, default: database)"
 msgid "Database (Optional, default: database)"
 msgstr ""
 msgstr ""
 
 
@@ -496,7 +492,7 @@ msgstr ""
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:111
+#: src/views/certificate/CertificateEditor.vue:114
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgstr ""
 msgstr ""
 
 
@@ -557,7 +553,7 @@ msgstr ""
 msgid "Edit Stream"
 msgid "Edit Stream"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Install.vue:93
+#: src/views/other/Install.vue:92
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr ""
 msgstr ""
 
 
@@ -686,6 +682,11 @@ msgstr ""
 msgid "File exists"
 msgid "File exists"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:27
+msgid "File not found"
+msgstr ""
+
 #: src/views/other/Error.vue:14
 #: src/views/other/Error.vue:14
 msgid "File Not Found"
 msgid "File Not Found"
 msgstr ""
 msgstr ""
@@ -699,6 +700,10 @@ msgstr ""
 msgid "Finished"
 msgid "Finished"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/BasicSettings.vue:43
+msgid "For Chinese user: https://mirror.ghproxy.com/"
+msgstr ""
+
 #: src/views/config/ConfigEdit.vue:92
 #: src/views/config/ConfigEdit.vue:92
 msgid "Format Code"
 msgid "Format Code"
 msgstr ""
 msgstr ""
@@ -731,23 +736,23 @@ msgstr ""
 msgid "Getting the certificate, please wait..."
 msgid "Getting the certificate, please wait..."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/BasicSettings.vue:35
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:25
+#: src/views/preference/OpenAISettings.vue:26
 msgid "GPT-3.5-Turbo"
 msgid "GPT-3.5-Turbo"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:19
+#: src/views/preference/OpenAISettings.vue:20
 msgid "GPT-4"
 msgid "GPT-4"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:22
+#: src/views/preference/OpenAISettings.vue:23
 msgid "GPT-4-32K"
 msgid "GPT-4-32K"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:16
+#: src/views/preference/OpenAISettings.vue:17
 msgid "GPT-4-Turbo"
 msgid "GPT-4-Turbo"
 msgstr ""
 msgstr ""
 
 
@@ -755,15 +760,15 @@ msgstr ""
 msgid "Home"
 msgid "Home"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/BasicSettings.vue:31
 msgid "HTTP Challenge Port"
 msgid "HTTP Challenge Port"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:12
+#: src/views/preference/BasicSettings.vue:13
 msgid "HTTP Host"
 msgid "HTTP Host"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:15
+#: src/views/preference/BasicSettings.vue:16
 msgid "HTTP Port"
 msgid "HTTP Port"
 msgstr ""
 msgstr ""
 
 
@@ -776,7 +781,7 @@ msgid "Import"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:140
 #: src/routes/index.ts:140
-#: src/views/certificate/CertificateEditor.vue:84
+#: src/views/certificate/CertificateEditor.vue:87
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr ""
 msgstr ""
 
 
@@ -793,7 +798,7 @@ msgid "Initialing core upgrader"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:237
 #: src/routes/index.ts:237
-#: src/views/other/Install.vue:139
+#: src/views/other/Install.vue:138
 msgid "Install"
 msgid "Install"
 msgstr ""
 msgstr ""
 
 
@@ -817,7 +822,7 @@ msgstr ""
 msgid "Issued certificate successfully"
 msgid "Issued certificate successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:21
+#: src/views/preference/BasicSettings.vue:22
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr ""
 msgstr ""
 
 
@@ -829,12 +834,12 @@ msgstr ""
 msgid "Leave blank for no change"
 msgid "Leave blank for no change"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:32
+#: src/views/preference/OpenAISettings.vue:39
 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
+#: src/views/certificate/CertificateEditor.vue:203
+#: src/views/certificate/CertificateEditor.vue:216
 msgid "Leave blank will not change anything"
 msgid "Leave blank will not change anything"
 msgstr ""
 msgstr ""
 
 
@@ -863,7 +868,7 @@ msgstr ""
 msgid "Locations"
 msgid "Locations"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:195
+#: src/views/certificate/CertificateEditor.vue:226
 msgid "Log"
 msgid "Log"
 msgstr ""
 msgstr ""
 
 
@@ -923,7 +928,7 @@ msgid "Modify"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:132
 #: src/routes/index.ts:132
-#: src/views/certificate/CertificateEditor.vue:84
+#: src/views/certificate/CertificateEditor.vue:87
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr ""
 msgstr ""
 
 
@@ -936,7 +941,7 @@ msgid "Multi-line Directive"
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/Certificate.vue:24
 #: src/views/certificate/Certificate.vue:24
-#: src/views/certificate/CertificateEditor.vue:145
+#: src/views/certificate/CertificateEditor.vue:149
 #: src/views/certificate/DNSCredential.vue:13
 #: src/views/certificate/DNSCredential.vue:13
 #: src/views/config/config.ts:9
 #: src/views/config/config.ts:9
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/cert/ChangeCert.vue:21
@@ -978,11 +983,11 @@ msgstr ""
 msgid "Next"
 msgid "Next"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:96
+#: src/views/preference/Preference.vue:102
 msgid "Nginx"
 msgid "Nginx"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/NginxSettings.vue:13
+#: src/views/preference/NginxSettings.vue:15
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr ""
 msgstr ""
 
 
@@ -995,7 +1000,7 @@ msgstr ""
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/NginxSettings.vue:16
+#: src/views/preference/NginxSettings.vue:24
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr ""
 msgstr ""
 
 
@@ -1023,7 +1028,7 @@ msgstr ""
 msgid "No"
 msgid "No"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:24
+#: src/views/preference/BasicSettings.vue:25
 msgid "Node Secret"
 msgid "Node Secret"
 msgstr ""
 msgstr ""
 
 
@@ -1099,7 +1104,7 @@ msgstr ""
 msgid "Online"
 msgid "Online"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:102
+#: src/views/preference/Preference.vue:108
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr ""
 msgstr ""
 
 
@@ -1130,7 +1135,7 @@ msgstr ""
 msgid "Password"
 msgid "Password"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Install.vue:113
+#: src/views/other/Install.vue:112
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr ""
 msgstr ""
 
 
@@ -1190,7 +1195,7 @@ msgid "Pre-release"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:210
 #: src/routes/index.ts:210
-#: src/views/preference/Preference.vue:85
+#: src/views/preference/Preference.vue:91
 msgid "Preference"
 msgid "Preference"
 msgstr ""
 msgstr ""
 
 
@@ -1295,7 +1300,7 @@ msgstr ""
 msgid "Restarting"
 msgid "Restarting"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:18
+#: src/views/preference/BasicSettings.vue:19
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr ""
 msgstr ""
 
 
@@ -1304,11 +1309,11 @@ msgid "Running"
 msgstr ""
 msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:214
+#: src/views/certificate/CertificateEditor.vue:245
 #: src/views/config/ConfigEdit.vue:98
 #: src/views/config/ConfigEdit.vue:98
 #: src/views/domain/DomainEdit.vue:263
 #: src/views/domain/DomainEdit.vue:263
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
-#: src/views/preference/Preference.vue:113
+#: src/views/preference/Preference.vue:119
 #: src/views/stream/StreamEdit.vue:253
 #: src/views/stream/StreamEdit.vue:253
 msgid "Save"
 msgid "Save"
 msgstr ""
 msgstr ""
@@ -1324,8 +1329,8 @@ msgid "Save error %{msg}"
 msgstr ""
 msgstr ""
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
-#: src/views/certificate/CertificateEditor.vue:47
-#: src/views/preference/Preference.vue:58
+#: src/views/certificate/CertificateEditor.vue:48
+#: src/views/preference/Preference.vue:61
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr ""
 msgstr ""
 
 
@@ -1359,7 +1364,7 @@ msgstr ""
 #: src/views/config/ConfigEdit.vue:42
 #: src/views/config/ConfigEdit.vue:42
 #: src/views/domain/DomainList.vue:84
 #: 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:65
 #: src/views/stream/StreamList.vue:116
 #: src/views/stream/StreamList.vue:116
 #: src/views/stream/StreamList.vue:84
 #: src/views/stream/StreamList.vue:84
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
@@ -1403,21 +1408,21 @@ msgstr ""
 msgid "Sites List"
 msgid "Sites List"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:172
+#: src/views/certificate/CertificateEditor.vue:194
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:180
+#: src/views/certificate/CertificateEditor.vue:207
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/Certificate.vue:73
 #: src/views/certificate/Certificate.vue:73
-#: src/views/certificate/CertificateEditor.vue:163
+#: src/views/certificate/CertificateEditor.vue:179
 msgid "SSL Certificate Key Path"
 msgid "SSL Certificate Key Path"
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/Certificate.vue:65
 #: src/views/certificate/Certificate.vue:65
-#: src/views/certificate/CertificateEditor.vue:154
+#: src/views/certificate/CertificateEditor.vue:164
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr ""
 msgstr ""
 
 
@@ -1483,7 +1488,7 @@ msgstr ""
 msgid "Terminal"
 msgid "Terminal"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:27
+#: src/views/preference/BasicSettings.vue:28
 msgid "Terminal Start Command"
 msgid "Terminal Start Command"
 msgstr ""
 msgstr ""
 
 
@@ -1495,22 +1500,51 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr ""
 msgstr ""
 
 
+#: src/views/certificate/CertificateEditor.vue:197
+msgid "The input is not a SSL Certificate"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:210
+msgid "The input is not a SSL Certificate Key"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:183
+msgid "The path exists, but the file is not a private key"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:168
+msgid "The path exists, but the file is not a public key"
+msgstr ""
+
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 msgid "The server_name in the current configuration must be the domain name you need to get the certificate, supportmultiple domains."
 msgid "The server_name in the current configuration must be the domain name you need to get the certificate, supportmultiple domains."
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/BasicSettings.vue:38
+#: src/views/preference/BasicSettings.vue:50
+#: src/views/preference/OpenAISettings.vue:34
+#: src/views/preference/OpenAISettings.vue:46
+msgid "The url is not valid"
+msgstr ""
+
 #: src/language/constants.ts:6
 #: src/language/constants.ts:6
 msgid "The username or password is incorrect"
 msgid "The username or password is incorrect"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:101
+#: src/views/certificate/CertificateEditor.vue:104
 msgid "This Auto Cert item is invalid, please remove it."
 msgid "This Auto Cert item is invalid, please remove it."
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:91
+#: src/views/certificate/CertificateEditor.vue:94
 msgid "This certificate is managed by Nginx UI"
 msgid "This certificate is managed by Nginx UI"
 msgstr ""
 msgstr ""
 
 
+#: src/views/certificate/CertificateEditor.vue:152
+#: src/views/certificate/CertificateEditor.vue:166
+#: src/views/certificate/CertificateEditor.vue:181
+msgid "This field is required"
+msgstr ""
+
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 msgid "This field should not be empty"
 msgid "This field should not be empty"
 msgstr ""
 msgstr ""
@@ -1523,6 +1557,10 @@ msgstr ""
 msgid "To make sure the certification auto-renewal can work normally, we need to add a location which can proxy the request from authority to backend, and we need to save this file and reload the Nginx. Are you sure you want to continue?"
 msgid "To make sure the certification auto-renewal can work normally, we need to add a location which can proxy the request from authority to backend, and we need to save this file and reload the Nginx. Are you sure you want to continue?"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/OpenAISettings.vue:58
+msgid "Token is not valid"
+msgstr ""
+
 #: src/views/certificate/Certificate.vue:41
 #: src/views/certificate/Certificate.vue:41
 #: src/views/config/config.ts:14
 #: src/views/config/config.ts:14
 #: src/views/notification/Notification.vue:15
 #: src/views/notification/Notification.vue:15
@@ -1580,7 +1618,7 @@ msgstr ""
 msgid "Username"
 msgid "Username"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Install.vue:103
+#: src/views/other/Install.vue:102
 msgid "Username (*)"
 msgid "Username (*)"
 msgstr ""
 msgstr ""
 
 

+ 93 - 53
app/src/language/ru_RU/app.po

@@ -66,15 +66,15 @@ msgstr "Дополнительно"
 msgid "Advance Mode"
 msgid "Advance Mode"
 msgstr "Расширенный режим"
 msgstr "Расширенный режим"
 
 
-#: src/views/preference/OpenAISettings.vue:29
+#: src/views/preference/OpenAISettings.vue:31
 msgid "API Base Url"
 msgid "API Base Url"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:35
+#: src/views/preference/OpenAISettings.vue:43
 msgid "API Proxy"
 msgid "API Proxy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:41
+#: src/views/preference/OpenAISettings.vue:55
 msgid "API Token"
 msgid "API Token"
 msgstr ""
 msgstr ""
 
 
@@ -137,7 +137,7 @@ msgstr "Автообновление отключено для %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr "Автообновление включено для %{name}"
 msgstr "Автообновление включено для %{name}"
 
 
-#: src/views/certificate/CertificateEditor.vue:207
+#: src/views/certificate/CertificateEditor.vue:238
 #: 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:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/stream/StreamEdit.vue:246
 #: src/views/stream/StreamEdit.vue:246
@@ -155,7 +155,7 @@ msgstr "Основная информация"
 
 
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/domain/components/RightSettings.vue:76
 #: src/views/domain/components/RightSettings.vue:76
-#: src/views/preference/Preference.vue:90
+#: src/views/preference/Preference.vue:96
 #: src/views/stream/components/RightSettings.vue:76
 #: src/views/stream/components/RightSettings.vue:76
 #, fuzzy
 #, fuzzy
 msgid "Basic"
 msgid "Basic"
@@ -175,7 +175,7 @@ msgstr "Изменение конфигурации"
 msgid "Build with"
 msgid "Build with"
 msgstr "Собрать с"
 msgstr "Собрать с"
 
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/BasicSettings.vue:47
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
 
 
@@ -202,7 +202,7 @@ msgstr "Срок действия сертификата истек"
 msgid "Certificate is valid"
 msgid "Certificate is valid"
 msgstr "Сертификат действителен"
 msgstr "Сертификат действителен"
 
 
-#: src/views/certificate/CertificateEditor.vue:127
+#: src/views/certificate/CertificateEditor.vue:130
 #: src/views/domain/cert/Cert.vue:35
 #: src/views/domain/cert/Cert.vue:35
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgstr "Статус сертификата"
 msgstr "Статус сертификата"
@@ -231,7 +231,7 @@ msgstr "Сертификат действителен"
 msgid "Channel"
 msgid "Channel"
 msgstr "Канал"
 msgstr "Канал"
 
 
-#: src/views/preference/OpenAISettings.vue:13
+#: src/views/preference/OpenAISettings.vue:14
 msgid "ChatGPT Model"
 msgid "ChatGPT Model"
 msgstr ""
 msgstr ""
 
 
@@ -239,10 +239,6 @@ msgstr ""
 msgid "Check again"
 msgid "Check again"
 msgstr "Проверить повторно"
 msgstr "Проверить повторно"
 
 
-#: src/views/preference/BasicSettings.vue:36
-msgid "Chinese user: https://mirror.ghproxy.com/"
-msgstr ""
-
 #: src/language/constants.ts:17
 #: src/language/constants.ts:17
 msgid "Cleaning environment variables"
 msgid "Cleaning environment variables"
 msgstr "Очистка переменных среды"
 msgstr "Очистка переменных среды"
@@ -347,7 +343,7 @@ msgstr "Пользовательский"
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "Доска"
 msgstr "Доска"
 
 
-#: src/views/other/Install.vue:124
+#: src/views/other/Install.vue:123
 msgid "Database (Optional, default: database)"
 msgid "Database (Optional, default: database)"
 msgstr "База данных (Опционально, по умолчанию: database)"
 msgstr "База данных (Опционально, по умолчанию: database)"
 
 
@@ -515,7 +511,7 @@ msgstr ""
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr "Конфигурация домена успешно создана"
 msgstr "Конфигурация домена успешно создана"
 
 
-#: src/views/certificate/CertificateEditor.vue:111
+#: src/views/certificate/CertificateEditor.vue:114
 #, fuzzy
 #, fuzzy
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgstr ""
 msgstr ""
@@ -581,7 +577,7 @@ msgstr "Редактировать Сайт"
 msgid "Edit Stream"
 msgid "Edit Stream"
 msgstr "Редактировать Сайт"
 msgstr "Редактировать Сайт"
 
 
-#: src/views/other/Install.vue:93
+#: src/views/other/Install.vue:92
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "Email (*)"
 msgstr "Email (*)"
 
 
@@ -707,6 +703,12 @@ msgstr "Файл"
 msgid "File exists"
 msgid "File exists"
 msgstr "Файл существует"
 msgstr "Файл существует"
 
 
+#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:27
+#, fuzzy
+msgid "File not found"
+msgstr "Файл не найден"
+
 #: src/views/other/Error.vue:14
 #: src/views/other/Error.vue:14
 msgid "File Not Found"
 msgid "File Not Found"
 msgstr "Файл не найден"
 msgstr "Файл не найден"
@@ -719,6 +721,10 @@ msgstr "Фильтр"
 msgid "Finished"
 msgid "Finished"
 msgstr "Готово"
 msgstr "Готово"
 
 
+#: src/views/preference/BasicSettings.vue:43
+msgid "For Chinese user: https://mirror.ghproxy.com/"
+msgstr ""
+
 #: src/views/config/ConfigEdit.vue:92
 #: src/views/config/ConfigEdit.vue:92
 msgid "Format Code"
 msgid "Format Code"
 msgstr "Форматировать код"
 msgstr "Форматировать код"
@@ -755,23 +761,23 @@ msgstr "Ошибка получения информации о релизе"
 msgid "Getting the certificate, please wait..."
 msgid "Getting the certificate, please wait..."
 msgstr "Получение сертификата, пожалуйста, подождите..."
 msgstr "Получение сертификата, пожалуйста, подождите..."
 
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/BasicSettings.vue:35
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:25
+#: src/views/preference/OpenAISettings.vue:26
 msgid "GPT-3.5-Turbo"
 msgid "GPT-3.5-Turbo"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:19
+#: src/views/preference/OpenAISettings.vue:20
 msgid "GPT-4"
 msgid "GPT-4"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:22
+#: src/views/preference/OpenAISettings.vue:23
 msgid "GPT-4-32K"
 msgid "GPT-4-32K"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:16
+#: src/views/preference/OpenAISettings.vue:17
 msgid "GPT-4-Turbo"
 msgid "GPT-4-Turbo"
 msgstr ""
 msgstr ""
 
 
@@ -779,15 +785,15 @@ msgstr ""
 msgid "Home"
 msgid "Home"
 msgstr "Главная"
 msgstr "Главная"
 
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/BasicSettings.vue:31
 msgid "HTTP Challenge Port"
 msgid "HTTP Challenge Port"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:12
+#: src/views/preference/BasicSettings.vue:13
 msgid "HTTP Host"
 msgid "HTTP Host"
 msgstr "Хостинг HTTP"
 msgstr "Хостинг HTTP"
 
 
-#: src/views/preference/BasicSettings.vue:15
+#: src/views/preference/BasicSettings.vue:16
 msgid "HTTP Port"
 msgid "HTTP Port"
 msgstr "Порт HTTP"
 msgstr "Порт HTTP"
 
 
@@ -800,7 +806,7 @@ msgstr ""
 msgid "Import"
 msgid "Import"
 msgstr "Экспорт"
 msgstr "Экспорт"
 
 
-#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Статус сертификата"
 msgstr "Статус сертификата"
@@ -817,7 +823,7 @@ msgstr "Ошибка первоначального обновления ядр
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "Инициализация программы обновления ядра"
 msgstr "Инициализация программы обновления ядра"
 
 
-#: src/routes/index.ts:237 src/views/other/Install.vue:139
+#: src/routes/index.ts:237 src/views/other/Install.vue:138
 msgid "Install"
 msgid "Install"
 msgstr "Установить"
 msgstr "Установить"
 
 
@@ -845,7 +851,7 @@ msgstr "Статус сертификата"
 msgid "Issued certificate successfully"
 msgid "Issued certificate successfully"
 msgstr "Сертификат успешно выдан"
 msgstr "Сертификат успешно выдан"
 
 
-#: src/views/preference/BasicSettings.vue:21
+#: src/views/preference/BasicSettings.vue:22
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr ""
 msgstr ""
 
 
@@ -857,12 +863,12 @@ msgstr "Последняя проверка в"
 msgid "Leave blank for no change"
 msgid "Leave blank for no change"
 msgstr "Оставьте пустым без изменений"
 msgstr "Оставьте пустым без изменений"
 
 
-#: src/views/preference/OpenAISettings.vue:32
+#: src/views/preference/OpenAISettings.vue:39
 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
+#: src/views/certificate/CertificateEditor.vue:203
+#: src/views/certificate/CertificateEditor.vue:216
 #, fuzzy
 #, fuzzy
 msgid "Leave blank will not change anything"
 msgid "Leave blank will not change anything"
 msgstr "Оставьте пустым без изменений"
 msgstr "Оставьте пустым без изменений"
@@ -895,7 +901,7 @@ msgstr "Location"
 msgid "Locations"
 msgid "Locations"
 msgstr "Locations"
 msgstr "Locations"
 
 
-#: src/views/certificate/CertificateEditor.vue:195
+#: src/views/certificate/CertificateEditor.vue:226
 #, fuzzy
 #, fuzzy
 msgid "Log"
 msgid "Log"
 msgstr "Логин"
 msgstr "Логин"
@@ -958,7 +964,7 @@ msgstr "Память и хранилище"
 msgid "Modify"
 msgid "Modify"
 msgstr "Изменить"
 msgstr "Изменить"
 
 
-#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "Статус сертификата"
 msgstr "Статус сертификата"
@@ -973,7 +979,7 @@ msgid "Multi-line Directive"
 msgstr "Одиночная директива"
 msgstr "Одиночная директива"
 
 
 #: src/views/certificate/Certificate.vue:24
 #: src/views/certificate/Certificate.vue:24
-#: src/views/certificate/CertificateEditor.vue:145
+#: src/views/certificate/CertificateEditor.vue:149
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/components/RightSettings.vue:84
 #: src/views/domain/components/RightSettings.vue:84
@@ -1013,12 +1019,12 @@ msgstr "Вышла новая версия"
 msgid "Next"
 msgid "Next"
 msgstr "Дальше"
 msgstr "Дальше"
 
 
-#: src/views/preference/Preference.vue:96
+#: src/views/preference/Preference.vue:102
 #, fuzzy
 #, fuzzy
 msgid "Nginx"
 msgid "Nginx"
 msgstr "Журнал"
 msgstr "Журнал"
 
 
-#: src/views/preference/NginxSettings.vue:13
+#: src/views/preference/NginxSettings.vue:15
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr "Путь для Nginx Access Log"
 msgstr "Путь для Nginx Access Log"
 
 
@@ -1031,7 +1037,7 @@ msgstr "Ошибка синтаксического анализа конфиг
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr "Управление Nginx"
 msgstr "Управление Nginx"
 
 
-#: src/views/preference/NginxSettings.vue:16
+#: src/views/preference/NginxSettings.vue:24
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr "Путь для Nginx Error Log"
 msgstr "Путь для Nginx Error Log"
 
 
@@ -1060,7 +1066,7 @@ msgstr "Nginx успешно перезапущен"
 msgid "No"
 msgid "No"
 msgstr "Нет"
 msgstr "Нет"
 
 
-#: src/views/preference/BasicSettings.vue:24
+#: src/views/preference/BasicSettings.vue:25
 msgid "Node Secret"
 msgid "Node Secret"
 msgstr ""
 msgstr ""
 
 
@@ -1137,7 +1143,7 @@ msgstr ""
 msgid "Online"
 msgid "Online"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:102
+#: src/views/preference/Preference.vue:108
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr ""
 msgstr ""
 
 
@@ -1168,7 +1174,7 @@ msgstr "Параметры"
 msgid "Password"
 msgid "Password"
 msgstr "Пароль"
 msgstr "Пароль"
 
 
-#: src/views/other/Install.vue:113
+#: src/views/other/Install.vue:112
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "Пароль (*)"
 msgstr "Пароль (*)"
 
 
@@ -1233,7 +1239,7 @@ msgstr ""
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:210 src/views/preference/Preference.vue:85
+#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
 msgid "Preference"
 msgid "Preference"
 msgstr "Настройки"
 msgstr "Настройки"
 
 
@@ -1346,7 +1352,7 @@ msgstr "Перезапуск"
 msgid "Restarting"
 msgid "Restarting"
 msgstr "Перезапускается"
 msgstr "Перезапускается"
 
 
-#: src/views/preference/BasicSettings.vue:18
+#: src/views/preference/BasicSettings.vue:19
 #, fuzzy
 #, fuzzy
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "Расширенный режим"
 msgstr "Расширенный режим"
@@ -1356,10 +1362,10 @@ msgid "Running"
 msgstr "Выполняется"
 msgstr "Выполняется"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:214
+#: src/views/certificate/CertificateEditor.vue:245
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
-#: src/views/preference/Preference.vue:113 src/views/stream/StreamEdit.vue:253
+#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
 msgid "Save"
 msgid "Save"
 msgstr "Сохранить"
 msgstr "Сохранить"
 
 
@@ -1373,8 +1379,8 @@ msgid "Save error %{msg}"
 msgstr "Ошибка сохранения %{msg}"
 msgstr "Ошибка сохранения %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
-#: src/views/certificate/CertificateEditor.vue:47
-#: src/views/preference/Preference.vue:58
+#: src/views/certificate/CertificateEditor.vue:48
+#: src/views/preference/Preference.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "Успешно сохранено"
 msgstr "Успешно сохранено"
@@ -1407,7 +1413,7 @@ msgstr "Отправлено"
 #: 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:84
 #: 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:65
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1451,24 +1457,24 @@ msgstr "Логи сайтов"
 msgid "Sites List"
 msgid "Sites List"
 msgstr "Список сайтов"
 msgstr "Список сайтов"
 
 
-#: src/views/certificate/CertificateEditor.vue:172
+#: src/views/certificate/CertificateEditor.vue:194
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "Содержание сертификата SSL"
 msgstr "Содержание сертификата SSL"
 
 
-#: src/views/certificate/CertificateEditor.vue:180
+#: src/views/certificate/CertificateEditor.vue:207
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr "Содержание ключа сертификата SSL"
 msgstr "Содержание ключа сертификата SSL"
 
 
 #: src/views/certificate/Certificate.vue:73
 #: src/views/certificate/Certificate.vue:73
-#: src/views/certificate/CertificateEditor.vue:163
+#: src/views/certificate/CertificateEditor.vue:179
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Key Path"
 msgid "SSL Certificate Key Path"
 msgstr "Путь к ключу сертификата SSL"
 msgstr "Путь к ключу сертификата SSL"
 
 
 #: src/views/certificate/Certificate.vue:65
 #: src/views/certificate/Certificate.vue:65
-#: src/views/certificate/CertificateEditor.vue:154
+#: src/views/certificate/CertificateEditor.vue:164
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "Путь к сертификату SSL"
 msgstr "Путь к сертификату SSL"
@@ -1535,7 +1541,7 @@ msgstr ""
 msgid "Terminal"
 msgid "Terminal"
 msgstr "Терминал"
 msgstr "Терминал"
 
 
-#: src/views/preference/BasicSettings.vue:27
+#: src/views/preference/BasicSettings.vue:28
 msgid "Terminal Start Command"
 msgid "Terminal Start Command"
 msgstr "Терминальная команда запуска"
 msgstr "Терминальная команда запуска"
 
 
@@ -1552,6 +1558,23 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "The filename cannot contain the following characters: %{c}"
 msgstr "The filename cannot contain the following characters: %{c}"
 
 
+#: src/views/certificate/CertificateEditor.vue:197
+msgid "The input is not a SSL Certificate"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:210
+#, fuzzy
+msgid "The input is not a SSL Certificate Key"
+msgstr "Путь к ключу сертификата SSL"
+
+#: src/views/certificate/CertificateEditor.vue:183
+msgid "The path exists, but the file is not a private key"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:168
+msgid "The path exists, but the file is not a public key"
+msgstr ""
+
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
@@ -1561,19 +1584,32 @@ msgstr ""
 "Note: The server_name in the current configuration must be the domain name "
 "Note: The server_name in the current configuration must be the domain name "
 "you need to get the certificate."
 "you need to get the certificate."
 
 
+#: src/views/preference/BasicSettings.vue:38
+#: src/views/preference/BasicSettings.vue:50
+#: src/views/preference/OpenAISettings.vue:34
+#: src/views/preference/OpenAISettings.vue:46
+msgid "The url is not valid"
+msgstr ""
+
 #: src/language/constants.ts:6
 #: src/language/constants.ts:6
 msgid "The username or password is incorrect"
 msgid "The username or password is incorrect"
 msgstr "Имя пользователя или пароль неверны"
 msgstr "Имя пользователя или пароль неверны"
 
 
-#: src/views/certificate/CertificateEditor.vue:101
+#: src/views/certificate/CertificateEditor.vue:104
 #, fuzzy
 #, fuzzy
 msgid "This Auto Cert item is invalid, please remove it."
 msgid "This Auto Cert item is invalid, please remove it."
 msgstr "Этот элемент автосертификата недействителен, удалите его.."
 msgstr "Этот элемент автосертификата недействителен, удалите его.."
 
 
-#: src/views/certificate/CertificateEditor.vue:91
+#: src/views/certificate/CertificateEditor.vue:94
 msgid "This certificate is managed by Nginx UI"
 msgid "This certificate is managed by Nginx UI"
 msgstr ""
 msgstr ""
 
 
+#: src/views/certificate/CertificateEditor.vue:152
+#: src/views/certificate/CertificateEditor.vue:166
+#: src/views/certificate/CertificateEditor.vue:181
+msgid "This field is required"
+msgstr ""
+
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 msgid "This field should not be empty"
 msgid "This field should not be empty"
 msgstr ""
 msgstr ""
@@ -1590,6 +1626,10 @@ msgid ""
 "continue?"
 "continue?"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/OpenAISettings.vue:58
+msgid "Token is not valid"
+msgstr ""
+
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/notification/Notification.vue:15
 #: src/views/notification/Notification.vue:15
 msgid "Type"
 msgid "Type"
@@ -1644,7 +1684,7 @@ msgstr "Имя пользователя"
 msgid "Username"
 msgid "Username"
 msgstr "Имя пользователя"
 msgstr "Имя пользователя"
 
 
-#: src/views/other/Install.vue:103
+#: src/views/other/Install.vue:102
 msgid "Username (*)"
 msgid "Username (*)"
 msgstr "Имя пользователя (*)"
 msgstr "Имя пользователя (*)"
 
 

+ 93 - 53
app/src/language/vi_VN/app.po

@@ -66,15 +66,15 @@ msgstr "Tùy chọn bổ sung"
 msgid "Advance Mode"
 msgid "Advance Mode"
 msgstr "Nâng cao"
 msgstr "Nâng cao"
 
 
-#: src/views/preference/OpenAISettings.vue:29
+#: src/views/preference/OpenAISettings.vue:31
 msgid "API Base Url"
 msgid "API Base Url"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:35
+#: src/views/preference/OpenAISettings.vue:43
 msgid "API Proxy"
 msgid "API Proxy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:41
+#: src/views/preference/OpenAISettings.vue:55
 msgid "API Token"
 msgid "API Token"
 msgstr ""
 msgstr ""
 
 
@@ -137,7 +137,7 @@ msgstr "Đã tắt tự động gia hạn SSL cho %{name}"
 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:207
+#: src/views/certificate/CertificateEditor.vue:238
 #: 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:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/stream/StreamEdit.vue:246
 #: src/views/stream/StreamEdit.vue:246
@@ -155,7 +155,7 @@ msgstr "Thông tin"
 
 
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/domain/components/RightSettings.vue:76
 #: src/views/domain/components/RightSettings.vue:76
-#: src/views/preference/Preference.vue:90
+#: src/views/preference/Preference.vue:96
 #: src/views/stream/components/RightSettings.vue:76
 #: src/views/stream/components/RightSettings.vue:76
 #, fuzzy
 #, fuzzy
 msgid "Basic"
 msgid "Basic"
@@ -175,7 +175,7 @@ msgstr "Sửa đổi cấu hình"
 msgid "Build with"
 msgid "Build with"
 msgstr "Xây dựng với"
 msgstr "Xây dựng với"
 
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/BasicSettings.vue:47
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
 
 
@@ -202,7 +202,7 @@ msgstr "Chứng chỉ đã hết hạn"
 msgid "Certificate is valid"
 msgid "Certificate is valid"
 msgstr "Chứng chỉ SSL hợp lệ"
 msgstr "Chứng chỉ SSL hợp lệ"
 
 
-#: src/views/certificate/CertificateEditor.vue:127
+#: src/views/certificate/CertificateEditor.vue:130
 #: src/views/domain/cert/Cert.vue:35
 #: src/views/domain/cert/Cert.vue:35
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgstr "Trạng thái chứng chỉ"
 msgstr "Trạng thái chứng chỉ"
@@ -231,7 +231,7 @@ msgstr "Thay đổi chứng chỉ"
 msgid "Channel"
 msgid "Channel"
 msgstr "Kênh"
 msgstr "Kênh"
 
 
-#: src/views/preference/OpenAISettings.vue:13
+#: src/views/preference/OpenAISettings.vue:14
 msgid "ChatGPT Model"
 msgid "ChatGPT Model"
 msgstr ""
 msgstr ""
 
 
@@ -239,10 +239,6 @@ msgstr ""
 msgid "Check again"
 msgid "Check again"
 msgstr "Kiểm tra lại"
 msgstr "Kiểm tra lại"
 
 
-#: src/views/preference/BasicSettings.vue:36
-msgid "Chinese user: https://mirror.ghproxy.com/"
-msgstr "Người dùng Trung Quốc: https://mirror.ghproxy.com/"
-
 #: src/language/constants.ts:17
 #: src/language/constants.ts:17
 msgid "Cleaning environment variables"
 msgid "Cleaning environment variables"
 msgstr "Xoá các biến môi trường"
 msgstr "Xoá các biến môi trường"
@@ -347,7 +343,7 @@ msgstr "Tuỳ chỉnh"
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "Bảng điều khiển"
 msgstr "Bảng điều khiển"
 
 
-#: src/views/other/Install.vue:124
+#: src/views/other/Install.vue:123
 msgid "Database (Optional, default: database)"
 msgid "Database (Optional, default: database)"
 msgstr "Tên cơ sở dữ liệu (Tuỳ chọn, Mặc định là: database)"
 msgstr "Tên cơ sở dữ liệu (Tuỳ chọn, Mặc định là: database)"
 
 
@@ -516,7 +512,7 @@ msgstr ""
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr "Tên miền đã được tạo"
 msgstr "Tên miền đã được tạo"
 
 
-#: src/views/certificate/CertificateEditor.vue:111
+#: src/views/certificate/CertificateEditor.vue:114
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgstr ""
 msgstr ""
 "Danh sách tên miền rỗng, hãy thử mở lại chức năng Tạo chứng chỉ tự động cho "
 "Danh sách tên miền rỗng, hãy thử mở lại chức năng Tạo chứng chỉ tự động cho "
@@ -582,7 +578,7 @@ msgstr "Sửa trang web"
 msgid "Edit Stream"
 msgid "Edit Stream"
 msgstr "Sửa trang web"
 msgstr "Sửa trang web"
 
 
-#: src/views/other/Install.vue:93
+#: src/views/other/Install.vue:92
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "Email (*)"
 msgstr "Email (*)"
 
 
@@ -708,6 +704,12 @@ msgstr "Tệp tin"
 msgid "File exists"
 msgid "File exists"
 msgstr "Tệp tin đã tồn tại"
 msgstr "Tệp tin đã tồn tại"
 
 
+#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:27
+#, fuzzy
+msgid "File not found"
+msgstr "Không tìm thấy tệp tin"
+
 #: src/views/other/Error.vue:14
 #: src/views/other/Error.vue:14
 msgid "File Not Found"
 msgid "File Not Found"
 msgstr "Không tìm thấy tệp tin"
 msgstr "Không tìm thấy tệp tin"
@@ -720,6 +722,11 @@ msgstr "Lọc"
 msgid "Finished"
 msgid "Finished"
 msgstr "Đã hoàn thành"
 msgstr "Đã hoàn thành"
 
 
+#: src/views/preference/BasicSettings.vue:43
+#, fuzzy
+msgid "For Chinese user: https://mirror.ghproxy.com/"
+msgstr "Người dùng Trung Quốc: https://mirror.ghproxy.com/"
+
 #: src/views/config/ConfigEdit.vue:92
 #: src/views/config/ConfigEdit.vue:92
 msgid "Format Code"
 msgid "Format Code"
 msgstr "Định dạng code"
 msgstr "Định dạng code"
@@ -756,23 +763,23 @@ msgstr "Nhận lỗi thông tin phát hành"
 msgid "Getting the certificate, please wait..."
 msgid "Getting the certificate, please wait..."
 msgstr "Đang lấy chứng chỉ, vui lòng đợi..."
 msgstr "Đang lấy chứng chỉ, vui lòng đợi..."
 
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/BasicSettings.vue:35
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:25
+#: src/views/preference/OpenAISettings.vue:26
 msgid "GPT-3.5-Turbo"
 msgid "GPT-3.5-Turbo"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:19
+#: src/views/preference/OpenAISettings.vue:20
 msgid "GPT-4"
 msgid "GPT-4"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:22
+#: src/views/preference/OpenAISettings.vue:23
 msgid "GPT-4-32K"
 msgid "GPT-4-32K"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/OpenAISettings.vue:16
+#: src/views/preference/OpenAISettings.vue:17
 msgid "GPT-4-Turbo"
 msgid "GPT-4-Turbo"
 msgstr ""
 msgstr ""
 
 
@@ -780,15 +787,15 @@ msgstr ""
 msgid "Home"
 msgid "Home"
 msgstr "Trang chủ"
 msgstr "Trang chủ"
 
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/BasicSettings.vue:31
 msgid "HTTP Challenge Port"
 msgid "HTTP Challenge Port"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:12
+#: src/views/preference/BasicSettings.vue:13
 msgid "HTTP Host"
 msgid "HTTP Host"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/BasicSettings.vue:15
+#: src/views/preference/BasicSettings.vue:16
 msgid "HTTP Port"
 msgid "HTTP Port"
 msgstr ""
 msgstr ""
 
 
@@ -801,7 +808,7 @@ msgstr ""
 msgid "Import"
 msgid "Import"
 msgstr "Xuất"
 msgstr "Xuất"
 
 
-#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Chứng chỉ"
 msgstr "Chứng chỉ"
@@ -818,7 +825,7 @@ msgstr "Không thể khởi tạo trình nâng cấp"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "Đang khởi tạo trình nâng cấp"
 msgstr "Đang khởi tạo trình nâng cấp"
 
 
-#: src/routes/index.ts:237 src/views/other/Install.vue:139
+#: src/routes/index.ts:237 src/views/other/Install.vue:138
 msgid "Install"
 msgid "Install"
 msgstr "Cài đặt"
 msgstr "Cài đặt"
 
 
@@ -846,7 +853,7 @@ msgstr "Thêm chứng chỉ SSL"
 msgid "Issued certificate successfully"
 msgid "Issued certificate successfully"
 msgstr "Cấp chứng chỉ thành công"
 msgstr "Cấp chứng chỉ thành công"
 
 
-#: src/views/preference/BasicSettings.vue:21
+#: src/views/preference/BasicSettings.vue:22
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr ""
 msgstr ""
 
 
@@ -858,12 +865,12 @@ msgstr "Kiểm tra lần cuối lúc"
 msgid "Leave blank for no change"
 msgid "Leave blank for no change"
 msgstr "Bỏ trống nếu không thay đổi"
 msgstr "Bỏ trống nếu không thay đổi"
 
 
-#: src/views/preference/OpenAISettings.vue:32
+#: src/views/preference/OpenAISettings.vue:39
 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
+#: src/views/certificate/CertificateEditor.vue:203
+#: src/views/certificate/CertificateEditor.vue:216
 #, fuzzy
 #, fuzzy
 msgid "Leave blank will not change anything"
 msgid "Leave blank will not change anything"
 msgstr "Bỏ trống nếu không thay đổi"
 msgstr "Bỏ trống nếu không thay đổi"
@@ -896,7 +903,7 @@ msgstr "Location"
 msgid "Locations"
 msgid "Locations"
 msgstr "Locations"
 msgstr "Locations"
 
 
-#: src/views/certificate/CertificateEditor.vue:195
+#: src/views/certificate/CertificateEditor.vue:226
 #, fuzzy
 #, fuzzy
 msgid "Log"
 msgid "Log"
 msgstr "Log"
 msgstr "Log"
@@ -958,7 +965,7 @@ msgstr "Memory và Storage"
 msgid "Modify"
 msgid "Modify"
 msgstr "Sửa"
 msgstr "Sửa"
 
 
-#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "Sửa chứng chỉ"
 msgstr "Sửa chứng chỉ"
@@ -973,7 +980,7 @@ msgid "Multi-line Directive"
 msgstr "Single Directive"
 msgstr "Single Directive"
 
 
 #: src/views/certificate/Certificate.vue:24
 #: src/views/certificate/Certificate.vue:24
-#: src/views/certificate/CertificateEditor.vue:145
+#: src/views/certificate/CertificateEditor.vue:149
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/components/RightSettings.vue:84
 #: src/views/domain/components/RightSettings.vue:84
@@ -1013,11 +1020,11 @@ msgstr "Đã có phiên bản mới"
 msgid "Next"
 msgid "Next"
 msgstr "Tiếp theo"
 msgstr "Tiếp theo"
 
 
-#: src/views/preference/Preference.vue:96
+#: src/views/preference/Preference.vue:102
 msgid "Nginx"
 msgid "Nginx"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/NginxSettings.vue:13
+#: src/views/preference/NginxSettings.vue:15
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr "Vị trí lưu log truy cập (Access log) của Nginx"
 msgstr "Vị trí lưu log truy cập (Access log) của Nginx"
 
 
@@ -1030,7 +1037,7 @@ msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/NginxSettings.vue:16
+#: src/views/preference/NginxSettings.vue:24
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
 msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
 
 
@@ -1059,7 +1066,7 @@ msgstr "Restart Nginx thành công"
 msgid "No"
 msgid "No"
 msgstr "Không"
 msgstr "Không"
 
 
-#: src/views/preference/BasicSettings.vue:24
+#: src/views/preference/BasicSettings.vue:25
 msgid "Node Secret"
 msgid "Node Secret"
 msgstr ""
 msgstr ""
 
 
@@ -1136,7 +1143,7 @@ msgstr "Sau khi quá trình xác minh hoàn tất, bản ghi sẽ bị xóa."
 msgid "Online"
 msgid "Online"
 msgstr "Trực tuyến"
 msgstr "Trực tuyến"
 
 
-#: src/views/preference/Preference.vue:102
+#: src/views/preference/Preference.vue:108
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr ""
 msgstr ""
 
 
@@ -1167,7 +1174,7 @@ msgstr "Tham số"
 msgid "Password"
 msgid "Password"
 msgstr "Mật khẩu"
 msgstr "Mật khẩu"
 
 
-#: src/views/other/Install.vue:113
+#: src/views/other/Install.vue:112
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "Mật khẩu (*)"
 msgstr "Mật khẩu (*)"
 
 
@@ -1234,7 +1241,7 @@ msgstr ""
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:210 src/views/preference/Preference.vue:85
+#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
 msgid "Preference"
 msgid "Preference"
 msgstr "Cài đặt"
 msgstr "Cài đặt"
 
 
@@ -1347,7 +1354,7 @@ msgstr "Khởi động lại"
 msgid "Restarting"
 msgid "Restarting"
 msgstr "Đang khởi động lại"
 msgstr "Đang khởi động lại"
 
 
-#: src/views/preference/BasicSettings.vue:18
+#: src/views/preference/BasicSettings.vue:19
 #, fuzzy
 #, fuzzy
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "Run Mode"
 msgstr "Run Mode"
@@ -1357,10 +1364,10 @@ msgid "Running"
 msgstr "Running"
 msgstr "Running"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:214
+#: src/views/certificate/CertificateEditor.vue:245
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
-#: src/views/preference/Preference.vue:113 src/views/stream/StreamEdit.vue:253
+#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
 msgid "Save"
 msgid "Save"
 msgstr "Lưu"
 msgstr "Lưu"
 
 
@@ -1374,8 +1381,8 @@ msgid "Save error %{msg}"
 msgstr "Đã xảy ra lỗi khi lưu %{msg}"
 msgstr "Đã xảy ra lỗi khi lưu %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
-#: src/views/certificate/CertificateEditor.vue:47
-#: src/views/preference/Preference.vue:58
+#: src/views/certificate/CertificateEditor.vue:48
+#: src/views/preference/Preference.vue:61
 #, fuzzy
 #, fuzzy
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "Lưu thành công"
 msgstr "Lưu thành công"
@@ -1408,7 +1415,7 @@ msgstr "Gửi"
 #: 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:84
 #: 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:65
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1453,21 +1460,21 @@ msgstr "Logs"
 msgid "Sites List"
 msgid "Sites List"
 msgstr "Danh sách Website"
 msgstr "Danh sách Website"
 
 
-#: src/views/certificate/CertificateEditor.vue:172
+#: src/views/certificate/CertificateEditor.vue:194
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr ""
 msgstr ""
 
 
-#: src/views/certificate/CertificateEditor.vue:180
+#: src/views/certificate/CertificateEditor.vue:207
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/Certificate.vue:73
 #: src/views/certificate/Certificate.vue:73
-#: src/views/certificate/CertificateEditor.vue:163
+#: src/views/certificate/CertificateEditor.vue:179
 msgid "SSL Certificate Key Path"
 msgid "SSL Certificate Key Path"
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/Certificate.vue:65
 #: src/views/certificate/Certificate.vue:65
-#: src/views/certificate/CertificateEditor.vue:154
+#: src/views/certificate/CertificateEditor.vue:164
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr ""
 msgstr ""
 
 
@@ -1532,7 +1539,7 @@ msgstr "Mục tiêu"
 msgid "Terminal"
 msgid "Terminal"
 msgstr "Terminal"
 msgstr "Terminal"
 
 
-#: src/views/preference/BasicSettings.vue:27
+#: src/views/preference/BasicSettings.vue:28
 msgid "Terminal Start Command"
 msgid "Terminal Start Command"
 msgstr ""
 msgstr ""
 
 
@@ -1549,6 +1556,22 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "Tên tệp không thể chứa các ký tự sau: %{c}"
 msgstr "Tên tệp không thể chứa các ký tự sau: %{c}"
 
 
+#: src/views/certificate/CertificateEditor.vue:197
+msgid "The input is not a SSL Certificate"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:210
+msgid "The input is not a SSL Certificate Key"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:183
+msgid "The path exists, but the file is not a private key"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:168
+msgid "The path exists, but the file is not a public key"
+msgstr ""
+
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
@@ -1557,18 +1580,31 @@ msgid ""
 msgstr ""
 msgstr ""
 "Lưu ý: server_name trong cấu hình hiện tại phải là tên miền bạn muốn ký SSL."
 "Lưu ý: server_name trong cấu hình hiện tại phải là tên miền bạn muốn ký SSL."
 
 
+#: src/views/preference/BasicSettings.vue:38
+#: src/views/preference/BasicSettings.vue:50
+#: src/views/preference/OpenAISettings.vue:34
+#: src/views/preference/OpenAISettings.vue:46
+msgid "The url is not valid"
+msgstr ""
+
 #: src/language/constants.ts:6
 #: src/language/constants.ts:6
 msgid "The username or password is incorrect"
 msgid "The username or password is incorrect"
 msgstr "Tên người dùng hoặc mật khẩu không chính xác"
 msgstr "Tên người dùng hoặc mật khẩu không chính xác"
 
 
-#: src/views/certificate/CertificateEditor.vue:101
+#: src/views/certificate/CertificateEditor.vue:104
 msgid "This Auto Cert item is invalid, please remove it."
 msgid "This Auto Cert item is invalid, please remove it."
 msgstr "Mục Chứng chỉ tự động này không hợp lệ, vui lòng xóa nó"
 msgstr "Mục Chứng chỉ tự động này không hợp lệ, vui lòng xóa nó"
 
 
-#: src/views/certificate/CertificateEditor.vue:91
+#: src/views/certificate/CertificateEditor.vue:94
 msgid "This certificate is managed by Nginx UI"
 msgid "This certificate is managed by Nginx UI"
 msgstr "Chứng chỉ này được quản lý bởi Nginx UI"
 msgstr "Chứng chỉ này được quản lý bởi Nginx UI"
 
 
+#: src/views/certificate/CertificateEditor.vue:152
+#: src/views/certificate/CertificateEditor.vue:166
+#: src/views/certificate/CertificateEditor.vue:181
+msgid "This field is required"
+msgstr ""
+
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 msgid "This field should not be empty"
 msgid "This field should not be empty"
 msgstr "Trường này không được để trống"
 msgstr "Trường này không được để trống"
@@ -1589,6 +1625,10 @@ msgstr ""
 "quyền đến chương trình phụ trợ và chúng tôi cần lưu tệp này và tải lại "
 "quyền đến chương trình phụ trợ và chúng tôi cần lưu tệp này và tải lại "
 "Nginx. Bạn có chắc chắn muốn Tiếp tục?"
 "Nginx. Bạn có chắc chắn muốn Tiếp tục?"
 
 
+#: src/views/preference/OpenAISettings.vue:58
+msgid "Token is not valid"
+msgstr ""
+
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/notification/Notification.vue:15
 #: src/views/notification/Notification.vue:15
 msgid "Type"
 msgid "Type"
@@ -1643,7 +1683,7 @@ msgstr "Người dùng"
 msgid "Username"
 msgid "Username"
 msgstr "Username"
 msgstr "Username"
 
 
-#: src/views/other/Install.vue:103
+#: src/views/other/Install.vue:102
 msgid "Username (*)"
 msgid "Username (*)"
 msgstr "Username (*)"
 msgstr "Username (*)"
 
 

BIN
app/src/language/zh_CN/app.mo


+ 92 - 57
app/src/language/zh_CN/app.po

@@ -11,7 +11,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "Generated-By: easygettext\n"
 "Generated-By: easygettext\n"
-"X-Generator: Poedit 3.4.1\n"
+"X-Generator: Poedit 3.4.2\n"
 
 
 #: src/routes/index.ts:225
 #: src/routes/index.ts:225
 msgid "About"
 msgid "About"
@@ -67,15 +67,15 @@ msgstr "额外选项"
 msgid "Advance Mode"
 msgid "Advance Mode"
 msgstr "高级模式"
 msgstr "高级模式"
 
 
-#: src/views/preference/OpenAISettings.vue:29
+#: src/views/preference/OpenAISettings.vue:31
 msgid "API Base Url"
 msgid "API Base Url"
 msgstr "API 地址"
 msgstr "API 地址"
 
 
-#: src/views/preference/OpenAISettings.vue:35
+#: src/views/preference/OpenAISettings.vue:43
 msgid "API Proxy"
 msgid "API Proxy"
 msgstr "API 代理"
 msgstr "API 代理"
 
 
-#: src/views/preference/OpenAISettings.vue:41
+#: src/views/preference/OpenAISettings.vue:55
 msgid "API Token"
 msgid "API Token"
 msgstr "API Token"
 msgstr "API Token"
 
 
@@ -134,7 +134,7 @@ msgstr "成功关闭 %{name} 自动续签"
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr "成功启用 %{name} 自动续签"
 msgstr "成功启用 %{name} 自动续签"
 
 
-#: src/views/certificate/CertificateEditor.vue:207
+#: src/views/certificate/CertificateEditor.vue:238
 #: 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:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/stream/StreamEdit.vue:246
 #: src/views/stream/StreamEdit.vue:246
@@ -151,7 +151,7 @@ msgstr "基本信息"
 
 
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/domain/components/RightSettings.vue:76
 #: src/views/domain/components/RightSettings.vue:76
-#: src/views/preference/Preference.vue:90
+#: src/views/preference/Preference.vue:96
 #: src/views/stream/components/RightSettings.vue:76
 #: src/views/stream/components/RightSettings.vue:76
 msgid "Basic"
 msgid "Basic"
 msgstr "基本"
 msgstr "基本"
@@ -169,7 +169,7 @@ msgstr "批量修改"
 msgid "Build with"
 msgid "Build with"
 msgstr "构建基于"
 msgstr "构建基于"
 
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/BasicSettings.vue:47
 msgid "CADir"
 msgid "CADir"
 msgstr "CADir"
 msgstr "CADir"
 
 
@@ -196,7 +196,7 @@ msgstr "此证书已过期"
 msgid "Certificate is valid"
 msgid "Certificate is valid"
 msgstr "此证书有效"
 msgstr "此证书有效"
 
 
-#: src/views/certificate/CertificateEditor.vue:127
+#: src/views/certificate/CertificateEditor.vue:130
 #: src/views/domain/cert/Cert.vue:35
 #: src/views/domain/cert/Cert.vue:35
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgstr "证书状态"
 msgstr "证书状态"
@@ -222,7 +222,7 @@ msgstr "更改证书"
 msgid "Channel"
 msgid "Channel"
 msgstr "通道"
 msgstr "通道"
 
 
-#: src/views/preference/OpenAISettings.vue:13
+#: src/views/preference/OpenAISettings.vue:14
 msgid "ChatGPT Model"
 msgid "ChatGPT Model"
 msgstr "ChatGPT 模型"
 msgstr "ChatGPT 模型"
 
 
@@ -230,10 +230,6 @@ msgstr "ChatGPT 模型"
 msgid "Check again"
 msgid "Check again"
 msgstr "重新检查"
 msgstr "重新检查"
 
 
-#: src/views/preference/BasicSettings.vue:36
-msgid "Chinese user: https://mirror.ghproxy.com/"
-msgstr "中国用户:https://mirror.ghproxy.com/"
-
 #: src/language/constants.ts:17
 #: src/language/constants.ts:17
 msgid "Cleaning environment variables"
 msgid "Cleaning environment variables"
 msgstr "正在清理环境变量"
 msgstr "正在清理环境变量"
@@ -335,7 +331,7 @@ msgstr "自定义"
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "仪表盘"
 msgstr "仪表盘"
 
 
-#: src/views/other/Install.vue:124
+#: src/views/other/Install.vue:123
 msgid "Database (Optional, default: database)"
 msgid "Database (Optional, default: database)"
 msgstr "数据库 (可选,默认: database)"
 msgstr "数据库 (可选,默认: database)"
 
 
@@ -490,7 +486,7 @@ msgstr "域名"
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr "域名配置文件创建成功"
 msgstr "域名配置文件创建成功"
 
 
-#: src/views/certificate/CertificateEditor.vue:111
+#: src/views/certificate/CertificateEditor.vue:114
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgstr "域名列表为空,请尝试为 %{config} 重新打开证书自动续期。"
 msgstr "域名列表为空,请尝试为 %{config} 重新打开证书自动续期。"
 
 
@@ -549,7 +545,7 @@ msgstr "编辑站点"
 msgid "Edit Stream"
 msgid "Edit Stream"
 msgstr "编辑 Stream"
 msgstr "编辑 Stream"
 
 
-#: src/views/other/Install.vue:93
+#: src/views/other/Install.vue:92
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "邮箱 (*)"
 msgstr "邮箱 (*)"
 
 
@@ -671,6 +667,11 @@ msgstr "文件"
 msgid "File exists"
 msgid "File exists"
 msgstr "文件已存在"
 msgstr "文件已存在"
 
 
+#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:27
+msgid "File not found"
+msgstr "文件未找到"
+
 #: src/views/other/Error.vue:14
 #: src/views/other/Error.vue:14
 msgid "File Not Found"
 msgid "File Not Found"
 msgstr "未找到文件"
 msgstr "未找到文件"
@@ -683,6 +684,10 @@ msgstr "过滤"
 msgid "Finished"
 msgid "Finished"
 msgstr "完成"
 msgstr "完成"
 
 
+#: src/views/preference/BasicSettings.vue:43
+msgid "For Chinese user: https://mirror.ghproxy.com/"
+msgstr "中国用户:https://mirror.ghproxy.com/"
+
 #: src/views/config/ConfigEdit.vue:92
 #: src/views/config/ConfigEdit.vue:92
 msgid "Format Code"
 msgid "Format Code"
 msgstr "代码格式化"
 msgstr "代码格式化"
@@ -715,23 +720,23 @@ msgstr "获取发布信息错误"
 msgid "Getting the certificate, please wait..."
 msgid "Getting the certificate, please wait..."
 msgstr "正在获取证书,请稍等..."
 msgstr "正在获取证书,请稍等..."
 
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/BasicSettings.vue:35
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr "Github代理"
 msgstr "Github代理"
 
 
-#: src/views/preference/OpenAISettings.vue:25
+#: src/views/preference/OpenAISettings.vue:26
 msgid "GPT-3.5-Turbo"
 msgid "GPT-3.5-Turbo"
 msgstr "GPT-3.5-Turbo"
 msgstr "GPT-3.5-Turbo"
 
 
-#: src/views/preference/OpenAISettings.vue:19
+#: src/views/preference/OpenAISettings.vue:20
 msgid "GPT-4"
 msgid "GPT-4"
 msgstr "GPT-4"
 msgstr "GPT-4"
 
 
-#: src/views/preference/OpenAISettings.vue:22
+#: src/views/preference/OpenAISettings.vue:23
 msgid "GPT-4-32K"
 msgid "GPT-4-32K"
 msgstr "GPT-4-32K"
 msgstr "GPT-4-32K"
 
 
-#: src/views/preference/OpenAISettings.vue:16
+#: src/views/preference/OpenAISettings.vue:17
 msgid "GPT-4-Turbo"
 msgid "GPT-4-Turbo"
 msgstr "GPT-4-Turbo"
 msgstr "GPT-4-Turbo"
 
 
@@ -739,15 +744,15 @@ msgstr "GPT-4-Turbo"
 msgid "Home"
 msgid "Home"
 msgstr "首页"
 msgstr "首页"
 
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/BasicSettings.vue:31
 msgid "HTTP Challenge Port"
 msgid "HTTP Challenge Port"
 msgstr "HTTP Challenge 监听端口"
 msgstr "HTTP Challenge 监听端口"
 
 
-#: src/views/preference/BasicSettings.vue:12
+#: src/views/preference/BasicSettings.vue:13
 msgid "HTTP Host"
 msgid "HTTP Host"
 msgstr "HTTP 监听主机"
 msgstr "HTTP 监听主机"
 
 
-#: src/views/preference/BasicSettings.vue:15
+#: src/views/preference/BasicSettings.vue:16
 msgid "HTTP Port"
 msgid "HTTP Port"
 msgstr "HTTP 监听端口"
 msgstr "HTTP 监听端口"
 
 
@@ -759,7 +764,7 @@ msgstr "HTTP01"
 msgid "Import"
 msgid "Import"
 msgstr "导入"
 msgstr "导入"
 
 
-#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:87
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "导入证书"
 msgstr "导入证书"
 
 
@@ -775,7 +780,7 @@ msgstr "初始化核心升级程序错误"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "初始化核心升级器"
 msgstr "初始化核心升级器"
 
 
-#: src/routes/index.ts:237 src/views/other/Install.vue:139
+#: src/routes/index.ts:237 src/views/other/Install.vue:138
 msgid "Install"
 msgid "Install"
 msgstr "安装"
 msgstr "安装"
 
 
@@ -799,7 +804,7 @@ msgstr "颁发通配符证书"
 msgid "Issued certificate successfully"
 msgid "Issued certificate successfully"
 msgstr "证书申请成功"
 msgstr "证书申请成功"
 
 
-#: src/views/preference/BasicSettings.vue:21
+#: src/views/preference/BasicSettings.vue:22
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "Jwt 密钥"
 msgstr "Jwt 密钥"
 
 
@@ -811,12 +816,12 @@ msgstr "最后检查时间"
 msgid "Leave blank for no change"
 msgid "Leave blank for no change"
 msgstr "留空表示不修改"
 msgstr "留空表示不修改"
 
 
-#: src/views/preference/OpenAISettings.vue:32
+#: src/views/preference/OpenAISettings.vue:39
 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
+#: src/views/certificate/CertificateEditor.vue:203
+#: src/views/certificate/CertificateEditor.vue:216
 msgid "Leave blank will not change anything"
 msgid "Leave blank will not change anything"
 msgstr "留空不做任何更改"
 msgstr "留空不做任何更改"
 
 
@@ -845,7 +850,7 @@ msgstr "Location"
 msgid "Locations"
 msgid "Locations"
 msgstr "Locations"
 msgstr "Locations"
 
 
-#: src/views/certificate/CertificateEditor.vue:195
+#: src/views/certificate/CertificateEditor.vue:226
 msgid "Log"
 msgid "Log"
 msgstr "日志"
 msgstr "日志"
 
 
@@ -903,7 +908,7 @@ msgstr "内存与存储"
 msgid "Modify"
 msgid "Modify"
 msgstr "修改"
 msgstr "修改"
 
 
-#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:87
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "修改证书"
 msgstr "修改证书"
 
 
@@ -916,7 +921,7 @@ msgid "Multi-line Directive"
 msgstr "多行指令"
 msgstr "多行指令"
 
 
 #: src/views/certificate/Certificate.vue:24
 #: src/views/certificate/Certificate.vue:24
-#: src/views/certificate/CertificateEditor.vue:145
+#: src/views/certificate/CertificateEditor.vue:149
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/components/RightSettings.vue:84
 #: src/views/domain/components/RightSettings.vue:84
@@ -956,11 +961,11 @@ msgstr "新版本发布"
 msgid "Next"
 msgid "Next"
 msgstr "下一步"
 msgstr "下一步"
 
 
-#: src/views/preference/Preference.vue:96
+#: src/views/preference/Preference.vue:102
 msgid "Nginx"
 msgid "Nginx"
 msgstr "Nginx"
 msgstr "Nginx"
 
 
-#: src/views/preference/NginxSettings.vue:13
+#: src/views/preference/NginxSettings.vue:15
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr "Nginx 访问日志路径"
 msgstr "Nginx 访问日志路径"
 
 
@@ -972,7 +977,7 @@ msgstr "Nginx 配置解析错误"
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr "控制 Nginx"
 msgstr "控制 Nginx"
 
 
-#: src/views/preference/NginxSettings.vue:16
+#: src/views/preference/NginxSettings.vue:24
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr "Nginx 错误日志路径"
 msgstr "Nginx 错误日志路径"
 
 
@@ -999,7 +1004,7 @@ msgstr "Nginx 重启成功"
 msgid "No"
 msgid "No"
 msgstr "取消"
 msgstr "取消"
 
 
-#: src/views/preference/BasicSettings.vue:24
+#: src/views/preference/BasicSettings.vue:25
 msgid "Node Secret"
 msgid "Node Secret"
 msgstr "节点密钥"
 msgstr "节点密钥"
 
 
@@ -1073,7 +1078,7 @@ msgstr "一旦验证完成,这些记录将被删除。"
 msgid "Online"
 msgid "Online"
 msgstr "在线"
 msgstr "在线"
 
 
-#: src/views/preference/Preference.vue:102
+#: src/views/preference/Preference.vue:108
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
@@ -1103,7 +1108,7 @@ msgstr "参数"
 msgid "Password"
 msgid "Password"
 msgstr "密码"
 msgstr "密码"
 
 
-#: src/views/other/Install.vue:113
+#: src/views/other/Install.vue:112
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "密码 (*)"
 msgstr "密码 (*)"
 
 
@@ -1168,7 +1173,7 @@ msgstr "请至少选择一个节点!"
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr "预发布"
 msgstr "预发布"
 
 
-#: src/routes/index.ts:210 src/views/preference/Preference.vue:85
+#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
 msgid "Preference"
 msgid "Preference"
 msgstr "偏好设置"
 msgstr "偏好设置"
 
 
@@ -1273,7 +1278,7 @@ msgstr "重启"
 msgid "Restarting"
 msgid "Restarting"
 msgstr "重启中"
 msgstr "重启中"
 
 
-#: src/views/preference/BasicSettings.vue:18
+#: src/views/preference/BasicSettings.vue:19
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "运行模式"
 msgstr "运行模式"
 
 
@@ -1282,10 +1287,10 @@ msgid "Running"
 msgstr "运行中"
 msgstr "运行中"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:214
+#: src/views/certificate/CertificateEditor.vue:245
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
-#: src/views/preference/Preference.vue:113 src/views/stream/StreamEdit.vue:253
+#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
 msgid "Save"
 msgid "Save"
 msgstr "保存"
 msgstr "保存"
 
 
@@ -1299,8 +1304,8 @@ msgid "Save error %{msg}"
 msgstr "保存错误 %{msg}"
 msgstr "保存错误 %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
-#: src/views/certificate/CertificateEditor.vue:47
-#: src/views/preference/Preference.vue:58
+#: src/views/certificate/CertificateEditor.vue:48
+#: src/views/preference/Preference.vue:61
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "保存成功"
 msgstr "保存成功"
 
 
@@ -1331,7 +1336,7 @@ msgstr "上传"
 #: 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:84
 #: 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:65
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1374,21 +1379,21 @@ msgstr "站点列表"
 msgid "Sites List"
 msgid "Sites List"
 msgstr "站点列表"
 msgstr "站点列表"
 
 
-#: src/views/certificate/CertificateEditor.vue:172
+#: src/views/certificate/CertificateEditor.vue:194
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "SSL 证书内容"
 msgstr "SSL 证书内容"
 
 
-#: src/views/certificate/CertificateEditor.vue:180
+#: src/views/certificate/CertificateEditor.vue:207
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr "SSL 证书密钥内容"
 msgstr "SSL 证书密钥内容"
 
 
 #: src/views/certificate/Certificate.vue:73
 #: src/views/certificate/Certificate.vue:73
-#: src/views/certificate/CertificateEditor.vue:163
+#: src/views/certificate/CertificateEditor.vue:179
 msgid "SSL Certificate Key Path"
 msgid "SSL Certificate Key Path"
 msgstr "SSL证书密钥路径"
 msgstr "SSL证书密钥路径"
 
 
 #: src/views/certificate/Certificate.vue:65
 #: src/views/certificate/Certificate.vue:65
-#: src/views/certificate/CertificateEditor.vue:154
+#: src/views/certificate/CertificateEditor.vue:164
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "SSL证书路径"
 msgstr "SSL证书路径"
 
 
@@ -1450,7 +1455,7 @@ msgstr "目标"
 msgid "Terminal"
 msgid "Terminal"
 msgstr "终端"
 msgstr "终端"
 
 
-#: src/views/preference/BasicSettings.vue:27
+#: src/views/preference/BasicSettings.vue:28
 msgid "Terminal Start Command"
 msgid "Terminal Start Command"
 msgstr "终端启动命令"
 msgstr "终端启动命令"
 
 
@@ -1466,24 +1471,53 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "文件名不能包含以下字符: %{c}"
 msgstr "文件名不能包含以下字符: %{c}"
 
 
+#: src/views/certificate/CertificateEditor.vue:197
+msgid "The input is not a SSL Certificate"
+msgstr "输入的内容不是 SSL 证书"
+
+#: src/views/certificate/CertificateEditor.vue:210
+msgid "The input is not a SSL Certificate Key"
+msgstr "输入的内容不是 SSL 证书密钥"
+
+#: src/views/certificate/CertificateEditor.vue:183
+msgid "The path exists, but the file is not a private key"
+msgstr "路径存在,但文件不是私钥"
+
+#: src/views/certificate/CertificateEditor.vue:168
+msgid "The path exists, but the file is not a public key"
+msgstr "路径存在,但文件不是公钥"
+
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 msgid ""
 msgid ""
 "The server_name in the current configuration must be the domain name you "
 "The server_name in the current configuration must be the domain name you "
 "need to get the certificate, supportmultiple domains."
 "need to get the certificate, supportmultiple domains."
 msgstr "当前配置中的 server_name 必须是获取证书所需的域名,支持多个域名。"
 msgstr "当前配置中的 server_name 必须是获取证书所需的域名,支持多个域名。"
 
 
+#: src/views/preference/BasicSettings.vue:38
+#: src/views/preference/BasicSettings.vue:50
+#: src/views/preference/OpenAISettings.vue:34
+#: src/views/preference/OpenAISettings.vue:46
+msgid "The url is not valid"
+msgstr "URL 无效"
+
 #: src/language/constants.ts:6
 #: src/language/constants.ts:6
 msgid "The username or password is incorrect"
 msgid "The username or password is incorrect"
 msgstr "用户名或密码错误"
 msgstr "用户名或密码错误"
 
 
-#: src/views/certificate/CertificateEditor.vue:101
+#: src/views/certificate/CertificateEditor.vue:104
 msgid "This Auto Cert item is invalid, please remove it."
 msgid "This Auto Cert item is invalid, please remove it."
 msgstr "这个证书自动续期项目是无效的,请删除。"
 msgstr "这个证书自动续期项目是无效的,请删除。"
 
 
-#: src/views/certificate/CertificateEditor.vue:91
+#: src/views/certificate/CertificateEditor.vue:94
 msgid "This certificate is managed by Nginx UI"
 msgid "This certificate is managed by Nginx UI"
 msgstr "该证书由 Nginx UI 托管"
 msgstr "该证书由 Nginx UI 托管"
 
 
+#: src/views/certificate/CertificateEditor.vue:152
+#: src/views/certificate/CertificateEditor.vue:166
+#: src/views/certificate/CertificateEditor.vue:181
+msgid "This field is required"
+msgstr "此字段必填"
+
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 msgid "This field should not be empty"
 msgid "This field should not be empty"
 msgstr "该字段不能为空"
 msgstr "该字段不能为空"
@@ -1502,6 +1536,10 @@ msgstr ""
 "为了确保认证自动更新能够正常工作,我们需要添加一个能够代理从权威机构到后端的"
 "为了确保认证自动更新能够正常工作,我们需要添加一个能够代理从权威机构到后端的"
 "请求的 Location,并且我们需要保存这个文件并重新加载Nginx。你确定要继续吗?"
 "请求的 Location,并且我们需要保存这个文件并重新加载Nginx。你确定要继续吗?"
 
 
+#: src/views/preference/OpenAISettings.vue:58
+msgid "Token is not valid"
+msgstr "Token 无效"
+
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/notification/Notification.vue:15
 #: src/views/notification/Notification.vue:15
 msgid "Type"
 msgid "Type"
@@ -1553,7 +1591,7 @@ msgstr "用户"
 msgid "Username"
 msgid "Username"
 msgstr "用户名"
 msgstr "用户名"
 
 
-#: src/views/other/Install.vue:103
+#: src/views/other/Install.vue:102
 msgid "Username (*)"
 msgid "Username (*)"
 msgstr "用户名 (*)"
 msgstr "用户名 (*)"
 
 
@@ -1792,9 +1830,6 @@ msgstr "你可以在这个页面检查Nginx UI的升级。"
 #~ "只有在您的配置文件中有相应字段时,下列的配置才能生效。配置文件名称创建后不"
 #~ "只有在您的配置文件中有相应字段时,下列的配置才能生效。配置文件名称创建后不"
 #~ "可修改。"
 #~ "可修改。"
 
 
-#~ msgid "This feature is not available in demo."
-#~ msgstr "该功能在 Demo 中不可用。"
-
 #~ msgid "This operation will lose the custom configuration."
 #~ msgid "This operation will lose the custom configuration."
 #~ msgstr "该操作将会丢失自定义配置。"
 #~ msgstr "该操作将会丢失自定义配置。"
 
 

+ 95 - 56
app/src/language/zh_TW/app.po

@@ -70,15 +70,15 @@ msgstr "其他設定"
 msgid "Advance Mode"
 msgid "Advance Mode"
 msgstr "進階模式"
 msgstr "進階模式"
 
 
-#: src/views/preference/OpenAISettings.vue:29
+#: src/views/preference/OpenAISettings.vue:31
 msgid "API Base Url"
 msgid "API Base Url"
 msgstr "API 基礎網址"
 msgstr "API 基礎網址"
 
 
-#: src/views/preference/OpenAISettings.vue:35
+#: src/views/preference/OpenAISettings.vue:43
 msgid "API Proxy"
 msgid "API Proxy"
 msgstr "API 代理"
 msgstr "API 代理"
 
 
-#: src/views/preference/OpenAISettings.vue:41
+#: src/views/preference/OpenAISettings.vue:55
 msgid "API Token"
 msgid "API Token"
 msgstr "API Token"
 msgstr "API Token"
 
 
@@ -138,7 +138,7 @@ msgstr "已關閉 %{name} 的自動續簽"
 msgid "Auto-renewal enabled for %{name}"
 msgid "Auto-renewal enabled for %{name}"
 msgstr "已啟用 %{name} 的自動續簽"
 msgstr "已啟用 %{name} 的自動續簽"
 
 
-#: src/views/certificate/CertificateEditor.vue:207
+#: src/views/certificate/CertificateEditor.vue:238
 #: 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:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:170
 #: src/views/stream/StreamEdit.vue:246
 #: src/views/stream/StreamEdit.vue:246
@@ -155,7 +155,7 @@ msgstr "基本資訊"
 
 
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/config/ConfigEdit.vue:117
 #: src/views/domain/components/RightSettings.vue:76
 #: src/views/domain/components/RightSettings.vue:76
-#: src/views/preference/Preference.vue:90
+#: src/views/preference/Preference.vue:96
 #: src/views/stream/components/RightSettings.vue:76
 #: src/views/stream/components/RightSettings.vue:76
 msgid "Basic"
 msgid "Basic"
 msgstr "基本"
 msgstr "基本"
@@ -173,7 +173,7 @@ msgstr "批次修改"
 msgid "Build with"
 msgid "Build with"
 msgstr "構建基於"
 msgstr "構建基於"
 
 
-#: src/views/preference/BasicSettings.vue:39
+#: src/views/preference/BasicSettings.vue:47
 msgid "CADir"
 msgid "CADir"
 msgstr "CADir"
 msgstr "CADir"
 
 
@@ -200,7 +200,7 @@ msgstr "此憑證已過期"
 msgid "Certificate is valid"
 msgid "Certificate is valid"
 msgstr "此憑證有效"
 msgstr "此憑證有效"
 
 
-#: src/views/certificate/CertificateEditor.vue:127
+#: src/views/certificate/CertificateEditor.vue:130
 #: src/views/domain/cert/Cert.vue:35
 #: src/views/domain/cert/Cert.vue:35
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgstr "憑證狀態"
 msgstr "憑證狀態"
@@ -228,7 +228,7 @@ msgstr "更換憑證"
 msgid "Channel"
 msgid "Channel"
 msgstr "通道"
 msgstr "通道"
 
 
-#: src/views/preference/OpenAISettings.vue:13
+#: src/views/preference/OpenAISettings.vue:14
 msgid "ChatGPT Model"
 msgid "ChatGPT Model"
 msgstr "ChatGPT 模型"
 msgstr "ChatGPT 模型"
 
 
@@ -236,10 +236,6 @@ msgstr "ChatGPT 模型"
 msgid "Check again"
 msgid "Check again"
 msgstr "再次檢查"
 msgstr "再次檢查"
 
 
-#: src/views/preference/BasicSettings.vue:36
-msgid "Chinese user: https://mirror.ghproxy.com/"
-msgstr "中國使用者:https://mirror.ghproxy.com/"
-
 #: src/language/constants.ts:17
 #: src/language/constants.ts:17
 msgid "Cleaning environment variables"
 msgid "Cleaning environment variables"
 msgstr "清理環境變數"
 msgstr "清理環境變數"
@@ -343,7 +339,7 @@ msgstr "自訂"
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "儀表板"
 msgstr "儀表板"
 
 
-#: src/views/other/Install.vue:124
+#: src/views/other/Install.vue:123
 msgid "Database (Optional, default: database)"
 msgid "Database (Optional, default: database)"
 msgstr "資料庫 (可選,預設: database)"
 msgstr "資料庫 (可選,預設: database)"
 
 
@@ -504,7 +500,7 @@ msgstr "網域"
 msgid "Domain Config Created Successfully"
 msgid "Domain Config Created Successfully"
 msgstr "網域設定檔成功建立"
 msgstr "網域設定檔成功建立"
 
 
-#: src/views/certificate/CertificateEditor.vue:111
+#: src/views/certificate/CertificateEditor.vue:114
 #, fuzzy
 #, fuzzy
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgstr "網域列表為空,請嘗試重新開啟 %{config} 的自動憑證"
 msgstr "網域列表為空,請嘗試重新開啟 %{config} 的自動憑證"
@@ -565,7 +561,7 @@ msgstr "編輯網站"
 msgid "Edit Stream"
 msgid "Edit Stream"
 msgstr "編輯網站"
 msgstr "編輯網站"
 
 
-#: src/views/other/Install.vue:93
+#: src/views/other/Install.vue:92
 msgid "Email (*)"
 msgid "Email (*)"
 msgstr "電子郵件 (*)"
 msgstr "電子郵件 (*)"
 
 
@@ -688,6 +684,12 @@ msgstr "檔案"
 msgid "File exists"
 msgid "File exists"
 msgstr "檔案已存在"
 msgstr "檔案已存在"
 
 
+#: src/views/preference/NginxSettings.vue:18
+#: src/views/preference/NginxSettings.vue:27
+#, fuzzy
+msgid "File not found"
+msgstr "找不到檔案"
+
 #: src/views/other/Error.vue:14
 #: src/views/other/Error.vue:14
 msgid "File Not Found"
 msgid "File Not Found"
 msgstr "找不到檔案"
 msgstr "找不到檔案"
@@ -700,6 +702,11 @@ msgstr "篩選"
 msgid "Finished"
 msgid "Finished"
 msgstr "完成"
 msgstr "完成"
 
 
+#: src/views/preference/BasicSettings.vue:43
+#, fuzzy
+msgid "For Chinese user: https://mirror.ghproxy.com/"
+msgstr "中國使用者:https://mirror.ghproxy.com/"
+
 #: src/views/config/ConfigEdit.vue:92
 #: src/views/config/ConfigEdit.vue:92
 msgid "Format Code"
 msgid "Format Code"
 msgstr "格式化程式碼"
 msgstr "格式化程式碼"
@@ -733,23 +740,23 @@ msgstr "取得發布資訊錯誤"
 msgid "Getting the certificate, please wait..."
 msgid "Getting the certificate, please wait..."
 msgstr "正在取得憑證,請稍候..."
 msgstr "正在取得憑證,請稍候..."
 
 
-#: src/views/preference/BasicSettings.vue:33
+#: src/views/preference/BasicSettings.vue:35
 msgid "Github Proxy"
 msgid "Github Proxy"
 msgstr "Github 代理"
 msgstr "Github 代理"
 
 
-#: src/views/preference/OpenAISettings.vue:25
+#: src/views/preference/OpenAISettings.vue:26
 msgid "GPT-3.5-Turbo"
 msgid "GPT-3.5-Turbo"
 msgstr "GPT-3.5-Turbo"
 msgstr "GPT-3.5-Turbo"
 
 
-#: src/views/preference/OpenAISettings.vue:19
+#: src/views/preference/OpenAISettings.vue:20
 msgid "GPT-4"
 msgid "GPT-4"
 msgstr "GPT-4"
 msgstr "GPT-4"
 
 
-#: src/views/preference/OpenAISettings.vue:22
+#: src/views/preference/OpenAISettings.vue:23
 msgid "GPT-4-32K"
 msgid "GPT-4-32K"
 msgstr "GPT-4-32K"
 msgstr "GPT-4-32K"
 
 
-#: src/views/preference/OpenAISettings.vue:16
+#: src/views/preference/OpenAISettings.vue:17
 msgid "GPT-4-Turbo"
 msgid "GPT-4-Turbo"
 msgstr "GPT-4-Turbo"
 msgstr "GPT-4-Turbo"
 
 
@@ -757,15 +764,15 @@ msgstr "GPT-4-Turbo"
 msgid "Home"
 msgid "Home"
 msgstr "首頁"
 msgstr "首頁"
 
 
-#: src/views/preference/BasicSettings.vue:30
+#: src/views/preference/BasicSettings.vue:31
 msgid "HTTP Challenge Port"
 msgid "HTTP Challenge Port"
 msgstr "HTTP 挑戰埠"
 msgstr "HTTP 挑戰埠"
 
 
-#: src/views/preference/BasicSettings.vue:12
+#: src/views/preference/BasicSettings.vue:13
 msgid "HTTP Host"
 msgid "HTTP Host"
 msgstr "HTTP 監聽主機"
 msgstr "HTTP 監聽主機"
 
 
-#: src/views/preference/BasicSettings.vue:15
+#: src/views/preference/BasicSettings.vue:16
 msgid "HTTP Port"
 msgid "HTTP Port"
 msgstr "HTTP 監聽埠"
 msgstr "HTTP 監聽埠"
 
 
@@ -778,7 +785,7 @@ msgstr "HTTP01"
 msgid "Import"
 msgid "Import"
 msgstr "匯出"
 msgstr "匯出"
 
 
-#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:140 src/views/certificate/CertificateEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "憑證狀態"
 msgstr "憑證狀態"
@@ -795,7 +802,7 @@ msgstr "初始化核心升級程式錯誤"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "正在初始化核心升級程式"
 msgstr "正在初始化核心升級程式"
 
 
-#: src/routes/index.ts:237 src/views/other/Install.vue:139
+#: src/routes/index.ts:237 src/views/other/Install.vue:138
 msgid "Install"
 msgid "Install"
 msgstr "安裝"
 msgstr "安裝"
 
 
@@ -821,7 +828,7 @@ msgstr "憑證狀態"
 msgid "Issued certificate successfully"
 msgid "Issued certificate successfully"
 msgstr "成功頒發憑證"
 msgstr "成功頒發憑證"
 
 
-#: src/views/preference/BasicSettings.vue:21
+#: src/views/preference/BasicSettings.vue:22
 msgid "Jwt Secret"
 msgid "Jwt Secret"
 msgstr "Jwt Secret"
 msgstr "Jwt Secret"
 
 
@@ -833,12 +840,12 @@ msgstr "上次檢查時間"
 msgid "Leave blank for no change"
 msgid "Leave blank for no change"
 msgstr "留空表示不修改"
 msgstr "留空表示不修改"
 
 
-#: src/views/preference/OpenAISettings.vue:32
+#: src/views/preference/OpenAISettings.vue:39
 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
+#: src/views/certificate/CertificateEditor.vue:203
+#: src/views/certificate/CertificateEditor.vue:216
 #, fuzzy
 #, fuzzy
 msgid "Leave blank will not change anything"
 msgid "Leave blank will not change anything"
 msgstr "留空表示不修改"
 msgstr "留空表示不修改"
@@ -870,7 +877,7 @@ msgstr "Location"
 msgid "Locations"
 msgid "Locations"
 msgstr "Locations"
 msgstr "Locations"
 
 
-#: src/views/certificate/CertificateEditor.vue:195
+#: src/views/certificate/CertificateEditor.vue:226
 #, fuzzy
 #, fuzzy
 msgid "Log"
 msgid "Log"
 msgstr "登入"
 msgstr "登入"
@@ -930,7 +937,7 @@ msgstr "記憶體與儲存"
 msgid "Modify"
 msgid "Modify"
 msgstr "修改"
 msgstr "修改"
 
 
-#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:84
+#: src/routes/index.ts:132 src/views/certificate/CertificateEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Modify Certificate"
 msgid "Modify Certificate"
 msgstr "憑證狀態"
 msgstr "憑證狀態"
@@ -944,7 +951,7 @@ msgid "Multi-line Directive"
 msgstr "多行指令"
 msgstr "多行指令"
 
 
 #: src/views/certificate/Certificate.vue:24
 #: src/views/certificate/Certificate.vue:24
-#: src/views/certificate/CertificateEditor.vue:145
+#: src/views/certificate/CertificateEditor.vue:149
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/certificate/DNSCredential.vue:13 src/views/config/config.ts:9
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/cert/ChangeCert.vue:21
 #: src/views/domain/components/RightSettings.vue:84
 #: src/views/domain/components/RightSettings.vue:84
@@ -984,11 +991,11 @@ msgstr "新版本發布"
 msgid "Next"
 msgid "Next"
 msgstr "下一步"
 msgstr "下一步"
 
 
-#: src/views/preference/Preference.vue:96
+#: src/views/preference/Preference.vue:102
 msgid "Nginx"
 msgid "Nginx"
 msgstr "Nginx"
 msgstr "Nginx"
 
 
-#: src/views/preference/NginxSettings.vue:13
+#: src/views/preference/NginxSettings.vue:15
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr "Nginx 存取日誌路徑"
 msgstr "Nginx 存取日誌路徑"
 
 
@@ -1000,7 +1007,7 @@ msgstr "Nginx 設定解析錯誤"
 msgid "Nginx Control"
 msgid "Nginx Control"
 msgstr "Nginx 控制元件"
 msgstr "Nginx 控制元件"
 
 
-#: src/views/preference/NginxSettings.vue:16
+#: src/views/preference/NginxSettings.vue:24
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr "Nginx 錯誤日誌路徑"
 msgstr "Nginx 錯誤日誌路徑"
 
 
@@ -1027,7 +1034,7 @@ msgstr "Nginx 重啟成功"
 msgid "No"
 msgid "No"
 msgstr "取消"
 msgstr "取消"
 
 
-#: src/views/preference/BasicSettings.vue:24
+#: src/views/preference/BasicSettings.vue:25
 msgid "Node Secret"
 msgid "Node Secret"
 msgstr "Node Secret"
 msgstr "Node Secret"
 
 
@@ -1103,7 +1110,7 @@ msgstr ""
 msgid "Online"
 msgid "Online"
 msgstr "線上"
 msgstr "線上"
 
 
-#: src/views/preference/Preference.vue:102
+#: src/views/preference/Preference.vue:108
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
@@ -1133,7 +1140,7 @@ msgstr "參數"
 msgid "Password"
 msgid "Password"
 msgstr "密碼"
 msgstr "密碼"
 
 
-#: src/views/other/Install.vue:113
+#: src/views/other/Install.vue:112
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "密碼 (*)"
 msgstr "密碼 (*)"
 
 
@@ -1199,7 +1206,7 @@ msgstr "請至少選擇一個節點!"
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr "預先發布"
 msgstr "預先發布"
 
 
-#: src/routes/index.ts:210 src/views/preference/Preference.vue:85
+#: src/routes/index.ts:210 src/views/preference/Preference.vue:91
 msgid "Preference"
 msgid "Preference"
 msgstr "偏好設定"
 msgstr "偏好設定"
 
 
@@ -1310,7 +1317,7 @@ msgstr "重新啟動"
 msgid "Restarting"
 msgid "Restarting"
 msgstr "正在重新啟動"
 msgstr "正在重新啟動"
 
 
-#: src/views/preference/BasicSettings.vue:18
+#: src/views/preference/BasicSettings.vue:19
 msgid "Run Mode"
 msgid "Run Mode"
 msgstr "執行模式"
 msgstr "執行模式"
 
 
@@ -1319,10 +1326,10 @@ msgid "Running"
 msgstr "執行中"
 msgstr "執行中"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:259
 #: src/components/ChatGPT/ChatGPT.vue:259
-#: src/views/certificate/CertificateEditor.vue:214
+#: src/views/certificate/CertificateEditor.vue:245
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/config/ConfigEdit.vue:98 src/views/domain/DomainEdit.vue:263
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:121
-#: src/views/preference/Preference.vue:113 src/views/stream/StreamEdit.vue:253
+#: src/views/preference/Preference.vue:119 src/views/stream/StreamEdit.vue:253
 msgid "Save"
 msgid "Save"
 msgstr "儲存"
 msgstr "儲存"
 
 
@@ -1336,8 +1343,8 @@ msgid "Save error %{msg}"
 msgstr "儲存錯誤 %{msg}"
 msgstr "儲存錯誤 %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42
-#: src/views/certificate/CertificateEditor.vue:47
-#: src/views/preference/Preference.vue:58
+#: src/views/certificate/CertificateEditor.vue:48
+#: src/views/preference/Preference.vue:61
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "儲存成功"
 msgstr "儲存成功"
 
 
@@ -1368,7 +1375,7 @@ msgstr "傳送"
 #: 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:84
 #: 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:65
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/stream/StreamList.vue:116 src/views/stream/StreamList.vue:84
 #: src/views/system/Upgrade.vue:45
 #: src/views/system/Upgrade.vue:45
 msgid "Server error"
 msgid "Server error"
@@ -1413,23 +1420,23 @@ msgstr "網站日誌"
 msgid "Sites List"
 msgid "Sites List"
 msgstr "網站列表"
 msgstr "網站列表"
 
 
-#: src/views/certificate/CertificateEditor.vue:172
+#: src/views/certificate/CertificateEditor.vue:194
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
 msgstr "SSL 認證內容"
 msgstr "SSL 認證內容"
 
 
-#: src/views/certificate/CertificateEditor.vue:180
+#: src/views/certificate/CertificateEditor.vue:207
 #, fuzzy
 #, fuzzy
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
 msgstr "SSL 憑證金鑰內容"
 msgstr "SSL 憑證金鑰內容"
 
 
 #: src/views/certificate/Certificate.vue:73
 #: src/views/certificate/Certificate.vue:73
-#: src/views/certificate/CertificateEditor.vue:163
+#: src/views/certificate/CertificateEditor.vue:179
 msgid "SSL Certificate Key Path"
 msgid "SSL Certificate Key Path"
 msgstr "SSL 憑證金鑰路徑"
 msgstr "SSL 憑證金鑰路徑"
 
 
 #: src/views/certificate/Certificate.vue:65
 #: src/views/certificate/Certificate.vue:65
-#: src/views/certificate/CertificateEditor.vue:154
+#: src/views/certificate/CertificateEditor.vue:164
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "SSL 憑證路徑"
 msgstr "SSL 憑證路徑"
 
 
@@ -1493,7 +1500,7 @@ msgstr "目標"
 msgid "Terminal"
 msgid "Terminal"
 msgstr "終端機"
 msgstr "終端機"
 
 
-#: src/views/preference/BasicSettings.vue:27
+#: src/views/preference/BasicSettings.vue:28
 msgid "Terminal Start Command"
 msgid "Terminal Start Command"
 msgstr "終端機啟動指令"
 msgstr "終端機啟動指令"
 
 
@@ -1510,6 +1517,23 @@ msgstr ""
 msgid "The filename cannot contain the following characters: %{c}"
 msgid "The filename cannot contain the following characters: %{c}"
 msgstr "檔名不能包含以下字元: %{c}"
 msgstr "檔名不能包含以下字元: %{c}"
 
 
+#: src/views/certificate/CertificateEditor.vue:197
+msgid "The input is not a SSL Certificate"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:210
+#, fuzzy
+msgid "The input is not a SSL Certificate Key"
+msgstr "SSL 憑證金鑰路徑"
+
+#: src/views/certificate/CertificateEditor.vue:183
+msgid "The path exists, but the file is not a private key"
+msgstr ""
+
+#: src/views/certificate/CertificateEditor.vue:168
+msgid "The path exists, but the file is not a public key"
+msgstr ""
+
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #: src/views/domain/cert/components/AutoCertStepOne.vue:45
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
@@ -1517,19 +1541,33 @@ msgid ""
 "need to get the certificate, supportmultiple domains."
 "need to get the certificate, supportmultiple domains."
 msgstr "注意:目前設定中的 server_name 必須為需要申請憑證的域名。"
 msgstr "注意:目前設定中的 server_name 必須為需要申請憑證的域名。"
 
 
+#: src/views/preference/BasicSettings.vue:38
+#: src/views/preference/BasicSettings.vue:50
+#: src/views/preference/OpenAISettings.vue:34
+#: src/views/preference/OpenAISettings.vue:46
+#, fuzzy
+msgid "The url is not valid"
+msgstr "此功能在演示中不可用。"
+
 #: src/language/constants.ts:6
 #: src/language/constants.ts:6
 msgid "The username or password is incorrect"
 msgid "The username or password is incorrect"
 msgstr "使用者名稱或密碼不正確"
 msgstr "使用者名稱或密碼不正確"
 
 
-#: src/views/certificate/CertificateEditor.vue:101
+#: src/views/certificate/CertificateEditor.vue:104
 #, fuzzy
 #, fuzzy
 msgid "This Auto Cert item is invalid, please remove it."
 msgid "This Auto Cert item is invalid, please remove it."
 msgstr "此自動憑證項目無效,請將其移除。"
 msgstr "此自動憑證項目無效,請將其移除。"
 
 
-#: src/views/certificate/CertificateEditor.vue:91
+#: src/views/certificate/CertificateEditor.vue:94
 msgid "This certificate is managed by Nginx UI"
 msgid "This certificate is managed by Nginx UI"
 msgstr ""
 msgstr ""
 
 
+#: src/views/certificate/CertificateEditor.vue:152
+#: src/views/certificate/CertificateEditor.vue:166
+#: src/views/certificate/CertificateEditor.vue:181
+msgid "This field is required"
+msgstr ""
+
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 #: src/components/StdDesign/StdDataEntry/StdFormItem.vue:31
 msgid "This field should not be empty"
 msgid "This field should not be empty"
 msgstr "此欄位不應為空"
 msgstr "此欄位不應為空"
@@ -1548,6 +1586,10 @@ msgstr ""
 "為了確保憑證自動續期能夠正常運作,我們需要新增一個 Location 來代理從授權後端"
 "為了確保憑證自動續期能夠正常運作,我們需要新增一個 Location 來代理從授權後端"
 "的請求,我們需要儲存這個檔案並重新載入 Nginx。你確定你要繼續嗎?"
 "的請求,我們需要儲存這個檔案並重新載入 Nginx。你確定你要繼續嗎?"
 
 
+#: src/views/preference/OpenAISettings.vue:58
+msgid "Token is not valid"
+msgstr ""
+
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/certificate/Certificate.vue:41 src/views/config/config.ts:14
 #: src/views/notification/Notification.vue:15
 #: src/views/notification/Notification.vue:15
 msgid "Type"
 msgid "Type"
@@ -1599,7 +1641,7 @@ msgstr "使用者名稱"
 msgid "Username"
 msgid "Username"
 msgstr "使用者名稱"
 msgstr "使用者名稱"
 
 
-#: src/views/other/Install.vue:103
+#: src/views/other/Install.vue:102
 msgid "Username (*)"
 msgid "Username (*)"
 msgstr "使用者名稱 (*)"
 msgstr "使用者名稱 (*)"
 
 
@@ -1814,9 +1856,6 @@ msgstr "您可以在此頁面檢查 Nginx UI 的升級。"
 #~ "只有在您的設定檔案中有相應欄位時,下列的設定才能生效。設定檔名稱建立後不可"
 #~ "只有在您的設定檔案中有相應欄位時,下列的設定才能生效。設定檔名稱建立後不可"
 #~ "修改。"
 #~ "修改。"
 
 
-#~ msgid "This feature is not available in demo."
-#~ msgstr "此功能在演示中不可用。"
-
 #~ msgid "This operation will lose the custom configuration."
 #~ msgid "This operation will lose the custom configuration."
 #~ msgstr "該操作將會遺失自定義設定。"
 #~ msgstr "該操作將會遺失自定義設定。"