Browse Source

chore: update translations

Jacky 3 weeks ago
parent
commit
f19d6c0241

File diff suppressed because it is too large
+ 198 - 197
app/src/language/ar/app.po


File diff suppressed because it is too large
+ 184 - 195
app/src/language/de_DE/app.po


+ 106 - 97
app/src/language/en/app.po

@@ -121,7 +121,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:90
 #: src/views/certificate/ACMEUser.vue:90
 #: src/views/certificate/CertificateList/certColumns.tsx:92
 #: src/views/certificate/CertificateList/certColumns.tsx:92
 #: src/views/certificate/DNSCredential.vue:30
 #: src/views/certificate/DNSCredential.vue:30
-#: src/views/config/configColumns.tsx:42
+#: src/views/config/configColumns.tsx:41
 #: src/views/environments/group/columns.ts:41
 #: src/views/environments/group/columns.ts:41
 #: src/views/environments/list/envColumns.tsx:96
 #: src/views/environments/list/envColumns.tsx:96
 #: src/views/nginx_log/NginxLogList.vue:52
 #: src/views/nginx_log/NginxLogList.vue:52
@@ -141,7 +141,7 @@ msgstr ""
 msgid "Actual worker to configured ratio"
 msgid "Actual worker to configured ratio"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NgxConfigEditor/NgxServer.vue:112
+#: src/components/NgxConfigEditor/NgxServer.vue:144
 #: src/components/NgxConfigEditor/NgxUpstream.vue:166 src/language/curd.ts:19
 #: src/components/NgxConfigEditor/NgxUpstream.vue:166 src/language/curd.ts:19
 #: src/views/preference/tabs/CertSettings.vue:45
 #: src/views/preference/tabs/CertSettings.vue:45
 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:94
 #: src/views/site/site_edit/components/ConfigTemplate/ConfigTemplate.vue:94
@@ -154,8 +154,9 @@ msgstr ""
 msgid "Add a passkey"
 msgid "Add a passkey"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/modules/config.ts:20 src/views/config/ConfigEditor.vue:171
-#: src/views/config/ConfigEditor.vue:250
+#: src/routes/modules/config.ts:20
+#: src/views/config/components/ConfigLeftPanel.vue:169
+#: src/views/config/components/ConfigLeftPanel.vue:242
 msgid "Add Configuration"
 msgid "Add Configuration"
 msgstr ""
 msgstr ""
 
 
@@ -168,6 +169,10 @@ msgstr ""
 msgid "Add Location"
 msgid "Add Location"
 msgstr ""
 msgstr ""
 
 
+#: src/components/NgxConfigEditor/NgxServer.vue:92
+msgid "Add Server"
+msgstr ""
+
 #: src/routes/modules/sites.ts:26 src/views/site/site_add/SiteAdd.vue:75
 #: src/routes/modules/sites.ts:26 src/views/site/site_add/SiteAdd.vue:75
 msgid "Add Site"
 msgid "Add Site"
 msgstr ""
 msgstr ""
@@ -176,6 +181,10 @@ msgstr ""
 msgid "Add Stream"
 msgid "Add Stream"
 msgstr ""
 msgstr ""
 
 
+#: src/components/NgxConfigEditor/NgxUpstream.vue:187
+msgid "Add Upstream"
+msgstr ""
+
 #: src/views/stream/StreamList.vue:72
 #: src/views/stream/StreamList.vue:72
 msgid "Added successfully"
 msgid "Added successfully"
 msgstr ""
 msgstr ""
@@ -185,7 +194,7 @@ msgid "Additional"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:94
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:94
-#: src/views/stream/components/StreamEditor.vue:56
+#: src/views/stream/components/StreamEditor.vue:57
 msgid "Advance Mode"
 msgid "Advance Mode"
 msgstr ""
 msgstr ""
 
 
@@ -251,7 +260,7 @@ msgstr ""
 msgid "Are you sure you want to clear all notifications?"
 msgid "Are you sure you want to clear all notifications?"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:376
+#: src/components/ChatGPT/ChatMessageInput.vue:19
 msgid "Are you sure you want to clear the record of chat?"
 msgid "Are you sure you want to clear the record of chat?"
 msgstr ""
 msgstr ""
 
 
@@ -288,11 +297,11 @@ msgstr ""
 msgid "Are you sure you want to restore?"
 msgid "Are you sure you want to restore?"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:318
+#: src/components/ChatGPT/ChatGPT.vue:55
 msgid "Ask ChatGPT for Help"
 msgid "Ask ChatGPT for Help"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:333
+#: src/components/ChatGPT/ChatMessage.vue:187
 msgid "Assistant"
 msgid "Assistant"
 msgstr ""
 msgstr ""
 
 
@@ -377,10 +386,11 @@ msgid "Automatic Restart"
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/CertificateEditor.vue:259
 #: src/views/certificate/CertificateEditor.vue:259
-#: src/views/config/ConfigEditor.vue:272 src/views/config/ConfigList.vue:112
-#: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:174
-#: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:150
-#: src/views/stream/components/StreamEditor.vue:107
+#: src/views/config/components/ConfigLeftPanel.vue:273
+#: src/views/config/ConfigList.vue:112 src/views/config/ConfigList.vue:195
+#: src/views/nginx_log/NginxLog.vue:174
+#: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:156
+#: src/views/stream/components/StreamEditor.vue:111
 msgid "Back"
 msgid "Back"
 msgstr ""
 msgstr ""
 
 
@@ -469,14 +479,14 @@ msgstr ""
 msgid "Base information"
 msgid "Base information"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:300
-#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:32
-#: src/views/stream/components/RightPanel/RightPanel.vue:20
+#: src/views/config/components/ConfigRightPanel/ConfigRightPanel.vue:29
+#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:31
+#: src/views/stream/components/RightPanel/RightPanel.vue:19
 msgid "Basic"
 msgid "Basic"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:97
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:97
-#: src/views/stream/components/StreamEditor.vue:59
+#: src/views/stream/components/StreamEditor.vue:60
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr ""
 msgstr ""
 
 
@@ -561,15 +571,14 @@ msgid ""
 "performance depends on hardware, configuration, and workload"
 "performance depends on hardware, configuration, and workload"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:356
-#: src/components/NgxConfigEditor/NgxServer.vue:54
+#: src/components/ChatGPT/ChatMessage.vue:216
+#: src/components/NgxConfigEditor/NgxServer.vue:61
 #: src/components/NgxConfigEditor/NgxUpstream.vue:37
 #: src/components/NgxConfigEditor/NgxUpstream.vue:37
 #: src/views/preference/components/AuthSettings/Passkey.vue:141
 #: src/views/preference/components/AuthSettings/Passkey.vue:141
 #: src/views/site/components/SiteStatusSelect.vue:124
 #: src/views/site/components/SiteStatusSelect.vue:124
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:40
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:40
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:143
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:143
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21
-#: src/views/stream/components/RightPanel/Basic.vue:49
 #: src/views/stream/components/StreamStatusSelect.vue:61
 #: src/views/stream/components/StreamStatusSelect.vue:61
 msgid "Cancel"
 msgid "Cancel"
 msgstr ""
 msgstr ""
@@ -703,7 +712,7 @@ msgid_plural "Changed Certificates"
 msgstr[0] ""
 msgstr[0] ""
 msgstr[1] ""
 msgstr[1] ""
 
 
-#: src/views/config/ConfigEditor.vue:328
+#: src/views/config/components/ConfigRightPanel/Basic.vue:47
 msgid "Changed Path"
 msgid "Changed Path"
 msgstr ""
 msgstr ""
 
 
@@ -712,8 +721,9 @@ msgstr ""
 msgid "Channel"
 msgid "Channel"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:42
-#: src/views/stream/components/RightPanel/RightPanel.vue:23
+#: src/views/config/components/ConfigRightPanel/ConfigRightPanel.vue:38
+#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:41
+#: src/views/stream/components/RightPanel/RightPanel.vue:22
 msgid "Chat"
 msgid "Chat"
 msgstr ""
 msgstr ""
 
 
@@ -768,7 +778,7 @@ msgid ""
 "Check if the nginx error log path exists. By default, this path is obtained "
 "Check if the nginx error log path exists. By default, this path is obtained "
 "from 'nginx -V'. If it cannot be obtained or the obtained path does not "
 "from 'nginx -V'. If it cannot be obtained or the obtained path does not "
 "point to a valid, existing file, an error will be reported. In this case, "
 "point to a valid, existing file, an error will be reported. In this case, "
-"you need to modify the configuration file to specify the error log path."
+"you need to modify the configuration file to specify the error log path. "
 "Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-"
 "Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-"
 "nginx.html#errorlogpath"
 "nginx.html#errorlogpath"
 msgstr ""
 msgstr ""
@@ -814,7 +824,7 @@ msgstr ""
 msgid "Cleaning environment variables"
 msgid "Cleaning environment variables"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:380
+#: src/components/ChatGPT/ChatMessageInput.vue:23
 #: src/components/Notification/Notification.vue:116
 #: src/components/Notification/Notification.vue:116
 #: src/views/notification/Notification.vue:45
 #: src/views/notification/Notification.vue:45
 msgid "Clear"
 msgid "Clear"
@@ -889,7 +899,7 @@ msgstr ""
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:115
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:115
 #: src/components/NgxConfigEditor/LocationEditor.vue:104
 #: src/components/NgxConfigEditor/LocationEditor.vue:104
 #: src/components/NgxConfigEditor/LocationEditor.vue:135
 #: src/components/NgxConfigEditor/LocationEditor.vue:135
-#: src/components/NgxConfigEditor/NgxServer.vue:91
+#: src/components/NgxConfigEditor/NgxServer.vue:123
 msgid "Comments"
 msgid "Comments"
 msgstr ""
 msgstr ""
 
 
@@ -930,11 +940,11 @@ msgstr ""
 msgid "Config path is empty"
 msgid "Config path is empty"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:38
+#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:37
 msgid "Config Template"
 msgid "Config Template"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/InspectConfig.vue:27
+#: src/views/config/InspectConfig.vue:32
 msgid "Configuration file is test successful"
 msgid "Configuration file is test successful"
 msgstr ""
 msgstr ""
 
 
@@ -1026,10 +1036,6 @@ msgstr ""
 msgid "CPU:"
 msgid "CPU:"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NgxConfigEditor/NgxUpstream.vue:177
-msgid "Create"
-msgstr ""
-
 #: src/views/site/site_add/SiteAdd.vue:148
 #: src/views/site/site_add/SiteAdd.vue:148
 msgid "Create Another"
 msgid "Create Another"
 msgstr ""
 msgstr ""
@@ -1137,8 +1143,10 @@ msgstr ""
 msgid "Daily at %{time}"
 msgid "Daily at %{time}"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/modules/dashboard.ts:10 src/views/config/ConfigEditor.vue:110
-#: src/views/config/ConfigEditor.vue:161 src/views/config/ConfigList.vue:67
+#: src/routes/modules/dashboard.ts:10
+#: src/views/config/components/ConfigLeftPanel.vue:109
+#: src/views/config/components/ConfigLeftPanel.vue:159
+#: src/views/config/ConfigList.vue:67
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr ""
 msgstr ""
 
 
@@ -1162,7 +1170,7 @@ msgstr ""
 msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
 msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NgxConfigEditor/NgxServer.vue:78
+#: src/components/NgxConfigEditor/NgxServer.vue:110
 #: src/components/NgxConfigEditor/NgxUpstream.vue:134 src/language/curd.ts:9
 #: src/components/NgxConfigEditor/NgxUpstream.vue:134 src/language/curd.ts:9
 #: src/views/certificate/components/RemoveCert.vue:88
 #: src/views/certificate/components/RemoveCert.vue:88
 #: src/views/site/site_list/SiteList.vue:109
 #: src/views/site/site_list/SiteList.vue:109
@@ -1226,7 +1234,7 @@ msgstr ""
 msgid "Demo"
 msgid "Demo"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:344
+#: src/views/config/components/ConfigRightPanel/Basic.vue:60
 msgid "Deploy"
 msgid "Deploy"
 msgstr ""
 msgstr ""
 
 
@@ -1353,14 +1361,12 @@ msgstr ""
 #: src/views/site/components/SiteStatusSelect.vue:162
 #: src/views/site/components/SiteStatusSelect.vue:162
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:62
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:62
 #: src/views/site/site_list/columns.tsx:127 src/views/stream/columns.tsx:94
 #: src/views/site/site_list/columns.tsx:127 src/views/stream/columns.tsx:94
-#: src/views/stream/components/StreamEditor.vue:31
-#: src/views/stream/components/StreamStatusSelect.vue:85
+#: src/views/stream/components/StreamEditor.vue:32
 #: src/views/user/userColumns.tsx:39
 #: src/views/user/userColumns.tsx:39
 msgid "Disabled"
 msgid "Disabled"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/components/SiteStatusSelect.vue:67
 #: src/views/site/components/SiteStatusSelect.vue:67
-#: src/views/stream/components/RightPanel/Basic.vue:36
 #: src/views/stream/components/StreamStatusSelect.vue:39
 #: src/views/stream/components/StreamStatusSelect.vue:39
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr ""
 msgstr ""
@@ -1399,20 +1405,12 @@ msgstr ""
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
 msgstr ""
 msgstr ""
 
 
-#: src/views/stream/components/RightPanel/Basic.vue:45
-msgid "Do you want to disable this stream?"
-msgstr ""
-
-#: src/views/stream/components/RightPanel/Basic.vue:45
-msgid "Do you want to enable this stream?"
-msgstr ""
-
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:33
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:33
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14
 msgid "Do you want to enable TLS?"
 msgid "Do you want to enable TLS?"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NgxConfigEditor/NgxServer.vue:50
+#: src/components/NgxConfigEditor/NgxServer.vue:57
 msgid "Do you want to remove this server?"
 msgid "Do you want to remove this server?"
 msgstr ""
 msgstr ""
 
 
@@ -1492,11 +1490,12 @@ msgid "Edit"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:51
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:51
-#: src/views/stream/components/StreamEditor.vue:20
+#: src/views/stream/components/StreamEditor.vue:21
 msgid "Edit %{n}"
 msgid "Edit %{n}"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/modules/config.ts:30 src/views/config/ConfigEditor.vue:250
+#: src/routes/modules/config.ts:30
+#: src/views/config/components/ConfigLeftPanel.vue:242
 msgid "Edit Configuration"
 msgid "Edit Configuration"
 msgstr ""
 msgstr ""
 
 
@@ -1622,16 +1621,14 @@ msgstr ""
 #: src/views/site/components/SiteStatusSelect.vue:159
 #: src/views/site/components/SiteStatusSelect.vue:159
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:56
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:56
 #: src/views/site/site_list/columns.tsx:123 src/views/stream/columns.tsx:90
 #: src/views/site/site_list/columns.tsx:123 src/views/stream/columns.tsx:90
-#: src/views/stream/components/RightPanel/Basic.vue:64
-#: src/views/stream/components/StreamEditor.vue:25
-#: src/views/stream/components/StreamStatusSelect.vue:84
+#: src/views/stream/components/RightPanel/Basic.vue:23
+#: src/views/stream/components/StreamEditor.vue:26
 #: src/views/user/userColumns.tsx:36
 #: src/views/user/userColumns.tsx:36
 msgid "Enabled"
 msgid "Enabled"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/components/SiteStatusSelect.vue:54
 #: src/views/site/components/SiteStatusSelect.vue:54
 #: src/views/site/site_add/SiteAdd.vue:34
 #: src/views/site/site_add/SiteAdd.vue:34
-#: src/views/stream/components/RightPanel/Basic.vue:27
 #: src/views/stream/components/StreamStatusSelect.vue:26
 #: src/views/stream/components/StreamStatusSelect.vue:26
 msgid "Enabled successfully"
 msgid "Enabled successfully"
 msgstr ""
 msgstr ""
@@ -1654,7 +1651,7 @@ msgstr ""
 msgid "Environments"
 msgid "Environments"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/index.ts:22 src/views/config/InspectConfig.vue:44
+#: src/constants/index.ts:22 src/views/config/InspectConfig.vue:49
 #: src/views/notification/notificationColumns.tsx:14
 #: src/views/notification/notificationColumns.tsx:14
 msgid "Error"
 msgid "Error"
 msgstr ""
 msgstr ""
@@ -1868,7 +1865,6 @@ msgid "Failed to delete certificate from database: %{error}"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/components/SiteStatusSelect.vue:73
 #: src/views/site/components/SiteStatusSelect.vue:73
-#: src/views/stream/components/RightPanel/Basic.vue:39
 #: src/views/stream/components/StreamStatusSelect.vue:45
 #: src/views/stream/components/StreamStatusSelect.vue:45
 msgid "Failed to disable %{msg}"
 msgid "Failed to disable %{msg}"
 msgstr ""
 msgstr ""
@@ -1878,7 +1874,6 @@ msgid "Failed to disable maintenance mode %{msg}"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/components/SiteStatusSelect.vue:60
 #: src/views/site/components/SiteStatusSelect.vue:60
-#: src/views/stream/components/RightPanel/Basic.vue:30
 #: src/views/stream/components/StreamStatusSelect.vue:32
 #: src/views/stream/components/StreamStatusSelect.vue:32
 msgid "Failed to enable %{msg}"
 msgid "Failed to enable %{msg}"
 msgstr ""
 msgstr ""
@@ -2086,11 +2081,11 @@ msgstr ""
 msgid "Form parse failed"
 msgid "Form parse failed"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:275
+#: src/views/config/components/ConfigLeftPanel.vue:276
 msgid "Format Code"
 msgid "Format Code"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:222
+#: src/views/config/components/ConfigLeftPanel.vue:219
 msgid "Format successfully"
 msgid "Format successfully"
 msgstr ""
 msgstr ""
 
 
@@ -2172,9 +2167,9 @@ msgstr ""
 msgid "Higher value means better connection reuse"
 msgid "Higher value means better connection reuse"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/components/ConfigLeftPanel.vue:254
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:81
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:81
-#: src/views/stream/components/StreamEditor.vue:44
+#: src/views/stream/components/StreamEditor.vue:45
 msgid "History"
 msgid "History"
 msgstr ""
 msgstr ""
 
 
@@ -2336,8 +2331,8 @@ msgstr ""
 msgid "Invalid file path: {0}"
 msgid "Invalid file path: {0}"
 msgstr ""
 msgstr ""
 
 
+#: src/views/config/components/ConfigRightPanel/Basic.vue:28
 #: src/views/config/components/Rename.vue:66
 #: src/views/config/components/Rename.vue:66
-#: src/views/config/ConfigEditor.vue:309
 msgid "Invalid filename"
 msgid "Invalid filename"
 msgstr ""
 msgstr ""
 
 
@@ -2617,8 +2612,10 @@ msgid ""
 "HTTPChallengePort before obtaining the certificate."
 "HTTPChallengePort before obtaining the certificate."
 msgstr ""
 msgstr ""
 
 
-#: src/routes/modules/config.ts:10 src/views/config/ConfigEditor.vue:115
-#: src/views/config/ConfigEditor.vue:166 src/views/config/ConfigList.vue:72
+#: src/routes/modules/config.ts:10
+#: src/views/config/components/ConfigLeftPanel.vue:114
+#: src/views/config/components/ConfigLeftPanel.vue:164
+#: src/views/config/ConfigList.vue:72
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr ""
 msgstr ""
 
 
@@ -2750,7 +2747,8 @@ msgstr ""
 msgid "Modified At"
 msgid "Modified At"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:352 src/views/config/ConfigList.vue:174
+#: src/components/ChatGPT/ChatMessage.vue:212
+#: src/views/config/ConfigList.vue:174
 msgid "Modify"
 msgid "Modify"
 msgstr ""
 msgstr ""
 
 
@@ -2787,14 +2785,15 @@ msgstr ""
 msgid "Multi-line Directive"
 msgid "Multi-line Directive"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NgxConfigEditor/NgxUpstream.vue:189
+#: src/components/NgxConfigEditor/NgxUpstream.vue:199
 #: src/views/backup/AutoBackup/AutoBackup.vue:11
 #: src/views/backup/AutoBackup/AutoBackup.vue:11
 #: src/views/certificate/ACMEUser.vue:11
 #: src/views/certificate/ACMEUser.vue:11
 #: src/views/certificate/CertificateEditor.vue:162
 #: src/views/certificate/CertificateEditor.vue:162
 #: src/views/certificate/CertificateList/certColumns.tsx:9
 #: src/views/certificate/CertificateList/certColumns.tsx:9
 #: src/views/certificate/DNSCredential.vue:8
 #: src/views/certificate/DNSCredential.vue:8
+#: src/views/config/components/ConfigRightPanel/Basic.vue:34
 #: src/views/config/components/Mkdir.vue:64
 #: src/views/config/components/Mkdir.vue:64
-#: src/views/config/configColumns.tsx:6 src/views/config/ConfigEditor.vue:315
+#: src/views/config/configColumns.tsx:5
 #: src/views/environments/group/columns.ts:7
 #: src/views/environments/group/columns.ts:7
 #: src/views/environments/list/envColumns.tsx:8
 #: src/views/environments/list/envColumns.tsx:8
 #: src/views/nginx_log/NginxLogList.vue:36
 #: src/views/nginx_log/NginxLogList.vue:36
@@ -2803,7 +2802,7 @@ msgstr ""
 #: src/views/site/site_list/columns.tsx:16
 #: src/views/site/site_list/columns.tsx:16
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/columns.tsx:12
 #: src/views/stream/columns.tsx:12
-#: src/views/stream/components/RightPanel/Basic.vue:72
+#: src/views/stream/components/RightPanel/Basic.vue:30
 #: src/views/stream/components/StreamDuplicate.vue:71
 #: src/views/stream/components/StreamDuplicate.vue:71
 #: src/views/stream/StreamList.vue:144
 #: src/views/stream/StreamList.vue:144
 msgid "Name"
 msgid "Name"
@@ -2841,7 +2840,7 @@ msgstr ""
 msgid "New Password"
 msgid "New Password"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:328
+#: src/views/config/components/ConfigRightPanel/Basic.vue:47
 msgid "New Path"
 msgid "New Path"
 msgstr ""
 msgstr ""
 
 
@@ -2909,7 +2908,7 @@ msgstr ""
 msgid "Nginx configuration has been restored"
 msgid "Nginx configuration has been restored"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:113
+#: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:115
 #: src/views/stream/components/StreamEditor.vue:75
 #: src/views/stream/components/StreamEditor.vue:75
 msgid "Nginx Configuration Parse Error"
 msgid "Nginx Configuration Parse Error"
 msgstr ""
 msgstr ""
@@ -3052,7 +3051,7 @@ msgstr ""
 msgid "Nginx.conf includes streams-enabled directory"
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:374
+#: src/components/ChatGPT/ChatMessageInput.vue:17
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
@@ -3078,13 +3077,21 @@ msgstr ""
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
+#: src/components/NgxConfigEditor/NgxServer.vue:77
+msgid "No servers configured"
+msgstr ""
+
+#: src/components/NgxConfigEditor/NgxUpstream.vue:172
+msgid "No upstreams configured"
+msgstr ""
+
 #: src/views/preference/Preference.vue:64
 #: src/views/preference/Preference.vue:64
 msgid "Node"
 msgid "Node"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:41
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:41
 #: src/views/site/site_list/columns.tsx:76 src/views/stream/columns.tsx:44
 #: src/views/site/site_list/columns.tsx:76 src/views/stream/columns.tsx:44
-#: src/views/stream/components/RightPanel/Basic.vue:80
+#: src/views/stream/components/RightPanel/Basic.vue:38
 msgid "Node Group"
 msgid "Node Group"
 msgstr ""
 msgstr ""
 
 
@@ -3128,7 +3135,7 @@ msgid "Note"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:65
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:65
-#: src/views/stream/components/RightPanel/Basic.vue:102
+#: src/views/stream/components/RightPanel/Basic.vue:60
 msgid ""
 msgid ""
 "Note, if the configuration file include other configurations or "
 "Note, if the configuration file include other configurations or "
 "certificates, please synchronize them to the remote nodes in advance."
 "certificates, please synchronize them to the remote nodes in advance."
@@ -3198,8 +3205,8 @@ msgstr ""
 msgid "Offline"
 msgid "Offline"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:375
-#: src/components/NgxConfigEditor/NgxServer.vue:53
+#: src/components/ChatGPT/ChatMessageInput.vue:18
+#: src/components/NgxConfigEditor/NgxServer.vue:60
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
 #: src/components/Notification/Notification.vue:110 src/language/curd.ts:15
 #: src/components/Notification/Notification.vue:110 src/language/curd.ts:15
 #: src/views/backup/components/BackupCreator.vue:149
 #: src/views/backup/components/BackupCreator.vue:149
@@ -3209,7 +3216,6 @@ msgstr ""
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:142
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:142
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20
 #: src/views/site/site_list/SiteList.vue:99
 #: src/views/site/site_list/SiteList.vue:99
-#: src/views/stream/components/RightPanel/Basic.vue:48
 #: src/views/stream/components/StreamStatusSelect.vue:60
 #: src/views/stream/components/StreamStatusSelect.vue:60
 #: src/views/stream/StreamList.vue:121
 #: src/views/stream/StreamList.vue:121
 msgid "OK"
 msgid "OK"
@@ -3282,11 +3288,11 @@ msgstr ""
 msgid "Otp or recovery code empty"
 msgid "Otp or recovery code empty"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:353
+#: src/views/config/components/ConfigRightPanel/Deploy.vue:18
 msgid "Overwrite"
 msgid "Overwrite"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:357
+#: src/views/config/components/ConfigRightPanel/Deploy.vue:22
 msgid "Overwrite exist file"
 msgid "Overwrite exist file"
 msgstr ""
 msgstr ""
 
 
@@ -3340,7 +3346,8 @@ msgstr ""
 
 
 #: src/components/NgxConfigEditor/LocationEditor.vue:110
 #: src/components/NgxConfigEditor/LocationEditor.vue:110
 #: src/components/NgxConfigEditor/LocationEditor.vue:138
 #: src/components/NgxConfigEditor/LocationEditor.vue:138
-#: src/language/curd.ts:59 src/views/config/ConfigEditor.vue:322
+#: src/language/curd.ts:59
+#: src/views/config/components/ConfigRightPanel/Basic.vue:41
 #: src/views/nginx_log/NginxLogList.vue:44
 #: src/views/nginx_log/NginxLogList.vue:44
 msgid "Path"
 msgid "Path"
 msgstr ""
 msgstr ""
@@ -3454,8 +3461,8 @@ msgid ""
 "lockout."
 "lockout."
 msgstr ""
 msgstr ""
 
 
+#: src/views/config/components/ConfigRightPanel/Basic.vue:27
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
-#: src/views/config/ConfigEditor.vue:308
 msgid "Please input a filename"
 msgid "Please input a filename"
 msgstr ""
 msgstr ""
 
 
@@ -3536,8 +3543,8 @@ msgstr ""
 msgid "Port"
 msgid "Port"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:45
-#: src/views/stream/components/RightPanel/RightPanel.vue:26
+#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:44
+#: src/views/stream/components/RightPanel/RightPanel.vue:25
 msgid "Port Scanner"
 msgid "Port Scanner"
 msgstr ""
 msgstr ""
 
 
@@ -3649,7 +3656,7 @@ msgstr ""
 msgid "Recursive Nameservers"
 msgid "Recursive Nameservers"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:387
+#: src/components/ChatGPT/ChatMessageInput.vue:30
 msgid "Regenerate response"
 msgid "Regenerate response"
 msgstr ""
 msgstr ""
 
 
@@ -3695,7 +3702,7 @@ msgstr ""
 msgid "Release Note"
 msgid "Release Note"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:362
+#: src/components/ChatGPT/ChatMessage.vue:222
 #: src/components/NginxControl/NginxControl.vue:99
 #: src/components/NginxControl/NginxControl.vue:99
 msgid "Reload"
 msgid "Reload"
 msgstr ""
 msgstr ""
@@ -4088,17 +4095,17 @@ msgstr ""
 msgid "Saturday"
 msgid "Saturday"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:355
+#: src/components/ChatGPT/ChatMessage.vue:215
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:129
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:129
 #: src/language/curd.ts:18 src/views/certificate/CertificateEditor.vue:266
 #: src/language/curd.ts:18 src/views/certificate/CertificateEditor.vue:266
+#: src/views/config/components/ConfigLeftPanel.vue:282
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/components/ConfigName.vue:59
-#: src/views/config/ConfigEditor.vue:281
 #: src/views/preference/components/AuthSettings/Passkey.vue:130
 #: src/views/preference/components/AuthSettings/Passkey.vue:130
 #: src/views/preference/Preference.vue:117
 #: src/views/preference/Preference.vue:117
 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52
 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52
-#: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:157
+#: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:163
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/components/StreamEditor.vue:114
+#: src/views/stream/components/StreamEditor.vue:118
 msgid "Save"
 msgid "Save"
 msgstr ""
 msgstr ""
 
 
@@ -4151,9 +4158,10 @@ msgid "Save successfully"
 msgstr ""
 msgstr ""
 
 
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:43
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:43
-#: src/language/curd.ts:28 src/views/config/ConfigEditor.vue:200
+#: src/language/curd.ts:28 src/views/config/components/ConfigLeftPanel.vue:198
 #: src/views/site/site_add/SiteAdd.vue:31
 #: src/views/site/site_add/SiteAdd.vue:31
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:40
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:40
+#: src/views/stream/store.ts:70
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr ""
 msgstr ""
 
 
@@ -4624,8 +4632,8 @@ msgstr ""
 
 
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:58
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:58
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:71
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:71
-#: src/views/stream/components/RightPanel/Basic.vue:108
-#: src/views/stream/components/RightPanel/Basic.vue:95
+#: src/views/stream/components/RightPanel/Basic.vue:53
+#: src/views/stream/components/RightPanel/Basic.vue:66
 msgid "Sync strategy"
 msgid "Sync strategy"
 msgstr ""
 msgstr ""
 
 
@@ -4634,7 +4642,7 @@ msgid "Sync to"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:56
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:56
-#: src/views/stream/components/RightPanel/Basic.vue:93
+#: src/views/stream/components/RightPanel/Basic.vue:51
 msgid "Synchronization"
 msgid "Synchronization"
 msgstr ""
 msgstr ""
 
 
@@ -5020,12 +5028,13 @@ msgstr ""
 #: src/views/backup/AutoBackup/AutoBackup.vue:236
 #: src/views/backup/AutoBackup/AutoBackup.vue:236
 #: src/views/certificate/ACMEUser.vue:83
 #: src/views/certificate/ACMEUser.vue:83
 #: src/views/certificate/DNSCredential.vue:24
 #: src/views/certificate/DNSCredential.vue:24
-#: src/views/config/configColumns.tsx:35 src/views/config/ConfigEditor.vue:335
+#: src/views/config/components/ConfigRightPanel/Basic.vue:54
+#: src/views/config/configColumns.tsx:34
 #: src/views/environments/group/columns.ts:35
 #: src/views/environments/group/columns.ts:35
 #: src/views/environments/list/envColumns.tsx:89
 #: src/views/environments/list/envColumns.tsx:89
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:38
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:38
 #: src/views/site/site_list/columns.tsx:94 src/views/stream/columns.tsx:62
 #: src/views/site/site_list/columns.tsx:94 src/views/stream/columns.tsx:62
-#: src/views/stream/components/RightPanel/Basic.vue:76
+#: src/views/stream/components/RightPanel/Basic.vue:34
 #: src/views/user/userColumns.tsx:52
 #: src/views/user/userColumns.tsx:52
 msgid "Updated at"
 msgid "Updated at"
 msgstr ""
 msgstr ""
@@ -5062,7 +5071,7 @@ msgstr ""
 msgid "Upstream"
 msgid "Upstream"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NgxConfigEditor/NgxUpstream.vue:184
+#: src/components/NgxConfigEditor/NgxUpstream.vue:194
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr ""
 msgstr ""
 
 
@@ -5086,7 +5095,7 @@ msgstr ""
 msgid "Use Temporary Path"
 msgid "Use Temporary Path"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:333
+#: src/components/ChatGPT/ChatMessage.vue:187
 msgid "User"
 msgid "User"
 msgstr ""
 msgstr ""
 
 
@@ -5165,7 +5174,7 @@ msgid "Waiting processes"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/index.ts:23 src/views/backup/components/BackupCreator.vue:138
 #: src/constants/index.ts:23 src/views/backup/components/BackupCreator.vue:138
-#: src/views/config/InspectConfig.vue:33
+#: src/views/config/InspectConfig.vue:38
 #: src/views/notification/notificationColumns.tsx:21
 #: src/views/notification/notificationColumns.tsx:21
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:82
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:82
 msgid "Warning"
 msgid "Warning"
@@ -5223,7 +5232,7 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:61
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:61
-#: src/views/stream/components/RightPanel/Basic.vue:98
+#: src/views/stream/components/RightPanel/Basic.vue:56
 msgid ""
 msgid ""
 "When you enable/disable, delete, or save this site, the nodes set in the "
 "When you enable/disable, delete, or save this site, the nodes set in the "
 "Node Group and the nodes selected below will be synchronized."
 "Node Group and the nodes selected below will be synchronized."

File diff suppressed because it is too large
+ 177 - 180
app/src/language/es/app.po


File diff suppressed because it is too large
+ 186 - 197
app/src/language/fr_FR/app.po


+ 1 - 1
app/src/language/generate.ts

@@ -8,7 +8,7 @@ export const msg = [
   $gettext('Check if the nginx access log path exists. By default, this path is obtained from \'nginx -V\'. If it cannot be obtained or the obtained path does not point to a valid, existing file, an error will be reported. In this case, you need to modify the configuration file to specify the access log path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath'),
   $gettext('Check if the nginx access log path exists. By default, this path is obtained from \'nginx -V\'. If it cannot be obtained or the obtained path does not point to a valid, existing file, an error will be reported. In this case, you need to modify the configuration file to specify the access log path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-nginx.html#accesslogpath'),
   $gettext('Check if the nginx configuration directory exists'),
   $gettext('Check if the nginx configuration directory exists'),
   $gettext('Check if the nginx configuration entry file exists'),
   $gettext('Check if the nginx configuration entry file exists'),
-  $gettext('Check if the nginx error log path exists. By default, this path is obtained from \'nginx -V\'. If it cannot be obtained or the obtained path does not point to a valid, existing file, an error will be reported. In this case, you need to modify the configuration file to specify the error log path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath'),
+  $gettext('Check if the nginx error log path exists. By default, this path is obtained from \'nginx -V\'. If it cannot be obtained or the obtained path does not point to a valid, existing file, an error will be reported. In this case, you need to modify the configuration file to specify the error log path. Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath'),
   $gettext('Check if the nginx.conf includes the conf.d directory'),
   $gettext('Check if the nginx.conf includes the conf.d directory'),
   $gettext('Check if the nginx.conf includes the sites-enabled directory'),
   $gettext('Check if the nginx.conf includes the sites-enabled directory'),
   $gettext('Check if the nginx.conf includes the streams-enabled directory'),
   $gettext('Check if the nginx.conf includes the streams-enabled directory'),

File diff suppressed because it is too large
+ 182 - 233
app/src/language/ja_JP/app.po


File diff suppressed because it is too large
+ 179 - 220
app/src/language/ko_KR/app.po


+ 96 - 98
app/src/language/messages.pot

@@ -125,7 +125,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:90
 #: src/views/certificate/ACMEUser.vue:90
 #: src/views/certificate/CertificateList/certColumns.tsx:92
 #: src/views/certificate/CertificateList/certColumns.tsx:92
 #: src/views/certificate/DNSCredential.vue:30
 #: src/views/certificate/DNSCredential.vue:30
-#: src/views/config/configColumns.tsx:42
+#: src/views/config/configColumns.tsx:41
 #: src/views/environments/group/columns.ts:41
 #: src/views/environments/group/columns.ts:41
 #: src/views/environments/list/envColumns.tsx:96
 #: src/views/environments/list/envColumns.tsx:96
 #: src/views/nginx_log/NginxLogList.vue:52
 #: src/views/nginx_log/NginxLogList.vue:52
@@ -146,7 +146,7 @@ msgstr ""
 msgid "Actual worker to configured ratio"
 msgid "Actual worker to configured ratio"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NgxConfigEditor/NgxServer.vue:112
+#: src/components/NgxConfigEditor/NgxServer.vue:144
 #: src/components/NgxConfigEditor/NgxUpstream.vue:166
 #: src/components/NgxConfigEditor/NgxUpstream.vue:166
 #: src/language/curd.ts:19
 #: src/language/curd.ts:19
 #: src/views/preference/tabs/CertSettings.vue:45
 #: src/views/preference/tabs/CertSettings.vue:45
@@ -161,8 +161,8 @@ msgid "Add a passkey"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/config.ts:20
 #: src/routes/modules/config.ts:20
-#: src/views/config/ConfigEditor.vue:171
-#: src/views/config/ConfigEditor.vue:250
+#: src/views/config/components/ConfigLeftPanel.vue:169
+#: src/views/config/components/ConfigLeftPanel.vue:242
 msgid "Add Configuration"
 msgid "Add Configuration"
 msgstr ""
 msgstr ""
 
 
@@ -175,6 +175,10 @@ msgstr ""
 msgid "Add Location"
 msgid "Add Location"
 msgstr ""
 msgstr ""
 
 
+#: src/components/NgxConfigEditor/NgxServer.vue:92
+msgid "Add Server"
+msgstr ""
+
 #: src/routes/modules/sites.ts:26
 #: src/routes/modules/sites.ts:26
 #: src/views/site/site_add/SiteAdd.vue:75
 #: src/views/site/site_add/SiteAdd.vue:75
 msgid "Add Site"
 msgid "Add Site"
@@ -184,6 +188,10 @@ msgstr ""
 msgid "Add Stream"
 msgid "Add Stream"
 msgstr ""
 msgstr ""
 
 
+#: src/components/NgxConfigEditor/NgxUpstream.vue:187
+msgid "Add Upstream"
+msgstr ""
+
 #: src/views/stream/StreamList.vue:72
 #: src/views/stream/StreamList.vue:72
 msgid "Added successfully"
 msgid "Added successfully"
 msgstr ""
 msgstr ""
@@ -193,7 +201,7 @@ msgid "Additional"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:94
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:94
-#: src/views/stream/components/StreamEditor.vue:56
+#: src/views/stream/components/StreamEditor.vue:57
 msgid "Advance Mode"
 msgid "Advance Mode"
 msgstr ""
 msgstr ""
 
 
@@ -259,7 +267,7 @@ msgstr ""
 msgid "Are you sure you want to clear all notifications?"
 msgid "Are you sure you want to clear all notifications?"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:376
+#: src/components/ChatGPT/ChatMessageInput.vue:19
 msgid "Are you sure you want to clear the record of chat?"
 msgid "Are you sure you want to clear the record of chat?"
 msgstr ""
 msgstr ""
 
 
@@ -297,11 +305,11 @@ msgstr ""
 msgid "Are you sure you want to restore?"
 msgid "Are you sure you want to restore?"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:318
+#: src/components/ChatGPT/ChatGPT.vue:55
 msgid "Ask ChatGPT for Help"
 msgid "Ask ChatGPT for Help"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:333
+#: src/components/ChatGPT/ChatMessage.vue:187
 msgid "Assistant"
 msgid "Assistant"
 msgstr ""
 msgstr ""
 
 
@@ -386,12 +394,12 @@ msgid "Automatic Restart"
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/CertificateEditor.vue:259
 #: src/views/certificate/CertificateEditor.vue:259
-#: src/views/config/ConfigEditor.vue:272
+#: src/views/config/components/ConfigLeftPanel.vue:273
 #: src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195
 #: src/views/config/ConfigList.vue:195
 #: src/views/nginx_log/NginxLog.vue:174
 #: src/views/nginx_log/NginxLog.vue:174
-#: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:150
-#: src/views/stream/components/StreamEditor.vue:107
+#: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:156
+#: src/views/stream/components/StreamEditor.vue:111
 msgid "Back"
 msgid "Back"
 msgstr ""
 msgstr ""
 
 
@@ -480,14 +488,14 @@ msgstr ""
 msgid "Base information"
 msgid "Base information"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:300
-#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:32
-#: src/views/stream/components/RightPanel/RightPanel.vue:20
+#: src/views/config/components/ConfigRightPanel/ConfigRightPanel.vue:29
+#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:31
+#: src/views/stream/components/RightPanel/RightPanel.vue:19
 msgid "Basic"
 msgid "Basic"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:97
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:97
-#: src/views/stream/components/StreamEditor.vue:59
+#: src/views/stream/components/StreamEditor.vue:60
 msgid "Basic Mode"
 msgid "Basic Mode"
 msgstr ""
 msgstr ""
 
 
@@ -570,15 +578,14 @@ msgstr ""
 msgid "Calculated based on worker_processes * worker_connections. Actual performance depends on hardware, configuration, and workload"
 msgid "Calculated based on worker_processes * worker_connections. Actual performance depends on hardware, configuration, and workload"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:356
-#: src/components/NgxConfigEditor/NgxServer.vue:54
+#: src/components/ChatGPT/ChatMessage.vue:216
+#: src/components/NgxConfigEditor/NgxServer.vue:61
 #: src/components/NgxConfigEditor/NgxUpstream.vue:37
 #: src/components/NgxConfigEditor/NgxUpstream.vue:37
 #: src/views/preference/components/AuthSettings/Passkey.vue:141
 #: src/views/preference/components/AuthSettings/Passkey.vue:141
 #: src/views/site/components/SiteStatusSelect.vue:124
 #: src/views/site/components/SiteStatusSelect.vue:124
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:40
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:40
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:143
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:143
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:21
-#: src/views/stream/components/RightPanel/Basic.vue:49
 #: src/views/stream/components/StreamStatusSelect.vue:61
 #: src/views/stream/components/StreamStatusSelect.vue:61
 msgid "Cancel"
 msgid "Cancel"
 msgstr ""
 msgstr ""
@@ -712,7 +719,7 @@ msgid_plural "Changed Certificates"
 msgstr[0] ""
 msgstr[0] ""
 msgstr[1] ""
 msgstr[1] ""
 
 
-#: src/views/config/ConfigEditor.vue:328
+#: src/views/config/components/ConfigRightPanel/Basic.vue:47
 msgid "Changed Path"
 msgid "Changed Path"
 msgstr ""
 msgstr ""
 
 
@@ -721,8 +728,9 @@ msgstr ""
 msgid "Channel"
 msgid "Channel"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:42
-#: src/views/stream/components/RightPanel/RightPanel.vue:23
+#: src/views/config/components/ConfigRightPanel/ConfigRightPanel.vue:38
+#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:41
+#: src/views/stream/components/RightPanel/RightPanel.vue:22
 msgid "Chat"
 msgid "Chat"
 msgstr ""
 msgstr ""
 
 
@@ -756,7 +764,7 @@ msgid "Check if the nginx configuration entry file exists"
 msgstr ""
 msgstr ""
 
 
 #: src/language/generate.ts:11
 #: src/language/generate.ts:11
-msgid "Check if the nginx error log path exists. By default, this path is obtained from 'nginx -V'. If it cannot be obtained or the obtained path does not point to a valid, existing file, an error will be reported. In this case, you need to modify the configuration file to specify the error log path.Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath"
+msgid "Check if the nginx error log path exists. By default, this path is obtained from 'nginx -V'. If it cannot be obtained or the obtained path does not point to a valid, existing file, an error will be reported. In this case, you need to modify the configuration file to specify the error log path. Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath"
 msgstr ""
 msgstr ""
 
 
 #: src/language/generate.ts:7
 #: src/language/generate.ts:7
@@ -791,7 +799,7 @@ msgstr ""
 msgid "Cleaning environment variables"
 msgid "Cleaning environment variables"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:380
+#: src/components/ChatGPT/ChatMessageInput.vue:23
 #: src/components/Notification/Notification.vue:116
 #: src/components/Notification/Notification.vue:116
 #: src/views/notification/Notification.vue:45
 #: src/views/notification/Notification.vue:45
 msgid "Clear"
 msgid "Clear"
@@ -869,7 +877,7 @@ msgstr ""
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:115
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:115
 #: src/components/NgxConfigEditor/LocationEditor.vue:104
 #: src/components/NgxConfigEditor/LocationEditor.vue:104
 #: src/components/NgxConfigEditor/LocationEditor.vue:135
 #: src/components/NgxConfigEditor/LocationEditor.vue:135
-#: src/components/NgxConfigEditor/NgxServer.vue:91
+#: src/components/NgxConfigEditor/NgxServer.vue:123
 msgid "Comments"
 msgid "Comments"
 msgstr ""
 msgstr ""
 
 
@@ -910,11 +918,11 @@ msgstr ""
 msgid "Config path is empty"
 msgid "Config path is empty"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:38
+#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:37
 msgid "Config Template"
 msgid "Config Template"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/InspectConfig.vue:27
+#: src/views/config/InspectConfig.vue:32
 msgid "Configuration file is test successful"
 msgid "Configuration file is test successful"
 msgstr ""
 msgstr ""
 
 
@@ -1006,10 +1014,6 @@ msgstr ""
 msgid "CPU:"
 msgid "CPU:"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NgxConfigEditor/NgxUpstream.vue:177
-msgid "Create"
-msgstr ""
-
 #: src/views/site/site_add/SiteAdd.vue:148
 #: src/views/site/site_add/SiteAdd.vue:148
 msgid "Create Another"
 msgid "Create Another"
 msgstr ""
 msgstr ""
@@ -1115,8 +1119,8 @@ msgid "Daily at %{time}"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/dashboard.ts:10
 #: src/routes/modules/dashboard.ts:10
-#: src/views/config/ConfigEditor.vue:110
-#: src/views/config/ConfigEditor.vue:161
+#: src/views/config/components/ConfigLeftPanel.vue:109
+#: src/views/config/components/ConfigLeftPanel.vue:159
 #: src/views/config/ConfigList.vue:67
 #: src/views/config/ConfigList.vue:67
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr ""
 msgstr ""
@@ -1141,7 +1145,7 @@ msgstr ""
 msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
 msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NgxConfigEditor/NgxServer.vue:78
+#: src/components/NgxConfigEditor/NgxServer.vue:110
 #: src/components/NgxConfigEditor/NgxUpstream.vue:134
 #: src/components/NgxConfigEditor/NgxUpstream.vue:134
 #: src/language/curd.ts:9
 #: src/language/curd.ts:9
 #: src/views/certificate/components/RemoveCert.vue:88
 #: src/views/certificate/components/RemoveCert.vue:88
@@ -1208,7 +1212,7 @@ msgstr ""
 msgid "Demo"
 msgid "Demo"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:344
+#: src/views/config/components/ConfigRightPanel/Basic.vue:60
 msgid "Deploy"
 msgid "Deploy"
 msgstr ""
 msgstr ""
 
 
@@ -1339,14 +1343,12 @@ msgstr ""
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:62
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:62
 #: src/views/site/site_list/columns.tsx:127
 #: src/views/site/site_list/columns.tsx:127
 #: src/views/stream/columns.tsx:94
 #: src/views/stream/columns.tsx:94
-#: src/views/stream/components/StreamEditor.vue:31
-#: src/views/stream/components/StreamStatusSelect.vue:85
+#: src/views/stream/components/StreamEditor.vue:32
 #: src/views/user/userColumns.tsx:39
 #: src/views/user/userColumns.tsx:39
 msgid "Disabled"
 msgid "Disabled"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/components/SiteStatusSelect.vue:67
 #: src/views/site/components/SiteStatusSelect.vue:67
-#: src/views/stream/components/RightPanel/Basic.vue:36
 #: src/views/stream/components/StreamStatusSelect.vue:39
 #: src/views/stream/components/StreamStatusSelect.vue:39
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr ""
 msgstr ""
@@ -1385,20 +1387,12 @@ msgstr ""
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
 msgstr ""
 msgstr ""
 
 
-#: src/views/stream/components/RightPanel/Basic.vue:45
-msgid "Do you want to disable this stream?"
-msgstr ""
-
-#: src/views/stream/components/RightPanel/Basic.vue:45
-msgid "Do you want to enable this stream?"
-msgstr ""
-
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:33
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:33
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:14
 msgid "Do you want to enable TLS?"
 msgid "Do you want to enable TLS?"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NgxConfigEditor/NgxServer.vue:50
+#: src/components/NgxConfigEditor/NgxServer.vue:57
 msgid "Do you want to remove this server?"
 msgid "Do you want to remove this server?"
 msgstr ""
 msgstr ""
 
 
@@ -1476,12 +1470,12 @@ msgid "Edit"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:51
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:51
-#: src/views/stream/components/StreamEditor.vue:20
+#: src/views/stream/components/StreamEditor.vue:21
 msgid "Edit %{n}"
 msgid "Edit %{n}"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/config.ts:30
 #: src/routes/modules/config.ts:30
-#: src/views/config/ConfigEditor.vue:250
+#: src/views/config/components/ConfigLeftPanel.vue:242
 msgid "Edit Configuration"
 msgid "Edit Configuration"
 msgstr ""
 msgstr ""
 
 
@@ -1608,16 +1602,14 @@ msgstr ""
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:56
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:56
 #: src/views/site/site_list/columns.tsx:123
 #: src/views/site/site_list/columns.tsx:123
 #: src/views/stream/columns.tsx:90
 #: src/views/stream/columns.tsx:90
-#: src/views/stream/components/RightPanel/Basic.vue:64
-#: src/views/stream/components/StreamEditor.vue:25
-#: src/views/stream/components/StreamStatusSelect.vue:84
+#: src/views/stream/components/RightPanel/Basic.vue:23
+#: src/views/stream/components/StreamEditor.vue:26
 #: src/views/user/userColumns.tsx:36
 #: src/views/user/userColumns.tsx:36
 msgid "Enabled"
 msgid "Enabled"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/components/SiteStatusSelect.vue:54
 #: src/views/site/components/SiteStatusSelect.vue:54
 #: src/views/site/site_add/SiteAdd.vue:34
 #: src/views/site/site_add/SiteAdd.vue:34
-#: src/views/stream/components/RightPanel/Basic.vue:27
 #: src/views/stream/components/StreamStatusSelect.vue:26
 #: src/views/stream/components/StreamStatusSelect.vue:26
 msgid "Enabled successfully"
 msgid "Enabled successfully"
 msgstr ""
 msgstr ""
@@ -1641,7 +1633,7 @@ msgid "Environments"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/index.ts:22
 #: src/constants/index.ts:22
-#: src/views/config/InspectConfig.vue:44
+#: src/views/config/InspectConfig.vue:49
 #: src/views/notification/notificationColumns.tsx:14
 #: src/views/notification/notificationColumns.tsx:14
 msgid "Error"
 msgid "Error"
 msgstr ""
 msgstr ""
@@ -1855,7 +1847,6 @@ msgid "Failed to delete certificate from database: %{error}"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/components/SiteStatusSelect.vue:73
 #: src/views/site/components/SiteStatusSelect.vue:73
-#: src/views/stream/components/RightPanel/Basic.vue:39
 #: src/views/stream/components/StreamStatusSelect.vue:45
 #: src/views/stream/components/StreamStatusSelect.vue:45
 msgid "Failed to disable %{msg}"
 msgid "Failed to disable %{msg}"
 msgstr ""
 msgstr ""
@@ -1865,7 +1856,6 @@ msgid "Failed to disable maintenance mode %{msg}"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/components/SiteStatusSelect.vue:60
 #: src/views/site/components/SiteStatusSelect.vue:60
-#: src/views/stream/components/RightPanel/Basic.vue:30
 #: src/views/stream/components/StreamStatusSelect.vue:32
 #: src/views/stream/components/StreamStatusSelect.vue:32
 msgid "Failed to enable %{msg}"
 msgid "Failed to enable %{msg}"
 msgstr ""
 msgstr ""
@@ -2072,11 +2062,11 @@ msgstr ""
 msgid "Form parse failed"
 msgid "Form parse failed"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:275
+#: src/views/config/components/ConfigLeftPanel.vue:276
 msgid "Format Code"
 msgid "Format Code"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:222
+#: src/views/config/components/ConfigLeftPanel.vue:219
 msgid "Format successfully"
 msgid "Format successfully"
 msgstr ""
 msgstr ""
 
 
@@ -2158,9 +2148,9 @@ msgstr ""
 msgid "Higher value means better connection reuse"
 msgid "Higher value means better connection reuse"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/components/ConfigLeftPanel.vue:254
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:81
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:81
-#: src/views/stream/components/StreamEditor.vue:44
+#: src/views/stream/components/StreamEditor.vue:45
 msgid "History"
 msgid "History"
 msgstr ""
 msgstr ""
 
 
@@ -2313,8 +2303,8 @@ msgstr ""
 msgid "Invalid file path: {0}"
 msgid "Invalid file path: {0}"
 msgstr ""
 msgstr ""
 
 
+#: src/views/config/components/ConfigRightPanel/Basic.vue:28
 #: src/views/config/components/Rename.vue:66
 #: src/views/config/components/Rename.vue:66
-#: src/views/config/ConfigEditor.vue:309
 msgid "Invalid filename"
 msgid "Invalid filename"
 msgstr ""
 msgstr ""
 
 
@@ -2585,8 +2575,8 @@ msgid "Make sure you have configured a reverse proxy for .well-known directory t
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/config.ts:10
 #: src/routes/modules/config.ts:10
-#: src/views/config/ConfigEditor.vue:115
-#: src/views/config/ConfigEditor.vue:166
+#: src/views/config/components/ConfigLeftPanel.vue:114
+#: src/views/config/components/ConfigLeftPanel.vue:164
 #: src/views/config/ConfigList.vue:72
 #: src/views/config/ConfigList.vue:72
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr ""
 msgstr ""
@@ -2722,7 +2712,7 @@ msgstr ""
 msgid "Modified At"
 msgid "Modified At"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:352
+#: src/components/ChatGPT/ChatMessage.vue:212
 #: src/views/config/ConfigList.vue:174
 #: src/views/config/ConfigList.vue:174
 msgid "Modify"
 msgid "Modify"
 msgstr ""
 msgstr ""
@@ -2760,15 +2750,15 @@ msgstr ""
 msgid "Multi-line Directive"
 msgid "Multi-line Directive"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NgxConfigEditor/NgxUpstream.vue:189
+#: src/components/NgxConfigEditor/NgxUpstream.vue:199
 #: src/views/backup/AutoBackup/AutoBackup.vue:11
 #: src/views/backup/AutoBackup/AutoBackup.vue:11
 #: src/views/certificate/ACMEUser.vue:11
 #: src/views/certificate/ACMEUser.vue:11
 #: src/views/certificate/CertificateEditor.vue:162
 #: src/views/certificate/CertificateEditor.vue:162
 #: src/views/certificate/CertificateList/certColumns.tsx:9
 #: src/views/certificate/CertificateList/certColumns.tsx:9
 #: src/views/certificate/DNSCredential.vue:8
 #: src/views/certificate/DNSCredential.vue:8
+#: src/views/config/components/ConfigRightPanel/Basic.vue:34
 #: src/views/config/components/Mkdir.vue:64
 #: src/views/config/components/Mkdir.vue:64
-#: src/views/config/configColumns.tsx:6
-#: src/views/config/ConfigEditor.vue:315
+#: src/views/config/configColumns.tsx:5
 #: src/views/environments/group/columns.ts:7
 #: src/views/environments/group/columns.ts:7
 #: src/views/environments/list/envColumns.tsx:8
 #: src/views/environments/list/envColumns.tsx:8
 #: src/views/nginx_log/NginxLogList.vue:36
 #: src/views/nginx_log/NginxLogList.vue:36
@@ -2777,7 +2767,7 @@ msgstr ""
 #: src/views/site/site_list/columns.tsx:16
 #: src/views/site/site_list/columns.tsx:16
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/columns.tsx:12
 #: src/views/stream/columns.tsx:12
-#: src/views/stream/components/RightPanel/Basic.vue:72
+#: src/views/stream/components/RightPanel/Basic.vue:30
 #: src/views/stream/components/StreamDuplicate.vue:71
 #: src/views/stream/components/StreamDuplicate.vue:71
 #: src/views/stream/StreamList.vue:144
 #: src/views/stream/StreamList.vue:144
 msgid "Name"
 msgid "Name"
@@ -2815,7 +2805,7 @@ msgstr ""
 msgid "New Password"
 msgid "New Password"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:328
+#: src/views/config/components/ConfigRightPanel/Basic.vue:47
 msgid "New Path"
 msgid "New Path"
 msgstr ""
 msgstr ""
 
 
@@ -2884,7 +2874,7 @@ msgstr ""
 msgid "Nginx configuration has been restored"
 msgid "Nginx configuration has been restored"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:113
+#: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:115
 #: src/views/stream/components/StreamEditor.vue:75
 #: src/views/stream/components/StreamEditor.vue:75
 msgid "Nginx Configuration Parse Error"
 msgid "Nginx Configuration Parse Error"
 msgstr ""
 msgstr ""
@@ -3028,7 +3018,7 @@ msgstr ""
 msgid "Nginx.conf includes streams-enabled directory"
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:374
+#: src/components/ChatGPT/ChatMessageInput.vue:17
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
@@ -3056,6 +3046,14 @@ msgstr ""
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
+#: src/components/NgxConfigEditor/NgxServer.vue:77
+msgid "No servers configured"
+msgstr ""
+
+#: src/components/NgxConfigEditor/NgxUpstream.vue:172
+msgid "No upstreams configured"
+msgstr ""
+
 #: src/views/preference/Preference.vue:64
 #: src/views/preference/Preference.vue:64
 msgid "Node"
 msgid "Node"
 msgstr ""
 msgstr ""
@@ -3063,7 +3061,7 @@ msgstr ""
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:41
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:41
 #: src/views/site/site_list/columns.tsx:76
 #: src/views/site/site_list/columns.tsx:76
 #: src/views/stream/columns.tsx:44
 #: src/views/stream/columns.tsx:44
-#: src/views/stream/components/RightPanel/Basic.vue:80
+#: src/views/stream/components/RightPanel/Basic.vue:38
 msgid "Node Group"
 msgid "Node Group"
 msgstr ""
 msgstr ""
 
 
@@ -3107,7 +3105,7 @@ msgid "Note"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:65
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:65
-#: src/views/stream/components/RightPanel/Basic.vue:102
+#: src/views/stream/components/RightPanel/Basic.vue:60
 msgid "Note, if the configuration file include other configurations or certificates, please synchronize them to the remote nodes in advance."
 msgid "Note, if the configuration file include other configurations or certificates, please synchronize them to the remote nodes in advance."
 msgstr ""
 msgstr ""
 
 
@@ -3173,8 +3171,8 @@ msgstr ""
 msgid "Offline"
 msgid "Offline"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:375
-#: src/components/NgxConfigEditor/NgxServer.vue:53
+#: src/components/ChatGPT/ChatMessageInput.vue:18
+#: src/components/NgxConfigEditor/NgxServer.vue:60
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
 #: src/components/Notification/Notification.vue:110
 #: src/components/Notification/Notification.vue:110
 #: src/language/curd.ts:15
 #: src/language/curd.ts:15
@@ -3185,7 +3183,6 @@ msgstr ""
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:142
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:142
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:20
 #: src/views/site/site_list/SiteList.vue:99
 #: src/views/site/site_list/SiteList.vue:99
-#: src/views/stream/components/RightPanel/Basic.vue:48
 #: src/views/stream/components/StreamStatusSelect.vue:60
 #: src/views/stream/components/StreamStatusSelect.vue:60
 #: src/views/stream/StreamList.vue:121
 #: src/views/stream/StreamList.vue:121
 msgid "OK"
 msgid "OK"
@@ -3259,11 +3256,11 @@ msgstr ""
 msgid "Otp or recovery code empty"
 msgid "Otp or recovery code empty"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:353
+#: src/views/config/components/ConfigRightPanel/Deploy.vue:18
 msgid "Overwrite"
 msgid "Overwrite"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:357
+#: src/views/config/components/ConfigRightPanel/Deploy.vue:22
 msgid "Overwrite exist file"
 msgid "Overwrite exist file"
 msgstr ""
 msgstr ""
 
 
@@ -3316,7 +3313,7 @@ msgstr ""
 #: src/components/NgxConfigEditor/LocationEditor.vue:110
 #: src/components/NgxConfigEditor/LocationEditor.vue:110
 #: src/components/NgxConfigEditor/LocationEditor.vue:138
 #: src/components/NgxConfigEditor/LocationEditor.vue:138
 #: src/language/curd.ts:59
 #: src/language/curd.ts:59
-#: src/views/config/ConfigEditor.vue:322
+#: src/views/config/components/ConfigRightPanel/Basic.vue:41
 #: src/views/nginx_log/NginxLogList.vue:44
 #: src/views/nginx_log/NginxLogList.vue:44
 msgid "Path"
 msgid "Path"
 msgstr ""
 msgstr ""
@@ -3421,8 +3418,8 @@ msgstr ""
 msgid "Please generate new recovery codes in the preferences immediately to prevent lockout."
 msgid "Please generate new recovery codes in the preferences immediately to prevent lockout."
 msgstr ""
 msgstr ""
 
 
+#: src/views/config/components/ConfigRightPanel/Basic.vue:27
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
-#: src/views/config/ConfigEditor.vue:308
 msgid "Please input a filename"
 msgid "Please input a filename"
 msgstr ""
 msgstr ""
 
 
@@ -3500,8 +3497,8 @@ msgstr ""
 msgid "Port"
 msgid "Port"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:45
-#: src/views/stream/components/RightPanel/RightPanel.vue:26
+#: src/views/site/site_edit/components/RightPanel/RightPanel.vue:44
+#: src/views/stream/components/RightPanel/RightPanel.vue:25
 msgid "Port Scanner"
 msgid "Port Scanner"
 msgstr ""
 msgstr ""
 
 
@@ -3615,7 +3612,7 @@ msgstr ""
 msgid "Recursive Nameservers"
 msgid "Recursive Nameservers"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:387
+#: src/components/ChatGPT/ChatMessageInput.vue:30
 msgid "Regenerate response"
 msgid "Regenerate response"
 msgstr ""
 msgstr ""
 
 
@@ -3659,7 +3656,7 @@ msgstr ""
 msgid "Release Note"
 msgid "Release Note"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:362
+#: src/components/ChatGPT/ChatMessage.vue:222
 #: src/components/NginxControl/NginxControl.vue:99
 #: src/components/NginxControl/NginxControl.vue:99
 msgid "Reload"
 msgid "Reload"
 msgstr ""
 msgstr ""
@@ -4050,18 +4047,18 @@ msgstr ""
 msgid "Saturday"
 msgid "Saturday"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:355
+#: src/components/ChatGPT/ChatMessage.vue:215
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:129
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:129
 #: src/language/curd.ts:18
 #: src/language/curd.ts:18
 #: src/views/certificate/CertificateEditor.vue:266
 #: src/views/certificate/CertificateEditor.vue:266
+#: src/views/config/components/ConfigLeftPanel.vue:282
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/components/ConfigName.vue:59
-#: src/views/config/ConfigEditor.vue:281
 #: src/views/preference/components/AuthSettings/Passkey.vue:130
 #: src/views/preference/components/AuthSettings/Passkey.vue:130
 #: src/views/preference/Preference.vue:117
 #: src/views/preference/Preference.vue:117
 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52
 #: src/views/site/site_edit/components/ConfigName/ConfigName.vue:52
-#: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:157
+#: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:163
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/components/ConfigName.vue:52
-#: src/views/stream/components/StreamEditor.vue:114
+#: src/views/stream/components/StreamEditor.vue:118
 msgid "Save"
 msgid "Save"
 msgstr ""
 msgstr ""
 
 
@@ -4116,9 +4113,10 @@ msgstr ""
 
 
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:43
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:43
 #: src/language/curd.ts:28
 #: src/language/curd.ts:28
-#: src/views/config/ConfigEditor.vue:200
+#: src/views/config/components/ConfigLeftPanel.vue:198
 #: src/views/site/site_add/SiteAdd.vue:31
 #: src/views/site/site_add/SiteAdd.vue:31
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:40
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:40
+#: src/views/stream/store.ts:70
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr ""
 msgstr ""
 
 
@@ -4585,8 +4583,8 @@ msgstr ""
 
 
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:58
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:58
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:71
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:71
-#: src/views/stream/components/RightPanel/Basic.vue:108
-#: src/views/stream/components/RightPanel/Basic.vue:95
+#: src/views/stream/components/RightPanel/Basic.vue:53
+#: src/views/stream/components/RightPanel/Basic.vue:66
 msgid "Sync strategy"
 msgid "Sync strategy"
 msgstr ""
 msgstr ""
 
 
@@ -4595,7 +4593,7 @@ msgid "Sync to"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:56
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:56
-#: src/views/stream/components/RightPanel/Basic.vue:93
+#: src/views/stream/components/RightPanel/Basic.vue:51
 msgid "Synchronization"
 msgid "Synchronization"
 msgstr ""
 msgstr ""
 
 
@@ -4935,14 +4933,14 @@ msgstr ""
 #: src/views/backup/AutoBackup/AutoBackup.vue:236
 #: src/views/backup/AutoBackup/AutoBackup.vue:236
 #: src/views/certificate/ACMEUser.vue:83
 #: src/views/certificate/ACMEUser.vue:83
 #: src/views/certificate/DNSCredential.vue:24
 #: src/views/certificate/DNSCredential.vue:24
-#: src/views/config/configColumns.tsx:35
-#: src/views/config/ConfigEditor.vue:335
+#: src/views/config/components/ConfigRightPanel/Basic.vue:54
+#: src/views/config/configColumns.tsx:34
 #: src/views/environments/group/columns.ts:35
 #: src/views/environments/group/columns.ts:35
 #: src/views/environments/list/envColumns.tsx:89
 #: src/views/environments/list/envColumns.tsx:89
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:38
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:38
 #: src/views/site/site_list/columns.tsx:94
 #: src/views/site/site_list/columns.tsx:94
 #: src/views/stream/columns.tsx:62
 #: src/views/stream/columns.tsx:62
-#: src/views/stream/components/RightPanel/Basic.vue:76
+#: src/views/stream/components/RightPanel/Basic.vue:34
 #: src/views/user/userColumns.tsx:52
 #: src/views/user/userColumns.tsx:52
 msgid "Updated at"
 msgid "Updated at"
 msgstr ""
 msgstr ""
@@ -4980,7 +4978,7 @@ msgstr ""
 msgid "Upstream"
 msgid "Upstream"
 msgstr ""
 msgstr ""
 
 
-#: src/components/NgxConfigEditor/NgxUpstream.vue:184
+#: src/components/NgxConfigEditor/NgxUpstream.vue:194
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr ""
 msgstr ""
 
 
@@ -5004,7 +5002,7 @@ msgstr ""
 msgid "Use Temporary Path"
 msgid "Use Temporary Path"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ChatGPT/ChatGPT.vue:333
+#: src/components/ChatGPT/ChatMessage.vue:187
 msgid "User"
 msgid "User"
 msgstr ""
 msgstr ""
 
 
@@ -5087,7 +5085,7 @@ msgstr ""
 
 
 #: src/constants/index.ts:23
 #: src/constants/index.ts:23
 #: src/views/backup/components/BackupCreator.vue:138
 #: src/views/backup/components/BackupCreator.vue:138
-#: src/views/config/InspectConfig.vue:33
+#: src/views/config/InspectConfig.vue:38
 #: src/views/notification/notificationColumns.tsx:21
 #: src/views/notification/notificationColumns.tsx:21
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:82
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:82
 msgid "Warning"
 msgid "Warning"
@@ -5135,7 +5133,7 @@ msgid "When Enabled, Nginx UI will automatically re-register users upon startup.
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:61
 #: src/views/site/site_edit/components/RightPanel/Basic.vue:61
-#: src/views/stream/components/RightPanel/Basic.vue:98
+#: src/views/stream/components/RightPanel/Basic.vue:56
 msgid "When you enable/disable, delete, or save this site, the nodes set in the Node Group and the nodes selected below will be synchronized."
 msgid "When you enable/disable, delete, or save this site, the nodes set in the Node Group and the nodes selected below will be synchronized."
 msgstr ""
 msgstr ""
 
 

File diff suppressed because it is too large
+ 181 - 190
app/src/language/pt_PT/app.po


File diff suppressed because it is too large
+ 191 - 191
app/src/language/ru_RU/app.po


File diff suppressed because it is too large
+ 192 - 198
app/src/language/tr_TR/app.po


File diff suppressed because it is too large
+ 192 - 196
app/src/language/uk_UA/app.po


File diff suppressed because it is too large
+ 191 - 194
app/src/language/vi_VN/app.po


File diff suppressed because it is too large
+ 182 - 204
app/src/language/zh_CN/app.po


File diff suppressed because it is too large
+ 187 - 206
app/src/language/zh_TW/app.po


+ 26 - 31
app/src/views/config/components/ConfigLeftPanel.vue

@@ -14,8 +14,6 @@ import InspectConfig from '@/views/config/InspectConfig.vue'
 const route = useRoute()
 const route = useRoute()
 const router = useRouter()
 const router = useRouter()
 
 
-// eslint-disable-next-line vue/require-typed-ref
-const refForm = ref()
 const origName = ref('')
 const origName = ref('')
 const addMode = computed(() => !route.params.name)
 const addMode = computed(() => !route.params.name)
 const showHistory = ref(false)
 const showHistory = ref(false)
@@ -58,7 +56,6 @@ const inspectConfigRef = useTemplateRef<InstanceType<typeof InspectConfig>>('ins
 // Expose data for right panel
 // Expose data for right panel
 defineExpose({
 defineExpose({
   data,
   data,
-  refForm,
   addMode,
   addMode,
   newPath,
   newPath,
   modifiedAt,
   modifiedAt,
@@ -184,37 +181,35 @@ onMounted(async () => {
 })
 })
 
 
 function save() {
 function save() {
-  refForm.value?.validate().then(() => {
-    const payload = {
-      name: addMode.value ? data.value.name : undefined,
-      base_dir: addMode.value ? basePath.value : undefined,
-      content: data.value.content,
-      sync_node_ids: data.value.sync_node_ids,
-      sync_overwrite: data.value.sync_overwrite,
-    }
+  const payload = {
+    name: addMode.value ? data.value.name : undefined,
+    base_dir: addMode.value ? basePath.value : undefined,
+    content: data.value.content,
+    sync_node_ids: data.value.sync_node_ids,
+    sync_overwrite: data.value.sync_overwrite,
+  }
 
 
-    const api = addMode.value
-      ? config.createItem(payload)
-      : config.updateItem(relativePath.value, payload)
+  const api = addMode.value
+    ? config.createItem(payload)
+    : config.updateItem(relativePath.value, payload)
 
 
-    api.then(r => {
-      data.value.content = r.content
-      message.success($gettext('Saved successfully'))
+  api.then(r => {
+    data.value.content = r.content
+    message.success($gettext('Saved successfully'))
 
 
-      if (addMode.value) {
-        router.push({
-          path: `/config/${data.value.name}/edit`,
-          query: {
-            basePath: basePath.value,
-          },
-        })
-      }
-      else {
-        data.value = r
-        // Run test after saving to verify configuration
-        inspectConfigRef.value?.test()
-      }
-    })
+    if (addMode.value) {
+      router.push({
+        path: `/config/${data.value.name}/edit`,
+        query: {
+          basePath: basePath.value,
+        },
+      })
+    }
+    else {
+      data.value = r
+      // Run test after saving to verify configuration
+      inspectConfigRef.value?.test()
+    }
   })
   })
 }
 }
 
 

+ 1 - 1
internal/self_check/tasks.go

@@ -96,7 +96,7 @@ var selfCheckTasks = []*Task{
 		Name:        translation.C("Nginx error log path exists"),
 		Name:        translation.C("Nginx error log path exists"),
 		Description: translation.C("Check if the nginx error log path exists. "+
 		Description: translation.C("Check if the nginx error log path exists. "+
 		"By default, this path is obtained from 'nginx -V'. If it cannot be obtained or the obtained path does not point to a valid, "+
 		"By default, this path is obtained from 'nginx -V'. If it cannot be obtained or the obtained path does not point to a valid, "+
-		"existing file, an error will be reported. In this case, you need to modify the configuration file to specify the error log path." + 
+		"existing file, an error will be reported. In this case, you need to modify the configuration file to specify the error log path. " + 
 		"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath"),
 		"Refer to the docs for more details: https://nginxui.com/zh_CN/guide/config-nginx.html#errorlogpath"),
 		CheckFunc:   CheckErrorLogPath,
 		CheckFunc:   CheckErrorLogPath,
 	},
 	},

Some files were not shown because too many files changed in this diff