Prechádzať zdrojové kódy

chore: update translations

Jacky 2 týždňov pred
rodič
commit
d42dd4b1c6

+ 2 - 1
app/i18n.json

@@ -9,5 +9,6 @@
   "vi_VN": "Vi",
   "ko_KR": "한글",
   "tr_TR": "Tr",
-  "ar": "عَرَبِيّ"
+  "ar": "عَرَبِيّ",
+  "uk_UA": "Uk"
 }

+ 1 - 1
app/src/language/LINGUAS

@@ -1 +1 @@
-en zh_CN zh_TW fr_FR es de_DE ru_RU vi_VN ko_KR tr_TR ar
+en zh_CN zh_TW fr_FR es de_DE ru_RU vi_VN ko_KR tr_TR ar uk_UA

+ 81 - 66
app/src/language/ar/app.po

@@ -67,7 +67,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
 #: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:163
+#: src/views/site/ngx_conf/NgxServer.vue:166
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:182
 msgid "Add"
@@ -108,7 +108,7 @@ msgstr "تمت الإضافة بنجاح"
 msgid "Additional"
 msgstr "إضافي"
 
-#: src/views/site/site_edit/SiteEdit.vue:225
+#: src/views/site/site_edit/SiteEdit.vue:228
 #: src/views/stream/StreamEdit.vue:207
 msgid "Advance Mode"
 msgstr "الوضع المتقدم"
@@ -148,7 +148,7 @@ msgstr "رمز API"
 msgid "API Type"
 msgstr "رمز API"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:166
 msgid "App"
 msgstr ""
 
@@ -253,7 +253,7 @@ msgstr "محاولات"
 msgid "Attempts"
 msgstr "محاولات"
 
-#: src/views/preference/Preference.vue:194
+#: src/views/preference/Preference.vue:196
 msgid "Auth"
 msgstr "مصادقة"
 
@@ -302,7 +302,7 @@ msgstr ""
 #: src/views/certificate/components/CertificateEditor.vue:257
 #: src/views/config/ConfigEditor.vue:268 src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:285
+#: src/views/site/site_edit/SiteEdit.vue:288
 #: src/views/stream/StreamEdit.vue:264
 msgid "Back"
 msgstr "رجوع"
@@ -355,12 +355,12 @@ msgid "Base information"
 msgstr "المعلومات الأساسية"
 
 #: src/views/config/ConfigEditor.vue:296
-#: src/views/site/site_edit/RightSettings.vue:52
+#: src/views/site/site_edit/RightSettings.vue:43
 #: src/views/stream/components/RightSettings.vue:79
 msgid "Basic"
 msgstr "أساسي"
 
-#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/site/site_edit/SiteEdit.vue:231
 #: src/views/stream/StreamEdit.vue:210
 msgid "Basic Mode"
 msgstr "الوضع الأساسي"
@@ -456,10 +456,10 @@ msgstr ""
 #: src/components/StdDesign/StdDetail/StdDetail.vue:101
 #: src/views/preference/components/Passkey.vue:141
 #: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51
-#: src/views/site/ngx_conf/NgxServer.vue:80
+#: src/views/site/ngx_conf/NgxServer.vue:83
 #: src/views/site/ngx_conf/NgxUpstream.vue:34
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:122
 #: src/views/stream/components/RightSettings.vue:55
 msgid "Cancel"
 msgstr "إلغاء"
@@ -483,7 +483,7 @@ msgstr ""
 msgid "Cannot remove initial user"
 msgstr "مستخدم النظام الأولي"
 
-#: src/views/preference/Preference.vue:200
+#: src/views/preference/Preference.vue:202
 msgid "Cert"
 msgstr "شهادة"
 
@@ -554,7 +554,7 @@ msgid "Certificate renewed successfully"
 msgstr "تم المسح بنجاح"
 
 #: src/views/certificate/components/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:60
+#: src/views/site/cert/Cert.vue:62
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "صفر"
@@ -582,7 +582,7 @@ msgstr "طريقة التحدي"
 msgid "Change Certificate"
 msgstr "تغيير الشهادة"
 
-#: src/views/site/cert/Cert.vue:79
+#: src/views/site/cert/Cert.vue:81
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] "صفر"
@@ -687,6 +687,10 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgstr "أمر"
@@ -694,7 +698,7 @@ msgstr "أمر"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:135
+#: src/views/site/ngx_conf/NgxServer.vue:138
 msgid "Comments"
 msgstr "تعليقات"
 
@@ -895,7 +899,7 @@ msgid "Current Version"
 msgstr "الإصدار الحالي"
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:194
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
 msgid "Custom"
 msgstr "مخصص"
 
@@ -930,7 +934,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
-#: src/views/site/ngx_conf/NgxServer.vue:110
+#: src/views/site/ngx_conf/NgxServer.vue:113
 #: src/views/site/ngx_conf/NgxUpstream.vue:128
 #: src/views/site/site_list/SiteList.vue:131
 #: src/views/stream/StreamList.vue:248
@@ -1055,7 +1059,7 @@ msgstr "توجيهات"
 msgid "Directory path to store cache files"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
+#: src/views/site/components/SiteStatusSegmented.vue:88
 #, fuzzy
 msgid "disable"
 msgstr "تعطيل"
@@ -1131,14 +1135,14 @@ msgstr "تم تعطيل الموقع %{site} على %{node} بنجاح"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:159
-#: src/views/site/site_edit/SiteEdit.vue:199
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
 #: src/views/site/site_list/columns.tsx:111 src/views/stream/StreamEdit.vue:182
 #: src/views/stream/StreamList.vue:60 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "معطل"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:56
+#: src/views/site/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:42
 #: src/views/stream/StreamList.vue:98
 msgid "Disabled successfully"
@@ -1166,7 +1170,7 @@ msgstr "DNS01"
 msgid "Do not enable this option unless you are sure that you need it."
 msgstr "لا تقم بتمكين هذا الخيار إلا إذا كنت متأكدًا من أنك بحاجة إليه."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:118
+#: src/views/site/components/SiteStatusSegmented.vue:93
 #, fuzzy
 msgid "Do you want to %{action} this site?"
 msgstr "هل تريد تفعيل هذا الموقع؟"
@@ -1187,7 +1191,7 @@ msgstr "هل تريد تفعيل هذا البث؟"
 msgid "Do you want to enable TLS?"
 msgstr "هل تريد تفعيل TLS؟"
 
-#: src/views/site/ngx_conf/NgxServer.vue:76
+#: src/views/site/ngx_conf/NgxServer.vue:79
 msgid "Do you want to remove this server?"
 msgstr "هل تريد إزالة هذا الخادم؟"
 
@@ -1253,7 +1257,7 @@ msgstr "تم النسخ إلى المحلي بنجاح"
 msgid "Edit"
 msgstr "تعديل %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:188
+#: src/views/site/site_edit/SiteEdit.vue:185
 #: src/views/stream/StreamEdit.vue:171
 msgid "Edit %{n}"
 msgstr "تعديل %{n}"
@@ -1279,7 +1283,7 @@ msgstr "بريد إلكتروني"
 msgid "Email (*)"
 msgstr "البريد الإلكتروني (*)"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:112
+#: src/views/site/components/SiteStatusSegmented.vue:87
 #, fuzzy
 msgid "enable"
 msgstr "تفعيل"
@@ -1296,6 +1300,10 @@ msgstr "تم تفعيل المصادقة الثنائية بنجاح"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "فشل تفعيل التجديد التلقائي لـ %{name}"
 
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr ""
+
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgstr ""
@@ -1375,7 +1383,7 @@ msgstr "تم تفعيل الموقع %{site} على %{node} بنجاح"
 msgid "Enable stub_status module"
 msgstr ""
 
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:183
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
 msgid "Enable TLS"
 msgstr "تفعيل TLS"
 
@@ -1389,8 +1397,8 @@ msgstr "تفعيل TOTP"
 #: src/views/preference/LogrotateSettings.vue:19
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:155
-#: src/views/site/site_edit/SiteEdit.vue:193
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:110
 #: src/views/stream/components/RightSettings.vue:81
 #: src/views/stream/StreamEdit.vue:176 src/views/stream/StreamList.vue:56
@@ -1398,8 +1406,8 @@ msgstr "تفعيل TOTP"
 msgid "Enabled"
 msgstr "مفعل"
 
+#: src/views/site/components/SiteStatusSegmented.vue:27
 #: src/views/site/site_add/SiteAdd.vue:40
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:33
 #: src/views/stream/StreamList.vue:88
 msgid "Enabled successfully"
@@ -1459,7 +1467,7 @@ msgid "Export"
 msgstr "تصدير"
 
 #: src/views/preference/ExternalNotify.vue:10
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:172
 msgid "External Notify"
 msgstr ""
 
@@ -1607,24 +1615,24 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "فشل في الحصول على الشهادة"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:63
+#: src/views/site/components/SiteStatusSegmented.vue:46
 #: src/views/stream/components/RightSettings.vue:45
 #: src/views/stream/StreamList.vue:102
 msgid "Failed to disable %{msg}"
 msgstr "فشل في تعطيل %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:95
+#: src/views/site/components/SiteStatusSegmented.vue:72
 #, fuzzy
 msgid "Failed to disable maintenance mode %{msg}"
 msgstr "فشل في تعطيل %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:47
+#: src/views/site/components/SiteStatusSegmented.vue:33
 #: src/views/stream/components/RightSettings.vue:36
 #: src/views/stream/StreamList.vue:92
 msgid "Failed to enable %{msg}"
 msgstr "فشل في التفعيل %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:79
+#: src/views/site/components/SiteStatusSegmented.vue:59
 #, fuzzy
 msgid "Failed to enable maintenance mode %{msg}"
 msgstr "فشل في التفعيل %{msg}"
@@ -1749,7 +1757,7 @@ msgstr "فشل في الحصول على الشهادة"
 msgid "Failed to save Nginx performance settings"
 msgstr "فشل في الحصول على معلومات الشهادة"
 
-#: src/views/site/site_edit/SiteEdit.vue:139
+#: src/views/site/site_edit/SiteEdit.vue:137
 #: src/views/stream/StreamEdit.vue:122
 msgid "Failed to save, syntax error(s) was detected in the configuration."
 msgstr "فشل في الحفظ، تم اكتشاف خطأ(أخطاء) في بناء الجملة في التكوين."
@@ -1898,7 +1906,7 @@ msgid "Higher value means better connection reuse"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:256
-#: src/views/site/site_edit/SiteEdit.vue:212
+#: src/views/site/site_edit/SiteEdit.vue:215
 #: src/views/stream/StreamEdit.vue:195
 #, fuzzy
 msgid "History"
@@ -1913,7 +1921,7 @@ msgstr "الصفحة الرئيسية"
 msgid "Host"
 msgstr "مضيف HTTP"
 
-#: src/views/preference/Preference.vue:182
+#: src/views/preference/Preference.vue:184
 #, fuzzy
 msgid "HTTP"
 msgstr "HTTP01"
@@ -2294,7 +2302,7 @@ msgstr "تم تسجيل الدخول بنجاح"
 msgid "Logout successful"
 msgstr "تم تسجيل الخروج بنجاح"
 
-#: src/views/preference/Preference.vue:218
+#: src/views/preference/Preference.vue:220
 msgid "Logrotate"
 msgstr "تدوير السجلات"
 
@@ -2314,17 +2322,18 @@ msgstr ""
 "مجدول المهام crontab الخاص بواجهة Nginx UI بتنفيذ أمر تدوير السجلات في "
 "الفاصل الزمني الذي تحدده بالدقائق."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:163
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
 #: src/views/site/site_list/columns.tsx:112
 msgid "Maintenance"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:88
+#: src/views/site/components/SiteStatusSegmented.vue:66
 #, fuzzy
 msgid "Maintenance mode disabled successfully"
 msgstr "تم التعطيل بنجاح"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:72
+#: src/views/site/components/SiteStatusSegmented.vue:53
 #, fuzzy
 msgid "Maintenance mode enabled successfully"
 msgstr "تم التفعيل بنجاح"
@@ -2506,8 +2515,8 @@ msgstr "توجيه متعدد الأسطر"
 #: src/views/nginx_log/NginxLogList.vue:33
 #: src/views/preference/components/AddPasskey.vue:75
 #: src/views/site/ngx_conf/NgxUpstream.vue:177
-#: src/views/site/site_edit/RightSettings.vue:63
-#: src/views/site/site_list/columns.tsx:17
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/components/RightSettings.vue:87
 #: src/views/stream/components/StreamDuplicate.vue:71
@@ -2558,7 +2567,7 @@ msgstr "تم إصدار نسخة جديدة"
 msgid "Next"
 msgstr "التالي"
 
-#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:206
+#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:208
 msgid "Nginx"
 msgstr "Nginx"
 
@@ -2610,7 +2619,7 @@ msgstr "قائمة السماح لمجلد سجلات Nginx"
 msgid "Nginx configuration has been restored"
 msgstr "خطأ في تحليل تكوين Nginx"
 
-#: src/views/site/site_edit/SiteEdit.vue:244
+#: src/views/site/site_edit/SiteEdit.vue:247
 #: src/views/stream/StreamEdit.vue:226
 msgid "Nginx Configuration Parse Error"
 msgstr "خطأ في تحليل تكوين Nginx"
@@ -2750,13 +2759,13 @@ msgstr ""
 msgid "No records selected"
 msgstr ""
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:178
 #, fuzzy
 msgid "Node"
 msgstr "اسم العقدة"
 
-#: src/views/site/site_edit/RightSettings.vue:66
-#: src/views/site/site_list/columns.tsx:65
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:32
 #, fuzzy
@@ -2799,7 +2808,7 @@ msgstr "غير صالح قبل: %{date}"
 msgid "Note"
 msgstr "ملاحظة"
 
-#: src/views/site/site_edit/RightSettings.vue:95
+#: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
 msgid ""
 "Note, if the configuration file include other configurations or "
@@ -2887,10 +2896,10 @@ msgstr "حسنًا"
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50
-#: src/views/site/ngx_conf/NgxServer.vue:79
+#: src/views/site/ngx_conf/NgxServer.vue:82
 #: src/views/site/ngx_conf/NgxUpstream.vue:33
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:121
 #: src/views/site/site_list/SiteList.vue:121
 #: src/views/stream/components/RightSettings.vue:54
 #: src/views/stream/StreamList.vue:238
@@ -2919,7 +2928,7 @@ msgstr "متصل"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:212
+#: src/views/preference/Preference.vue:214
 msgid "OpenAI"
 msgstr "أوبن أي آي"
 
@@ -3200,7 +3209,7 @@ msgstr "إجراء"
 msgid "Pre-release"
 msgstr "ما قبل الإصدار"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:153
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:155
 msgid "Preference"
 msgstr "تفضيل"
 
@@ -3638,10 +3647,10 @@ msgstr "يعمل"
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/ConfigEditor.vue:277
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:229
+#: src/views/preference/Preference.vue:231
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:292
+#: src/views/site/site_edit/SiteEdit.vue:295
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/StreamEdit.vue:271
 msgid "Save"
@@ -3697,14 +3706,14 @@ msgstr "تم حفظ الموقع %{site} إلى %{node} بنجاح"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/components/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:125
+#: src/views/preference/Preference.vue:127
 msgid "Save successfully"
 msgstr "تم الحفظ بنجاح"
 
 #: src/views/config/ConfigEditor.vue:194
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:157
+#: src/views/site/site_edit/SiteEdit.vue:155
 #: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "تم الحفظ بنجاح"
@@ -3748,7 +3757,7 @@ msgstr ""
 msgid "Send"
 msgstr "إرسال"
 
-#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:158
+#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:160
 #, fuzzy
 msgid "Server"
 msgstr "معلومات الخادم"
@@ -3786,7 +3795,7 @@ msgstr ""
 "قم بتعيين خوادم الأسماء التكرارية لتجاوز خوادم الأسماء الخاصة بالنظام لخطوة "
 "تحدي DNS."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:114
+#: src/views/site/components/SiteStatusSegmented.vue:89
 #, fuzzy
 msgid "set to maintenance mode"
 msgstr "خطأ في تعطيل الموقع البعيد"
@@ -3953,8 +3962,8 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:65
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_edit/RightSettings.vue:55
-#: src/views/site/site_list/columns.tsx:89 src/views/stream/StreamList.vue:49
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90 src/views/stream/StreamList.vue:49
 msgid "Status"
 msgstr "الحالة"
 
@@ -4078,8 +4087,8 @@ msgstr "تمت مزامنة التكوين بنجاح"
 msgid "Sync Nodes"
 msgstr "مزامنة العقد"
 
-#: src/views/site/site_edit/RightSettings.vue:101
-#: src/views/site/site_edit/RightSettings.vue:88
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/stream/components/RightSettings.vue:111
 #: src/views/stream/components/RightSettings.vue:124
 msgid "Sync strategy"
@@ -4089,7 +4098,7 @@ msgstr "استراتيجية المزامنة"
 msgid "Sync to"
 msgstr "مزامنة إلى"
 
-#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/site/site_edit/RightSettings.vue:75
 #: src/views/stream/components/RightSettings.vue:108
 msgid "Synchronization"
 msgstr "مزامنة"
@@ -4126,7 +4135,7 @@ msgstr "غير موجود"
 msgid "Telegram"
 msgstr ""
 
-#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:188
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:190
 #: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "محطة"
@@ -4171,12 +4180,18 @@ msgid ""
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
 #, fuzzy
 msgid ""
 "The model name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
 msgstr "يجب أن يحتوي اسم النموذج على حروف وأرقام ويونيكود وشرطات ونقاط فقط."
 
+#: src/views/preference/OpenAISettings.vue:90
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
+msgstr ""
+
 #: src/views/preference/NodeSettings.vue:18
 #, fuzzy
 msgid ""
@@ -4480,8 +4495,8 @@ msgstr "تم التحديث بنجاح"
 #: src/views/config/configColumns.tsx:36 src/views/config/ConfigEditor.vue:331
 #: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
-#: src/views/site/site_edit/RightSettings.vue:75
-#: src/views/site/site_list/columns.tsx:82
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:69 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -4660,7 +4675,7 @@ msgstr ""
 "التشغيل. بشكل عام، لا تقم بتمكين هذا إلا إذا كنت في بيئة تطوير وتستخدم "
 "Pebble كسلطة شهادات."
 
-#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/site/site_edit/RightSettings.vue:81
 #, fuzzy
 msgid ""
 "When you enable/disable, delete, or save this site, the nodes set in the "

+ 81 - 66
app/src/language/de_DE/app.po

@@ -64,7 +64,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
 #: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:163
+#: src/views/site/ngx_conf/NgxServer.vue:166
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:182
 msgid "Add"
@@ -109,7 +109,7 @@ msgstr "Speichern erfolgreich"
 msgid "Additional"
 msgstr "Ort hinzufügen"
 
-#: src/views/site/site_edit/SiteEdit.vue:225
+#: src/views/site/site_edit/SiteEdit.vue:228
 #: src/views/stream/StreamEdit.vue:207
 msgid "Advance Mode"
 msgstr "Erweiterter Modus"
@@ -150,7 +150,7 @@ msgstr "API-Token"
 msgid "API Type"
 msgstr "API-Typ"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:166
 #, fuzzy
 msgid "App"
 msgstr "Anwenden"
@@ -267,7 +267,7 @@ msgstr "Versuche"
 msgid "Attempts"
 msgstr "Versuche"
 
-#: src/views/preference/Preference.vue:194
+#: src/views/preference/Preference.vue:196
 msgid "Auth"
 msgstr "Authentifizierung"
 
@@ -316,7 +316,7 @@ msgstr ""
 #: src/views/certificate/components/CertificateEditor.vue:257
 #: src/views/config/ConfigEditor.vue:268 src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:285
+#: src/views/site/site_edit/SiteEdit.vue:288
 #: src/views/stream/StreamEdit.vue:264
 msgid "Back"
 msgstr "Zurück"
@@ -370,13 +370,13 @@ msgid "Base information"
 msgstr "Basisinformationen"
 
 #: src/views/config/ConfigEditor.vue:296
-#: src/views/site/site_edit/RightSettings.vue:52
+#: src/views/site/site_edit/RightSettings.vue:43
 #: src/views/stream/components/RightSettings.vue:79
 #, fuzzy
 msgid "Basic"
 msgstr "Basic-Modus"
 
-#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/site/site_edit/SiteEdit.vue:231
 #: src/views/stream/StreamEdit.vue:210
 msgid "Basic Mode"
 msgstr "Basic-Modus"
@@ -474,10 +474,10 @@ msgstr ""
 #: src/components/StdDesign/StdDetail/StdDetail.vue:101
 #: src/views/preference/components/Passkey.vue:141
 #: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51
-#: src/views/site/ngx_conf/NgxServer.vue:80
+#: src/views/site/ngx_conf/NgxServer.vue:83
 #: src/views/site/ngx_conf/NgxUpstream.vue:34
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:122
 #: src/views/stream/components/RightSettings.vue:55
 msgid "Cancel"
 msgstr "Abbrechen"
@@ -501,7 +501,7 @@ msgstr ""
 msgid "Cannot remove initial user"
 msgstr "System-Startbenutzer"
 
-#: src/views/preference/Preference.vue:200
+#: src/views/preference/Preference.vue:202
 msgid "Cert"
 msgstr "Zertifikat"
 
@@ -573,7 +573,7 @@ msgid "Certificate renewed successfully"
 msgstr "Erfolgreich deaktiviert"
 
 #: src/views/certificate/components/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:60
+#: src/views/site/cert/Cert.vue:62
 #, fuzzy
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
@@ -601,7 +601,7 @@ msgstr "Challenge-Methode"
 msgid "Change Certificate"
 msgstr "Zertifikat ist gültig"
 
-#: src/views/site/cert/Cert.vue:79
+#: src/views/site/cert/Cert.vue:81
 #, fuzzy
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
@@ -705,6 +705,10 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #, fuzzy
 msgid "Command"
@@ -713,7 +717,7 @@ msgstr "Kommando"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:135
+#: src/views/site/ngx_conf/NgxServer.vue:138
 msgid "Comments"
 msgstr "Kom"
 
@@ -919,7 +923,7 @@ msgid "Current Version"
 msgstr "Aktuelle Version"
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:194
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
 msgid "Custom"
 msgstr "Benutzerdefiniert"
 
@@ -955,7 +959,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
-#: src/views/site/ngx_conf/NgxServer.vue:110
+#: src/views/site/ngx_conf/NgxServer.vue:113
 #: src/views/site/ngx_conf/NgxUpstream.vue:128
 #: src/views/site/site_list/SiteList.vue:131
 #: src/views/stream/StreamList.vue:248
@@ -1083,7 +1087,7 @@ msgstr "Anweisung"
 msgid "Directory path to store cache files"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
+#: src/views/site/components/SiteStatusSegmented.vue:88
 #, fuzzy
 msgid "disable"
 msgstr "Deaktiviert"
@@ -1162,14 +1166,14 @@ msgstr "Speichern erfolgreich"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:159
-#: src/views/site/site_edit/SiteEdit.vue:199
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
 #: src/views/site/site_list/columns.tsx:111 src/views/stream/StreamEdit.vue:182
 #: src/views/stream/StreamList.vue:60 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Deaktiviert"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:56
+#: src/views/site/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:42
 #: src/views/stream/StreamList.vue:98
 msgid "Disabled successfully"
@@ -1199,7 +1203,7 @@ msgstr ""
 "Aktiviere diese Option nicht, es sei denn, du bist sicher, dass du sie "
 "benötigst."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:118
+#: src/views/site/components/SiteStatusSegmented.vue:93
 #, fuzzy
 msgid "Do you want to %{action} this site?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
@@ -1223,7 +1227,7 @@ msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 msgid "Do you want to enable TLS?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 
-#: src/views/site/ngx_conf/NgxServer.vue:76
+#: src/views/site/ngx_conf/NgxServer.vue:79
 #, fuzzy
 msgid "Do you want to remove this server?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
@@ -1291,7 +1295,7 @@ msgstr "Erfolgreich dupliziert"
 msgid "Edit"
 msgstr "Bearbeiten %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:188
+#: src/views/site/site_edit/SiteEdit.vue:185
 #: src/views/stream/StreamEdit.vue:171
 msgid "Edit %{n}"
 msgstr "Bearbeiten %{n}"
@@ -1319,7 +1323,7 @@ msgstr "Email (*)"
 msgid "Email (*)"
 msgstr "Email (*)"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:112
+#: src/views/site/components/SiteStatusSegmented.vue:87
 #, fuzzy
 msgid "enable"
 msgstr "Aktivieren"
@@ -1338,6 +1342,10 @@ msgstr "Aktivieren erfolgreich"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Aktiviere automatische Verlängerung fehlgeschlagen für %{name}"
 
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr ""
+
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgstr ""
@@ -1419,7 +1427,7 @@ msgstr "Erfolgreich gespeichert"
 msgid "Enable stub_status module"
 msgstr ""
 
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:183
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
 msgid "Enable TLS"
 msgstr "Aktiviere TLS"
 
@@ -1434,8 +1442,8 @@ msgstr "Aktiviere TLS"
 #: src/views/preference/LogrotateSettings.vue:19
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:155
-#: src/views/site/site_edit/SiteEdit.vue:193
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:110
 #: src/views/stream/components/RightSettings.vue:81
 #: src/views/stream/StreamEdit.vue:176 src/views/stream/StreamList.vue:56
@@ -1443,8 +1451,8 @@ msgstr "Aktiviere TLS"
 msgid "Enabled"
 msgstr "Aktiviert"
 
+#: src/views/site/components/SiteStatusSegmented.vue:27
 #: src/views/site/site_add/SiteAdd.vue:40
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:33
 #: src/views/stream/StreamList.vue:88
 msgid "Enabled successfully"
@@ -1506,7 +1514,7 @@ msgid "Export"
 msgstr "Exportieren"
 
 #: src/views/preference/ExternalNotify.vue:10
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:172
 msgid "External Notify"
 msgstr ""
 
@@ -1654,24 +1662,24 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Zertifikat ist gültig"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:63
+#: src/views/site/components/SiteStatusSegmented.vue:46
 #: src/views/stream/components/RightSettings.vue:45
 #: src/views/stream/StreamList.vue:102
 msgid "Failed to disable %{msg}"
 msgstr "Deaktivierung von %{msg} fehlgeschlagen"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:95
+#: src/views/site/components/SiteStatusSegmented.vue:72
 #, fuzzy
 msgid "Failed to disable maintenance mode %{msg}"
 msgstr "Deaktivierung von %{msg} fehlgeschlagen"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:47
+#: src/views/site/components/SiteStatusSegmented.vue:33
 #: src/views/stream/components/RightSettings.vue:36
 #: src/views/stream/StreamList.vue:92
 msgid "Failed to enable %{msg}"
 msgstr "Aktiviern von %{msg} fehlgeschlagen"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:79
+#: src/views/site/components/SiteStatusSegmented.vue:59
 #, fuzzy
 msgid "Failed to enable maintenance mode %{msg}"
 msgstr "Aktiviern von %{msg} fehlgeschlagen"
@@ -1792,7 +1800,7 @@ msgstr "Zertifikat ist gültig"
 msgid "Failed to save Nginx performance settings"
 msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
 
-#: src/views/site/site_edit/SiteEdit.vue:139
+#: src/views/site/site_edit/SiteEdit.vue:137
 #: src/views/stream/StreamEdit.vue:122
 msgid "Failed to save, syntax error(s) was detected in the configuration."
 msgstr ""
@@ -1948,7 +1956,7 @@ msgid "Higher value means better connection reuse"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:256
-#: src/views/site/site_edit/SiteEdit.vue:212
+#: src/views/site/site_edit/SiteEdit.vue:215
 #: src/views/stream/StreamEdit.vue:195
 msgid "History"
 msgstr ""
@@ -1961,7 +1969,7 @@ msgstr "Startseite"
 msgid "Host"
 msgstr ""
 
-#: src/views/preference/Preference.vue:182
+#: src/views/preference/Preference.vue:184
 msgid "HTTP"
 msgstr ""
 
@@ -2357,7 +2365,7 @@ msgstr "Login erfolgreich"
 msgid "Logout successful"
 msgstr "Logout erfolgreich"
 
-#: src/views/preference/Preference.vue:218
+#: src/views/preference/Preference.vue:220
 msgid "Logrotate"
 msgstr "Logrotate"
 
@@ -2377,17 +2385,18 @@ msgstr ""
 "Der Crontab-Aufgabenplaner von Nginx UI führt den Logrotate-Befehl in dem "
 "von dir in Minuten festgelegten Intervall aus."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:163
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
 #: src/views/site/site_list/columns.tsx:112
 msgid "Maintenance"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:88
+#: src/views/site/components/SiteStatusSegmented.vue:66
 #, fuzzy
 msgid "Maintenance mode disabled successfully"
 msgstr "Erfolgreich deaktiviert"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:72
+#: src/views/site/components/SiteStatusSegmented.vue:53
 #, fuzzy
 msgid "Maintenance mode enabled successfully"
 msgstr "Erfolgreich aktiviert"
@@ -2578,8 +2587,8 @@ msgstr "Einzelne Anweisung"
 #: src/views/nginx_log/NginxLogList.vue:33
 #: src/views/preference/components/AddPasskey.vue:75
 #: src/views/site/ngx_conf/NgxUpstream.vue:177
-#: src/views/site/site_edit/RightSettings.vue:63
-#: src/views/site/site_list/columns.tsx:17
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/components/RightSettings.vue:87
 #: src/views/stream/components/StreamDuplicate.vue:71
@@ -2632,7 +2641,7 @@ msgstr "Neue Version veröffentlicht"
 msgid "Next"
 msgstr "Nächster"
 
-#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:206
+#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:208
 msgid "Nginx"
 msgstr ""
 
@@ -2684,7 +2693,7 @@ msgstr "Nginx-Log-Verzeichnis-Whitelist"
 msgid "Nginx configuration has been restored"
 msgstr "Name der Konfiguration"
 
-#: src/views/site/site_edit/SiteEdit.vue:244
+#: src/views/site/site_edit/SiteEdit.vue:247
 #: src/views/stream/StreamEdit.vue:226
 #, fuzzy
 msgid "Nginx Configuration Parse Error"
@@ -2828,13 +2837,13 @@ msgstr ""
 msgid "No records selected"
 msgstr ""
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:178
 #, fuzzy
 msgid "Node"
 msgstr "Benuztername"
 
-#: src/views/site/site_edit/RightSettings.vue:66
-#: src/views/site/site_list/columns.tsx:65
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:32
 #, fuzzy
@@ -2878,7 +2887,7 @@ msgstr "Nich gültig vor: %{date}"
 msgid "Note"
 msgstr "Notiz"
 
-#: src/views/site/site_edit/RightSettings.vue:95
+#: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
 msgid ""
 "Note, if the configuration file include other configurations or "
@@ -2970,10 +2979,10 @@ msgstr "OK"
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50
-#: src/views/site/ngx_conf/NgxServer.vue:79
+#: src/views/site/ngx_conf/NgxServer.vue:82
 #: src/views/site/ngx_conf/NgxUpstream.vue:33
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:121
 #: src/views/site/site_list/SiteList.vue:121
 #: src/views/stream/components/RightSettings.vue:54
 #: src/views/stream/StreamList.vue:238
@@ -3003,7 +3012,7 @@ msgstr ""
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:212
+#: src/views/preference/Preference.vue:214
 msgid "OpenAI"
 msgstr ""
 
@@ -3296,7 +3305,7 @@ msgstr "Aktionen"
 msgid "Pre-release"
 msgstr "Vorabversion"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:153
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:155
 msgid "Preference"
 msgstr "Einstellungen"
 
@@ -3757,10 +3766,10 @@ msgstr "Arbeite"
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/ConfigEditor.vue:277
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:229
+#: src/views/preference/Preference.vue:231
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:292
+#: src/views/site/site_edit/SiteEdit.vue:295
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/StreamEdit.vue:271
 msgid "Save"
@@ -3818,7 +3827,7 @@ msgstr "Speichern erfolgreich"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/components/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:125
+#: src/views/preference/Preference.vue:127
 #, fuzzy
 msgid "Save successfully"
 msgstr "Speichern erfolgreich"
@@ -3826,7 +3835,7 @@ msgstr "Speichern erfolgreich"
 #: src/views/config/ConfigEditor.vue:194
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:157
+#: src/views/site/site_edit/SiteEdit.vue:155
 #: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "Speichern erfolgreich"
@@ -3871,7 +3880,7 @@ msgstr ""
 msgid "Send"
 msgstr "Senden"
 
-#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:158
+#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:160
 #, fuzzy
 msgid "Server"
 msgstr "Serverinformationen"
@@ -3909,7 +3918,7 @@ msgstr ""
 "Setze die rekursiven Nameserver, um die System-Nameserver für den Schritt "
 "der DNS-Herausforderung zu überschreiben."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:114
+#: src/views/site/components/SiteStatusSegmented.vue:89
 #, fuzzy
 msgid "set to maintenance mode"
 msgstr "Zertifikat ist gültig"
@@ -4081,8 +4090,8 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:65
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_edit/RightSettings.vue:55
-#: src/views/site/site_list/columns.tsx:89 src/views/stream/StreamList.vue:49
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90 src/views/stream/StreamList.vue:49
 msgid "Status"
 msgstr "Status"
 
@@ -4210,8 +4219,8 @@ msgstr "Zertifikat ist gültig"
 msgid "Sync Nodes"
 msgstr "Synchrone Knoten"
 
-#: src/views/site/site_edit/RightSettings.vue:101
-#: src/views/site/site_edit/RightSettings.vue:88
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/stream/components/RightSettings.vue:111
 #: src/views/stream/components/RightSettings.vue:124
 #, fuzzy
@@ -4222,7 +4231,7 @@ msgstr "Zertifikat ist gültig"
 msgid "Sync to"
 msgstr "Synchronisieren mit"
 
-#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/site/site_edit/RightSettings.vue:75
 #: src/views/stream/components/RightSettings.vue:108
 msgid "Synchronization"
 msgstr "Synchronisation"
@@ -4259,7 +4268,7 @@ msgstr "File Not Found"
 msgid "Telegram"
 msgstr ""
 
-#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:188
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:190
 #: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "Terminal"
@@ -4305,6 +4314,7 @@ msgid ""
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
 msgid ""
 "The model name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
@@ -4312,6 +4322,11 @@ msgstr ""
 "Der Modellname sollte nur Buchstaben, Unicode, Zahlen, Bindestriche, "
 "Doppelpunkte und Punkte enthalten."
 
+#: src/views/preference/OpenAISettings.vue:90
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
+msgstr ""
+
 #: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
@@ -4616,8 +4631,8 @@ msgstr "Speichern erfolgreich"
 #: src/views/config/configColumns.tsx:36 src/views/config/ConfigEditor.vue:331
 #: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
-#: src/views/site/site_edit/RightSettings.vue:75
-#: src/views/site/site_list/columns.tsx:82
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:69 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -4805,7 +4820,7 @@ msgstr ""
 "denn, du befindest dich in einer Entwicklerumgebung und verwendest Pebble "
 "als CA."
 
-#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/site/site_edit/RightSettings.vue:81
 #, fuzzy
 msgid ""
 "When you enable/disable, delete, or save this site, the nodes set in the "

+ 81 - 66
app/src/language/en/app.po

@@ -65,7 +65,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
 #: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:163
+#: src/views/site/ngx_conf/NgxServer.vue:166
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:182
 msgid "Add"
@@ -110,7 +110,7 @@ msgstr "Saved successfully"
 msgid "Additional"
 msgstr "Add Location"
 
-#: src/views/site/site_edit/SiteEdit.vue:225
+#: src/views/site/site_edit/SiteEdit.vue:228
 #: src/views/stream/StreamEdit.vue:207
 msgid "Advance Mode"
 msgstr "Advance Mode"
@@ -150,7 +150,7 @@ msgstr ""
 msgid "API Type"
 msgstr ""
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:166
 msgid "App"
 msgstr ""
 
@@ -264,7 +264,7 @@ msgstr ""
 msgid "Attempts"
 msgstr ""
 
-#: src/views/preference/Preference.vue:194
+#: src/views/preference/Preference.vue:196
 msgid "Auth"
 msgstr ""
 
@@ -313,7 +313,7 @@ msgstr ""
 #: src/views/certificate/components/CertificateEditor.vue:257
 #: src/views/config/ConfigEditor.vue:268 src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:285
+#: src/views/site/site_edit/SiteEdit.vue:288
 #: src/views/stream/StreamEdit.vue:264
 msgid "Back"
 msgstr "Back"
@@ -367,13 +367,13 @@ msgid "Base information"
 msgstr "Base information"
 
 #: src/views/config/ConfigEditor.vue:296
-#: src/views/site/site_edit/RightSettings.vue:52
+#: src/views/site/site_edit/RightSettings.vue:43
 #: src/views/stream/components/RightSettings.vue:79
 #, fuzzy
 msgid "Basic"
 msgstr "Basic Mode"
 
-#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/site/site_edit/SiteEdit.vue:231
 #: src/views/stream/StreamEdit.vue:210
 msgid "Basic Mode"
 msgstr "Basic Mode"
@@ -469,10 +469,10 @@ msgstr ""
 #: src/components/StdDesign/StdDetail/StdDetail.vue:101
 #: src/views/preference/components/Passkey.vue:141
 #: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51
-#: src/views/site/ngx_conf/NgxServer.vue:80
+#: src/views/site/ngx_conf/NgxServer.vue:83
 #: src/views/site/ngx_conf/NgxUpstream.vue:34
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:122
 #: src/views/stream/components/RightSettings.vue:55
 msgid "Cancel"
 msgstr "Cancel"
@@ -494,7 +494,7 @@ msgstr ""
 msgid "Cannot remove initial user"
 msgstr ""
 
-#: src/views/preference/Preference.vue:200
+#: src/views/preference/Preference.vue:202
 msgid "Cert"
 msgstr ""
 
@@ -566,7 +566,7 @@ msgid "Certificate renewed successfully"
 msgstr "Disabled successfully"
 
 #: src/views/certificate/components/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:60
+#: src/views/site/cert/Cert.vue:62
 #, fuzzy
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
@@ -594,7 +594,7 @@ msgstr ""
 msgid "Change Certificate"
 msgstr "Certificate is valid"
 
-#: src/views/site/cert/Cert.vue:79
+#: src/views/site/cert/Cert.vue:81
 #, fuzzy
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
@@ -698,6 +698,10 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #, fuzzy
 msgid "Command"
@@ -706,7 +710,7 @@ msgstr "Comments"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:135
+#: src/views/site/ngx_conf/NgxServer.vue:138
 msgid "Comments"
 msgstr "Comments"
 
@@ -910,7 +914,7 @@ msgid "Current Version"
 msgstr ""
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:194
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
 msgid "Custom"
 msgstr ""
 
@@ -945,7 +949,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
-#: src/views/site/ngx_conf/NgxServer.vue:110
+#: src/views/site/ngx_conf/NgxServer.vue:113
 #: src/views/site/ngx_conf/NgxUpstream.vue:128
 #: src/views/site/site_list/SiteList.vue:131
 #: src/views/stream/StreamList.vue:248
@@ -1073,7 +1077,7 @@ msgstr "Directives"
 msgid "Directory path to store cache files"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
+#: src/views/site/components/SiteStatusSegmented.vue:88
 #, fuzzy
 msgid "disable"
 msgstr "Disabled"
@@ -1152,14 +1156,14 @@ msgstr "Saved successfully"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:159
-#: src/views/site/site_edit/SiteEdit.vue:199
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
 #: src/views/site/site_list/columns.tsx:111 src/views/stream/StreamEdit.vue:182
 #: src/views/stream/StreamList.vue:60 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Disabled"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:56
+#: src/views/site/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:42
 #: src/views/stream/StreamList.vue:98
 msgid "Disabled successfully"
@@ -1187,7 +1191,7 @@ msgstr ""
 msgid "Do not enable this option unless you are sure that you need it."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:118
+#: src/views/site/components/SiteStatusSegmented.vue:93
 #, fuzzy
 msgid "Do you want to %{action} this site?"
 msgstr "Are you sure you want to remove this directive?"
@@ -1212,7 +1216,7 @@ msgstr "Are you sure you want to remove this directive?"
 msgid "Do you want to enable TLS?"
 msgstr "Are you sure you want to remove this directive?"
 
-#: src/views/site/ngx_conf/NgxServer.vue:76
+#: src/views/site/ngx_conf/NgxServer.vue:79
 #, fuzzy
 msgid "Do you want to remove this server?"
 msgstr "Are you sure you want to remove this directive?"
@@ -1276,7 +1280,7 @@ msgstr "Saved successfully"
 msgid "Edit"
 msgstr "Edit %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:188
+#: src/views/site/site_edit/SiteEdit.vue:185
 #: src/views/stream/StreamEdit.vue:171
 msgid "Edit %{n}"
 msgstr "Edit %{n}"
@@ -1304,7 +1308,7 @@ msgstr "Email (*)"
 msgid "Email (*)"
 msgstr "Email (*)"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:112
+#: src/views/site/components/SiteStatusSegmented.vue:87
 #, fuzzy
 msgid "enable"
 msgstr "Enabled"
@@ -1323,6 +1327,10 @@ msgstr "Enabled successfully"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Enable auto-renewal failed for %{name}"
 
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr ""
+
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgstr ""
@@ -1404,7 +1412,7 @@ msgstr "Saved successfully"
 msgid "Enable stub_status module"
 msgstr ""
 
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:183
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
 msgid "Enable TLS"
 msgstr "Enable TLS"
 
@@ -1419,8 +1427,8 @@ msgstr "Enable TLS"
 #: src/views/preference/LogrotateSettings.vue:19
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:155
-#: src/views/site/site_edit/SiteEdit.vue:193
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:110
 #: src/views/stream/components/RightSettings.vue:81
 #: src/views/stream/StreamEdit.vue:176 src/views/stream/StreamList.vue:56
@@ -1428,8 +1436,8 @@ msgstr "Enable TLS"
 msgid "Enabled"
 msgstr "Enabled"
 
+#: src/views/site/components/SiteStatusSegmented.vue:27
 #: src/views/site/site_add/SiteAdd.vue:40
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:33
 #: src/views/stream/StreamList.vue:88
 msgid "Enabled successfully"
@@ -1490,7 +1498,7 @@ msgid "Export"
 msgstr ""
 
 #: src/views/preference/ExternalNotify.vue:10
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:172
 msgid "External Notify"
 msgstr ""
 
@@ -1639,24 +1647,24 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Certificate is valid"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:63
+#: src/views/site/components/SiteStatusSegmented.vue:46
 #: src/views/stream/components/RightSettings.vue:45
 #: src/views/stream/StreamList.vue:102
 msgid "Failed to disable %{msg}"
 msgstr "Failed to disable %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:95
+#: src/views/site/components/SiteStatusSegmented.vue:72
 #, fuzzy
 msgid "Failed to disable maintenance mode %{msg}"
 msgstr "Failed to disable %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:47
+#: src/views/site/components/SiteStatusSegmented.vue:33
 #: src/views/stream/components/RightSettings.vue:36
 #: src/views/stream/StreamList.vue:92
 msgid "Failed to enable %{msg}"
 msgstr "Failed to enable %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:79
+#: src/views/site/components/SiteStatusSegmented.vue:59
 #, fuzzy
 msgid "Failed to enable maintenance mode %{msg}"
 msgstr "Failed to enable %{msg}"
@@ -1782,7 +1790,7 @@ msgstr "Certificate is valid"
 msgid "Failed to save Nginx performance settings"
 msgstr "Certificate is valid"
 
-#: src/views/site/site_edit/SiteEdit.vue:139
+#: src/views/site/site_edit/SiteEdit.vue:137
 #: src/views/stream/StreamEdit.vue:122
 msgid "Failed to save, syntax error(s) was detected in the configuration."
 msgstr ""
@@ -1934,7 +1942,7 @@ msgid "Higher value means better connection reuse"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:256
-#: src/views/site/site_edit/SiteEdit.vue:212
+#: src/views/site/site_edit/SiteEdit.vue:215
 #: src/views/stream/StreamEdit.vue:195
 #, fuzzy
 msgid "History"
@@ -1948,7 +1956,7 @@ msgstr "Home"
 msgid "Host"
 msgstr ""
 
-#: src/views/preference/Preference.vue:182
+#: src/views/preference/Preference.vue:184
 msgid "HTTP"
 msgstr ""
 
@@ -2336,7 +2344,7 @@ msgstr "Login successful"
 msgid "Logout successful"
 msgstr "Logout successful"
 
-#: src/views/preference/Preference.vue:218
+#: src/views/preference/Preference.vue:220
 msgid "Logrotate"
 msgstr ""
 
@@ -2350,17 +2358,18 @@ msgid ""
 "minutes."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:163
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
 #: src/views/site/site_list/columns.tsx:112
 msgid "Maintenance"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:88
+#: src/views/site/components/SiteStatusSegmented.vue:66
 #, fuzzy
 msgid "Maintenance mode disabled successfully"
 msgstr "Disabled successfully"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:72
+#: src/views/site/components/SiteStatusSegmented.vue:53
 #, fuzzy
 msgid "Maintenance mode enabled successfully"
 msgstr "Enabled successfully"
@@ -2550,8 +2559,8 @@ msgstr "Single Directive"
 #: src/views/nginx_log/NginxLogList.vue:33
 #: src/views/preference/components/AddPasskey.vue:75
 #: src/views/site/ngx_conf/NgxUpstream.vue:177
-#: src/views/site/site_edit/RightSettings.vue:63
-#: src/views/site/site_list/columns.tsx:17
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/components/RightSettings.vue:87
 #: src/views/stream/components/StreamDuplicate.vue:71
@@ -2604,7 +2613,7 @@ msgstr ""
 msgid "Next"
 msgstr "Next"
 
-#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:206
+#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:208
 msgid "Nginx"
 msgstr ""
 
@@ -2655,7 +2664,7 @@ msgstr "Configuration Name"
 msgid "Nginx configuration has been restored"
 msgstr "Configuration Name"
 
-#: src/views/site/site_edit/SiteEdit.vue:244
+#: src/views/site/site_edit/SiteEdit.vue:247
 #: src/views/stream/StreamEdit.vue:226
 #, fuzzy
 msgid "Nginx Configuration Parse Error"
@@ -2797,13 +2806,13 @@ msgstr ""
 msgid "No records selected"
 msgstr ""
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:178
 #, fuzzy
 msgid "Node"
 msgstr "Username"
 
-#: src/views/site/site_edit/RightSettings.vue:66
-#: src/views/site/site_list/columns.tsx:65
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:32
 #, fuzzy
@@ -2848,7 +2857,7 @@ msgstr "Not Valid Before: %{date}"
 msgid "Note"
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:95
+#: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
 msgid ""
 "Note, if the configuration file include other configurations or "
@@ -2935,10 +2944,10 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50
-#: src/views/site/ngx_conf/NgxServer.vue:79
+#: src/views/site/ngx_conf/NgxServer.vue:82
 #: src/views/site/ngx_conf/NgxUpstream.vue:33
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:121
 #: src/views/site/site_list/SiteList.vue:121
 #: src/views/stream/components/RightSettings.vue:54
 #: src/views/stream/StreamList.vue:238
@@ -2967,7 +2976,7 @@ msgstr ""
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:212
+#: src/views/preference/Preference.vue:214
 msgid "OpenAI"
 msgstr ""
 
@@ -3240,7 +3249,7 @@ msgstr "Action"
 msgid "Pre-release"
 msgstr ""
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:153
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:155
 msgid "Preference"
 msgstr ""
 
@@ -3699,10 +3708,10 @@ msgstr ""
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/ConfigEditor.vue:277
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:229
+#: src/views/preference/Preference.vue:231
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:292
+#: src/views/site/site_edit/SiteEdit.vue:295
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/StreamEdit.vue:271
 msgid "Save"
@@ -3760,7 +3769,7 @@ msgstr "Saved successfully"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/components/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:125
+#: src/views/preference/Preference.vue:127
 #, fuzzy
 msgid "Save successfully"
 msgstr "Saved successfully"
@@ -3768,7 +3777,7 @@ msgstr "Saved successfully"
 #: src/views/config/ConfigEditor.vue:194
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:157
+#: src/views/site/site_edit/SiteEdit.vue:155
 #: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "Saved successfully"
@@ -3813,7 +3822,7 @@ msgstr ""
 msgid "Send"
 msgstr "Send"
 
-#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:158
+#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:160
 #, fuzzy
 msgid "Server"
 msgstr "Server Info"
@@ -3849,7 +3858,7 @@ msgid ""
 "step of DNS challenge."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:114
+#: src/views/site/components/SiteStatusSegmented.vue:89
 #, fuzzy
 msgid "set to maintenance mode"
 msgstr "Certificate is valid"
@@ -4023,8 +4032,8 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:65
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_edit/RightSettings.vue:55
-#: src/views/site/site_list/columns.tsx:89 src/views/stream/StreamList.vue:49
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90 src/views/stream/StreamList.vue:49
 msgid "Status"
 msgstr "Status"
 
@@ -4154,8 +4163,8 @@ msgstr "Certificate is valid"
 msgid "Sync Nodes"
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:101
-#: src/views/site/site_edit/RightSettings.vue:88
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/stream/components/RightSettings.vue:111
 #: src/views/stream/components/RightSettings.vue:124
 #, fuzzy
@@ -4167,7 +4176,7 @@ msgstr "Certificate is valid"
 msgid "Sync to"
 msgstr "Certificate is valid"
 
-#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/site/site_edit/RightSettings.vue:75
 #: src/views/stream/components/RightSettings.vue:108
 msgid "Synchronization"
 msgstr ""
@@ -4202,7 +4211,7 @@ msgstr "File Not Found"
 msgid "Telegram"
 msgstr ""
 
-#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:188
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:190
 #: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "Terminal"
@@ -4247,11 +4256,17 @@ msgid ""
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
 msgid ""
 "The model name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:90
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
+msgstr ""
+
 #: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
@@ -4536,8 +4551,8 @@ msgstr "Saved successfully"
 #: src/views/config/configColumns.tsx:36 src/views/config/ConfigEditor.vue:331
 #: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
-#: src/views/site/site_edit/RightSettings.vue:75
-#: src/views/site/site_list/columns.tsx:82
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:69 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -4719,7 +4734,7 @@ msgid ""
 "Pebble as CA."
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/site/site_edit/RightSettings.vue:81
 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."

+ 81 - 66
app/src/language/es/app.po

@@ -70,7 +70,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
 #: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:163
+#: src/views/site/ngx_conf/NgxServer.vue:166
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:182
 msgid "Add"
@@ -111,7 +111,7 @@ msgstr "Agregado exitoso"
 msgid "Additional"
 msgstr "Adicional"
 
-#: src/views/site/site_edit/SiteEdit.vue:225
+#: src/views/site/site_edit/SiteEdit.vue:228
 #: src/views/stream/StreamEdit.vue:207
 msgid "Advance Mode"
 msgstr "Modo avanzado"
@@ -153,7 +153,7 @@ msgstr "Token de la API"
 msgid "API Type"
 msgstr "Token de la API"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:166
 msgid "App"
 msgstr ""
 
@@ -258,7 +258,7 @@ msgstr "Intentos"
 msgid "Attempts"
 msgstr "Intentos"
 
-#: src/views/preference/Preference.vue:194
+#: src/views/preference/Preference.vue:196
 msgid "Auth"
 msgstr "Autenticación"
 
@@ -307,7 +307,7 @@ msgstr ""
 #: src/views/certificate/components/CertificateEditor.vue:257
 #: src/views/config/ConfigEditor.vue:268 src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:285
+#: src/views/site/site_edit/SiteEdit.vue:288
 #: src/views/stream/StreamEdit.vue:264
 msgid "Back"
 msgstr "Volver"
@@ -360,12 +360,12 @@ msgid "Base information"
 msgstr "Información general"
 
 #: src/views/config/ConfigEditor.vue:296
-#: src/views/site/site_edit/RightSettings.vue:52
+#: src/views/site/site_edit/RightSettings.vue:43
 #: src/views/stream/components/RightSettings.vue:79
 msgid "Basic"
 msgstr "Básico"
 
-#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/site/site_edit/SiteEdit.vue:231
 #: src/views/stream/StreamEdit.vue:210
 msgid "Basic Mode"
 msgstr "Modo Básico"
@@ -463,10 +463,10 @@ msgstr ""
 #: src/components/StdDesign/StdDetail/StdDetail.vue:101
 #: src/views/preference/components/Passkey.vue:141
 #: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51
-#: src/views/site/ngx_conf/NgxServer.vue:80
+#: src/views/site/ngx_conf/NgxServer.vue:83
 #: src/views/site/ngx_conf/NgxUpstream.vue:34
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:122
 #: src/views/stream/components/RightSettings.vue:55
 msgid "Cancel"
 msgstr "Cancelar"
@@ -490,7 +490,7 @@ msgstr ""
 msgid "Cannot remove initial user"
 msgstr "Usuario inicial del sistema"
 
-#: src/views/preference/Preference.vue:200
+#: src/views/preference/Preference.vue:202
 msgid "Cert"
 msgstr "Certificado"
 
@@ -561,7 +561,7 @@ msgid "Certificate renewed successfully"
 msgstr "Limpiado exitoso"
 
 #: src/views/certificate/components/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:60
+#: src/views/site/cert/Cert.vue:62
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "Estado del Certificado"
@@ -585,7 +585,7 @@ msgstr "Método de desafío"
 msgid "Change Certificate"
 msgstr "Cambiar Certificado"
 
-#: src/views/site/cert/Cert.vue:79
+#: src/views/site/cert/Cert.vue:81
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] "Cambiar Certificado"
@@ -686,6 +686,10 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgstr "Comando"
@@ -693,7 +697,7 @@ msgstr "Comando"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:135
+#: src/views/site/ngx_conf/NgxServer.vue:138
 msgid "Comments"
 msgstr "Comentarios"
 
@@ -894,7 +898,7 @@ msgid "Current Version"
 msgstr "Versión actual"
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:194
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
 msgid "Custom"
 msgstr "Personalizado"
 
@@ -931,7 +935,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
-#: src/views/site/ngx_conf/NgxServer.vue:110
+#: src/views/site/ngx_conf/NgxServer.vue:113
 #: src/views/site/ngx_conf/NgxUpstream.vue:128
 #: src/views/site/site_list/SiteList.vue:131
 #: src/views/stream/StreamList.vue:248
@@ -1056,7 +1060,7 @@ msgstr "Directivas"
 msgid "Directory path to store cache files"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
+#: src/views/site/components/SiteStatusSegmented.vue:88
 #, fuzzy
 msgid "disable"
 msgstr "Desactivar"
@@ -1132,14 +1136,14 @@ msgstr "Habilitado exitoso de %{conf_name} en %{node_name}"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:159
-#: src/views/site/site_edit/SiteEdit.vue:199
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
 #: src/views/site/site_list/columns.tsx:111 src/views/stream/StreamEdit.vue:182
 #: src/views/stream/StreamList.vue:60 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Desactivado"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:56
+#: src/views/site/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:42
 #: src/views/stream/StreamList.vue:98
 msgid "Disabled successfully"
@@ -1167,7 +1171,7 @@ msgstr "DNS01"
 msgid "Do not enable this option unless you are sure that you need it."
 msgstr "No habilite esta opción a menos que esté seguro de que la necesita."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:118
+#: src/views/site/components/SiteStatusSegmented.vue:93
 #, fuzzy
 msgid "Do you want to %{action} this site?"
 msgstr "¿Quieres habilitar este sitio?"
@@ -1188,7 +1192,7 @@ msgstr "¿Quieres habilitar esta transmisión?"
 msgid "Do you want to enable TLS?"
 msgstr "¿Quieres habilitar TLS?"
 
-#: src/views/site/ngx_conf/NgxServer.vue:76
+#: src/views/site/ngx_conf/NgxServer.vue:79
 msgid "Do you want to remove this server?"
 msgstr "¿Quieres eliminar este servidor?"
 
@@ -1253,7 +1257,7 @@ msgstr "Duplicado con éxito a local"
 msgid "Edit"
 msgstr "Editar %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:188
+#: src/views/site/site_edit/SiteEdit.vue:185
 #: src/views/stream/StreamEdit.vue:171
 msgid "Edit %{n}"
 msgstr "Editar %{n}"
@@ -1279,7 +1283,7 @@ msgstr "Correo"
 msgid "Email (*)"
 msgstr "Correo (*)"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:112
+#: src/views/site/components/SiteStatusSegmented.vue:87
 #, fuzzy
 msgid "enable"
 msgstr "Habilitar"
@@ -1296,6 +1300,10 @@ msgstr "Habilitar 2FA exitoso"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "No se pudo activar la renovación automática por %{name}"
 
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr ""
+
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgstr ""
@@ -1377,7 +1385,7 @@ msgstr "Habilitado exitoso de %{conf_name} en %{node_name}"
 msgid "Enable stub_status module"
 msgstr ""
 
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:183
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
 msgid "Enable TLS"
 msgstr "Habilitar TLS"
 
@@ -1392,8 +1400,8 @@ msgstr "Habilitar TLS"
 #: src/views/preference/LogrotateSettings.vue:19
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:155
-#: src/views/site/site_edit/SiteEdit.vue:193
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:110
 #: src/views/stream/components/RightSettings.vue:81
 #: src/views/stream/StreamEdit.vue:176 src/views/stream/StreamList.vue:56
@@ -1401,8 +1409,8 @@ msgstr "Habilitar TLS"
 msgid "Enabled"
 msgstr "Habilitado"
 
+#: src/views/site/components/SiteStatusSegmented.vue:27
 #: src/views/site/site_add/SiteAdd.vue:40
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:33
 #: src/views/stream/StreamList.vue:88
 msgid "Enabled successfully"
@@ -1462,7 +1470,7 @@ msgid "Export"
 msgstr "Exportar"
 
 #: src/views/preference/ExternalNotify.vue:10
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:172
 msgid "External Notify"
 msgstr ""
 
@@ -1609,24 +1617,24 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Falla al obtener el certificado"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:63
+#: src/views/site/components/SiteStatusSegmented.vue:46
 #: src/views/stream/components/RightSettings.vue:45
 #: src/views/stream/StreamList.vue:102
 msgid "Failed to disable %{msg}"
 msgstr "Error al deshabilitar %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:95
+#: src/views/site/components/SiteStatusSegmented.vue:72
 #, fuzzy
 msgid "Failed to disable maintenance mode %{msg}"
 msgstr "Error al deshabilitar %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:47
+#: src/views/site/components/SiteStatusSegmented.vue:33
 #: src/views/stream/components/RightSettings.vue:36
 #: src/views/stream/StreamList.vue:92
 msgid "Failed to enable %{msg}"
 msgstr "Error al habilitar %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:79
+#: src/views/site/components/SiteStatusSegmented.vue:59
 #, fuzzy
 msgid "Failed to enable maintenance mode %{msg}"
 msgstr "Error al habilitar %{msg}"
@@ -1747,7 +1755,7 @@ msgstr "Falla al obtener el certificado"
 msgid "Failed to save Nginx performance settings"
 msgstr "No se pudo obtener la información del certificado"
 
-#: src/views/site/site_edit/SiteEdit.vue:139
+#: src/views/site/site_edit/SiteEdit.vue:137
 #: src/views/stream/StreamEdit.vue:122
 msgid "Failed to save, syntax error(s) was detected in the configuration."
 msgstr ""
@@ -1899,7 +1907,7 @@ msgid "Higher value means better connection reuse"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:256
-#: src/views/site/site_edit/SiteEdit.vue:212
+#: src/views/site/site_edit/SiteEdit.vue:215
 #: src/views/stream/StreamEdit.vue:195
 #, fuzzy
 msgid "History"
@@ -1914,7 +1922,7 @@ msgstr "Inicio"
 msgid "Host"
 msgstr "Host HTTP"
 
-#: src/views/preference/Preference.vue:182
+#: src/views/preference/Preference.vue:184
 #, fuzzy
 msgid "HTTP"
 msgstr "HTTP01"
@@ -2296,7 +2304,7 @@ msgstr "Acceso exitoso"
 msgid "Logout successful"
 msgstr "Cierre de sesión exitoso"
 
-#: src/views/preference/Preference.vue:218
+#: src/views/preference/Preference.vue:220
 msgid "Logrotate"
 msgstr "Rotación de logs"
 
@@ -2317,17 +2325,18 @@ msgstr ""
 "de Nginx UI ejecutará el comando logrotate en el intervalo que establezca en "
 "minutos."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:163
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
 #: src/views/site/site_list/columns.tsx:112
 msgid "Maintenance"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:88
+#: src/views/site/components/SiteStatusSegmented.vue:66
 #, fuzzy
 msgid "Maintenance mode disabled successfully"
 msgstr "Desactivado con éxito"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:72
+#: src/views/site/components/SiteStatusSegmented.vue:53
 #, fuzzy
 msgid "Maintenance mode enabled successfully"
 msgstr "Habilitado con éxito"
@@ -2509,8 +2518,8 @@ msgstr "Directiva multilínea"
 #: src/views/nginx_log/NginxLogList.vue:33
 #: src/views/preference/components/AddPasskey.vue:75
 #: src/views/site/ngx_conf/NgxUpstream.vue:177
-#: src/views/site/site_edit/RightSettings.vue:63
-#: src/views/site/site_list/columns.tsx:17
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/components/RightSettings.vue:87
 #: src/views/stream/components/StreamDuplicate.vue:71
@@ -2561,7 +2570,7 @@ msgstr "Se liberó una nueva versión"
 msgid "Next"
 msgstr "Siguiente"
 
-#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:206
+#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:208
 msgid "Nginx"
 msgstr "Nginx"
 
@@ -2613,7 +2622,7 @@ msgstr "Lista blanca de directorios de registro de Nginx"
 msgid "Nginx configuration has been restored"
 msgstr "Error de análisis de configuración de Nginx"
 
-#: src/views/site/site_edit/SiteEdit.vue:244
+#: src/views/site/site_edit/SiteEdit.vue:247
 #: src/views/stream/StreamEdit.vue:226
 msgid "Nginx Configuration Parse Error"
 msgstr "Error de análisis de configuración de Nginx"
@@ -2756,13 +2765,13 @@ msgstr ""
 msgid "No records selected"
 msgstr ""
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:178
 #, fuzzy
 msgid "Node"
 msgstr "Nuevo nombre"
 
-#: src/views/site/site_edit/RightSettings.vue:66
-#: src/views/site/site_list/columns.tsx:65
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:32
 #, fuzzy
@@ -2806,7 +2815,7 @@ msgstr "No válido antes: %{date}"
 msgid "Note"
 msgstr "Nota"
 
-#: src/views/site/site_edit/RightSettings.vue:95
+#: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
 msgid ""
 "Note, if the configuration file include other configurations or "
@@ -2895,10 +2904,10 @@ msgstr "Ok"
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50
-#: src/views/site/ngx_conf/NgxServer.vue:79
+#: src/views/site/ngx_conf/NgxServer.vue:82
 #: src/views/site/ngx_conf/NgxUpstream.vue:33
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:121
 #: src/views/site/site_list/SiteList.vue:121
 #: src/views/stream/components/RightSettings.vue:54
 #: src/views/stream/StreamList.vue:238
@@ -2927,7 +2936,7 @@ msgstr "En línea"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:212
+#: src/views/preference/Preference.vue:214
 msgid "OpenAI"
 msgstr "OpenAI"
 
@@ -3220,7 +3229,7 @@ msgstr "Acción"
 msgid "Pre-release"
 msgstr "Prelanzamiento"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:153
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:155
 msgid "Preference"
 msgstr "Configuración"
 
@@ -3666,10 +3675,10 @@ msgstr "Corriendo"
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/ConfigEditor.vue:277
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:229
+#: src/views/preference/Preference.vue:231
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:292
+#: src/views/site/site_edit/SiteEdit.vue:295
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/StreamEdit.vue:271
 msgid "Save"
@@ -3727,14 +3736,14 @@ msgstr "Duplicado con éxito de %{conf_name} a %{node_name}"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/components/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:125
+#: src/views/preference/Preference.vue:127
 msgid "Save successfully"
 msgstr "Guardado con éxito"
 
 #: src/views/config/ConfigEditor.vue:194
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:157
+#: src/views/site/site_edit/SiteEdit.vue:155
 #: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "Guardado con éxito"
@@ -3780,7 +3789,7 @@ msgstr ""
 msgid "Send"
 msgstr "Enviado"
 
-#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:158
+#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:160
 #, fuzzy
 msgid "Server"
 msgstr "Información del servidor"
@@ -3818,7 +3827,7 @@ msgstr ""
 "Establezca los servidores de nombres recursivos para anular los servidores "
 "de nombres del sistema en el paso del desafío DNS."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:114
+#: src/views/site/components/SiteStatusSegmented.vue:89
 #, fuzzy
 msgid "set to maintenance mode"
 msgstr "Error al deshabilitar el sitio remoto"
@@ -3983,8 +3992,8 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:65
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_edit/RightSettings.vue:55
-#: src/views/site/site_list/columns.tsx:89 src/views/stream/StreamList.vue:49
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90 src/views/stream/StreamList.vue:49
 msgid "Status"
 msgstr "Estado"
 
@@ -4108,8 +4117,8 @@ msgstr "Configuración de sincronización exitosa"
 msgid "Sync Nodes"
 msgstr "Sincronizar con"
 
-#: src/views/site/site_edit/RightSettings.vue:101
-#: src/views/site/site_edit/RightSettings.vue:88
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/stream/components/RightSettings.vue:111
 #: src/views/stream/components/RightSettings.vue:124
 #, fuzzy
@@ -4120,7 +4129,7 @@ msgstr "Sincronizar Certificado"
 msgid "Sync to"
 msgstr "Sincronizar con"
 
-#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/site/site_edit/RightSettings.vue:75
 #: src/views/stream/components/RightSettings.vue:108
 msgid "Synchronization"
 msgstr "Sincronización"
@@ -4157,7 +4166,7 @@ msgstr "Archivo no Encontrado"
 msgid "Telegram"
 msgstr ""
 
-#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:188
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:190
 #: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "Terminal"
@@ -4204,6 +4213,7 @@ msgid ""
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
 #, fuzzy
 msgid ""
 "The model name should only contain letters, unicode, numbers, hyphens, "
@@ -4212,6 +4222,11 @@ msgstr ""
 "El nombre del modelo solo debe contener letras, unicode, números, guiones, "
 "rayas y puntos."
 
+#: src/views/preference/OpenAISettings.vue:90
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
+msgstr ""
+
 #: src/views/preference/NodeSettings.vue:18
 #, fuzzy
 msgid ""
@@ -4522,8 +4537,8 @@ msgstr "Actualización exitosa"
 #: src/views/config/configColumns.tsx:36 src/views/config/ConfigEditor.vue:331
 #: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
-#: src/views/site/site_edit/RightSettings.vue:75
-#: src/views/site/site_list/columns.tsx:82
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:69 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -4704,7 +4719,7 @@ msgstr ""
 "los usuarios al iniciarse. Por lo general, no habilite esta opción a menos "
 "que se encuentre en un entorno de desarrollo y utilice Pebble como CA."
 
-#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/site/site_edit/RightSettings.vue:81
 #, fuzzy
 msgid ""
 "When you enable/disable, delete, or save this site, the nodes set in the "

+ 81 - 66
app/src/language/fr_FR/app.po

@@ -69,7 +69,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
 #: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:163
+#: src/views/site/ngx_conf/NgxServer.vue:166
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:182
 msgid "Add"
@@ -114,7 +114,7 @@ msgstr "Mis à jour avec succés"
 msgid "Additional"
 msgstr "Supplémentaire"
 
-#: src/views/site/site_edit/SiteEdit.vue:225
+#: src/views/site/site_edit/SiteEdit.vue:228
 #: src/views/stream/StreamEdit.vue:207
 msgid "Advance Mode"
 msgstr "Mode avancé"
@@ -156,7 +156,7 @@ msgstr "Jeton d'API"
 msgid "API Type"
 msgstr "Jeton d'API"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:166
 #, fuzzy
 msgid "App"
 msgstr "Appliquer"
@@ -270,7 +270,7 @@ msgstr "Tenter de corriger"
 msgid "Attempts"
 msgstr "Tentatives"
 
-#: src/views/preference/Preference.vue:194
+#: src/views/preference/Preference.vue:196
 #, fuzzy
 msgid "Auth"
 msgstr "Autheur"
@@ -320,7 +320,7 @@ msgstr ""
 #: src/views/certificate/components/CertificateEditor.vue:257
 #: src/views/config/ConfigEditor.vue:268 src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:285
+#: src/views/site/site_edit/SiteEdit.vue:288
 #: src/views/stream/StreamEdit.vue:264
 msgid "Back"
 msgstr "Retour"
@@ -373,12 +373,12 @@ msgid "Base information"
 msgstr "Information générale"
 
 #: src/views/config/ConfigEditor.vue:296
-#: src/views/site/site_edit/RightSettings.vue:52
+#: src/views/site/site_edit/RightSettings.vue:43
 #: src/views/stream/components/RightSettings.vue:79
 msgid "Basic"
 msgstr "Basique"
 
-#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/site/site_edit/SiteEdit.vue:231
 #: src/views/stream/StreamEdit.vue:210
 msgid "Basic Mode"
 msgstr "Mode simple"
@@ -477,10 +477,10 @@ msgstr ""
 #: src/components/StdDesign/StdDetail/StdDetail.vue:101
 #: src/views/preference/components/Passkey.vue:141
 #: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51
-#: src/views/site/ngx_conf/NgxServer.vue:80
+#: src/views/site/ngx_conf/NgxServer.vue:83
 #: src/views/site/ngx_conf/NgxUpstream.vue:34
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:122
 #: src/views/stream/components/RightSettings.vue:55
 msgid "Cancel"
 msgstr "Annuler"
@@ -503,7 +503,7 @@ msgstr ""
 msgid "Cannot remove initial user"
 msgstr "Impossible de retirer l'utilisateur initial"
 
-#: src/views/preference/Preference.vue:200
+#: src/views/preference/Preference.vue:202
 #, fuzzy
 msgid "Cert"
 msgstr "Auto Cert"
@@ -576,7 +576,7 @@ msgid "Certificate renewed successfully"
 msgstr "Désactivé avec succès"
 
 #: src/views/certificate/components/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:60
+#: src/views/site/cert/Cert.vue:62
 #, fuzzy
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
@@ -603,7 +603,7 @@ msgstr "Méthode de challenge"
 msgid "Change Certificate"
 msgstr "Changer de certificat"
 
-#: src/views/site/cert/Cert.vue:79
+#: src/views/site/cert/Cert.vue:81
 #, fuzzy
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
@@ -712,6 +712,10 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #, fuzzy
 msgid "Command"
@@ -720,7 +724,7 @@ msgstr "Commentaires"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:135
+#: src/views/site/ngx_conf/NgxServer.vue:138
 msgid "Comments"
 msgstr "Commentaires"
 
@@ -924,7 +928,7 @@ msgid "Current Version"
 msgstr "Version actuelle"
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:194
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
 msgid "Custom"
 msgstr "Custom"
 
@@ -961,7 +965,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
-#: src/views/site/ngx_conf/NgxServer.vue:110
+#: src/views/site/ngx_conf/NgxServer.vue:113
 #: src/views/site/ngx_conf/NgxUpstream.vue:128
 #: src/views/site/site_list/SiteList.vue:131
 #: src/views/stream/StreamList.vue:248
@@ -1091,7 +1095,7 @@ msgstr "Directives"
 msgid "Directory path to store cache files"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
+#: src/views/site/components/SiteStatusSegmented.vue:88
 #, fuzzy
 msgid "disable"
 msgstr "Désactivé"
@@ -1170,14 +1174,14 @@ msgstr "Dupliqué avec succès"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:159
-#: src/views/site/site_edit/SiteEdit.vue:199
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
 #: src/views/site/site_list/columns.tsx:111 src/views/stream/StreamEdit.vue:182
 #: src/views/stream/StreamList.vue:60 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Désactivé"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:56
+#: src/views/site/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:42
 #: src/views/stream/StreamList.vue:98
 msgid "Disabled successfully"
@@ -1206,7 +1210,7 @@ msgid "Do not enable this option unless you are sure that you need it."
 msgstr ""
 "N'activez pas cette option sauf si vous êtes sûr d'en avoir avez besoin."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:118
+#: src/views/site/components/SiteStatusSegmented.vue:93
 #, fuzzy
 msgid "Do you want to %{action} this site?"
 msgstr "Voulez-vous activer ce site ?"
@@ -1229,7 +1233,7 @@ msgstr "Voulez-vous activer ce site ?"
 msgid "Do you want to enable TLS?"
 msgstr "Voulez-vous activer TLS ?"
 
-#: src/views/site/ngx_conf/NgxServer.vue:76
+#: src/views/site/ngx_conf/NgxServer.vue:79
 msgid "Do you want to remove this server?"
 msgstr "Voulez-vous supprimer ce serveur ?"
 
@@ -1298,7 +1302,7 @@ msgstr "Dupliqué avec succès"
 msgid "Edit"
 msgstr "Modifier %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:188
+#: src/views/site/site_edit/SiteEdit.vue:185
 #: src/views/stream/StreamEdit.vue:171
 msgid "Edit %{n}"
 msgstr "Modifier %{n}"
@@ -1326,7 +1330,7 @@ msgstr "Email (*)"
 msgid "Email (*)"
 msgstr "Email (*)"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:112
+#: src/views/site/components/SiteStatusSegmented.vue:87
 #, fuzzy
 msgid "enable"
 msgstr "Activé"
@@ -1345,6 +1349,10 @@ msgstr "Activé avec succès"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Échec de l'activation du renouvellement automatique pour %{name}"
 
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr ""
+
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgstr ""
@@ -1426,7 +1434,7 @@ msgstr "Dupliqué avec succès"
 msgid "Enable stub_status module"
 msgstr ""
 
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:183
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
 msgid "Enable TLS"
 msgstr "Activer TLS"
 
@@ -1441,8 +1449,8 @@ msgstr "Activer TLS"
 #: src/views/preference/LogrotateSettings.vue:19
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:155
-#: src/views/site/site_edit/SiteEdit.vue:193
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:110
 #: src/views/stream/components/RightSettings.vue:81
 #: src/views/stream/StreamEdit.vue:176 src/views/stream/StreamList.vue:56
@@ -1450,8 +1458,8 @@ msgstr "Activer TLS"
 msgid "Enabled"
 msgstr "Activé"
 
+#: src/views/site/components/SiteStatusSegmented.vue:27
 #: src/views/site/site_add/SiteAdd.vue:40
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:33
 #: src/views/stream/StreamList.vue:88
 msgid "Enabled successfully"
@@ -1514,7 +1522,7 @@ msgid "Export"
 msgstr "Exporter"
 
 #: src/views/preference/ExternalNotify.vue:10
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:172
 msgid "External Notify"
 msgstr ""
 
@@ -1663,24 +1671,24 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Obtenir un certificat"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:63
+#: src/views/site/components/SiteStatusSegmented.vue:46
 #: src/views/stream/components/RightSettings.vue:45
 #: src/views/stream/StreamList.vue:102
 msgid "Failed to disable %{msg}"
 msgstr "Impossible de désactiver %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:95
+#: src/views/site/components/SiteStatusSegmented.vue:72
 #, fuzzy
 msgid "Failed to disable maintenance mode %{msg}"
 msgstr "Impossible de désactiver %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:47
+#: src/views/site/components/SiteStatusSegmented.vue:33
 #: src/views/stream/components/RightSettings.vue:36
 #: src/views/stream/StreamList.vue:92
 msgid "Failed to enable %{msg}"
 msgstr "Impossible d'activer %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:79
+#: src/views/site/components/SiteStatusSegmented.vue:59
 #, fuzzy
 msgid "Failed to enable maintenance mode %{msg}"
 msgstr "Impossible d'activer %{msg}"
@@ -1807,7 +1815,7 @@ msgstr "Obtenir un certificat"
 msgid "Failed to save Nginx performance settings"
 msgstr "Échec de l'obtention des informations sur le certificat"
 
-#: src/views/site/site_edit/SiteEdit.vue:139
+#: src/views/site/site_edit/SiteEdit.vue:137
 #: src/views/stream/StreamEdit.vue:122
 msgid "Failed to save, syntax error(s) was detected in the configuration."
 msgstr ""
@@ -1961,7 +1969,7 @@ msgid "Higher value means better connection reuse"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:256
-#: src/views/site/site_edit/SiteEdit.vue:212
+#: src/views/site/site_edit/SiteEdit.vue:215
 #: src/views/stream/StreamEdit.vue:195
 #, fuzzy
 msgid "History"
@@ -1976,7 +1984,7 @@ msgstr "Menu principal"
 msgid "Host"
 msgstr "Host HTTP"
 
-#: src/views/preference/Preference.vue:182
+#: src/views/preference/Preference.vue:184
 #, fuzzy
 msgid "HTTP"
 msgstr "HTTP01"
@@ -2378,7 +2386,7 @@ msgstr "Connexion réussie"
 msgid "Logout successful"
 msgstr "Déconnexion réussie"
 
-#: src/views/preference/Preference.vue:218
+#: src/views/preference/Preference.vue:220
 msgid "Logrotate"
 msgstr ""
 
@@ -2392,17 +2400,18 @@ msgid ""
 "minutes."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:163
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
 #: src/views/site/site_list/columns.tsx:112
 msgid "Maintenance"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:88
+#: src/views/site/components/SiteStatusSegmented.vue:66
 #, fuzzy
 msgid "Maintenance mode disabled successfully"
 msgstr "Désactivé avec succès"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:72
+#: src/views/site/components/SiteStatusSegmented.vue:53
 #, fuzzy
 msgid "Maintenance mode enabled successfully"
 msgstr "Activé avec succès"
@@ -2590,8 +2599,8 @@ msgstr "Directive multiligne"
 #: src/views/nginx_log/NginxLogList.vue:33
 #: src/views/preference/components/AddPasskey.vue:75
 #: src/views/site/ngx_conf/NgxUpstream.vue:177
-#: src/views/site/site_edit/RightSettings.vue:63
-#: src/views/site/site_list/columns.tsx:17
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/components/RightSettings.vue:87
 #: src/views/stream/components/StreamDuplicate.vue:71
@@ -2644,7 +2653,7 @@ msgstr "Nouvelle version publiée"
 msgid "Next"
 msgstr "Suivant"
 
-#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:206
+#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:208
 #, fuzzy
 msgid "Nginx"
 msgstr "Journal Nginx"
@@ -2697,7 +2706,7 @@ msgstr "Erreur d'analyse de configuration Nginx"
 msgid "Nginx configuration has been restored"
 msgstr "Erreur d'analyse de configuration Nginx"
 
-#: src/views/site/site_edit/SiteEdit.vue:244
+#: src/views/site/site_edit/SiteEdit.vue:247
 #: src/views/stream/StreamEdit.vue:226
 msgid "Nginx Configuration Parse Error"
 msgstr "Erreur d'analyse de configuration Nginx"
@@ -2840,13 +2849,13 @@ msgstr ""
 msgid "No records selected"
 msgstr ""
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:178
 #, fuzzy
 msgid "Node"
 msgstr "Nom d'utilisateur"
 
-#: src/views/site/site_edit/RightSettings.vue:66
-#: src/views/site/site_list/columns.tsx:65
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:32
 #, fuzzy
@@ -2891,7 +2900,7 @@ msgstr "Non valide avant : %{date}"
 msgid "Note"
 msgstr "Note"
 
-#: src/views/site/site_edit/RightSettings.vue:95
+#: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
 msgid ""
 "Note, if the configuration file include other configurations or "
@@ -2976,10 +2985,10 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50
-#: src/views/site/ngx_conf/NgxServer.vue:79
+#: src/views/site/ngx_conf/NgxServer.vue:82
 #: src/views/site/ngx_conf/NgxUpstream.vue:33
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:121
 #: src/views/site/site_list/SiteList.vue:121
 #: src/views/stream/components/RightSettings.vue:54
 #: src/views/stream/StreamList.vue:238
@@ -3008,7 +3017,7 @@ msgstr ""
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:212
+#: src/views/preference/Preference.vue:214
 msgid "OpenAI"
 msgstr "OpenAI"
 
@@ -3287,7 +3296,7 @@ msgstr "Action"
 msgid "Pre-release"
 msgstr ""
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:153
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:155
 msgid "Preference"
 msgstr "Préférence"
 
@@ -3750,10 +3759,10 @@ msgstr "En cours d'éxécution"
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/ConfigEditor.vue:277
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:229
+#: src/views/preference/Preference.vue:231
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:292
+#: src/views/site/site_edit/SiteEdit.vue:295
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/StreamEdit.vue:271
 msgid "Save"
@@ -3811,14 +3820,14 @@ msgstr "Dupliqué avec succès"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/components/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:125
+#: src/views/preference/Preference.vue:127
 msgid "Save successfully"
 msgstr "Sauvegarde réussie"
 
 #: src/views/config/ConfigEditor.vue:194
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:157
+#: src/views/site/site_edit/SiteEdit.vue:155
 #: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "Enregistré avec succès"
@@ -3862,7 +3871,7 @@ msgstr ""
 msgid "Send"
 msgstr "Envoyer"
 
-#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:158
+#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:160
 #, fuzzy
 msgid "Server"
 msgstr "Informations sur le serveur"
@@ -3898,7 +3907,7 @@ msgid ""
 "step of DNS challenge."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:114
+#: src/views/site/components/SiteStatusSegmented.vue:89
 #, fuzzy
 msgid "set to maintenance mode"
 msgstr "Changer de certificat"
@@ -4071,8 +4080,8 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:65
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_edit/RightSettings.vue:55
-#: src/views/site/site_list/columns.tsx:89 src/views/stream/StreamList.vue:49
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90 src/views/stream/StreamList.vue:49
 msgid "Status"
 msgstr "Statut"
 
@@ -4203,8 +4212,8 @@ msgstr "Changer de certificat"
 msgid "Sync Nodes"
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:101
-#: src/views/site/site_edit/RightSettings.vue:88
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/stream/components/RightSettings.vue:111
 #: src/views/stream/components/RightSettings.vue:124
 #, fuzzy
@@ -4216,7 +4225,7 @@ msgstr "Changer de certificat"
 msgid "Sync to"
 msgstr "Changer de certificat"
 
-#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/site/site_edit/RightSettings.vue:75
 #: src/views/stream/components/RightSettings.vue:108
 msgid "Synchronization"
 msgstr ""
@@ -4253,7 +4262,7 @@ msgstr "Fichier introuvable"
 msgid "Telegram"
 msgstr ""
 
-#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:188
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:190
 #: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "Terminal"
@@ -4298,11 +4307,17 @@ msgid ""
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
 msgid ""
 "The model name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:90
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
+msgstr ""
+
 #: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
@@ -4594,8 +4609,8 @@ msgstr "Mis à jour avec succés"
 #: src/views/config/configColumns.tsx:36 src/views/config/ConfigEditor.vue:331
 #: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
-#: src/views/site/site_edit/RightSettings.vue:75
-#: src/views/site/site_list/columns.tsx:82
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:69 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -4775,7 +4790,7 @@ msgid ""
 "Pebble as CA."
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/site/site_edit/RightSettings.vue:81
 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."

+ 81 - 66
app/src/language/ko_KR/app.po

@@ -68,7 +68,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
 #: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:163
+#: src/views/site/ngx_conf/NgxServer.vue:166
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:182
 msgid "Add"
@@ -109,7 +109,7 @@ msgstr "성공적으로 추가됨"
 msgid "Additional"
 msgstr "추가적인"
 
-#: src/views/site/site_edit/SiteEdit.vue:225
+#: src/views/site/site_edit/SiteEdit.vue:228
 #: src/views/stream/StreamEdit.vue:207
 msgid "Advance Mode"
 msgstr "고급 모드"
@@ -149,7 +149,7 @@ msgstr "API 토큰"
 msgid "API Type"
 msgstr "API 토큰"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:166
 msgid "App"
 msgstr "앱"
 
@@ -248,7 +248,7 @@ msgstr "수정 시도"
 msgid "Attempts"
 msgstr "시도 횟수"
 
-#: src/views/preference/Preference.vue:194
+#: src/views/preference/Preference.vue:196
 msgid "Auth"
 msgstr "인증"
 
@@ -297,7 +297,7 @@ msgstr "사이트 및 스트림 구성에서 자동으로 색인됩니다."
 #: src/views/certificate/components/CertificateEditor.vue:257
 #: src/views/config/ConfigEditor.vue:268 src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:285
+#: src/views/site/site_edit/SiteEdit.vue:288
 #: src/views/stream/StreamEdit.vue:264
 msgid "Back"
 msgstr "뒤로"
@@ -350,12 +350,12 @@ msgid "Base information"
 msgstr "기본 정보"
 
 #: src/views/config/ConfigEditor.vue:296
-#: src/views/site/site_edit/RightSettings.vue:52
+#: src/views/site/site_edit/RightSettings.vue:43
 #: src/views/stream/components/RightSettings.vue:79
 msgid "Basic"
 msgstr "기본"
 
-#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/site/site_edit/SiteEdit.vue:231
 #: src/views/stream/StreamEdit.vue:210
 msgid "Basic Mode"
 msgstr "기본 모드"
@@ -451,10 +451,10 @@ msgstr ""
 #: src/components/StdDesign/StdDetail/StdDetail.vue:101
 #: src/views/preference/components/Passkey.vue:141
 #: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51
-#: src/views/site/ngx_conf/NgxServer.vue:80
+#: src/views/site/ngx_conf/NgxServer.vue:83
 #: src/views/site/ngx_conf/NgxUpstream.vue:34
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:122
 #: src/views/stream/components/RightSettings.vue:55
 msgid "Cancel"
 msgstr "취소"
@@ -477,7 +477,7 @@ msgstr ""
 msgid "Cannot remove initial user"
 msgstr ""
 
-#: src/views/preference/Preference.vue:200
+#: src/views/preference/Preference.vue:202
 #, fuzzy
 msgid "Cert"
 msgstr "자동 인증"
@@ -549,7 +549,7 @@ msgid "Certificate renewed successfully"
 msgstr "성공적으로 제거됨"
 
 #: src/views/certificate/components/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:60
+#: src/views/site/cert/Cert.vue:62
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "인증서 상태"
@@ -573,7 +573,7 @@ msgstr "인증 방법"
 msgid "Change Certificate"
 msgstr "인증서 변경"
 
-#: src/views/site/cert/Cert.vue:79
+#: src/views/site/cert/Cert.vue:81
 #, fuzzy
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
@@ -676,6 +676,10 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgstr "명령어"
@@ -683,7 +687,7 @@ msgstr "명령어"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:135
+#: src/views/site/ngx_conf/NgxServer.vue:138
 msgid "Comments"
 msgstr "댓글"
 
@@ -885,7 +889,7 @@ msgid "Current Version"
 msgstr "현재 버전"
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:194
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
 msgid "Custom"
 msgstr "사용자 정의"
 
@@ -920,7 +924,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
-#: src/views/site/ngx_conf/NgxServer.vue:110
+#: src/views/site/ngx_conf/NgxServer.vue:113
 #: src/views/site/ngx_conf/NgxUpstream.vue:128
 #: src/views/site/site_list/SiteList.vue:131
 #: src/views/stream/StreamList.vue:248
@@ -1047,7 +1051,7 @@ msgstr "지시문들"
 msgid "Directory path to store cache files"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
+#: src/views/site/components/SiteStatusSegmented.vue:88
 #, fuzzy
 msgid "disable"
 msgstr "비활성화"
@@ -1125,14 +1129,14 @@ msgstr "%{node_name}에서 %{conf_name} 성공적으로 활성화됨"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:159
-#: src/views/site/site_edit/SiteEdit.vue:199
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
 #: src/views/site/site_list/columns.tsx:111 src/views/stream/StreamEdit.vue:182
 #: src/views/stream/StreamList.vue:60 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "비활성화됨"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:56
+#: src/views/site/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:42
 #: src/views/stream/StreamList.vue:98
 msgid "Disabled successfully"
@@ -1160,7 +1164,7 @@ msgstr "DNS01"
 msgid "Do not enable this option unless you are sure that you need it."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:118
+#: src/views/site/components/SiteStatusSegmented.vue:93
 #, fuzzy
 msgid "Do you want to %{action} this site?"
 msgstr "이 사이트를 활성화하시겠습니까?"
@@ -1181,7 +1185,7 @@ msgstr "이 스트림을 활성화하시겠습니까?"
 msgid "Do you want to enable TLS?"
 msgstr "TLS를 활성화하시겠습니까?"
 
-#: src/views/site/ngx_conf/NgxServer.vue:76
+#: src/views/site/ngx_conf/NgxServer.vue:79
 msgid "Do you want to remove this server?"
 msgstr "이 서버를 제거하시겠습니까?"
 
@@ -1242,7 +1246,7 @@ msgstr "로컬로 성공적으로 복제됨"
 msgid "Edit"
 msgstr "%{n} 편집"
 
-#: src/views/site/site_edit/SiteEdit.vue:188
+#: src/views/site/site_edit/SiteEdit.vue:185
 #: src/views/stream/StreamEdit.vue:171
 msgid "Edit %{n}"
 msgstr "%{n} 편집"
@@ -1269,7 +1273,7 @@ msgstr "이메일 (*)"
 msgid "Email (*)"
 msgstr "이메일 (*)"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:112
+#: src/views/site/components/SiteStatusSegmented.vue:87
 #, fuzzy
 msgid "enable"
 msgstr "활성화"
@@ -1287,6 +1291,10 @@ msgstr "성공적으로 활성화"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "%{name}에 대한 자동 갱신 활성화 실패"
 
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr ""
+
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgstr ""
@@ -1368,7 +1376,7 @@ msgstr "%{node_name}에서 %{conf_name} 성공적으로 활성화됨"
 msgid "Enable stub_status module"
 msgstr ""
 
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:183
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
 msgid "Enable TLS"
 msgstr "TLS 활성화"
 
@@ -1383,8 +1391,8 @@ msgstr "TLS 활성화"
 #: src/views/preference/LogrotateSettings.vue:19
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:155
-#: src/views/site/site_edit/SiteEdit.vue:193
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:110
 #: src/views/stream/components/RightSettings.vue:81
 #: src/views/stream/StreamEdit.vue:176 src/views/stream/StreamList.vue:56
@@ -1392,8 +1400,8 @@ msgstr "TLS 활성화"
 msgid "Enabled"
 msgstr "활성화됨"
 
+#: src/views/site/components/SiteStatusSegmented.vue:27
 #: src/views/site/site_add/SiteAdd.vue:40
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:33
 #: src/views/stream/StreamList.vue:88
 msgid "Enabled successfully"
@@ -1455,7 +1463,7 @@ msgid "Export"
 msgstr "내보내기"
 
 #: src/views/preference/ExternalNotify.vue:10
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:172
 msgid "External Notify"
 msgstr ""
 
@@ -1603,24 +1611,24 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "인증서 획득 실패"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:63
+#: src/views/site/components/SiteStatusSegmented.vue:46
 #: src/views/stream/components/RightSettings.vue:45
 #: src/views/stream/StreamList.vue:102
 msgid "Failed to disable %{msg}"
 msgstr "%{msg} 비활성화 실패"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:95
+#: src/views/site/components/SiteStatusSegmented.vue:72
 #, fuzzy
 msgid "Failed to disable maintenance mode %{msg}"
 msgstr "%{msg} 비활성화 실패"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:47
+#: src/views/site/components/SiteStatusSegmented.vue:33
 #: src/views/stream/components/RightSettings.vue:36
 #: src/views/stream/StreamList.vue:92
 msgid "Failed to enable %{msg}"
 msgstr "%{msg} 활성화 실패"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:79
+#: src/views/site/components/SiteStatusSegmented.vue:59
 #, fuzzy
 msgid "Failed to enable maintenance mode %{msg}"
 msgstr "%{msg} 활성화 실패"
@@ -1741,7 +1749,7 @@ msgstr "인증서 획득 실패"
 msgid "Failed to save Nginx performance settings"
 msgstr "인증서 정보 가져오기 실패"
 
-#: src/views/site/site_edit/SiteEdit.vue:139
+#: src/views/site/site_edit/SiteEdit.vue:137
 #: src/views/stream/StreamEdit.vue:122
 msgid "Failed to save, syntax error(s) was detected in the configuration."
 msgstr "저장 실패, 구성에서 구문 오류가 감지되었습니다."
@@ -1892,7 +1900,7 @@ msgid "Higher value means better connection reuse"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:256
-#: src/views/site/site_edit/SiteEdit.vue:212
+#: src/views/site/site_edit/SiteEdit.vue:215
 #: src/views/stream/StreamEdit.vue:195
 #, fuzzy
 msgid "History"
@@ -1907,7 +1915,7 @@ msgstr "홈"
 msgid "Host"
 msgstr "HTTP 호스트"
 
-#: src/views/preference/Preference.vue:182
+#: src/views/preference/Preference.vue:184
 #, fuzzy
 msgid "HTTP"
 msgstr "HTTP01"
@@ -2291,7 +2299,7 @@ msgstr "로그인 성공"
 msgid "Logout successful"
 msgstr "로그아웃 성공"
 
-#: src/views/preference/Preference.vue:218
+#: src/views/preference/Preference.vue:220
 msgid "Logrotate"
 msgstr "로그관리"
 
@@ -2310,17 +2318,18 @@ msgstr ""
 "동으로 활성화할 수 있습니다. Nginx UI의 크론탭 작업 스케줄러는설정한 간격 "
 "(분 단위)에서 logrotate 명령을 실행합니다."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:163
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
 #: src/views/site/site_list/columns.tsx:112
 msgid "Maintenance"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:88
+#: src/views/site/components/SiteStatusSegmented.vue:66
 #, fuzzy
 msgid "Maintenance mode disabled successfully"
 msgstr "성공적으로 비활성화됨"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:72
+#: src/views/site/components/SiteStatusSegmented.vue:53
 #, fuzzy
 msgid "Maintenance mode enabled successfully"
 msgstr "성공적으로 활성화됨"
@@ -2510,8 +2519,8 @@ msgstr "단일 지시문"
 #: src/views/nginx_log/NginxLogList.vue:33
 #: src/views/preference/components/AddPasskey.vue:75
 #: src/views/site/ngx_conf/NgxUpstream.vue:177
-#: src/views/site/site_edit/RightSettings.vue:63
-#: src/views/site/site_list/columns.tsx:17
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/components/RightSettings.vue:87
 #: src/views/stream/components/StreamDuplicate.vue:71
@@ -2564,7 +2573,7 @@ msgstr "새 버전 출시"
 msgid "Next"
 msgstr "다음"
 
-#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:206
+#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:208
 msgid "Nginx"
 msgstr "Nginx"
 
@@ -2616,7 +2625,7 @@ msgstr "Nginx 구성 오류름"
 msgid "Nginx configuration has been restored"
 msgstr "Nginx 구성 오류름"
 
-#: src/views/site/site_edit/SiteEdit.vue:244
+#: src/views/site/site_edit/SiteEdit.vue:247
 #: src/views/stream/StreamEdit.vue:226
 #, fuzzy
 msgid "Nginx Configuration Parse Error"
@@ -2760,13 +2769,13 @@ msgstr ""
 msgid "No records selected"
 msgstr ""
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:178
 #, fuzzy
 msgid "Node"
 msgstr "이름 변경"
 
-#: src/views/site/site_edit/RightSettings.vue:66
-#: src/views/site/site_list/columns.tsx:65
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:32
 #, fuzzy
@@ -2810,7 +2819,7 @@ msgstr "유효 시작일: %{date}"
 msgid "Note"
 msgstr "참고"
 
-#: src/views/site/site_edit/RightSettings.vue:95
+#: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
 msgid ""
 "Note, if the configuration file include other configurations or "
@@ -2897,10 +2906,10 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50
-#: src/views/site/ngx_conf/NgxServer.vue:79
+#: src/views/site/ngx_conf/NgxServer.vue:82
 #: src/views/site/ngx_conf/NgxUpstream.vue:33
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:121
 #: src/views/site/site_list/SiteList.vue:121
 #: src/views/stream/components/RightSettings.vue:54
 #: src/views/stream/StreamList.vue:238
@@ -2929,7 +2938,7 @@ msgstr "온라인"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:212
+#: src/views/preference/Preference.vue:214
 msgid "OpenAI"
 msgstr "오픈AI"
 
@@ -3208,7 +3217,7 @@ msgstr "작업"
 msgid "Pre-release"
 msgstr "사전 출시"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:153
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:155
 msgid "Preference"
 msgstr "환경설정"
 
@@ -3671,10 +3680,10 @@ msgstr "실행 중"
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/ConfigEditor.vue:277
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:229
+#: src/views/preference/Preference.vue:231
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:292
+#: src/views/site/site_edit/SiteEdit.vue:295
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/StreamEdit.vue:271
 msgid "Save"
@@ -3732,7 +3741,7 @@ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/components/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:125
+#: src/views/preference/Preference.vue:127
 #, fuzzy
 msgid "Save successfully"
 msgstr "성공적으로 저장됨"
@@ -3740,7 +3749,7 @@ msgstr "성공적으로 저장됨"
 #: src/views/config/ConfigEditor.vue:194
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:157
+#: src/views/site/site_edit/SiteEdit.vue:155
 #: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "성공적으로 저장됨"
@@ -3783,7 +3792,7 @@ msgstr ""
 msgid "Send"
 msgstr "보내기"
 
-#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:158
+#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:160
 #, fuzzy
 msgid "Server"
 msgstr "서버 정보"
@@ -3819,7 +3828,7 @@ msgid ""
 "step of DNS challenge."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:114
+#: src/views/site/components/SiteStatusSegmented.vue:89
 #, fuzzy
 msgid "set to maintenance mode"
 msgstr "인증서 갱신 오류"
@@ -3990,8 +3999,8 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:65
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_edit/RightSettings.vue:55
-#: src/views/site/site_list/columns.tsx:89 src/views/stream/StreamList.vue:49
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90 src/views/stream/StreamList.vue:49
 msgid "Status"
 msgstr "상태"
 
@@ -4120,8 +4129,8 @@ msgstr "인증서 갱신 성공"
 msgid "Sync Nodes"
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:101
-#: src/views/site/site_edit/RightSettings.vue:88
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/stream/components/RightSettings.vue:111
 #: src/views/stream/components/RightSettings.vue:124
 #, fuzzy
@@ -4132,7 +4141,7 @@ msgstr "인증서 갱신"
 msgid "Sync to"
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/site/site_edit/RightSettings.vue:75
 #: src/views/stream/components/RightSettings.vue:108
 msgid "Synchronization"
 msgstr ""
@@ -4169,7 +4178,7 @@ msgstr "파일을 찾을 수 없음"
 msgid "Telegram"
 msgstr ""
 
-#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:188
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:190
 #: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "터미널"
@@ -4213,11 +4222,17 @@ msgid ""
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
 msgid ""
 "The model name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:90
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
+msgstr ""
+
 #: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
@@ -4506,8 +4521,8 @@ msgstr "성공적으로 저장되었습니다"
 #: src/views/config/configColumns.tsx:36 src/views/config/ConfigEditor.vue:331
 #: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
-#: src/views/site/site_edit/RightSettings.vue:75
-#: src/views/site/site_list/columns.tsx:82
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:69 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -4692,7 +4707,7 @@ msgid ""
 "Pebble as CA."
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/site/site_edit/RightSettings.vue:81
 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."

+ 80 - 66
app/src/language/messages.pot

@@ -58,7 +58,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
 #: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:163
+#: src/views/site/ngx_conf/NgxServer.vue:166
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:182
 msgid "Add"
@@ -101,7 +101,7 @@ msgstr ""
 msgid "Additional"
 msgstr ""
 
-#: src/views/site/site_edit/SiteEdit.vue:225
+#: src/views/site/site_edit/SiteEdit.vue:228
 #: src/views/stream/StreamEdit.vue:207
 msgid "Advance Mode"
 msgstr ""
@@ -140,7 +140,7 @@ msgstr ""
 msgid "API Type"
 msgstr ""
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:166
 msgid "App"
 msgstr ""
 
@@ -238,7 +238,7 @@ msgstr ""
 msgid "Attempts"
 msgstr ""
 
-#: src/views/preference/Preference.vue:194
+#: src/views/preference/Preference.vue:196
 msgid "Auth"
 msgstr ""
 
@@ -289,7 +289,7 @@ msgstr ""
 #: src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195
 #: src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:285
+#: src/views/site/site_edit/SiteEdit.vue:288
 #: src/views/stream/StreamEdit.vue:264
 msgid "Back"
 msgstr ""
@@ -339,12 +339,12 @@ msgid "Base information"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:296
-#: src/views/site/site_edit/RightSettings.vue:52
+#: src/views/site/site_edit/RightSettings.vue:43
 #: src/views/stream/components/RightSettings.vue:79
 msgid "Basic"
 msgstr ""
 
-#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/site/site_edit/SiteEdit.vue:231
 #: src/views/stream/StreamEdit.vue:210
 msgid "Basic Mode"
 msgstr ""
@@ -435,10 +435,10 @@ msgstr ""
 #: src/components/StdDesign/StdDetail/StdDetail.vue:101
 #: src/views/preference/components/Passkey.vue:141
 #: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51
-#: src/views/site/ngx_conf/NgxServer.vue:80
+#: src/views/site/ngx_conf/NgxServer.vue:83
 #: src/views/site/ngx_conf/NgxUpstream.vue:34
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:122
 #: src/views/stream/components/RightSettings.vue:55
 msgid "Cancel"
 msgstr ""
@@ -460,7 +460,7 @@ msgstr ""
 msgid "Cannot remove initial user"
 msgstr ""
 
-#: src/views/preference/Preference.vue:200
+#: src/views/preference/Preference.vue:202
 msgid "Cert"
 msgstr ""
 
@@ -522,7 +522,7 @@ msgid "Certificate renewed successfully"
 msgstr ""
 
 #: src/views/certificate/components/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:60
+#: src/views/site/cert/Cert.vue:62
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] ""
@@ -546,7 +546,7 @@ msgstr ""
 msgid "Change Certificate"
 msgstr ""
 
-#: src/views/site/cert/Cert.vue:79
+#: src/views/site/cert/Cert.vue:81
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] ""
@@ -641,6 +641,10 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgstr ""
@@ -648,7 +652,7 @@ msgstr ""
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:135
+#: src/views/site/ngx_conf/NgxServer.vue:138
 msgid "Comments"
 msgstr ""
 
@@ -839,7 +843,7 @@ msgid "Current Version"
 msgstr ""
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:194
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
 msgid "Custom"
 msgstr ""
 
@@ -873,7 +877,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
-#: src/views/site/ngx_conf/NgxServer.vue:110
+#: src/views/site/ngx_conf/NgxServer.vue:113
 #: src/views/site/ngx_conf/NgxUpstream.vue:128
 #: src/views/site/site_list/SiteList.vue:131
 #: src/views/stream/StreamList.vue:248
@@ -993,7 +997,7 @@ msgstr ""
 msgid "Directory path to store cache files"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
+#: src/views/site/components/SiteStatusSegmented.vue:88
 msgid "disable"
 msgstr ""
 
@@ -1060,8 +1064,8 @@ msgstr ""
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:159
-#: src/views/site/site_edit/SiteEdit.vue:199
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
 #: src/views/site/site_list/columns.tsx:111
 #: src/views/stream/StreamEdit.vue:182
 #: src/views/stream/StreamList.vue:60
@@ -1069,7 +1073,7 @@ msgstr ""
 msgid "Disabled"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:56
+#: src/views/site/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:42
 #: src/views/stream/StreamList.vue:98
 msgid "Disabled successfully"
@@ -1097,7 +1101,7 @@ msgstr ""
 msgid "Do not enable this option unless you are sure that you need it."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:118
+#: src/views/site/components/SiteStatusSegmented.vue:93
 msgid "Do you want to %{action} this site?"
 msgstr ""
 
@@ -1117,7 +1121,7 @@ msgstr ""
 msgid "Do you want to enable TLS?"
 msgstr ""
 
-#: src/views/site/ngx_conf/NgxServer.vue:76
+#: src/views/site/ngx_conf/NgxServer.vue:79
 msgid "Do you want to remove this server?"
 msgstr ""
 
@@ -1173,7 +1177,7 @@ msgstr ""
 msgid "Edit"
 msgstr ""
 
-#: src/views/site/site_edit/SiteEdit.vue:188
+#: src/views/site/site_edit/SiteEdit.vue:185
 #: src/views/stream/StreamEdit.vue:171
 msgid "Edit %{n}"
 msgstr ""
@@ -1200,7 +1204,7 @@ msgstr ""
 msgid "Email (*)"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:112
+#: src/views/site/components/SiteStatusSegmented.vue:87
 msgid "enable"
 msgstr ""
 
@@ -1216,6 +1220,10 @@ msgstr ""
 msgid "Enable auto-renewal failed for %{name}"
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr ""
+
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgstr ""
@@ -1286,7 +1294,7 @@ msgstr ""
 msgid "Enable stub_status module"
 msgstr ""
 
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:183
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
 msgid "Enable TLS"
 msgstr ""
 
@@ -1300,8 +1308,8 @@ msgstr ""
 #: src/views/preference/LogrotateSettings.vue:19
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:155
-#: src/views/site/site_edit/SiteEdit.vue:193
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:110
 #: src/views/stream/components/RightSettings.vue:81
 #: src/views/stream/StreamEdit.vue:176
@@ -1310,8 +1318,8 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+#: src/views/site/components/SiteStatusSegmented.vue:27
 #: src/views/site/site_add/SiteAdd.vue:40
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:33
 #: src/views/stream/StreamList.vue:88
 msgid "Enabled successfully"
@@ -1372,7 +1380,7 @@ msgid "Export"
 msgstr ""
 
 #: src/views/preference/ExternalNotify.vue:10
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:172
 msgid "External Notify"
 msgstr ""
 
@@ -1500,23 +1508,23 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:63
+#: src/views/site/components/SiteStatusSegmented.vue:46
 #: src/views/stream/components/RightSettings.vue:45
 #: src/views/stream/StreamList.vue:102
 msgid "Failed to disable %{msg}"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:95
+#: src/views/site/components/SiteStatusSegmented.vue:72
 msgid "Failed to disable maintenance mode %{msg}"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:47
+#: src/views/site/components/SiteStatusSegmented.vue:33
 #: src/views/stream/components/RightSettings.vue:36
 #: src/views/stream/StreamList.vue:92
 msgid "Failed to enable %{msg}"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:79
+#: src/views/site/components/SiteStatusSegmented.vue:59
 msgid "Failed to enable maintenance mode %{msg}"
 msgstr ""
 
@@ -1620,7 +1628,7 @@ msgstr ""
 msgid "Failed to save Nginx performance settings"
 msgstr ""
 
-#: src/views/site/site_edit/SiteEdit.vue:139
+#: src/views/site/site_edit/SiteEdit.vue:137
 #: src/views/stream/StreamEdit.vue:122
 msgid "Failed to save, syntax error(s) was detected in the configuration."
 msgstr ""
@@ -1762,7 +1770,7 @@ msgid "Higher value means better connection reuse"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:256
-#: src/views/site/site_edit/SiteEdit.vue:212
+#: src/views/site/site_edit/SiteEdit.vue:215
 #: src/views/stream/StreamEdit.vue:195
 msgid "History"
 msgstr ""
@@ -1775,7 +1783,7 @@ msgstr ""
 msgid "Host"
 msgstr ""
 
-#: src/views/preference/Preference.vue:182
+#: src/views/preference/Preference.vue:184
 msgid "HTTP"
 msgstr ""
 
@@ -2127,7 +2135,7 @@ msgstr ""
 msgid "Logout successful"
 msgstr ""
 
-#: src/views/preference/Preference.vue:218
+#: src/views/preference/Preference.vue:220
 msgid "Logrotate"
 msgstr ""
 
@@ -2135,16 +2143,17 @@ msgstr ""
 msgid "Logrotate, by default, is enabled in most mainstream Linux distributions for users who install Nginx UI on the host machine, so you don't need to modify the parameters on this page. For users who install Nginx UI using Docker containers, you can manually enable this option. The crontab task scheduler of Nginx UI will execute the logrotate command at the interval you set in minutes."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:163
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
 #: src/views/site/site_list/columns.tsx:112
 msgid "Maintenance"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:88
+#: src/views/site/components/SiteStatusSegmented.vue:66
 msgid "Maintenance mode disabled successfully"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:72
+#: src/views/site/components/SiteStatusSegmented.vue:53
 msgid "Maintenance mode enabled successfully"
 msgstr ""
 
@@ -2322,8 +2331,8 @@ msgstr ""
 #: src/views/nginx_log/NginxLogList.vue:33
 #: src/views/preference/components/AddPasskey.vue:75
 #: src/views/site/ngx_conf/NgxUpstream.vue:177
-#: src/views/site/site_edit/RightSettings.vue:63
-#: src/views/site/site_list/columns.tsx:17
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/components/RightSettings.vue:87
 #: src/views/stream/components/StreamDuplicate.vue:71
@@ -2375,7 +2384,7 @@ msgid "Next"
 msgstr ""
 
 #: src/routes/modules/dashboard.ts:27
-#: src/views/preference/Preference.vue:206
+#: src/views/preference/Preference.vue:208
 msgid "Nginx"
 msgstr ""
 
@@ -2423,7 +2432,7 @@ msgstr ""
 msgid "Nginx configuration has been restored"
 msgstr ""
 
-#: src/views/site/site_edit/SiteEdit.vue:244
+#: src/views/site/site_edit/SiteEdit.vue:247
 #: src/views/stream/StreamEdit.vue:226
 msgid "Nginx Configuration Parse Error"
 msgstr ""
@@ -2555,12 +2564,12 @@ msgstr ""
 msgid "No records selected"
 msgstr ""
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:178
 msgid "Node"
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:66
-#: src/views/site/site_list/columns.tsx:65
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:32
 msgid "Node Group"
@@ -2600,7 +2609,7 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:95
+#: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
 msgid "Note, if the configuration file include other configurations or certificates, please synchronize them to the remote nodes in advance."
 msgstr ""
@@ -2678,10 +2687,10 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50
-#: src/views/site/ngx_conf/NgxServer.vue:79
+#: src/views/site/ngx_conf/NgxServer.vue:82
 #: src/views/site/ngx_conf/NgxUpstream.vue:33
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:121
 #: src/views/site/site_list/SiteList.vue:121
 #: src/views/stream/components/RightSettings.vue:54
 #: src/views/stream/StreamList.vue:238
@@ -2710,7 +2719,7 @@ msgstr ""
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:212
+#: src/views/preference/Preference.vue:214
 msgid "OpenAI"
 msgstr ""
 
@@ -2964,7 +2973,7 @@ msgid "Pre-release"
 msgstr ""
 
 #: src/routes/modules/preference.ts:10
-#: src/views/preference/Preference.vue:153
+#: src/views/preference/Preference.vue:155
 msgid "Preference"
 msgstr ""
 
@@ -3369,10 +3378,10 @@ msgstr ""
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/ConfigEditor.vue:277
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:229
+#: src/views/preference/Preference.vue:231
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:292
+#: src/views/site/site_edit/SiteEdit.vue:295
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/StreamEdit.vue:271
 msgid "Save"
@@ -3424,14 +3433,14 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/components/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:125
+#: src/views/preference/Preference.vue:127
 msgid "Save successfully"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:194
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:157
+#: src/views/site/site_edit/SiteEdit.vue:155
 #: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr ""
@@ -3476,7 +3485,7 @@ msgid "Send"
 msgstr ""
 
 #: src/routes/modules/dashboard.ts:19
-#: src/views/preference/Preference.vue:158
+#: src/views/preference/Preference.vue:160
 msgid "Server"
 msgstr ""
 
@@ -3508,7 +3517,7 @@ msgstr ""
 msgid "Set the recursive nameservers to override the systems nameservers for the step of DNS challenge."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:114
+#: src/views/site/components/SiteStatusSegmented.vue:89
 msgid "set to maintenance mode"
 msgstr ""
 
@@ -3660,8 +3669,8 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:65
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_edit/RightSettings.vue:55
-#: src/views/site/site_list/columns.tsx:89
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90
 #: src/views/stream/StreamList.vue:49
 msgid "Status"
 msgstr ""
@@ -3775,8 +3784,8 @@ msgstr ""
 msgid "Sync Nodes"
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:101
-#: src/views/site/site_edit/RightSettings.vue:88
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/stream/components/RightSettings.vue:111
 #: src/views/stream/components/RightSettings.vue:124
 msgid "Sync strategy"
@@ -3786,7 +3795,7 @@ msgstr ""
 msgid "Sync to"
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/site/site_edit/RightSettings.vue:75
 #: src/views/stream/components/RightSettings.vue:108
 msgid "Synchronization"
 msgstr ""
@@ -3821,7 +3830,7 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10
-#: src/views/preference/Preference.vue:188
+#: src/views/preference/Preference.vue:190
 #: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr ""
@@ -3855,9 +3864,14 @@ msgid "The log path is not under the paths in settings.NginxSettings.LogDirWhite
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
 msgid "The model name should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:90
+msgid "The model used for code completion, if not set, the chat model will be used."
+msgstr ""
+
 #: src/views/preference/NodeSettings.vue:18
 msgid "The node name should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
 msgstr ""
@@ -4093,8 +4107,8 @@ msgstr ""
 #: src/views/config/ConfigEditor.vue:331
 #: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
-#: src/views/site/site_edit/RightSettings.vue:75
-#: src/views/site/site_list/columns.tsx:82
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:69
 #: src/views/user/userColumns.tsx:54
@@ -4259,7 +4273,7 @@ msgstr ""
 msgid "When Enabled, Nginx UI will automatically re-register users upon startup. Generally, do not enable this unless you are in a dev environment and using Pebble as CA."
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/site/site_edit/RightSettings.vue:81
 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 ""
 

+ 81 - 66
app/src/language/ru_RU/app.po

@@ -70,7 +70,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
 #: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:163
+#: src/views/site/ngx_conf/NgxServer.vue:166
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:182
 msgid "Add"
@@ -111,7 +111,7 @@ msgstr "Добавлено успешно"
 msgid "Additional"
 msgstr "Дополнительно"
 
-#: src/views/site/site_edit/SiteEdit.vue:225
+#: src/views/site/site_edit/SiteEdit.vue:228
 #: src/views/stream/StreamEdit.vue:207
 msgid "Advance Mode"
 msgstr "Расширенный режим"
@@ -150,7 +150,7 @@ msgstr "API токен"
 msgid "API Type"
 msgstr "Тип API"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:166
 #, fuzzy
 msgid "App"
 msgstr "Применить"
@@ -252,7 +252,7 @@ msgstr "Попытка исправить"
 msgid "Attempts"
 msgstr "Попытки"
 
-#: src/views/preference/Preference.vue:194
+#: src/views/preference/Preference.vue:196
 msgid "Auth"
 msgstr "Авторизация"
 
@@ -301,7 +301,7 @@ msgstr ""
 #: src/views/certificate/components/CertificateEditor.vue:257
 #: src/views/config/ConfigEditor.vue:268 src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:285
+#: src/views/site/site_edit/SiteEdit.vue:288
 #: src/views/stream/StreamEdit.vue:264
 msgid "Back"
 msgstr "Назад"
@@ -354,12 +354,12 @@ msgid "Base information"
 msgstr "Основная информация"
 
 #: src/views/config/ConfigEditor.vue:296
-#: src/views/site/site_edit/RightSettings.vue:52
+#: src/views/site/site_edit/RightSettings.vue:43
 #: src/views/stream/components/RightSettings.vue:79
 msgid "Basic"
 msgstr "Основные"
 
-#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/site/site_edit/SiteEdit.vue:231
 #: src/views/stream/StreamEdit.vue:210
 msgid "Basic Mode"
 msgstr "Простой режим"
@@ -455,10 +455,10 @@ msgstr ""
 #: src/components/StdDesign/StdDetail/StdDetail.vue:101
 #: src/views/preference/components/Passkey.vue:141
 #: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51
-#: src/views/site/ngx_conf/NgxServer.vue:80
+#: src/views/site/ngx_conf/NgxServer.vue:83
 #: src/views/site/ngx_conf/NgxUpstream.vue:34
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:122
 #: src/views/stream/components/RightSettings.vue:55
 msgid "Cancel"
 msgstr "Отмена"
@@ -480,7 +480,7 @@ msgstr ""
 msgid "Cannot remove initial user"
 msgstr "Невозможно удалить начального пользователя"
 
-#: src/views/preference/Preference.vue:200
+#: src/views/preference/Preference.vue:202
 #, fuzzy
 msgid "Cert"
 msgstr "Авто Сертификат"
@@ -549,7 +549,7 @@ msgid "Certificate renewed successfully"
 msgstr "Сертификат успешно продлен"
 
 #: src/views/certificate/components/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:60
+#: src/views/site/cert/Cert.vue:62
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "Статус сертификата"
@@ -573,7 +573,7 @@ msgstr "Метод Challenge"
 msgid "Change Certificate"
 msgstr "Изменить сертификат"
 
-#: src/views/site/cert/Cert.vue:79
+#: src/views/site/cert/Cert.vue:81
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] "Сертификат изменен"
@@ -674,6 +674,10 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgstr "Команда"
@@ -681,7 +685,7 @@ msgstr "Команда"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:135
+#: src/views/site/ngx_conf/NgxServer.vue:138
 msgid "Comments"
 msgstr "Комментарии"
 
@@ -881,7 +885,7 @@ msgid "Current Version"
 msgstr "Текущяя версия"
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:194
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
 msgid "Custom"
 msgstr "Пользовательский"
 
@@ -916,7 +920,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
-#: src/views/site/ngx_conf/NgxServer.vue:110
+#: src/views/site/ngx_conf/NgxServer.vue:113
 #: src/views/site/ngx_conf/NgxUpstream.vue:128
 #: src/views/site/site_list/SiteList.vue:131
 #: src/views/stream/StreamList.vue:248
@@ -1041,7 +1045,7 @@ msgstr "Директивы"
 msgid "Directory path to store cache files"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
+#: src/views/site/components/SiteStatusSegmented.vue:88
 #, fuzzy
 msgid "disable"
 msgstr "Отключить"
@@ -1119,14 +1123,14 @@ msgstr "Включение %{conf_name} in %{node_name} успешно"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:159
-#: src/views/site/site_edit/SiteEdit.vue:199
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
 #: src/views/site/site_list/columns.tsx:111 src/views/stream/StreamEdit.vue:182
 #: src/views/stream/StreamList.vue:60 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Отключено"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:56
+#: src/views/site/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:42
 #: src/views/stream/StreamList.vue:98
 msgid "Disabled successfully"
@@ -1154,7 +1158,7 @@ msgstr "DNS01"
 msgid "Do not enable this option unless you are sure that you need it."
 msgstr "Не включайте эту опцию, если не уверены, что она вам нужна."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:118
+#: src/views/site/components/SiteStatusSegmented.vue:93
 #, fuzzy
 msgid "Do you want to %{action} this site?"
 msgstr "Вы хотите включить этот сайт?"
@@ -1176,7 +1180,7 @@ msgstr "Хотите включить этот поток?"
 msgid "Do you want to enable TLS?"
 msgstr "Включить TLS?"
 
-#: src/views/site/ngx_conf/NgxServer.vue:76
+#: src/views/site/ngx_conf/NgxServer.vue:79
 msgid "Do you want to remove this server?"
 msgstr "Хотите удалить этот сервер?"
 
@@ -1240,7 +1244,7 @@ msgstr "Успешно дублировано на локальный"
 msgid "Edit"
 msgstr "Редактировать %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:188
+#: src/views/site/site_edit/SiteEdit.vue:185
 #: src/views/stream/StreamEdit.vue:171
 msgid "Edit %{n}"
 msgstr "Редактировать %{n}"
@@ -1266,7 +1270,7 @@ msgstr "Электронная почта"
 msgid "Email (*)"
 msgstr "Email (*)"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:112
+#: src/views/site/components/SiteStatusSegmented.vue:87
 #, fuzzy
 msgid "enable"
 msgstr "Включить"
@@ -1283,6 +1287,10 @@ msgstr "Двухфакторная аутентификация успешно 
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Не удалось включить автоматическое продление для %{name}"
 
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr ""
+
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgstr ""
@@ -1362,7 +1370,7 @@ msgstr "Поток %{name} успешно включён на %{node}"
 msgid "Enable stub_status module"
 msgstr ""
 
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:183
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
 msgid "Enable TLS"
 msgstr "Включить TLS"
 
@@ -1376,8 +1384,8 @@ msgstr "Включить TOTP"
 #: src/views/preference/LogrotateSettings.vue:19
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:155
-#: src/views/site/site_edit/SiteEdit.vue:193
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:110
 #: src/views/stream/components/RightSettings.vue:81
 #: src/views/stream/StreamEdit.vue:176 src/views/stream/StreamList.vue:56
@@ -1385,8 +1393,8 @@ msgstr "Включить TOTP"
 msgid "Enabled"
 msgstr "Включено"
 
+#: src/views/site/components/SiteStatusSegmented.vue:27
 #: src/views/site/site_add/SiteAdd.vue:40
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:33
 #: src/views/stream/StreamList.vue:88
 msgid "Enabled successfully"
@@ -1446,7 +1454,7 @@ msgid "Export"
 msgstr "Экспорт"
 
 #: src/views/preference/ExternalNotify.vue:10
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:172
 msgid "External Notify"
 msgstr ""
 
@@ -1593,24 +1601,24 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Не удалось получить сертификат"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:63
+#: src/views/site/components/SiteStatusSegmented.vue:46
 #: src/views/stream/components/RightSettings.vue:45
 #: src/views/stream/StreamList.vue:102
 msgid "Failed to disable %{msg}"
 msgstr "Не удалось отключить %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:95
+#: src/views/site/components/SiteStatusSegmented.vue:72
 #, fuzzy
 msgid "Failed to disable maintenance mode %{msg}"
 msgstr "Не удалось отключить %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:47
+#: src/views/site/components/SiteStatusSegmented.vue:33
 #: src/views/stream/components/RightSettings.vue:36
 #: src/views/stream/StreamList.vue:92
 msgid "Failed to enable %{msg}"
 msgstr "Не удалось включить %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:79
+#: src/views/site/components/SiteStatusSegmented.vue:59
 #, fuzzy
 msgid "Failed to enable maintenance mode %{msg}"
 msgstr "Не удалось включить %{msg}"
@@ -1731,7 +1739,7 @@ msgstr "Не удалось получить сертификат"
 msgid "Failed to save Nginx performance settings"
 msgstr "Не удалось получить информацию о сертификате"
 
-#: src/views/site/site_edit/SiteEdit.vue:139
+#: src/views/site/site_edit/SiteEdit.vue:137
 #: src/views/stream/StreamEdit.vue:122
 msgid "Failed to save, syntax error(s) was detected in the configuration."
 msgstr "Не удалось сохранить, обнаружены синтаксические ошибки в конфигурации."
@@ -1882,7 +1890,7 @@ msgid "Higher value means better connection reuse"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:256
-#: src/views/site/site_edit/SiteEdit.vue:212
+#: src/views/site/site_edit/SiteEdit.vue:215
 #: src/views/stream/StreamEdit.vue:195
 #, fuzzy
 msgid "History"
@@ -1897,7 +1905,7 @@ msgstr "Главная"
 msgid "Host"
 msgstr "Хостинг HTTP"
 
-#: src/views/preference/Preference.vue:182
+#: src/views/preference/Preference.vue:184
 #, fuzzy
 msgid "HTTP"
 msgstr "HTTP01"
@@ -2277,7 +2285,7 @@ msgstr "Авторизация успешна"
 msgid "Logout successful"
 msgstr "Выход выполнен успешно"
 
-#: src/views/preference/Preference.vue:218
+#: src/views/preference/Preference.vue:220
 msgid "Logrotate"
 msgstr "Прокрутка"
 
@@ -2297,17 +2305,18 @@ msgstr ""
 "вручную включить эту опцию. Планировщик задач crontab Nginx UI будет "
 "выполнять команду logrotate с интервалом, который вы установите в минутах."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:163
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
 #: src/views/site/site_list/columns.tsx:112
 msgid "Maintenance"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:88
+#: src/views/site/components/SiteStatusSegmented.vue:66
 #, fuzzy
 msgid "Maintenance mode disabled successfully"
 msgstr "Отключено успешно"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:72
+#: src/views/site/components/SiteStatusSegmented.vue:53
 #, fuzzy
 msgid "Maintenance mode enabled successfully"
 msgstr "Активировано успешно"
@@ -2489,8 +2498,8 @@ msgstr "Многострочная директива"
 #: src/views/nginx_log/NginxLogList.vue:33
 #: src/views/preference/components/AddPasskey.vue:75
 #: src/views/site/ngx_conf/NgxUpstream.vue:177
-#: src/views/site/site_edit/RightSettings.vue:63
-#: src/views/site/site_list/columns.tsx:17
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/components/RightSettings.vue:87
 #: src/views/stream/components/StreamDuplicate.vue:71
@@ -2541,7 +2550,7 @@ msgstr "Вышла новая версия"
 msgid "Next"
 msgstr "Дальше"
 
-#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:206
+#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:208
 msgid "Nginx"
 msgstr "Nginx"
 
@@ -2593,7 +2602,7 @@ msgstr "Белый список директорий для логов Nginx"
 msgid "Nginx configuration has been restored"
 msgstr "Ошибка разбора конфигурации Nginx"
 
-#: src/views/site/site_edit/SiteEdit.vue:244
+#: src/views/site/site_edit/SiteEdit.vue:247
 #: src/views/stream/StreamEdit.vue:226
 msgid "Nginx Configuration Parse Error"
 msgstr "Ошибка разбора конфигурации Nginx"
@@ -2735,13 +2744,13 @@ msgstr ""
 msgid "No records selected"
 msgstr ""
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:178
 #, fuzzy
 msgid "Node"
 msgstr "Имя узла"
 
-#: src/views/site/site_edit/RightSettings.vue:66
-#: src/views/site/site_list/columns.tsx:65
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:32
 #, fuzzy
@@ -2784,7 +2793,7 @@ msgstr "Недействительно до: %{date}"
 msgid "Note"
 msgstr "Заметка"
 
-#: src/views/site/site_edit/RightSettings.vue:95
+#: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
 msgid ""
 "Note, if the configuration file include other configurations or "
@@ -2872,10 +2881,10 @@ msgstr "Ок"
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50
-#: src/views/site/ngx_conf/NgxServer.vue:79
+#: src/views/site/ngx_conf/NgxServer.vue:82
 #: src/views/site/ngx_conf/NgxUpstream.vue:33
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:121
 #: src/views/site/site_list/SiteList.vue:121
 #: src/views/stream/components/RightSettings.vue:54
 #: src/views/stream/StreamList.vue:238
@@ -2904,7 +2913,7 @@ msgstr "Онлайн"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:212
+#: src/views/preference/Preference.vue:214
 msgid "OpenAI"
 msgstr "OpenAI"
 
@@ -3190,7 +3199,7 @@ msgstr "Действие"
 msgid "Pre-release"
 msgstr "Предварительный выпуск"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:153
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:155
 msgid "Preference"
 msgstr "Настройки"
 
@@ -3633,10 +3642,10 @@ msgstr "Выполняется"
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/ConfigEditor.vue:277
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:229
+#: src/views/preference/Preference.vue:231
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:292
+#: src/views/site/site_edit/SiteEdit.vue:295
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/StreamEdit.vue:271
 msgid "Save"
@@ -3692,14 +3701,14 @@ msgstr "Поток %{name} успешно сохранён на %{node}"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/components/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:125
+#: src/views/preference/Preference.vue:127
 msgid "Save successfully"
 msgstr "Сохранено успешно"
 
 #: src/views/config/ConfigEditor.vue:194
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:157
+#: src/views/site/site_edit/SiteEdit.vue:155
 #: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "Успешно сохранено"
@@ -3745,7 +3754,7 @@ msgstr ""
 msgid "Send"
 msgstr "Отправлено"
 
-#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:158
+#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:160
 #, fuzzy
 msgid "Server"
 msgstr "Информация о сервере"
@@ -3782,7 +3791,7 @@ msgstr ""
 "Установите рекурсивные серверы имен, чтобы переопределить системные серверы "
 "имен для шага проверки DNS."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:114
+#: src/views/site/components/SiteStatusSegmented.vue:89
 #, fuzzy
 msgid "set to maintenance mode"
 msgstr "Ошибка переименования удаленной конфигурации"
@@ -3947,8 +3956,8 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:65
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_edit/RightSettings.vue:55
-#: src/views/site/site_list/columns.tsx:89 src/views/stream/StreamList.vue:49
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90 src/views/stream/StreamList.vue:49
 msgid "Status"
 msgstr "Статус"
 
@@ -4072,8 +4081,8 @@ msgstr "Синхронизация конфигурации успешна"
 msgid "Sync Nodes"
 msgstr "Синхронизировать с"
 
-#: src/views/site/site_edit/RightSettings.vue:101
-#: src/views/site/site_edit/RightSettings.vue:88
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/stream/components/RightSettings.vue:111
 #: src/views/stream/components/RightSettings.vue:124
 #, fuzzy
@@ -4084,7 +4093,7 @@ msgstr "Синхронизировать сертификат"
 msgid "Sync to"
 msgstr "Синхронизировать с"
 
-#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/site/site_edit/RightSettings.vue:75
 #: src/views/stream/components/RightSettings.vue:108
 msgid "Synchronization"
 msgstr ""
@@ -4121,7 +4130,7 @@ msgstr "Файл не найден"
 msgid "Telegram"
 msgstr ""
 
-#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:188
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:190
 #: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "Терминал"
@@ -4167,6 +4176,7 @@ msgid ""
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
 #, fuzzy
 msgid ""
 "The model name should only contain letters, unicode, numbers, hyphens, "
@@ -4175,6 +4185,11 @@ msgstr ""
 "Имя модели должно содержать только буквы, юникод, цифры, дефисы, тире и "
 "точки."
 
+#: src/views/preference/OpenAISettings.vue:90
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
+msgstr ""
+
 #: src/views/preference/NodeSettings.vue:18
 #, fuzzy
 msgid ""
@@ -4478,8 +4493,8 @@ msgstr "Успешно обновлено"
 #: src/views/config/configColumns.tsx:36 src/views/config/ConfigEditor.vue:331
 #: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
-#: src/views/site/site_edit/RightSettings.vue:75
-#: src/views/site/site_list/columns.tsx:82
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:69 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -4658,7 +4673,7 @@ msgid ""
 "Pebble as CA."
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/site/site_edit/RightSettings.vue:81
 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."

+ 81 - 66
app/src/language/tr_TR/app.po

@@ -67,7 +67,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
 #: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:163
+#: src/views/site/ngx_conf/NgxServer.vue:166
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:182
 msgid "Add"
@@ -108,7 +108,7 @@ msgstr "Başarıyla eklendi"
 msgid "Additional"
 msgstr "İlave bilgi"
 
-#: src/views/site/site_edit/SiteEdit.vue:225
+#: src/views/site/site_edit/SiteEdit.vue:228
 #: src/views/stream/StreamEdit.vue:207
 msgid "Advance Mode"
 msgstr "Gelişmiş Mod"
@@ -148,7 +148,7 @@ msgstr "API Token"
 msgid "API Type"
 msgstr "API Türü"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:166
 msgid "App"
 msgstr "Uygulama"
 
@@ -249,7 +249,7 @@ msgstr "Girişimler"
 msgid "Attempts"
 msgstr "Girişimler"
 
-#: src/views/preference/Preference.vue:194
+#: src/views/preference/Preference.vue:196
 msgid "Auth"
 msgstr "Kimlik Doğrulama"
 
@@ -298,7 +298,7 @@ msgstr ""
 #: src/views/certificate/components/CertificateEditor.vue:257
 #: src/views/config/ConfigEditor.vue:268 src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:285
+#: src/views/site/site_edit/SiteEdit.vue:288
 #: src/views/stream/StreamEdit.vue:264
 msgid "Back"
 msgstr "Geri"
@@ -351,12 +351,12 @@ msgid "Base information"
 msgstr "Temel bilgiler"
 
 #: src/views/config/ConfigEditor.vue:296
-#: src/views/site/site_edit/RightSettings.vue:52
+#: src/views/site/site_edit/RightSettings.vue:43
 #: src/views/stream/components/RightSettings.vue:79
 msgid "Basic"
 msgstr "Temel"
 
-#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/site/site_edit/SiteEdit.vue:231
 #: src/views/stream/StreamEdit.vue:210
 msgid "Basic Mode"
 msgstr "Temel Mod"
@@ -452,10 +452,10 @@ msgstr ""
 #: src/components/StdDesign/StdDetail/StdDetail.vue:101
 #: src/views/preference/components/Passkey.vue:141
 #: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51
-#: src/views/site/ngx_conf/NgxServer.vue:80
+#: src/views/site/ngx_conf/NgxServer.vue:83
 #: src/views/site/ngx_conf/NgxUpstream.vue:34
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:122
 #: src/views/stream/components/RightSettings.vue:55
 msgid "Cancel"
 msgstr "İptal"
@@ -479,7 +479,7 @@ msgstr ""
 msgid "Cannot remove initial user"
 msgstr "Sistem İlk Kullanıcısı"
 
-#: src/views/preference/Preference.vue:200
+#: src/views/preference/Preference.vue:202
 msgid "Cert"
 msgstr ""
 
@@ -550,7 +550,7 @@ msgid "Certificate renewed successfully"
 msgstr "Başarıyla temizlendi"
 
 #: src/views/certificate/components/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:60
+#: src/views/site/cert/Cert.vue:62
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "Sertifika Durumu"
@@ -574,7 +574,7 @@ msgstr "Doğrulama Yöntemi"
 msgid "Change Certificate"
 msgstr "Sertifika Değiştir"
 
-#: src/views/site/cert/Cert.vue:79
+#: src/views/site/cert/Cert.vue:81
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] "Değişen Sertifika"
@@ -675,6 +675,10 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgstr "Komut"
@@ -682,7 +686,7 @@ msgstr "Komut"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:135
+#: src/views/site/ngx_conf/NgxServer.vue:138
 msgid "Comments"
 msgstr "Yorumlar"
 
@@ -883,7 +887,7 @@ msgid "Current Version"
 msgstr "Mevcut sürüm"
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:194
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
 msgid "Custom"
 msgstr "Özelleştirilmiş"
 
@@ -919,7 +923,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
-#: src/views/site/ngx_conf/NgxServer.vue:110
+#: src/views/site/ngx_conf/NgxServer.vue:113
 #: src/views/site/ngx_conf/NgxUpstream.vue:128
 #: src/views/site/site_list/SiteList.vue:131
 #: src/views/stream/StreamList.vue:248
@@ -1048,7 +1052,7 @@ msgstr "Yönergeler"
 msgid "Directory path to store cache files"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
+#: src/views/site/components/SiteStatusSegmented.vue:88
 #, fuzzy
 msgid "disable"
 msgstr "Devre Dışı"
@@ -1138,14 +1142,14 @@ msgstr ""
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:159
-#: src/views/site/site_edit/SiteEdit.vue:199
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
 #: src/views/site/site_list/columns.tsx:111 src/views/stream/StreamEdit.vue:182
 #: src/views/stream/StreamList.vue:60 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Devre dışı"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:56
+#: src/views/site/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:42
 #: src/views/stream/StreamList.vue:98
 msgid "Disabled successfully"
@@ -1173,7 +1177,7 @@ msgstr "DNS01"
 msgid "Do not enable this option unless you are sure that you need it."
 msgstr "Bu seçeneği, ihtiyacınız olduğundan emin olmadıkça etkinleştirmeyin."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:118
+#: src/views/site/components/SiteStatusSegmented.vue:93
 #, fuzzy
 msgid "Do you want to %{action} this site?"
 msgstr "Bu siteyi etkinleştirmek istiyor musunuz?"
@@ -1194,7 +1198,7 @@ msgstr "Bu akışı etkinleştirmek istiyor musunuz?"
 msgid "Do you want to enable TLS?"
 msgstr "TLS'yi etkinleştirmek istiyor musunuz?"
 
-#: src/views/site/ngx_conf/NgxServer.vue:76
+#: src/views/site/ngx_conf/NgxServer.vue:79
 msgid "Do you want to remove this server?"
 msgstr "Bu sunucuyu kaldırmak istiyor musunuz?"
 
@@ -1259,7 +1263,7 @@ msgstr "Başarıyla yerel kopya oluşturuldu"
 msgid "Edit"
 msgstr "Düzenle %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:188
+#: src/views/site/site_edit/SiteEdit.vue:185
 #: src/views/stream/StreamEdit.vue:171
 msgid "Edit %{n}"
 msgstr "Düzenle %{n}"
@@ -1285,7 +1289,7 @@ msgstr "E-posta"
 msgid "Email (*)"
 msgstr "E-posta(*)"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:112
+#: src/views/site/components/SiteStatusSegmented.vue:87
 #, fuzzy
 msgid "enable"
 msgstr "Etkinleştir"
@@ -1302,6 +1306,10 @@ msgstr "2FA'yı başarıyla etkinleştirildi"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "%{name} için otomatik yenilemeyi etkinleştirme başarısız oldu"
 
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr ""
+
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgstr ""
@@ -1395,7 +1403,7 @@ msgstr ""
 msgid "Enable stub_status module"
 msgstr ""
 
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:183
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
 msgid "Enable TLS"
 msgstr "TLS'yi Etkinleştir"
 
@@ -1409,8 +1417,8 @@ msgstr "TOTP'yi Etkinleştir"
 #: src/views/preference/LogrotateSettings.vue:19
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:155
-#: src/views/site/site_edit/SiteEdit.vue:193
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:110
 #: src/views/stream/components/RightSettings.vue:81
 #: src/views/stream/StreamEdit.vue:176 src/views/stream/StreamList.vue:56
@@ -1418,8 +1426,8 @@ msgstr "TOTP'yi Etkinleştir"
 msgid "Enabled"
 msgstr "Etkin"
 
+#: src/views/site/components/SiteStatusSegmented.vue:27
 #: src/views/site/site_add/SiteAdd.vue:40
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:33
 #: src/views/stream/StreamList.vue:88
 msgid "Enabled successfully"
@@ -1479,7 +1487,7 @@ msgid "Export"
 msgstr "Dışa Aktar"
 
 #: src/views/preference/ExternalNotify.vue:10
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:172
 msgid "External Notify"
 msgstr ""
 
@@ -1626,24 +1634,24 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Sertifika alınamadı"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:63
+#: src/views/site/components/SiteStatusSegmented.vue:46
 #: src/views/stream/components/RightSettings.vue:45
 #: src/views/stream/StreamList.vue:102
 msgid "Failed to disable %{msg}"
 msgstr "Devre dışı bırakılamadı %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:95
+#: src/views/site/components/SiteStatusSegmented.vue:72
 #, fuzzy
 msgid "Failed to disable maintenance mode %{msg}"
 msgstr "Devre dışı bırakılamadı %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:47
+#: src/views/site/components/SiteStatusSegmented.vue:33
 #: src/views/stream/components/RightSettings.vue:36
 #: src/views/stream/StreamList.vue:92
 msgid "Failed to enable %{msg}"
 msgstr "Etkinleştirilemedi %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:79
+#: src/views/site/components/SiteStatusSegmented.vue:59
 #, fuzzy
 msgid "Failed to enable maintenance mode %{msg}"
 msgstr "Etkinleştirilemedi %{msg}"
@@ -1764,7 +1772,7 @@ msgstr "Sertifika alınamadı"
 msgid "Failed to save Nginx performance settings"
 msgstr "Sertifika bilgileri alınamadı"
 
-#: src/views/site/site_edit/SiteEdit.vue:139
+#: src/views/site/site_edit/SiteEdit.vue:137
 #: src/views/stream/StreamEdit.vue:122
 msgid "Failed to save, syntax error(s) was detected in the configuration."
 msgstr "Kaydedilemedi, yapılandırmada sözdizimi hatası(ları) tespit edildi."
@@ -1915,7 +1923,7 @@ msgid "Higher value means better connection reuse"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:256
-#: src/views/site/site_edit/SiteEdit.vue:212
+#: src/views/site/site_edit/SiteEdit.vue:215
 #: src/views/stream/StreamEdit.vue:195
 #, fuzzy
 msgid "History"
@@ -1930,7 +1938,7 @@ msgstr "Anasayfa"
 msgid "Host"
 msgstr "HTTP Sunucusu"
 
-#: src/views/preference/Preference.vue:182
+#: src/views/preference/Preference.vue:184
 #, fuzzy
 msgid "HTTP"
 msgstr "HTTP01"
@@ -2312,7 +2320,7 @@ msgstr "Giriş Başarılı"
 msgid "Logout successful"
 msgstr "Çıkış başarılı"
 
-#: src/views/preference/Preference.vue:218
+#: src/views/preference/Preference.vue:220
 msgid "Logrotate"
 msgstr "Logrotate"
 
@@ -2332,17 +2340,18 @@ msgstr ""
 "etkinleştirebilir. Nginx UI'nin crontab görev zamanlayıcısı, belirlediğiniz "
 "dakika aralığında logrotate komutunu çalıştıracaktır."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:163
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
 #: src/views/site/site_list/columns.tsx:112
 msgid "Maintenance"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:88
+#: src/views/site/components/SiteStatusSegmented.vue:66
 #, fuzzy
 msgid "Maintenance mode disabled successfully"
 msgstr "Başarıyla devre dışı bırakıldı"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:72
+#: src/views/site/components/SiteStatusSegmented.vue:53
 #, fuzzy
 msgid "Maintenance mode enabled successfully"
 msgstr "Başarıyla etkinleştirildi"
@@ -2540,8 +2549,8 @@ msgstr "Çok Hatlı Direktif"
 #: src/views/nginx_log/NginxLogList.vue:33
 #: src/views/preference/components/AddPasskey.vue:75
 #: src/views/site/ngx_conf/NgxUpstream.vue:177
-#: src/views/site/site_edit/RightSettings.vue:63
-#: src/views/site/site_list/columns.tsx:17
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/components/RightSettings.vue:87
 #: src/views/stream/components/StreamDuplicate.vue:71
@@ -2601,7 +2610,7 @@ msgstr "Yeni sürüm yayınlandı"
 msgid "Next"
 msgstr "Sonraki"
 
-#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:206
+#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:208
 #, fuzzy
 msgid "Nginx"
 msgstr "Nginx"
@@ -2655,7 +2664,7 @@ msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 msgid "Nginx configuration has been restored"
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 
-#: src/views/site/site_edit/SiteEdit.vue:244
+#: src/views/site/site_edit/SiteEdit.vue:247
 #: src/views/stream/StreamEdit.vue:226
 #, fuzzy
 msgid "Nginx Configuration Parse Error"
@@ -2805,13 +2814,13 @@ msgstr ""
 msgid "No records selected"
 msgstr ""
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:178
 #, fuzzy
 msgid "Node"
 msgstr "Yeni Ad"
 
-#: src/views/site/site_edit/RightSettings.vue:66
-#: src/views/site/site_list/columns.tsx:65
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:32
 #, fuzzy
@@ -2860,7 +2869,7 @@ msgstr "Önce Geçerli Değil: %{date}"
 msgid "Note"
 msgstr "Not"
 
-#: src/views/site/site_edit/RightSettings.vue:95
+#: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
 msgid ""
 "Note, if the configuration file include other configurations or "
@@ -2954,10 +2963,10 @@ msgstr "Tamam"
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50
-#: src/views/site/ngx_conf/NgxServer.vue:79
+#: src/views/site/ngx_conf/NgxServer.vue:82
 #: src/views/site/ngx_conf/NgxUpstream.vue:33
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:121
 #: src/views/site/site_list/SiteList.vue:121
 #: src/views/stream/components/RightSettings.vue:54
 #: src/views/stream/StreamList.vue:238
@@ -2989,7 +2998,7 @@ msgstr "Çevrimiçi"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:212
+#: src/views/preference/Preference.vue:214
 #, fuzzy
 msgid "OpenAI"
 msgstr "OpenAI"
@@ -3309,7 +3318,7 @@ msgstr "Eylem"
 msgid "Pre-release"
 msgstr "Ön sürüm"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:153
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:155
 #, fuzzy
 msgid "Preference"
 msgstr "Tercih"
@@ -3806,10 +3815,10 @@ msgstr "Çalışıyor"
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/ConfigEditor.vue:277
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:229
+#: src/views/preference/Preference.vue:231
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:292
+#: src/views/site/site_edit/SiteEdit.vue:295
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/StreamEdit.vue:271
 #, fuzzy
@@ -3871,7 +3880,7 @@ msgstr "%{conf_name} başarıyla %{node_name} düğümüne kopyalandı"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/components/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:125
+#: src/views/preference/Preference.vue:127
 #, fuzzy
 msgid "Save successfully"
 msgstr "Başarıyla kaydedin"
@@ -3879,7 +3888,7 @@ msgstr "Başarıyla kaydedin"
 #: src/views/config/ConfigEditor.vue:194
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:157
+#: src/views/site/site_edit/SiteEdit.vue:155
 #: src/views/stream/StreamEdit.vue:141
 #, fuzzy
 msgid "Saved successfully"
@@ -3929,7 +3938,7 @@ msgstr ""
 msgid "Send"
 msgstr "Gönder"
 
-#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:158
+#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:160
 #, fuzzy
 msgid "Server"
 msgstr "Sunucu Bilgisi"
@@ -3970,7 +3979,7 @@ msgstr ""
 "Özyinelemeli ad sunucularını, DNS zorluğu adımı için sistem ad sunucularını "
 "geçersiz kılacak şekilde ayarlayın."
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:114
+#: src/views/site/components/SiteStatusSegmented.vue:89
 #, fuzzy
 msgid "set to maintenance mode"
 msgstr "Uzak Yapılandırmayı Yeniden Adlandır Hatası"
@@ -4149,8 +4158,8 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:65
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_edit/RightSettings.vue:55
-#: src/views/site/site_list/columns.tsx:89 src/views/stream/StreamList.vue:49
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90 src/views/stream/StreamList.vue:49
 #, fuzzy
 msgid "Status"
 msgstr "Durum"
@@ -4288,8 +4297,8 @@ msgstr "Senkronizasyon Yapılandırması Başarılı"
 msgid "Sync Nodes"
 msgstr "Şununla senkronize et"
 
-#: src/views/site/site_edit/RightSettings.vue:101
-#: src/views/site/site_edit/RightSettings.vue:88
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/stream/components/RightSettings.vue:111
 #: src/views/stream/components/RightSettings.vue:124
 #, fuzzy
@@ -4301,7 +4310,7 @@ msgstr "Senkronizasyon Sertifikası"
 msgid "Sync to"
 msgstr "Şununla senkronize et"
 
-#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/site/site_edit/RightSettings.vue:75
 #: src/views/stream/components/RightSettings.vue:108
 msgid "Synchronization"
 msgstr ""
@@ -4340,7 +4349,7 @@ msgstr "Dosya bulunamadı"
 msgid "Telegram"
 msgstr ""
 
-#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:188
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:190
 #: src/views/terminal/Terminal.vue:129
 #, fuzzy
 msgid "Terminal"
@@ -4391,6 +4400,7 @@ msgid ""
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
 #, fuzzy
 msgid ""
 "The model name should only contain letters, unicode, numbers, hyphens, "
@@ -4398,6 +4408,11 @@ msgid ""
 msgstr ""
 "Model adı yalnızca harf, unicode, sayı, tire, çizgi ve nokta içermelidir."
 
+#: src/views/preference/OpenAISettings.vue:90
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
+msgstr ""
+
 #: src/views/preference/NodeSettings.vue:18
 #, fuzzy
 msgid ""
@@ -4729,8 +4744,8 @@ msgstr "Güncellendi"
 #: src/views/config/configColumns.tsx:36 src/views/config/ConfigEditor.vue:331
 #: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
-#: src/views/site/site_edit/RightSettings.vue:75
-#: src/views/site/site_list/columns.tsx:82
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:69 src/views/user/userColumns.tsx:54
 #, fuzzy
@@ -4935,7 +4950,7 @@ msgstr ""
 "yeniden kaydeder. Genel olarak, bir geliştirme ortamında değilseniz ve CA "
 "olarak Pebble kullanmıyorsanız bunu etkinleştirmeyin."
 
-#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/site/site_edit/RightSettings.vue:81
 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."

+ 4319 - 0
app/src/language/uk_UA/app.po

@@ -0,0 +1,4319 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: src/views/user/userColumns.tsx:32
+msgid "2FA"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:70
+msgid "2FA Settings"
+msgstr ""
+
+#: src/routes/modules/system.ts:45
+msgid "About"
+msgstr ""
+
+#: src/views/nginx_log/NginxLogList.vue:26
+msgid "Access Log"
+msgstr ""
+
+#: src/routes/modules/nginx_log.ts:17 src/views/site/ngx_conf/LogEntry.vue:91
+msgid "Access Logs"
+msgstr ""
+
+#: src/routes/modules/certificates.ts:20 src/views/certificate/ACMEUser.vue:113
+#: src/views/certificate/components/ACMEUserSelector.vue:85
+msgid "ACME User"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:95
+#: src/views/certificate/CertificateList/certColumns.tsx:94
+#: src/views/certificate/DNSCredential.vue:33
+#: src/views/config/configColumns.tsx:44
+#: src/views/environments/group/columns.ts:43
+#: src/views/environments/list/envColumns.tsx:97
+#: src/views/nginx_log/NginxLogList.vue:49
+#: src/views/notification/notificationColumns.tsx:66
+#: src/views/preference/AuthSettings.vue:30
+#: src/views/preference/components/ExternalNotify/columns.ts:46
+#: src/views/site/site_list/columns.tsx:120 src/views/stream/StreamList.vue:76
+#: src/views/user/userColumns.tsx:60
+msgid "Action"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:84
+#: src/views/dashboard/components/PerformanceTablesCard.vue:43
+msgid "Active connections"
+msgstr ""
+
+#: src/views/dashboard/components/ProcessDistributionCard.vue:48
+msgid "Actual worker to configured ratio"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
+#: src/views/preference/CertSettings.vue:45
+#: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
+#: src/views/site/ngx_conf/NgxServer.vue:166
+#: src/views/site/ngx_conf/NgxUpstream.vue:154
+#: src/views/stream/StreamList.vue:182
+msgid "Add"
+msgstr ""
+
+#: src/views/preference/components/AddPasskey.vue:45
+#: src/views/preference/components/AddPasskey.vue:49
+msgid "Add a passkey"
+msgstr ""
+
+#: src/routes/modules/config.ts:20 src/views/config/ConfigEditor.vue:171
+#: src/views/config/ConfigEditor.vue:246
+msgid "Add Configuration"
+msgstr ""
+
+#: src/views/site/ngx_conf/directive/DirectiveAdd.vue:119
+msgid "Add Directive Below"
+msgstr ""
+
+#: src/views/site/ngx_conf/LocationEditor.vue:130
+#: src/views/site/ngx_conf/LocationEditor.vue:157
+msgid "Add Location"
+msgstr ""
+
+#: src/routes/modules/sites.ts:26 src/views/site/site_add/SiteAdd.vue:89
+msgid "Add Site"
+msgstr ""
+
+#: src/views/stream/StreamList.vue:255
+msgid "Add Stream"
+msgstr ""
+
+#: src/views/stream/StreamList.vue:160
+msgid "Added successfully"
+msgstr ""
+
+#: src/views/certificate/DNSChallenge.vue:110
+msgid "Additional"
+msgstr ""
+
+#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/stream/StreamEdit.vue:207
+msgid "Advance Mode"
+msgstr ""
+
+#: src/views/preference/components/AddPasskey.vue:99
+msgid "Afterwards, refresh this page and click add passkey again."
+msgstr ""
+
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
+msgid "All"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:109
+#: src/language/constants.ts:58
+msgid "All Recovery Codes Have Been Used"
+msgstr ""
+
+#: src/views/preference/OpenAISettings.vue:32
+msgid "API Base Url"
+msgstr ""
+
+#: src/views/certificate/DNSChallenge.vue:83
+msgid "API Document"
+msgstr ""
+
+#: src/views/preference/OpenAISettings.vue:46
+msgid "API Proxy"
+msgstr ""
+
+#: src/views/preference/OpenAISettings.vue:58
+msgid "API Token"
+msgstr ""
+
+#: src/views/preference/OpenAISettings.vue:67
+msgid "API Type"
+msgstr ""
+
+#: src/views/preference/Preference.vue:166
+msgid "App"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:103
+msgid "Apply"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:67
+msgid "Apply bulk action successfully"
+msgstr ""
+
+#: src/views/system/Upgrade.vue:176
+msgid "Arch"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:162
+msgid "Are you sure to delete this banned IP immediately?"
+msgstr ""
+
+#: src/views/preference/components/Passkey.vue:113
+msgid "Are you sure to delete this passkey immediately?"
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:154
+msgid "Are you sure to generate new recovery codes?"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:85
+msgid "Are you sure to reset 2FA?"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:96
+msgid "Are you sure you want to apply to all selected?"
+msgstr ""
+
+#: src/components/Notification/Notification.vue:135
+#: src/views/notification/Notification.vue:39
+msgid "Are you sure you want to clear all notifications?"
+msgstr ""
+
+#: src/components/ChatGPT/ChatGPT.vue:376
+msgid "Are you sure you want to clear the record of chat?"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:540
+msgid "Are you sure you want to delete this item permanently?"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:512
+msgid "Are you sure you want to delete this item?"
+msgstr ""
+
+#: src/views/site/site_list/SiteList.vue:122
+#: src/views/stream/StreamList.vue:239
+msgid "Are you sure you want to delete?"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:526
+msgid "Are you sure you want to recover this item?"
+msgstr ""
+
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+msgid "Are you sure you want to reload Nginx on the following sync nodes?"
+msgstr ""
+
+#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:95
+msgid "Are you sure you want to remove this directive?"
+msgstr ""
+
+#: src/views/preference/CertSettings.vue:71
+msgid "Are you sure you want to remove this item?"
+msgstr ""
+
+#: src/views/site/ngx_conf/LocationEditor.vue:86
+msgid "Are you sure you want to remove this location?"
+msgstr ""
+
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+msgid "Are you sure you want to restart Nginx on the following sync nodes?"
+msgstr ""
+
+#: src/components/ChatGPT/ChatGPT.vue:318
+msgid "Ask ChatGPT for Help"
+msgstr ""
+
+#: src/components/ChatGPT/ChatGPT.vue:333
+msgid "Assistant"
+msgstr ""
+
+#: src/views/system/SelfCheck/SelfCheck.vue:50
+msgid "Attempt to fix"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:21
+msgid "Attempts"
+msgstr ""
+
+#: src/views/preference/Preference.vue:196
+msgid "Auth"
+msgstr ""
+
+#: src/components/TwoFA/Authorization.vue:109
+msgid "Authenticate with a passkey"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:88
+msgid "Authentication Settings"
+msgstr ""
+
+#: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:106
+#: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:120
+msgid "Author"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:31
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:43
+msgid "Auto"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceTablesCard.vue:200
+msgid "auto = CPU cores"
+msgstr ""
+
+#: src/views/nginx_log/NginxLog.vue:149
+msgid "Auto Refresh"
+msgstr ""
+
+#: src/views/site/cert/components/ObtainCert.vue:80
+msgid "Auto-renewal disabled for %{name}"
+msgstr ""
+
+#: src/views/site/cert/components/ObtainCert.vue:73
+msgid "Auto-renewal enabled for %{name}"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:332
+msgid "Automatic Restart"
+msgstr ""
+
+#: src/views/nginx_log/NginxLogList.vue:79
+msgid "Automatically indexed from site and stream configurations."
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:257
+#: src/views/config/ConfigEditor.vue:268 src/views/config/ConfigList.vue:112
+#: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:173
+#: src/views/site/site_edit/SiteEdit.vue:288
+#: src/views/stream/StreamEdit.vue:264
+msgid "Back"
+msgstr ""
+
+#: src/views/other/Error.vue:22
+msgid "Back Home"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:206
+msgid "Back to list"
+msgstr ""
+
+#: src/routes/modules/system.ts:26
+msgid "Backup"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:155
+msgid "Backup file integrity check failed, it may have been tampered with"
+msgstr ""
+
+#: src/constants/errors/backup.ts:41
+msgid "Backup file not found: {0}"
+msgstr ""
+
+#: src/views/system/Backup/BackupCreator.vue:42
+msgid "Backup has been downloaded successfully"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:129
+msgid "Ban Threshold Minutes"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:150
+msgid "Banned IPs"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:24
+msgid "Banned Until"
+msgstr ""
+
+#: src/views/preference/components/ExternalNotify/bark.ts:5
+msgid "Bark"
+msgstr ""
+
+#: src/views/site/site_add/SiteAdd.vue:95
+msgid "Base information"
+msgstr ""
+
+#: src/views/config/ConfigEditor.vue:296
+#: src/views/site/site_edit/RightSettings.vue:43
+#: src/views/stream/components/RightSettings.vue:79
+msgid "Basic"
+msgstr ""
+
+#: src/views/site/site_edit/SiteEdit.vue:231
+#: src/views/stream/StreamEdit.vue:210
+msgid "Basic Mode"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:119
+msgid "Basic Settings"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:83
+msgid "Batch Actions"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:62
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:448
+msgid "Batch Modify"
+msgstr ""
+
+#: src/views/environments/list/BatchUpgrader.vue:152
+msgid "Batch Upgrade"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70
+msgid "Belows are selected items that you want to batch modify"
+msgstr ""
+
+#: src/constants/errors/nginx.ts:2
+msgid "Block is nil"
+msgstr ""
+
+#: src/views/system/About.vue:55
+msgid "Build with"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:37
+msgid "CA Dir"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOptimization.vue:124
+msgid "Cache"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
+msgid "Cache items not accessed within this time will be removed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
+msgid "Cache loader processing time threshold"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:139
+#: src/views/dashboard/components/PerformanceTablesCard.vue:94
+msgid "Cache manager processes"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:288
+msgid "Cache manager processing time threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:246
+msgid "Cache Manager Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:124
+msgid "Cache Path"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:57
+#: src/views/dashboard/components/ProcessDistributionCard.vue:14
+msgid "Cache Processes"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:137
+msgid "Cache subdirectory levels structure, e.g. 1:2"
+msgstr ""
+
+#: src/views/preference/CertSettings.vue:19
+msgid "CADir"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceStatisticsCard.vue:43
+#: src/views/dashboard/components/PerformanceTablesCard.vue:190
+msgid "Calculated based on worker_processes * worker_connections. Actual performance depends on hardware, configuration, and workload"
+msgstr ""
+
+#: src/components/ChatGPT/ChatGPT.vue:356
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
+#: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
+#: src/components/StdDesign/StdDetail/StdDetail.vue:101
+#: src/views/preference/components/Passkey.vue:141
+#: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:51
+#: src/views/site/ngx_conf/NgxServer.vue:83
+#: src/views/site/ngx_conf/NgxUpstream.vue:34
+#: src/views/stream/components/RightSettings.vue:55
+msgid "Cancel"
+msgstr ""
+
+#: src/constants/errors/user.ts:11
+msgid "Cannot change initial user password in demo mode"
+msgstr ""
+
+#: src/components/ConfigHistory/DiffViewer.vue:67
+#: src/components/ConfigHistory/DiffViewer.vue:84
+msgid "Cannot compare: Missing content"
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:132
+msgid "Cannot get performance data in this state"
+msgstr ""
+
+#: src/constants/errors/user.ts:10
+msgid "Cannot remove initial user"
+msgstr ""
+
+#: src/views/preference/Preference.vue:202
+msgid "Cert"
+msgstr ""
+
+#: src/constants/errors/cert.ts:3
+msgid "Cert path is not under the nginx conf dir"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:134
+msgid "Certificate %{name} has expired"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:138
+#: src/components/Notification/notifications.ts:142
+#: src/components/Notification/notifications.ts:146
+msgid "Certificate %{name} will expire in %{days} days"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:150
+msgid "Certificate %{name} will expire in 1 day"
+msgstr ""
+
+#: src/constants/errors/cert.ts:4
+msgid "Certificate decode error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:137
+msgid "Certificate Expiration Notice"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:133
+msgid "Certificate Expired"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:141
+#: src/components/Notification/notifications.ts:145
+#: src/components/Notification/notifications.ts:149
+msgid "Certificate Expiring Soon"
+msgstr ""
+
+#: src/constants/errors/cert.ts:5
+msgid "Certificate parse error"
+msgstr ""
+
+#: src/constants/errors/cert.ts:8
+msgid "Certificate path is empty"
+msgstr ""
+
+#: src/views/certificate/components/RemoveCert.vue:41
+#: src/views/certificate/components/RemoveCert.vue:61
+msgid "Certificate removed successfully"
+msgstr ""
+
+#: src/views/preference/CertSettings.vue:27
+msgid "Certificate Renewal Interval"
+msgstr ""
+
+#: src/language/constants.ts:21
+msgid "Certificate renewed successfully"
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:128
+#: src/views/site/cert/Cert.vue:62
+msgid "Certificate Status"
+msgid_plural "Certificates Status"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: src/routes/modules/certificates.ts:11
+#: src/views/certificate/CertificateList/Certificate.vue:14
+msgid "Certificates"
+msgstr ""
+
+#: src/routes/modules/certificates.ts:28
+msgid "Certificates List"
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:66
+msgid "Challenge Method"
+msgstr ""
+
+#: src/views/site/cert/components/ChangeCert/ChangeCert.vue:49
+#: src/views/site/cert/components/ChangeCert/ChangeCert.vue:53
+msgid "Change Certificate"
+msgstr ""
+
+#: src/views/site/cert/Cert.vue:81
+msgid "Changed Certificate"
+msgid_plural "Changed Certificates"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: src/views/config/ConfigEditor.vue:324
+msgid "Changed Path"
+msgstr ""
+
+#: src/views/environments/list/BatchUpgrader.vue:159
+#: src/views/system/Upgrade.vue:188
+msgid "Channel"
+msgstr ""
+
+#: src/views/system/Upgrade.vue:185
+msgid "Check again"
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/frontend/https-check.ts:11
+msgid "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and prevents using Passkeys and clipboard features."
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/backend/index.ts:26
+msgid "Check if the nginx.conf includes the conf.d directory."
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/backend/index.ts:16
+msgid "Check if the nginx.conf includes the sites-enabled directory."
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/backend/index.ts:21
+msgid "Check if the nginx.conf includes the streams-enabled directory."
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/backend/index.ts:6
+msgid "Check if the sites-available and sites-enabled directories are under the nginx configuration directory."
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/backend/index.ts:11
+msgid "Check if the streams-available and streams-enabled directories are under the nginx configuration directory."
+msgstr ""
+
+#: src/constants/errors/crypto.ts:3
+msgid "Cipher text is too short"
+msgstr ""
+
+#: src/language/constants.ts:13
+msgid "Cleaning environment variables"
+msgstr ""
+
+#: src/components/ChatGPT/ChatGPT.vue:380
+#: src/components/Notification/Notification.vue:140
+#: src/views/notification/Notification.vue:44
+msgid "Clear"
+msgstr ""
+
+#: src/components/Notification/Notification.vue:93
+#: src/views/notification/Notification.vue:13
+msgid "Cleared successfully"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:194
+#: src/components/SystemRestore/SystemRestoreContent.vue:271
+msgid "Click or drag backup file to this area to upload"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:110
+msgid "Click to copy"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:120
+msgid "Client Body Buffer Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:113
+msgid "Client Header Buffer Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:99
+msgid "Client Max Body Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:121
+msgid "Client request body buffer size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:114
+msgid "Client request header buffer size"
+msgstr ""
+
+#: src/components/ConfigHistory/ConfigHistory.vue:169
+msgid "Close"
+msgstr ""
+
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr ""
+
+#: src/views/preference/LogrotateSettings.vue:22
+msgid "Command"
+msgstr ""
+
+#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
+#: src/views/site/ngx_conf/LocationEditor.vue:103
+#: src/views/site/ngx_conf/LocationEditor.vue:134
+#: src/views/site/ngx_conf/NgxServer.vue:138
+msgid "Comments"
+msgstr ""
+
+#: src/components/ConfigHistory/ConfigHistory.vue:127
+msgid "Compare"
+msgstr ""
+
+#: src/components/ConfigHistory/DiffViewer.vue:388
+msgid "Compare Configurations"
+msgstr ""
+
+#: src/components/ConfigHistory/ConfigHistory.vue:130
+msgid "Compare Selected"
+msgstr ""
+
+#: src/components/ConfigHistory/ConfigHistory.vue:129
+msgid "Compare with Current"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:88
+msgid "Compression level, 1 is lowest, 9 is highest"
+msgstr ""
+
+#: src/constants/errors/backup.ts:14
+msgid "Config path is empty"
+msgstr ""
+
+#: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:84
+msgid "Config Templates"
+msgstr ""
+
+#: src/views/config/InspectConfig.vue:27
+msgid "Configuration file is test successful"
+msgstr ""
+
+#: src/components/ConfigHistory/ConfigHistory.vue:138
+msgid "Configuration History"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceTablesCard.vue:167
+msgid "Configuration information"
+msgstr ""
+
+#: src/views/site/site_add/SiteAdd.vue:101
+msgid "Configuration Name"
+msgstr ""
+
+#: src/views/config/ConfigList.vue:104
+msgid "Configurations"
+msgstr ""
+
+#: src/views/site/site_add/SiteAdd.vue:96
+msgid "Configure SSL"
+msgstr ""
+
+#: src/views/dashboard/Environments.vue:141
+msgid "Connected"
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:85
+msgid "Connection error, trying to reconnect..."
+msgstr ""
+
+#: src/views/terminal/Terminal.vue:142
+msgid "Connection lost, please refresh the page."
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:61
+msgid "Connection timeout period"
+msgstr ""
+
+#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
+#: src/views/site/ngx_conf/LocationEditor.vue:115
+#: src/views/site/ngx_conf/LocationEditor.vue:143
+msgid "Content"
+msgstr ""
+
+#: src/components/SensitiveString/SensitiveString.vue:37
+#: src/components/StdDesign/StdDataDisplay/StdTableTransformer.tsx:150
+#: src/views/preference/components/RecoveryCodes.vue:121
+msgid "Copied"
+msgstr ""
+
+#: src/views/system/Backup/BackupCreator.vue:128
+msgid "Copied!"
+msgstr ""
+
+#: src/components/SensitiveString/SensitiveString.vue:37
+#: src/views/system/Backup/BackupCreator.vue:128
+msgid "Copy"
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:121
+msgid "Copy Codes"
+msgstr ""
+
+#: src/views/system/Upgrade.vue:146
+msgid "Core Upgrade"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:301
+msgid "CPU Status"
+msgstr ""
+
+#: src/views/dashboard/components/ResourceUsageCard.vue:27
+msgid "CPU Usage"
+msgstr ""
+
+#: src/views/dashboard/components/ResourceUsageCard.vue:38
+msgid "CPU usage is relatively high, consider optimizing Nginx configuration"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:195
+msgid "CPU:"
+msgstr ""
+
+#: src/views/site/ngx_conf/NgxUpstream.vue:165
+msgid "Create"
+msgstr ""
+
+#: src/views/site/site_add/SiteAdd.vue:157
+msgid "Create Another"
+msgstr ""
+
+#: src/views/system/Backup/BackupCreator.vue:86
+msgid "Create Backup"
+msgstr ""
+
+#: src/views/config/ConfigList.vue:122
+msgid "Create File"
+msgstr ""
+
+#: src/views/config/components/Mkdir.vue:47 src/views/config/ConfigList.vue:129
+msgid "Create Folder"
+msgstr ""
+
+#: src/views/system/Backup/BackupCreator.vue:75
+msgid "Create system backups including Nginx configuration and Nginx UI settings. Backup files will be automatically downloaded to your computer."
+msgstr ""
+
+#: src/views/environments/group/columns.ts:31
+#: src/views/notification/notificationColumns.tsx:59
+#: src/views/preference/components/ExternalNotify/columns.ts:41
+#: src/views/preference/components/Passkey.vue:95
+#: src/views/user/userColumns.tsx:48
+msgid "Created at"
+msgstr ""
+
+#: src/views/config/components/Mkdir.vue:35
+msgid "Created successfully"
+msgstr ""
+
+#: src/language/constants.ts:9
+msgid "Creating client facilitates communication with the CA server"
+msgstr ""
+
+#: src/views/site/cert/components/DNSChallenge.vue:104
+msgid "Credential"
+msgstr ""
+
+#: src/views/certificate/DNSChallenge.vue:99
+msgid "Credentials"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:72
+msgid "Current account is enabled TOTP."
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:70
+msgid "Current account is not enabled TOTP."
+msgstr ""
+
+#: src/views/dashboard/components/ConnectionMetricsCard.vue:27
+msgid "Current active connections"
+msgstr ""
+
+#: src/components/ConfigHistory/DiffViewer.vue:72
+msgid "Current Content"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceStatisticsCard.vue:65
+msgid "Current usage"
+msgstr ""
+
+#: src/views/system/Upgrade.vue:165
+msgid "Current Version"
+msgstr ""
+
+#: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
+msgid "Custom"
+msgstr ""
+
+#: src/views/preference/NodeSettings.vue:19
+msgid "Customize the name of local node to be displayed in the environment indicator."
+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
+msgid "Dashboard"
+msgstr ""
+
+#: src/views/other/Install.vue:169
+msgid "Database (Optional, default: database)"
+msgstr ""
+
+#: src/views/preference/CertSettings.vue:32
+msgid "Days"
+msgstr ""
+
+#: src/constants/errors/middleware.ts:3
+msgid "Decryption failed"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
+msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
+#: src/views/certificate/components/RemoveCert.vue:87
+#: src/views/site/ngx_conf/NgxServer.vue:113
+#: src/views/site/ngx_conf/NgxUpstream.vue:128
+#: src/views/site/site_list/SiteList.vue:131
+#: src/views/stream/StreamList.vue:248
+msgid "Delete"
+msgstr ""
+
+#: src/views/certificate/components/RemoveCert.vue:92
+msgid "Delete Certificate"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:35
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:547
+msgid "Delete Permanently"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:9 src/language/constants.ts:50
+msgid "Delete Remote Site Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:13 src/language/constants.ts:49
+msgid "Delete Remote Site Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:67
+msgid "Delete Remote Stream Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:71
+msgid "Delete Remote Stream Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:10
+msgid "Delete site %{name} from %{node} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:14
+msgid "Delete site %{name} from %{node} successfully"
+msgstr ""
+
+#: src/views/site/site_list/SiteList.vue:53
+msgid "Delete site: %{site_name}"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:68
+msgid "Delete stream %{name} from %{node} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:72
+msgid "Delete stream %{name} from %{node} successfully"
+msgstr ""
+
+#: src/views/stream/StreamList.vue:109
+msgid "Delete stream: %{stream_name}"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:183
+msgid "Deleted successfully"
+msgstr ""
+
+#: src/views/preference/NodeSettings.vue:28
+msgid "Demo"
+msgstr ""
+
+#: src/views/config/ConfigEditor.vue:340
+msgid "Deploy"
+msgstr ""
+
+#: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:107
+#: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:121
+msgid "Description"
+msgstr ""
+
+#: src/constants/errors/site.ts:3 src/constants/errors/stream.ts:3
+msgid "Destination file already exists"
+msgstr ""
+
+#: src/views/notification/notificationColumns.tsx:53
+msgid "Details"
+msgstr ""
+
+#: src/views/system/About.vue:28
+msgid "Development Mode"
+msgstr ""
+
+#: src/views/preference/components/ExternalNotify/dingtalk.ts:5
+msgid "DingTalk"
+msgstr ""
+
+#: src/views/site/ngx_conf/directive/DirectiveAdd.vue:89
+msgid "Directive"
+msgstr ""
+
+#: src/constants/errors/nginx_log.ts:6
+msgid "Directive params is empty"
+msgstr ""
+
+#: src/constants/errors/nginx_log.ts:5
+msgid "Directive.Params neither access_log nor error_log"
+msgstr ""
+
+#: src/constants/errors/nginx_log.ts:4
+msgid "DirectiveIdx out of range"
+msgstr ""
+
+#: src/views/site/ngx_conf/directive/DirectiveEditor.vue:28
+msgid "Directives"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
+msgid "Directory Levels"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
+msgid "Directory path to store cache files"
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:88
+msgid "disable"
+msgstr ""
+
+#: src/views/stream/StreamList.vue:219
+msgid "Disable"
+msgstr ""
+
+#: src/views/site/cert/components/ObtainCert.vue:82
+msgid "Disable auto-renewal failed for %{name}"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:17 src/language/constants.ts:52
+msgid "Disable Remote Site Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:41
+msgid "Disable Remote Site Maintenance Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:45
+msgid "Disable Remote Site Maintenance Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:21 src/language/constants.ts:51
+msgid "Disable Remote Site Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:75
+msgid "Disable Remote Stream Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:79
+msgid "Disable Remote Stream Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:18
+msgid "Disable site %{name} from %{node} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:22
+msgid "Disable site %{name} from %{node} successfully"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:42
+msgid "Disable site %{name} maintenance on %{node} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:46
+msgid "Disable site %{name} maintenance on %{node} successfully"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:76
+msgid "Disable stream %{name} from %{node} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:80
+msgid "Disable stream %{name} from %{node} successfully"
+msgstr ""
+
+#: src/views/environments/list/envColumns.tsx:61
+#: src/views/environments/list/envColumns.tsx:79
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
+#: src/views/site/site_list/columns.tsx:111 src/views/stream/StreamEdit.vue:182
+#: src/views/stream/StreamList.vue:60 src/views/user/userColumns.tsx:41
+msgid "Disabled"
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:40
+#: src/views/stream/components/RightSettings.vue:42
+#: src/views/stream/StreamList.vue:98
+msgid "Disabled successfully"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:366
+msgid "Disk IO"
+msgstr ""
+
+#: src/routes/modules/certificates.ts:56
+#: src/views/certificate/DNSCredential.vue:40
+msgid "DNS Credentials"
+msgstr ""
+
+#: src/views/certificate/DNSChallenge.vue:72
+#: src/views/site/cert/components/DNSChallenge.vue:94
+msgid "DNS Provider"
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:73
+msgid "DNS01"
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:98
+msgid "Do not enable this option unless you are sure that you need it."
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:93
+msgid "Do you want to %{action} this site?"
+msgstr ""
+
+#: src/views/site/cert/components/ObtainCert.vue:136
+msgid "Do you want to disable auto-cert renewal?"
+msgstr ""
+
+#: src/views/stream/components/RightSettings.vue:51
+msgid "Do you want to disable this stream?"
+msgstr ""
+
+#: src/views/stream/components/RightSettings.vue:51
+msgid "Do you want to enable this stream?"
+msgstr ""
+
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:44
+msgid "Do you want to enable TLS?"
+msgstr ""
+
+#: src/views/site/ngx_conf/NgxServer.vue:79
+msgid "Do you want to remove this server?"
+msgstr ""
+
+#: src/views/site/ngx_conf/NgxUpstream.vue:30
+msgid "Do you want to remove this upstream?"
+msgstr ""
+
+#: src/views/site/ngx_conf/directive/DirectiveAdd.vue:105
+#: src/views/site/ngx_conf/directive/DirectiveDocuments.vue:15
+msgid "Document"
+msgid_plural "Documents"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: src/views/certificate/components/WildcardCertificate.vue:68
+msgid "Domain"
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:112
+msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
+msgstr ""
+
+#: src/language/constants.ts:27
+msgid "Download latest release error"
+msgstr ""
+
+#: src/language/constants.ts:26
+msgid "Downloading latest release"
+msgstr ""
+
+#: src/views/environments/list/BatchUpgrader.vue:188
+#: src/views/system/Upgrade.vue:215
+msgid "Dry run mode enabled"
+msgstr ""
+
+#: src/views/preference/components/AddPasskey.vue:101
+msgid "Due to the security policies of some browsers, you cannot use passkeys on non-HTTPS websites, except when running on localhost."
+msgstr ""
+
+#: src/views/site/site_list/SiteDuplicate.vue:72
+#: src/views/site/site_list/SiteList.vue:117
+#: src/views/stream/components/StreamDuplicate.vue:64
+#: src/views/stream/StreamList.vue:234
+msgid "Duplicate"
+msgstr ""
+
+#: src/views/site/site_list/SiteDuplicate.vue:48
+#: src/views/stream/components/StreamDuplicate.vue:40
+msgid "Duplicate to local successfully"
+msgstr ""
+
+#: src/components/StdDesign/StdDetail/StdDetail.vue:110
+msgid "Edit"
+msgstr ""
+
+#: src/views/site/site_edit/SiteEdit.vue:185
+#: src/views/stream/StreamEdit.vue:171
+msgid "Edit %{n}"
+msgstr ""
+
+#: src/routes/modules/config.ts:30 src/views/config/ConfigEditor.vue:246
+msgid "Edit Configuration"
+msgstr ""
+
+#: src/routes/modules/sites.ts:34
+msgid "Edit Site"
+msgstr ""
+
+#: src/routes/modules/streams.ts:19
+msgid "Edit Stream"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:25
+#: src/views/preference/CertSettings.vue:12
+msgid "Email"
+msgstr ""
+
+#: src/views/other/Install.vue:138
+msgid "Email (*)"
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:87
+msgid "enable"
+msgstr ""
+
+#: src/views/stream/StreamList.vue:227
+msgid "Enable"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:45
+msgid "Enable 2FA successfully"
+msgstr ""
+
+#: src/views/site/cert/components/ObtainCert.vue:75
+msgid "Enable auto-renewal failed for %{name}"
+msgstr ""
+
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
+msgid "Enable compression for content transfer"
+msgstr ""
+
+#: src/views/site/site_add/SiteAdd.vue:43
+msgid "Enable failed"
+msgstr ""
+
+#: src/views/preference/ServerSettings.vue:29
+msgid "Enable HTTPS"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:114
+msgid "Enable Proxy Cache"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:25 src/language/constants.ts:54
+msgid "Enable Remote Site Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:33
+msgid "Enable Remote Site Maintenance Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:37
+msgid "Enable Remote Site Maintenance Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:29 src/language/constants.ts:53
+msgid "Enable Remote Site Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:83
+msgid "Enable Remote Stream Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:87
+msgid "Enable Remote Stream Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:34
+msgid "Enable site %{name} maintenance on %{node} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:38
+msgid "Enable site %{name} maintenance on %{node} successfully"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:26
+msgid "Enable site %{name} on %{node} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:30
+msgid "Enable site %{name} on %{node} successfully"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:84
+msgid "Enable stream %{name} on %{node} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:88
+msgid "Enable stream %{name} on %{node} successfully"
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:150
+msgid "Enable stub_status module"
+msgstr ""
+
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
+msgid "Enable TLS"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:81
+msgid "Enable TOTP"
+msgstr ""
+
+#: src/views/environments/list/envColumns.tsx:70
+#: src/views/environments/list/envColumns.tsx:76
+#: src/views/preference/HTTPSettings.vue:24
+#: src/views/preference/LogrotateSettings.vue:19
+#: src/views/preference/NodeSettings.vue:25
+#: src/views/preference/NodeSettings.vue:30
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
+#: src/views/site/site_list/columns.tsx:110
+#: src/views/stream/components/RightSettings.vue:81
+#: src/views/stream/StreamEdit.vue:176 src/views/stream/StreamList.vue:56
+#: src/views/user/userColumns.tsx:38
+msgid "Enabled"
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:27
+#: src/views/site/site_add/SiteAdd.vue:40
+#: src/views/stream/components/RightSettings.vue:33
+#: src/views/stream/StreamList.vue:88
+msgid "Enabled successfully"
+msgstr ""
+
+#: src/views/site/cert/IssueCert.vue:48
+msgid "Encrypt website with Let's Encrypt"
+msgstr ""
+
+#: src/language/constants.ts:22
+msgid "Environment variables cleaned"
+msgstr ""
+
+#: src/routes/modules/environments.ts:11
+#: src/views/dashboard/Environments.vue:83
+#: src/views/environments/list/Environment.vue:74
+msgid "Environments"
+msgstr ""
+
+#: src/constants/index.ts:22 src/views/config/InspectConfig.vue:44
+#: src/views/notification/notificationColumns.tsx:15
+msgid "Error"
+msgstr ""
+
+#: src/components/ConfigHistory/DiffViewer.vue:145
+msgid "Error initializing diff viewer"
+msgstr ""
+
+#: src/views/nginx_log/NginxLogList.vue:27
+msgid "Error Log"
+msgstr ""
+
+#: src/routes/modules/nginx_log.ts:24 src/views/site/ngx_conf/LogEntry.vue:99
+msgid "Error Logs"
+msgstr ""
+
+#: src/components/ConfigHistory/DiffViewer.vue:97
+msgid "Error processing content"
+msgstr ""
+
+#: src/views/system/Upgrade.vue:177
+msgid "Executable Path"
+msgstr ""
+
+#: src/views/certificate/CertificateList/certColumns.tsx:82
+#: src/views/site/cert/CertInfo.vue:31
+msgid "Expired"
+msgstr ""
+
+#: src/views/site/cert/CertInfo.vue:38
+msgid "Expired At: %{date}"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:64
+msgid "Export"
+msgstr ""
+
+#: src/views/preference/ExternalNotify.vue:10
+#: src/views/preference/Preference.vue:172
+msgid "External Notify"
+msgstr ""
+
+#: src/views/site/cert/components/ObtainCertLive.vue:94
+msgid "Fail to obtain certificate"
+msgstr ""
+
+#: src/constants/errors/backup.ts:5
+msgid "Failed to backup Nginx config files: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:4
+msgid "Failed to backup Nginx UI files: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:18
+msgid "Failed to calculate hash: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:58
+msgid "Failed to calculate Nginx hash: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:57
+msgid "Failed to calculate Nginx UI hash: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:13
+msgid "Failed to cleanup temporary directory: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:15
+msgid "Failed to copy config file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:16
+msgid "Failed to copy database directory: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:17
+msgid "Failed to copy database file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:32
+msgid "Failed to copy file content: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:20
+msgid "Failed to copy Nginx config directory: {0}"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:9
+msgid "Failed to create backup"
+msgstr ""
+
+#: src/constants/errors/backup.ts:12
+msgid "Failed to create backup file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:46
+msgid "Failed to create directory: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:48
+msgid "Failed to create file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:6
+msgid "Failed to create hash info file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:47
+msgid "Failed to create parent directory: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:34
+msgid "Failed to create restore directory: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:50
+msgid "Failed to create symbolic link: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:2
+msgid "Failed to create temporary directory"
+msgstr ""
+
+#: src/constants/errors/backup.ts:3
+msgid "Failed to create temporary subdirectory"
+msgstr ""
+
+#: src/constants/errors/backup.ts:9
+msgid "Failed to create zip archive: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:29
+msgid "Failed to create zip entry: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:28
+msgid "Failed to create zip file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:31
+msgid "Failed to create zip header: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:26
+msgid "Failed to decrypt data: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:54
+msgid "Failed to decrypt file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:37
+msgid "Failed to decrypt Nginx directory: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:36
+msgid "Failed to decrypt Nginx UI directory: {0}"
+msgstr ""
+
+#: src/views/certificate/components/RemoveCert.vue:66
+msgid "Failed to delete certificate"
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:46
+#: src/views/stream/components/RightSettings.vue:45
+#: src/views/stream/StreamList.vue:102
+msgid "Failed to disable %{msg}"
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:72
+msgid "Failed to disable maintenance mode %{msg}"
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:33
+#: src/views/stream/components/RightSettings.vue:36
+#: src/views/stream/StreamList.vue:92
+msgid "Failed to enable %{msg}"
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:59
+msgid "Failed to enable maintenance mode %{msg}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:25
+msgid "Failed to encrypt data: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:23
+msgid "Failed to encrypt file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:8
+msgid "Failed to encrypt Nginx directory: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:7
+msgid "Failed to encrypt Nginx UI directory: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:52
+msgid "Failed to evaluate symbolic links: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:35
+msgid "Failed to extract archive: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:10
+msgid "Failed to generate AES key: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:11
+msgid "Failed to generate initialization vector: {0}"
+msgstr ""
+
+#: src/language/constants.ts:5
+msgid "Failed to get certificate information"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOptimization.vue:61
+msgid "Failed to get Nginx performance settings"
+msgstr ""
+
+#: src/composables/useNginxPerformance.ts:49
+msgid "Failed to get performance data"
+msgstr ""
+
+#: src/components/ConfigHistory/ConfigHistory.vue:77
+msgid "Failed to load history records"
+msgstr ""
+
+#: src/constants/errors/backup.ts:30
+msgid "Failed to open source file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:49
+msgid "Failed to open zip entry: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:45
+msgid "Failed to open zip file: {0}"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:4
+msgid "Failed to parse nginx.conf"
+msgstr ""
+
+#: src/constants/errors/backup.ts:53
+msgid "Failed to read encrypted file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:22
+msgid "Failed to read file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:56
+msgid "Failed to read hash info file: {0}"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:3
+msgid "Failed to read nginx.conf"
+msgstr ""
+
+#: src/constants/errors/backup.ts:21
+msgid "Failed to read symlink: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:39
+msgid "Failed to restore Nginx configs: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:40
+msgid "Failed to restore Nginx UI files: {0}"
+msgstr ""
+
+#: src/views/certificate/components/RemoveCert.vue:48
+msgid "Failed to revoke certificate"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOptimization.vue:90
+msgid "Failed to save Nginx performance settings"
+msgstr ""
+
+#: src/views/site/site_edit/SiteEdit.vue:137
+#: src/views/stream/StreamEdit.vue:122
+msgid "Failed to save, syntax error(s) was detected in the configuration."
+msgstr ""
+
+#: src/constants/errors/backup.ts:38
+msgid "Failed to verify hashes: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:55
+msgid "Failed to write decrypted file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:24
+msgid "Failed to write encrypted file: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:33
+msgid "Failed to write to zip buffer: {0}"
+msgstr ""
+
+#: src/language/constants.ts:32
+msgid "File exists"
+msgstr ""
+
+#: src/views/other/Error.vue:8
+msgid "File Not Found"
+msgstr ""
+
+#: src/constants/errors/cert.ts:2
+msgid "Filename is empty"
+msgstr ""
+
+#: src/views/nginx_log/NginxLog.vue:155
+msgid "Filter"
+msgstr ""
+
+#: src/language/constants.ts:19 src/views/site/site_add/SiteAdd.vue:97
+msgid "Finished"
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:70
+msgid "First View"
+msgstr ""
+
+#: src/views/preference/components/AddPasskey.vue:71
+msgid "Follow the instructions in the dialog to complete the passkey registration process."
+msgstr ""
+
+#: src/views/preference/NodeSettings.vue:42
+#: src/views/preference/NodeSettings.vue:54
+msgid "For Chinese user"
+msgstr ""
+
+#: src/views/preference/HTTPSettings.vue:19
+msgid "For Chinese user: https://mirror.ghproxy.com/"
+msgstr ""
+
+#: src/constants/errors/middleware.ts:4
+msgid "Form parse failed"
+msgstr ""
+
+#: src/views/config/ConfigEditor.vue:271
+msgid "Format Code"
+msgstr ""
+
+#: src/views/config/ConfigEditor.vue:218
+msgid "Format error %{msg}"
+msgstr ""
+
+#: src/views/config/ConfigEditor.vue:216
+msgid "Format successfully"
+msgstr ""
+
+#: src/views/certificate/CertificateList/certColumns.tsx:32
+msgid "General Certificate"
+msgstr ""
+
+#: src/components/StdDesign/StdDataEntry/components/StdPassword.vue:55
+msgid "Generate"
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:138
+#: src/views/preference/components/RecoveryCodes.vue:161
+msgid "Generate New Recovery Codes"
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:161
+msgid "Generate Recovery Codes"
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:32
+msgid "Generate recovery codes successfully"
+msgstr ""
+
+#: src/language/constants.ts:7
+msgid "Generating private key for registering account"
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:141
+msgid "Get data failed"
+msgstr ""
+
+#: src/views/environments/list/BatchUpgrader.vue:177
+#: src/views/system/Upgrade.vue:169
+msgid "Get release information error"
+msgstr ""
+
+#: src/views/site/cert/components/ObtainCertLive.vue:44
+msgid "Getting the certificate, please wait..."
+msgstr ""
+
+#: src/views/preference/HTTPSettings.vue:11
+msgid "Github Proxy"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:67
+msgid "GZIP Compression"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:87
+msgid "GZIP Compression Level"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:80
+msgid "GZIP Min Length"
+msgstr ""
+
+#: src/constants/errors/backup.ts:59
+msgid "Hash verification failed: file integrity compromised"
+msgstr ""
+
+#: src/components/SensitiveString/SensitiveString.vue:40
+msgid "Hide"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceStatisticsCard.vue:87
+msgid "Higher value means better connection reuse"
+msgstr ""
+
+#: src/views/config/ConfigEditor.vue:256
+#: src/views/site/site_edit/SiteEdit.vue:215
+#: src/views/stream/StreamEdit.vue:195
+msgid "History"
+msgstr ""
+
+#: src/routes/index.ts:47
+msgid "Home"
+msgstr ""
+
+#: src/views/preference/ServerSettings.vue:18
+msgid "Host"
+msgstr ""
+
+#: src/views/preference/Preference.vue:184
+msgid "HTTP"
+msgstr ""
+
+#: src/views/preference/CertSettings.vue:15
+msgid "HTTP Challenge Port"
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:70
+msgid "HTTP01"
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/frontend/https-check.ts:10
+msgid "HTTPS Protocol"
+msgstr ""
+
+#: src/views/preference/NodeSettings.vue:34
+msgid "ICP Number"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:45
+msgid "If left blank, the default CA Dir will be used."
+msgstr ""
+
+#: src/views/nginx_log/NginxLogList.vue:81
+msgid "If logs are not indexed, please check if the log file is under the directory in Nginx.LogDirWhiteList."
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:145
+msgid "If the number of login failed attempts from a ip reach the max attempts in ban threshold minutes, the ip will be banned for a period of time."
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:117
+msgid "If you want to automatically revoke the old certificate, please enable this option."
+msgstr ""
+
+#: src/views/preference/components/AddPasskey.vue:70
+msgid "If your browser supports WebAuthn Passkey, a dialog box will appear."
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:108
+msgid "If your domain has CNAME records and you cannot obtain certificates, you need to enable this option."
+msgstr ""
+
+#: src/views/certificate/CertificateList/Certificate.vue:22
+msgid "Import"
+msgstr ""
+
+#: src/routes/modules/certificates.ts:46
+#: src/views/certificate/components/CertificateEditor.vue:85
+msgid "Import Certificate"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:176
+msgid "Inactive Time"
+msgstr ""
+
+#: src/views/dashboard/components/ProcessDistributionCard.vue:54
+msgid "Includes master process, worker processes, cache processes, and other Nginx processes"
+msgstr ""
+
+#: src/views/nginx_log/NginxLogList.vue:89
+#: src/views/site/site_list/SiteList.vue:87 src/views/stream/StreamList.vue:187
+msgid "Indexed"
+msgstr ""
+
+#: src/views/nginx_log/NginxLogList.vue:86
+#: src/views/site/site_list/SiteList.vue:84 src/views/stream/StreamList.vue:184
+msgid "Indexing..."
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceTablesCard.vue:15
+msgid "Indicator"
+msgstr ""
+
+#: src/components/StdDesign/StdDetail/StdDetail.vue:81
+#: src/constants/index.ts:24 src/views/notification/notificationColumns.tsx:29
+msgid "Info"
+msgstr ""
+
+#: src/language/constants.ts:25
+msgid "Initial core upgrader error"
+msgstr ""
+
+#: src/language/constants.ts:24
+msgid "Initialing core upgrader"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:119
+msgid "Input the code from the app:"
+msgstr ""
+
+#: src/components/TwoFA/Authorization.vue:72
+msgid "Input the recovery code:"
+msgstr ""
+
+#: src/views/preference/HTTPSettings.vue:22
+msgid "Insecure Skip Verify"
+msgstr ""
+
+#: src/routes/modules/auth.ts:8 src/views/other/Install.vue:185
+msgid "Install"
+msgstr ""
+
+#: src/views/other/Install.vue:93
+msgid "Install successfully"
+msgstr ""
+
+#: src/constants/errors/system.ts:3
+msgid "Installation is not allowed after 10 minutes of system startup"
+msgstr ""
+
+#: src/views/other/Install.vue:127
+msgid "Installation is not allowed after 10 minutes of system startup, please restart the Nginx UI."
+msgstr ""
+
+#: src/views/preference/LogrotateSettings.vue:25
+msgid "Interval"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:129
+msgid "Invalid"
+msgstr ""
+
+#: src/constants/errors/backup.ts:44
+msgid "Invalid AES IV format: {0}"
+msgstr ""
+
+#: src/constants/errors/backup.ts:43
+msgid "Invalid AES key format: {0}"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:121
+msgid "Invalid file object"
+msgstr ""
+
+#: src/constants/errors/backup.ts:51
+msgid "Invalid file path: {0}"
+msgstr ""
+
+#: src/views/config/components/Rename.vue:66
+#: src/views/config/ConfigEditor.vue:305
+msgid "Invalid filename"
+msgstr ""
+
+#: src/views/config/components/Mkdir.vue:57
+msgid "Invalid folder name"
+msgstr ""
+
+#: src/constants/errors/notification.ts:3
+msgid "Invalid notifier config"
+msgstr ""
+
+#: src/constants/errors/user.ts:4
+msgid "Invalid otp code"
+msgstr ""
+
+#: src/constants/errors/backup.ts:27
+msgid "Invalid padding in decrypted data"
+msgstr ""
+
+#: src/components/TwoFA/use2FAModal.ts:61
+msgid "Invalid passcode or recovery code"
+msgstr ""
+
+#: src/constants/errors/user.ts:5
+msgid "Invalid recovery code"
+msgstr ""
+
+#: src/constants/errors/middleware.ts:2
+msgid "Invalid request format"
+msgstr ""
+
+#: src/constants/errors/backup.ts:42
+msgid "Invalid security token format"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:18
+msgid "IP"
+msgstr ""
+
+#: src/views/certificate/CertificateList/Certificate.vue:31
+msgid "Issue wildcard certificate"
+msgstr ""
+
+#: src/views/certificate/components/WildcardCertificate.vue:59
+msgid "Issue Wildcard Certificate"
+msgstr ""
+
+#: src/language/constants.ts:20
+msgid "Issued certificate successfully"
+msgstr ""
+
+#: src/views/site/cert/CertInfo.vue:35
+msgid "Issuer: %{issuer}"
+msgstr ""
+
+#: src/views/preference/AppSettings.vue:10
+msgid "Jwt Secret"
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:74
+msgid "Keep your recovery codes as safe as your password. We recommend saving them with a password manager."
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:60
+msgid "Keepalive Timeout"
+msgstr ""
+
+#: src/views/certificate/CertificateList/certColumns.tsx:59
+#: src/views/site/cert/components/AutoCertStepOne.vue:77
+msgid "Key Type"
+msgstr ""
+
+#: src/views/preference/components/ExternalNotify/columns.ts:29
+msgid "Language"
+msgstr ""
+
+#: src/views/preference/components/ExternalNotify/lark.ts:5
+msgid "Lark"
+msgstr ""
+
+#: src/views/preference/components/ExternalNotify/lark_custom.ts:5
+msgid "Lark Custom"
+msgstr ""
+
+#: src/views/system/Upgrade.vue:179
+msgid "Last checked at"
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:116
+msgid "Last update"
+msgstr ""
+
+#: src/views/preference/components/Passkey.vue:96
+msgid "Last used at"
+msgstr ""
+
+#: src/views/user/userColumns.tsx:25
+msgid "Leave blank for no change"
+msgstr ""
+
+#: src/views/preference/OpenAISettings.vue:41
+msgid "Leave blank for the default: https://api.openai.com/"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:79
+msgid "Leave blank if do not want to modify"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:59
+msgid "Leave blank if you don't need this."
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:222
+#: src/views/certificate/components/CertificateEditor.vue:235
+msgid "Leave blank will not change anything"
+msgstr ""
+
+#: src/constants/errors/user.ts:6
+msgid "Legacy recovery code not allowed since totp is not enabled"
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:105
+msgid "Lego disable CNAME Support"
+msgstr ""
+
+#: src/views/system/About.vue:63
+msgid "License"
+msgstr ""
+
+#: src/views/dashboard/Environments.vue:141
+#: src/views/dashboard/Environments.vue:156
+msgid "Link Start"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:173
+msgid "List"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:183
+msgid "Load Average:"
+msgstr ""
+
+#: src/views/environments/list/Environment.vue:80
+msgid "Load from settings"
+msgstr ""
+
+#: src/views/environments/list/Environment.vue:20
+msgid "Load successfully"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:313
+msgid "Loader Files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:308
+msgid "Loader Settings"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:323
+msgid "Loader Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:348
+msgid "Loader Threshold"
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:178
+msgid "Loading data..."
+msgstr ""
+
+#: src/components/EnvIndicator/EnvIndicator.vue:39
+#: src/components/NodeSelector/NodeSelector.vue:86
+msgid "Local"
+msgstr ""
+
+#: src/views/site/ngx_conf/LocationEditor.vue:68
+msgid "Location"
+msgstr ""
+
+#: src/views/site/ngx_conf/LocationEditor.vue:50
+msgid "Locations"
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:245
+msgid "Log"
+msgstr ""
+
+#: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
+msgid "Log List"
+msgstr ""
+
+#: src/routes/modules/auth.ts:14 src/views/other/Login.vue:222
+msgid "Login"
+msgstr ""
+
+#: src/views/other/Login.vue:114 src/views/other/Login.vue:65
+msgid "Login successful"
+msgstr ""
+
+#: src/layouts/HeaderLayout.vue:20
+msgid "Logout successful"
+msgstr ""
+
+#: src/views/preference/Preference.vue:220
+msgid "Logrotate"
+msgstr ""
+
+#: src/views/preference/LogrotateSettings.vue:12
+msgid "Logrotate, by default, is enabled in most mainstream Linux distributions for users who install Nginx UI on the host machine, so you don't need to modify the parameters on this page. For users who install Nginx UI using Docker containers, you can manually enable this option. The crontab task scheduler of Nginx UI will execute the logrotate command at the interval you set in minutes."
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
+#: src/views/site/site_list/columns.tsx:112
+msgid "Maintenance"
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:66
+msgid "Maintenance mode disabled successfully"
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:53
+msgid "Maintenance mode enabled successfully"
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:53
+msgid "Make sure you have configured a reverse proxy for .well-known directory to HTTPChallengePort before obtaining the certificate."
+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
+msgid "Manage Configs"
+msgstr ""
+
+#: src/routes/modules/sites.ts:10 src/views/site/site_list/SiteList.vue:80
+msgid "Manage Sites"
+msgstr ""
+
+#: src/routes/modules/streams.ts:10 src/views/stream/StreamList.vue:179
+msgid "Manage Streams"
+msgstr ""
+
+#: src/routes/modules/user.ts:10 src/views/user/User.vue:10
+msgid "Manage Users"
+msgstr ""
+
+#: src/views/certificate/CertificateList/certColumns.tsx:31
+msgid "Managed Certificate"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:251
+msgid "Manager Files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:261
+msgid "Manager Sleep"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:286
+msgid "Manager Threshold"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:32
+msgid "Manual"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceTablesCard.vue:201
+msgid "manually set"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceStatisticsCard.vue:103
+msgid "Master"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:134
+#: src/views/dashboard/components/PerformanceTablesCard.vue:89
+msgid "Master process"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:56
+#: src/views/dashboard/components/ProcessDistributionCard.vue:13
+msgid "Master Process"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:135
+msgid "Max Attempts"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceStatisticsCard.vue:56
+msgid "Max Concurrent Connections"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceStatisticsCard.vue:42
+msgid "Max Requests Per Second"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:199
+msgid "Maximum Cache Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:100
+msgid "Maximum client request body size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:49
+msgid "Maximum number of concurrent connections"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:174
+#: src/views/dashboard/components/PerformanceTablesCard.vue:125
+msgid "Maximum number of connections per worker process"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:201
+msgid "Maximum total size of the cache"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceTablesCard.vue:195
+msgid "Maximum worker process number:"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:222
+#: src/views/dashboard/ServerAnalytic.vue:223
+msgid "Memory"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:212
+msgid "Memory and Storage"
+msgstr ""
+
+#: src/views/dashboard/components/ResourceUsageCard.vue:51
+msgid "Memory Usage (RSS)"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:81
+msgid "Minimum file size for compression"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:224
+msgid "Minimum Free Space"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:226
+msgid "Minimum free space in the cache directory"
+msgstr ""
+
+#: src/views/preference/LogrotateSettings.vue:29
+msgid "Minutes"
+msgstr ""
+
+#: src/views/preference/OpenAISettings.vue:20
+msgid "Model"
+msgstr ""
+
+#: src/components/ConfigHistory/ConfigHistory.vue:55
+msgid "Modified At"
+msgstr ""
+
+#: src/components/ChatGPT/ChatGPT.vue:352
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
+#: src/views/config/ConfigList.vue:174
+msgid "Modify"
+msgstr ""
+
+#: src/routes/modules/certificates.ts:36
+#: src/views/certificate/components/CertificateEditor.vue:85
+msgid "Modify Certificate"
+msgstr ""
+
+#: src/views/site/site_add/SiteAdd.vue:154
+msgid "Modify Config"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262
+msgid "Modify Mode"
+msgstr ""
+
+#: src/views/site/ngx_conf/directive/DirectiveAdd.vue:68
+msgid "Multi-line Directive"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:13
+#: src/views/certificate/CertificateList/certColumns.tsx:10
+#: src/views/certificate/components/CertificateEditor.vue:162
+#: src/views/certificate/DNSCredential.vue:11
+#: src/views/config/components/Mkdir.vue:64
+#: src/views/config/configColumns.tsx:7 src/views/config/ConfigEditor.vue:311
+#: src/views/environments/group/columns.ts:8
+#: src/views/environments/list/envColumns.tsx:9
+#: src/views/nginx_log/NginxLogList.vue:33
+#: src/views/preference/components/AddPasskey.vue:75
+#: src/views/site/ngx_conf/NgxUpstream.vue:177
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
+#: src/views/site/site_list/SiteDuplicate.vue:79
+#: src/views/stream/components/RightSettings.vue:87
+#: src/views/stream/components/StreamDuplicate.vue:71
+#: src/views/stream/StreamList.vue:22 src/views/stream/StreamList.vue:260
+msgid "Name"
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:173
+msgid "Need to enable the stub_status module"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:327
+msgid "Network"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:269
+msgid "Network Statistics"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:276
+msgid "Network Total Receive"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:282
+msgid "Network Total Send"
+msgstr ""
+
+#: src/views/other/Install.vue:133
+msgid "New Installation"
+msgstr ""
+
+#: src/views/config/components/Rename.vue:74
+msgid "New name"
+msgstr ""
+
+#: src/views/config/ConfigEditor.vue:324
+msgid "New Path"
+msgstr ""
+
+#: src/views/system/Upgrade.vue:208
+msgid "New version released"
+msgstr ""
+
+#: src/views/certificate/components/WildcardCertificate.vue:91
+#: src/views/site/cert/components/ObtainCert.vue:211
+#: src/views/site/site_add/SiteAdd.vue:141
+msgid "Next"
+msgstr ""
+
+#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:208
+msgid "Nginx"
+msgstr ""
+
+#: src/views/preference/NginxSettings.vue:12
+msgid "Nginx Access Log Path"
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/backend/index.ts:25
+msgid "Nginx Conf Include Conf.d"
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/backend/index.ts:15
+msgid "Nginx Conf Include Sites Enabled"
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/backend/index.ts:20
+msgid "Nginx Conf Include Streams Enabled"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:5
+msgid "Nginx conf no http block"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:7
+msgid "Nginx conf no stream block"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:14
+msgid "Nginx conf not include conf.d directory"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:6
+msgid "Nginx conf not include sites-enabled"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:8
+msgid "Nginx conf not include stream-enabled"
+msgstr ""
+
+#: src/constants/errors/backup.ts:19
+msgid "Nginx config directory is not set"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:138
+msgid "Nginx configuration has been restored"
+msgstr ""
+
+#: src/views/site/site_edit/SiteEdit.vue:247
+#: src/views/stream/StreamEdit.vue:226
+msgid "Nginx Configuration Parse Error"
+msgstr ""
+
+#: src/views/preference/NginxSettings.vue:21
+msgid "Nginx Configuration Path"
+msgstr ""
+
+#: src/views/preference/NginxSettings.vue:18
+msgid "Nginx Configurations Directory"
+msgstr ""
+
+#: src/components/NginxControl/NginxControl.vue:64
+msgid "Nginx Control"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:149
+#: src/views/dashboard/components/PerformanceTablesCard.vue:104
+msgid "Nginx CPU usage rate"
+msgstr ""
+
+#: src/views/preference/NginxSettings.vue:15
+msgid "Nginx Error Log Path"
+msgstr ""
+
+#: src/composables/useNginxPerformance.ts:43
+#: src/views/dashboard/NginxDashBoard.vue:112
+#: src/views/dashboard/NginxDashBoard.vue:131
+#: src/views/dashboard/NginxDashBoard.vue:80
+#: src/views/site/ngx_conf/NginxStatusAlert.vue:15
+msgid "Nginx is not running"
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:112
+msgid "Nginx is running"
+msgstr ""
+
+#: src/routes/modules/nginx_log.ts:9 src/views/nginx_log/NginxLog.vue:143
+msgid "Nginx Log"
+msgstr ""
+
+#: src/views/preference/NginxSettings.vue:24
+msgid "Nginx Log Directory Whitelist"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:154
+#: src/views/dashboard/components/PerformanceTablesCard.vue:109
+msgid "Nginx Memory usage"
+msgstr ""
+
+#: src/views/preference/NginxSettings.vue:33
+msgid "Nginx PID Path"
+msgstr ""
+
+#: src/views/preference/NginxSettings.vue:39
+msgid "Nginx Reload Command"
+msgstr ""
+
+#: src/views/environments/list/Environment.vue:41
+msgid "Nginx reload operations have been dispatched to remote nodes"
+msgstr ""
+
+#: src/components/NginxControl/NginxControl.vue:26
+msgid "Nginx reloaded successfully"
+msgstr ""
+
+#: src/views/preference/NginxSettings.vue:42
+msgid "Nginx Restart Command"
+msgstr ""
+
+#: src/views/environments/list/Environment.vue:55
+msgid "Nginx restart operations have been dispatched to remote nodes"
+msgstr ""
+
+#: src/components/NginxControl/NginxControl.vue:40
+msgid "Nginx restarted successfully"
+msgstr ""
+
+#: src/views/preference/NginxSettings.vue:36
+msgid "Nginx Test Config Command"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceTablesCard.vue:180
+msgid "Nginx theoretical maximum performance"
+msgstr ""
+
+#: src/constants/errors/system.ts:2
+msgid "Nginx UI already installed"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:142
+msgid "Nginx UI configuration has been restored"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:336
+msgid "Nginx UI configuration has been restored and will restart automatically in a few seconds."
+msgstr ""
+
+#: src/components/ChatGPT/ChatGPT.vue:374
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/Notification/Notification.vue:133
+#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
+#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:524
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:538
+#: src/views/notification/Notification.vue:37
+#: src/views/preference/AuthSettings.vue:164
+#: src/views/preference/CertSettings.vue:73
+#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
+#: src/views/site/ngx_conf/LocationEditor.vue:88
+#: src/views/site/site_list/SiteList.vue:120
+#: src/views/stream/StreamList.vue:237
+msgid "No"
+msgstr ""
+
+#: src/views/environments/group/columns.ts:21
+#: src/views/environments/group/EnvGroup.vue:34
+msgid "No Action"
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:180
+msgid "No data"
+msgstr ""
+
+#: src/components/ConfigHistory/DiffViewer.vue:54
+msgid "No records selected"
+msgstr ""
+
+#: src/views/preference/Preference.vue:178
+msgid "Node"
+msgstr ""
+
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
+#: src/views/stream/components/RightSettings.vue:90
+#: src/views/stream/StreamList.vue:32
+msgid "Node Group"
+msgstr ""
+
+#: src/routes/modules/environments.ts:33
+#: src/views/environments/group/EnvGroup.vue:10
+msgid "Node Groups"
+msgstr ""
+
+#: src/views/preference/NodeSettings.vue:15
+msgid "Node name"
+msgstr ""
+
+#: src/views/preference/NodeSettings.vue:11
+msgid "Node Secret"
+msgstr ""
+
+#: src/routes/modules/environments.ts:25
+msgid "Nodes"
+msgstr ""
+
+#: src/views/certificate/CertificateList/certColumns.tsx:88
+msgid "Not After"
+msgstr ""
+
+#: src/routes/modules/error.ts:8
+msgid "Not Found"
+msgstr ""
+
+#: src/views/site/cert/CertInfo.vue:41
+msgid "Not Valid Before: %{date}"
+msgstr ""
+
+#: src/views/certificate/DNSCredential.vue:49
+#: src/views/site/cert/components/AutoCertStepOne.vue:39
+msgid "Note"
+msgstr ""
+
+#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/stream/components/RightSettings.vue:118
+msgid "Note, if the configuration file include other configurations or certificates, please synchronize them to the remote nodes in advance."
+msgstr ""
+
+#: src/views/notification/Notification.vue:28
+msgid "Notification"
+msgstr ""
+
+#: src/components/Notification/Notification.vue:131
+#: src/routes/modules/notifications.ts:10
+msgid "Notifications"
+msgstr ""
+
+#: src/constants/errors/notification.ts:2
+msgid "Notifier not found"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:26
+msgid "Number of concurrent worker processes, auto sets to CPU core count"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:315
+msgid "Number of files processed by cache loader at once"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:253
+msgid "Number of files processed by cache manager at once"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:129
+#: src/composables/usePerformanceMetrics.ts:169
+#: src/views/dashboard/components/PerformanceTablesCard.vue:120
+#: src/views/dashboard/components/PerformanceTablesCard.vue:84
+msgid "Number of worker processes"
+msgstr ""
+
+#: src/views/site/cert/components/ObtainCert.vue:182
+msgid "Obtain certificate"
+msgstr ""
+
+#: src/language/constants.ts:15
+msgid "Obtaining certificate"
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:95
+msgid "OCSP Must Staple"
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:99
+msgid "OCSP Must Staple may cause errors for some users on first access using Firefox."
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:73
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:165
+msgid "Off"
+msgstr ""
+
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/NodeSelector/NodeSelector.vue:109
+#: src/views/dashboard/Environments.vue:107
+#: src/views/environments/list/envColumns.tsx:56
+msgid "Offline"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:247
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:511
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:525
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:539
+#: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:188
+msgid "Ok"
+msgstr ""
+
+#: src/components/ChatGPT/ChatGPT.vue:375
+#: src/components/Notification/Notification.vue:134
+#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
+#: src/views/notification/Notification.vue:38
+#: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:50
+#: src/views/site/ngx_conf/NgxServer.vue:82
+#: src/views/site/ngx_conf/NgxUpstream.vue:33
+#: src/views/site/site_list/SiteList.vue:121
+#: src/views/stream/components/RightSettings.vue:54
+#: src/views/stream/StreamList.vue:238
+#: src/views/system/Backup/BackupCreator.vue:149
+msgid "OK"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:72
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:164
+msgid "On"
+msgstr ""
+
+#: src/views/certificate/DNSCredential.vue:59
+msgid "Once the verification is complete, the records will be removed."
+msgstr ""
+
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/NodeSelector/NodeSelector.vue:103
+#: src/components/NodeSelector/NodeSelector.vue:89
+#: src/views/dashboard/Environments.vue:100
+#: src/views/environments/list/envColumns.tsx:52
+msgid "Online"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:78
+msgid "Only zip files are allowed"
+msgstr ""
+
+#: src/views/preference/Preference.vue:214
+msgid "OpenAI"
+msgstr ""
+
+#: src/components/TwoFA/Authorization.vue:100 src/views/other/Login.vue:231
+msgid "Or"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:112
+msgid "Or enter the secret: %{secret}"
+msgstr ""
+
+#: src/views/config/components/Rename.vue:70
+msgid "Original name"
+msgstr ""
+
+#: src/views/system/Upgrade.vue:175
+msgid "OS"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:189
+msgid "OS:"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:144
+#: src/views/dashboard/components/PerformanceTablesCard.vue:99
+msgid "Other Nginx processes"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:58
+#: src/views/dashboard/components/ProcessDistributionCard.vue:15
+msgid "Other Processes"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceStatisticsCard.vue:103
+msgid "Others"
+msgstr ""
+
+#: src/constants/errors/user.ts:9
+msgid "Otp or recovery code empty"
+msgstr ""
+
+#: src/views/config/ConfigEditor.vue:349
+msgid "Overwrite"
+msgstr ""
+
+#: src/views/config/ConfigEditor.vue:353
+msgid "Overwrite exist file"
+msgstr ""
+
+#: src/views/preference/AppSettings.vue:13
+msgid "Page Size"
+msgstr ""
+
+#: src/views/site/ngx_conf/directive/DirectiveAdd.vue:94
+msgid "Params"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOptimization.vue:109
+#: src/views/dashboard/components/ParamsOptimization.vue:115
+msgid "Params Optimization"
+msgstr ""
+
+#: src/views/preference/components/Passkey.vue:59
+msgid "Passkey"
+msgstr ""
+
+#: src/views/preference/components/Passkey.vue:62
+msgid "Passkeys are webauthn credentials that validate your identity using touch, facial recognition, a device password, or a PIN. They can be used as a password replacement or as a 2FA method."
+msgstr ""
+
+#: src/views/other/Login.vue:183 src/views/user/userColumns.tsx:18
+msgid "Password"
+msgstr ""
+
+#: src/views/other/Install.vue:158
+msgid "Password (*)"
+msgstr ""
+
+#: src/constants/errors/user.ts:2
+msgid "Password incorrect"
+msgstr ""
+
+#: src/views/other/Install.vue:74
+msgid "Password length cannot exceed 20 characters"
+msgstr ""
+
+#: src/views/config/ConfigEditor.vue:318
+#: src/views/nginx_log/NginxLogList.vue:41
+#: src/views/site/ngx_conf/LocationEditor.vue:109
+#: src/views/site/ngx_conf/LocationEditor.vue:137
+msgid "Path"
+msgstr ""
+
+#: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2
+msgid "Path: {0} is not under the nginx conf dir: {1}"
+msgstr ""
+
+#: src/constants/errors/cert.ts:6
+msgid "Payload resource is nil"
+msgstr ""
+
+#: src/views/environments/list/BatchUpgrader.vue:232
+msgid "Perform"
+msgstr ""
+
+#: src/language/constants.ts:29
+msgid "Perform core upgrade error"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOptimization.vue:121
+msgid "Performance"
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:185
+msgid "Performance Metrics"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOptimization.vue:86
+msgid "Performance settings saved successfully"
+msgstr ""
+
+#: src/language/constants.ts:28
+msgid "Performing core upgrade"
+msgstr ""
+
+#: src/constants/errors/crypto.ts:2
+msgid "Plain text is empty"
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:174
+msgid "Please enable the stub_status module to get request statistics, connection count, etc."
+msgstr ""
+
+#: src/views/preference/components/AddPasskey.vue:69
+msgid "Please enter a name for the passkey you wish to create and click the OK button below."
+msgstr ""
+
+#: src/components/TwoFA/Authorization.vue:85
+msgid "Please enter the OTP code:"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:112
+msgid "Please enter the security token"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:210
+#: src/components/SystemRestore/SystemRestoreContent.vue:287
+msgid "Please enter the security token received during backup"
+msgstr ""
+
+#: src/views/certificate/DNSCredential.vue:53
+msgid "Please fill in the API authentication credentials provided by your DNS provider."
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106
+msgid "Please fill in the required fields"
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:57
+msgid "Please first add credentials in Certification > DNS Credentials, and then select one of the credentialsbelow to request the API of the DNS provider."
+msgstr ""
+
+#: src/components/Notification/notifications.ts:110
+#: src/language/constants.ts:59
+msgid "Please generate new recovery codes in the preferences immediately to prevent lockout."
+msgstr ""
+
+#: src/views/config/components/Rename.vue:65
+#: src/views/config/ConfigEditor.vue:304
+msgid "Please input a filename"
+msgstr ""
+
+#: src/views/config/components/Mkdir.vue:56
+msgid "Please input a folder name"
+msgstr ""
+
+#: src/views/stream/components/StreamDuplicate.vue:25
+msgid "Please input name, this will be used as the filename of the new configuration!"
+msgstr ""
+
+#: src/views/site/site_list/SiteDuplicate.vue:33
+msgid "Please input name, this will be used as the filename of the new configuration."
+msgstr ""
+
+#: src/views/other/Install.vue:58
+msgid "Please input your E-mail!"
+msgstr ""
+
+#: src/views/other/Install.vue:70 src/views/other/Login.vue:47
+msgid "Please input your password!"
+msgstr ""
+
+#: src/views/other/Install.vue:64 src/views/other/Login.vue:41
+msgid "Please input your username!"
+msgstr ""
+
+#: src/views/other/Install.vue:110 src/views/system/Backup/SystemRestore.vue:10
+msgid "Please log in."
+msgstr ""
+
+#: src/views/certificate/DNSCredential.vue:62
+msgid "Please note that the unit of time configurations below are all in seconds."
+msgstr ""
+
+#: src/views/system/Backup/BackupCreator.vue:107
+msgid "Please save this security token, you will need it for restoration:"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:107
+msgid "Please select a backup file"
+msgstr ""
+
+#: src/views/environments/list/Environment.vue:112
+#: src/views/environments/list/Environment.vue:35
+msgid "Please select at least one node to reload Nginx"
+msgstr ""
+
+#: src/views/environments/list/Environment.vue:133
+#: src/views/environments/list/Environment.vue:49
+msgid "Please select at least one node to restart Nginx"
+msgstr ""
+
+#: src/views/environments/list/Environment.vue:91
+msgid "Please select at least one node to upgrade"
+msgstr ""
+
+#: src/views/certificate/components/RemoveCert.vue:27
+msgid "Please type \"Revoke\" to confirm"
+msgstr ""
+
+#: src/views/preference/ServerSettings.vue:21
+msgid "Port"
+msgstr ""
+
+#: src/views/environments/group/columns.ts:17
+#: src/views/environments/group/EnvGroup.vue:26
+msgid "Post-sync Action"
+msgstr ""
+
+#: src/views/environments/list/BatchUpgrader.vue:167
+#: src/views/environments/list/BatchUpgrader.vue:220
+#: src/views/system/Upgrade.vue:194 src/views/system/Upgrade.vue:245
+msgid "Pre-release"
+msgstr ""
+
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:155
+msgid "Preference"
+msgstr ""
+
+#: src/language/constants.ts:8
+msgid "Preparing lego configurations"
+msgstr ""
+
+#: src/views/dashboard/components/ProcessDistributionCard.vue:26
+msgid "Process Distribution"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceTablesCard.vue:154
+msgid "Process information"
+msgstr ""
+
+#: src/language/constants.ts:3
+msgid "Prohibit changing root password in demo"
+msgstr ""
+
+#: src/language/constants.ts:4
+msgid "Prohibit deleting the default user"
+msgstr ""
+
+#: src/views/system/About.vue:51
+msgid "Project Team"
+msgstr ""
+
+#: src/views/certificate/DNSCredential.vue:19
+msgid "Provider"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:51
+msgid "Proxy"
+msgstr ""
+
+#: src/views/preference/NodeSettings.vue:46
+msgid "Public Security Number"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:104
+#: src/views/dashboard/components/PerformanceTablesCard.vue:63
+msgid "Read requests"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:37
+#: src/views/dashboard/ServerAnalytic.vue:383
+msgid "Reads"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:334
+#: src/views/dashboard/ServerAnalytic.vue:35
+msgid "Receive"
+msgstr ""
+
+#: src/views/system/SelfCheck/SelfCheck.vue:43
+msgid "Recheck"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:43
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:533
+msgid "Recover"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:189
+msgid "Recovered Successfully"
+msgstr ""
+
+#: src/components/TwoFA/Authorization.vue:79
+msgid "Recovery"
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:68
+msgid "Recovery Codes"
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:73
+msgid "Recovery codes are used to access your account when you lose access to your 2FA device. Each code can only be used once."
+msgstr ""
+
+#: src/views/preference/CertSettings.vue:40
+msgid "Recursive Nameservers"
+msgstr ""
+
+#: src/components/ChatGPT/ChatGPT.vue:387
+msgid "Regenerate response"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:137
+msgid "Register"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:56
+msgid "Register a user or use this account to issue a certificate through an HTTP proxy."
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:106
+msgid "Register failed"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:77
+msgid "Register On Startup"
+msgstr ""
+
+#: src/views/preference/components/AddPasskey.vue:25
+msgid "Register passkey successfully"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:104
+msgid "Register successfully"
+msgstr ""
+
+#: src/language/constants.ts:14
+msgid "Registering user"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:120
+msgid "Registration Status"
+msgstr ""
+
+#: src/views/system/Upgrade.vue:226
+msgid "Reinstall"
+msgstr ""
+
+#: src/views/system/Upgrade.vue:249
+msgid "Release Note"
+msgstr ""
+
+#: src/components/ChatGPT/ChatGPT.vue:362
+#: src/components/NginxControl/NginxControl.vue:99
+msgid "Reload"
+msgstr ""
+
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/views/environments/group/columns.ts:24
+#: src/views/environments/group/EnvGroup.vue:37
+#: src/views/environments/list/Environment.vue:120
+#: src/views/environments/list/Environment.vue:128
+msgid "Reload Nginx"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:116
+msgid "Reload Nginx on %{node} failed, response: %{resp}"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:120
+msgid "Reload Nginx on %{node} successfully"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:115
+msgid "Reload Remote Nginx Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:119
+msgid "Reload Remote Nginx Success"
+msgstr ""
+
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+msgid "Reload request failed, please check your network connection"
+msgstr ""
+
+#: src/components/NginxControl/NginxControl.vue:73
+msgid "Reloading"
+msgstr ""
+
+#: src/language/constants.ts:18
+msgid "Reloading nginx"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:169
+msgid "Remove"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:51
+#: src/views/preference/components/Passkey.vue:46
+msgid "Remove successfully"
+msgstr ""
+
+#: src/components/Notification/Notification.vue:102
+msgid "Removed successfully"
+msgstr ""
+
+#: src/views/config/components/ConfigName.vue:51
+#: src/views/config/components/Rename.vue:56
+#: src/views/config/ConfigList.vue:181
+#: src/views/site/ngx_conf/NgxUpstream.vue:125
+#: src/views/site/site_edit/components/ConfigName.vue:44
+#: src/views/stream/components/ConfigName.vue:44
+msgid "Rename"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:172
+msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:176
+msgid "Rename %{orig_path} to %{new_path} on %{env_name} successfully"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:171
+#: src/language/constants.ts:42
+msgid "Rename Remote Config Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:175
+#: src/language/constants.ts:41
+msgid "Rename Remote Config Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:49 src/language/constants.ts:56
+msgid "Rename Remote Site Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:53 src/language/constants.ts:55
+msgid "Rename Remote Site Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:91
+msgid "Rename Remote Stream Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:95
+msgid "Rename Remote Stream Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:50
+msgid "Rename site %{name} to %{new_name} on %{node} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:54
+msgid "Rename site %{name} to %{new_name} on %{node} successfully"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:92
+msgid "Rename stream %{name} to %{new_name} on %{node} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:96
+msgid "Rename stream %{name} to %{new_name} on %{node} successfully"
+msgstr ""
+
+#: src/views/config/components/Rename.vue:43
+msgid "Rename successfully"
+msgstr ""
+
+#: src/views/config/components/ConfigName.vue:30
+#: src/views/site/site_edit/components/ConfigName.vue:27
+#: src/views/stream/components/ConfigName.vue:27
+msgid "Renamed successfully"
+msgstr ""
+
+#: src/views/certificate/components/RenewCert.vue:45
+#: src/views/certificate/components/RenewCert.vue:49
+msgid "Renew Certificate"
+msgstr ""
+
+#: src/language/constants.ts:36
+msgid "Renew Certificate Error"
+msgstr ""
+
+#: src/language/constants.ts:35
+msgid "Renew Certificate Success"
+msgstr ""
+
+#: src/views/certificate/components/RenewCert.vue:27
+#: src/views/certificate/components/WildcardCertificate.vue:48
+msgid "Renew successfully"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceTablesCard.vue:141
+msgid "Request statistics"
+msgstr ""
+
+#: src/constants/errors/crypto.ts:4
+msgid "Request timeout"
+msgstr ""
+
+#: src/language/constants.ts:33
+msgid "Requested with wrong parameters"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceStatisticsCard.vue:77
+msgid "Requests Per Connection"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:442
+msgid "Reset"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:93
+msgid "Reset 2FA"
+msgstr ""
+
+#: src/views/dashboard/components/ResourceUsageCard.vue:53
+msgid "Resident Set Size: Actual memory resident in physical memory, including all shared library memory, which will be repeated calculated for multiple processes"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:109
+#: src/views/dashboard/components/PerformanceTablesCard.vue:68
+msgid "Responses"
+msgstr ""
+
+#: src/components/NginxControl/NginxControl.vue:92
+msgid "Restart"
+msgstr ""
+
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/views/environments/list/Environment.vue:141
+#: src/views/environments/list/Environment.vue:149
+msgid "Restart Nginx"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:124
+msgid "Restart Nginx on %{node} failed, response: %{resp}"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:128
+msgid "Restart Nginx on %{node} successfully"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:123
+msgid "Restart Remote Nginx Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:127
+msgid "Restart Remote Nginx Success"
+msgstr ""
+
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+msgid "Restart request failed, please check your network connection"
+msgstr ""
+
+#: src/components/NginxControl/NginxControl.vue:78
+msgid "Restarting"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:135
+msgid "Restore completed successfully"
+msgstr ""
+
+#: src/views/other/Install.vue:190
+msgid "Restore from Backup"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:223
+#: src/components/SystemRestore/SystemRestoreContent.vue:300
+msgid "Restore Nginx Configuration"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:234
+#: src/components/SystemRestore/SystemRestoreContent.vue:311
+msgid "Restore Nginx UI Configuration"
+msgstr ""
+
+#: src/components/ConfigHistory/DiffViewer.vue:412
+#: src/components/ConfigHistory/DiffViewer.vue:425
+msgid "Restore this version"
+msgstr ""
+
+#: src/views/certificate/components/RemoveCert.vue:26
+#: src/views/certificate/components/RemoveCert.vue:95
+msgid "Revoke"
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:114
+msgid "Revoke Old Certificate"
+msgstr ""
+
+#: src/views/certificate/components/RemoveCert.vue:109
+msgid "Revoke this certificate"
+msgstr ""
+
+#: src/views/certificate/components/RemoveCert.vue:117
+msgid "Revoking a certificate will affect any services currently using it. This action cannot be undone."
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:107
+msgid "RP Display Name"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:113
+msgid "RP Origins"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:101
+msgid "RPID"
+msgstr ""
+
+#: src/views/preference/ServerSettings.vue:24
+msgid "Run Mode"
+msgstr ""
+
+#: src/components/NginxControl/NginxControl.vue:68
+msgid "Running"
+msgstr ""
+
+#: src/components/ChatGPT/ChatGPT.vue:355
+#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:64
+#: src/components/StdDesign/StdDetail/StdDetail.vue:93
+#: src/views/certificate/components/CertificateEditor.vue:264
+#: src/views/config/components/ConfigName.vue:59
+#: src/views/config/ConfigEditor.vue:277
+#: src/views/preference/components/Passkey.vue:130
+#: src/views/preference/Preference.vue:231
+#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
+#: src/views/site/site_edit/components/ConfigName.vue:52
+#: src/views/site/site_edit/SiteEdit.vue:295
+#: src/views/stream/components/ConfigName.vue:52
+#: src/views/stream/StreamEdit.vue:271
+msgid "Save"
+msgstr ""
+
+#: src/views/site/ngx_conf/directive/DirectiveAdd.vue:129
+msgid "Save Directive"
+msgstr ""
+
+#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:41
+#: src/views/site/site_add/SiteAdd.vue:46
+msgid "Save error %{msg}"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:57 src/language/constants.ts:48
+msgid "Save Remote Site Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:61 src/language/constants.ts:47
+msgid "Save Remote Site Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:99
+msgid "Save Remote Stream Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:103
+msgid "Save Remote Stream Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:58
+msgid "Save site %{name} to %{node} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:62
+msgid "Save site %{name} to %{node} successfully"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:100
+msgid "Save stream %{name} to %{node} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:104
+msgid "Save stream %{name} to %{node} successfully"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
+#: src/views/certificate/components/CertificateEditor.vue:49
+#: src/views/preference/Preference.vue:127
+msgid "Save successfully"
+msgstr ""
+
+#: src/views/config/ConfigEditor.vue:194
+#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
+#: src/views/site/site_add/SiteAdd.vue:37
+#: src/views/site/site_edit/SiteEdit.vue:155
+#: src/views/stream/StreamEdit.vue:141
+msgid "Saved successfully"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:69
+msgid "Scan the QR code with your mobile phone to add the account to the app."
+msgstr ""
+
+#: src/views/certificate/DNSChallenge.vue:90
+msgid "SDK"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:109
+msgid "Secret has been copied"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:207
+#: src/components/SystemRestore/SystemRestoreContent.vue:284
+msgid "Security Token"
+msgstr ""
+
+#: src/views/system/Backup/BackupCreator.vue:94
+msgid "Security Token Information"
+msgstr ""
+
+#: src/views/environments/group/EnvGroup.vue:29
+msgid "Select an action after sync"
+msgstr ""
+
+#: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:189
+msgid "Selector"
+msgstr ""
+
+#: src/routes/modules/system.ts:19 src/views/system/SelfCheck/SelfCheck.vue:38
+msgid "Self Check"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:344
+#: src/views/dashboard/ServerAnalytic.vue:35
+msgid "Send"
+msgstr ""
+
+#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:160
+msgid "Server"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:175
+msgid "Server Info"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:106
+msgid "Server Names Hash Bucket Size"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:107
+msgid "Server names hash table size"
+msgstr ""
+
+#: src/views/site/cert/components/ObtainCert.vue:107
+msgid "server_name not found in directives"
+msgstr ""
+
+#: src/constants/errors/nginx_log.ts:3
+msgid "ServerIdx out of range"
+msgstr ""
+
+#: src/constants/errors/user.ts:12
+msgid "Session not found"
+msgstr ""
+
+#: src/views/preference/CertSettings.vue:36
+msgid "Set the recursive nameservers to override the systems nameservers for the step of DNS challenge."
+msgstr ""
+
+#: src/views/site/components/SiteStatusSegmented.vue:89
+msgid "set to maintenance mode"
+msgstr ""
+
+#: src/language/constants.ts:11
+msgid "Setting DNS01 challenge provider"
+msgstr ""
+
+#: src/language/constants.ts:12
+msgid "Setting environment variables"
+msgstr ""
+
+#: src/language/constants.ts:10
+msgid "Setting HTTP01 challenge provider"
+msgstr ""
+
+#: src/constants/errors/nginx_log.ts:8
+msgid "Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui.com/guide/config-nginx.html for more information"
+msgstr ""
+
+#: src/constants/errors/nginx_log.ts:7
+msgid "Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui.com/guide/config-nginx.html for more information"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:147
+msgid "Shared Memory Zone"
+msgstr ""
+
+#: src/components/SensitiveString/SensitiveString.vue:40
+msgid "Show"
+msgstr ""
+
+#: src/views/other/Login.vue:240
+msgid "Sign in with a passkey"
+msgstr ""
+
+#: src/views/site/ngx_conf/directive/DirectiveAdd.vue:65
+msgid "Single Directive"
+msgstr ""
+
+#: src/views/site/site_add/SiteAdd.vue:147
+msgid "Site Config Created Successfully"
+msgstr ""
+
+#: src/constants/errors/site.ts:4
+msgid "Site is enabled"
+msgstr ""
+
+#: src/constants/errors/site.ts:5
+msgid "Site is in maintenance mode"
+msgstr ""
+
+#: src/routes/modules/nginx_log.ts:31
+msgid "Site Logs"
+msgstr ""
+
+#: src/constants/errors/site.ts:2
+msgid "Site not found"
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/backend/index.ts:5
+msgid "Sites Directory"
+msgstr ""
+
+#: src/routes/modules/sites.ts:19
+msgid "Sites List"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:10
+msgid "Sites-available directory not exist"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:11
+msgid "Sites-enabled directory not exist"
+msgstr ""
+
+#: src/views/preference/NodeSettings.vue:23
+msgid "Skip Installation"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:325
+msgid "Sleep time between cache loader iterations"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:263
+msgid "Sleep time between cache manager iterations"
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:213
+msgid "SSL Certificate Content"
+msgstr ""
+
+#: src/constants/errors/system.ts:8
+msgid "SSL certificate file must be under Nginx configuration directory: {0}"
+msgstr ""
+
+#: src/constants/errors/system.ts:6
+msgid "SSL certificate file not found"
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:226
+msgid "SSL Certificate Key Content"
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:192
+msgid "SSL Certificate Key Path"
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:177
+#: src/views/preference/ServerSettings.vue:36
+msgid "SSL Certificate Path"
+msgstr ""
+
+#: src/constants/errors/system.ts:4
+msgid "SSL certificate path is required when HTTPS is enabled"
+msgstr ""
+
+#: src/constants/errors/system.ts:9
+msgid "SSL key file must be under Nginx configuration directory: {0}"
+msgstr ""
+
+#: src/constants/errors/system.ts:7
+msgid "SSL key file not found"
+msgstr ""
+
+#: src/views/preference/ServerSettings.vue:40
+msgid "SSL Key Path"
+msgstr ""
+
+#: src/constants/errors/system.ts:5
+msgid "SSL key path is required when HTTPS is enabled"
+msgstr ""
+
+#: src/views/other/Login.vue:197
+msgid "SSO Login"
+msgstr ""
+
+#: src/views/environments/list/BatchUpgrader.vue:164
+#: src/views/environments/list/BatchUpgrader.vue:214
+#: src/views/system/Upgrade.vue:191 src/views/system/Upgrade.vue:239
+msgid "Stable"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:246
+#: src/components/SystemRestore/SystemRestoreContent.vue:323
+msgid "Start Restore"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:65
+#: src/views/certificate/CertificateList/certColumns.tsx:65
+#: src/views/environments/list/envColumns.tsx:44
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90 src/views/stream/StreamList.vue:49
+msgid "Status"
+msgstr ""
+
+#: src/components/NginxControl/NginxControl.vue:83
+msgid "Stopped"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:250
+#: src/views/dashboard/ServerAnalytic.vue:251
+msgid "Storage"
+msgstr ""
+
+#: src/constants/errors/stream.ts:4
+msgid "Stream is enabled"
+msgstr ""
+
+#: src/constants/errors/stream.ts:2
+msgid "Stream not found"
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/backend/index.ts:10
+msgid "Streams Directory"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:12
+msgid "Streams-available directory not exist"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:13
+msgid "Streams-enabled directory not exist"
+msgstr ""
+
+#: src/views/preference/NginxSettings.vue:9
+msgid "Stub Status Port"
+msgstr ""
+
+#: src/constants/index.ts:25 src/views/notification/notificationColumns.tsx:36
+msgid "Success"
+msgstr ""
+
+#: src/views/system/SelfCheck/tasks/frontend/websocket.ts:6
+msgid "Support communication with the backend through the WebSocket protocol. If your Nginx UI is being used via an Nginx reverse proxy, please refer to this link to write the corresponding configuration file: https://nginxui.com/guide/nginx-proxy-example.html"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:197
+#: src/components/SystemRestore/SystemRestoreContent.vue:274
+msgid "Supported file type: .zip"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:236
+#: src/views/dashboard/ServerAnalytic.vue:237
+msgid "Swap"
+msgstr ""
+
+#: src/components/SwitchAppearance/SwitchAppearance.vue:13
+msgid "Switch to dark theme"
+msgstr ""
+
+#: src/components/SwitchAppearance/SwitchAppearance.vue:13
+msgid "Switch to light theme"
+msgstr ""
+
+#: src/views/config/components/Rename.vue:81
+msgid "Sync"
+msgstr ""
+
+#: src/views/certificate/CertificateList/certColumns.tsx:30
+msgid "Sync Certificate"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:154
+msgid "Sync Certificate %{cert_name} to %{env_name} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:158
+msgid "Sync Certificate %{cert_name} to %{env_name} successfully"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:153
+#: src/language/constants.ts:39
+msgid "Sync Certificate Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:157
+#: src/language/constants.ts:38
+msgid "Sync Certificate Success"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:164
+msgid "Sync config %{config_name} to %{env_name} failed"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:168
+msgid "Sync config %{config_name} to %{env_name} successfully"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:163
+#: src/language/constants.ts:45
+msgid "Sync Config Error"
+msgstr ""
+
+#: src/components/Notification/notifications.ts:167
+#: src/language/constants.ts:44
+msgid "Sync Config Success"
+msgstr ""
+
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/views/environments/group/EnvGroup.vue:18
+msgid "Sync Nodes"
+msgstr ""
+
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/stream/components/RightSettings.vue:111
+#: src/views/stream/components/RightSettings.vue:124
+msgid "Sync strategy"
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:206
+msgid "Sync to"
+msgstr ""
+
+#: src/views/site/site_edit/RightSettings.vue:75
+#: src/views/stream/components/RightSettings.vue:108
+msgid "Synchronization"
+msgstr ""
+
+#: src/routes/modules/system.ts:11
+msgid "System"
+msgstr ""
+
+#: src/views/system/Backup/BackupCreator.vue:71
+msgid "System Backup"
+msgstr ""
+
+#: src/views/certificate/components/ACMEUserSelector.vue:88
+msgid "System Initial User"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:174
+msgid "System Restore"
+msgstr ""
+
+#: src/views/other/Install.vue:106 src/views/system/Backup/SystemRestore.vue:6
+msgid "System restored successfully."
+msgstr ""
+
+#: src/constants/errors/self_check.ts:2
+msgid "Task not found"
+msgstr ""
+
+#: src/views/preference/components/ExternalNotify/telegram.ts:5
+msgid "Telegram"
+msgstr ""
+
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:190
+#: src/views/terminal/Terminal.vue:129
+msgid "Terminal"
+msgstr ""
+
+#: src/views/preference/TerminalSettings.vue:9
+msgid "Terminal Start Command"
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:49
+msgid "The certificate for the domain will be checked 30 minutes, and will be renewed if it has been more than 1 week or the period you set in settings since it was last issued."
+msgstr ""
+
+#: src/views/other/Install.vue:80
+msgid "The filename cannot contain the following characters: %{c}"
+msgstr ""
+
+#: src/views/preference/NodeSettings.vue:37
+msgid "The ICP Number should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:216
+msgid "The input is not a SSL Certificate"
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:229
+msgid "The input is not a SSL Certificate Key"
+msgstr ""
+
+#: src/constants/errors/nginx_log.ts:2
+msgid "The log path is not under the paths in settings.NginxSettings.LogDirWhiteList"
+msgstr ""
+
+#: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
+msgid "The model name should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
+msgstr ""
+
+#: src/views/preference/OpenAISettings.vue:90
+msgid "The model used for code completion, if not set, the chat model will be used."
+msgstr ""
+
+#: src/views/preference/NodeSettings.vue:18
+msgid "The node name should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
+msgstr ""
+
+#: src/views/site/site_add/SiteAdd.vue:120
+msgid "The parameter of server_name is required"
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:181
+msgid "The path exists, but the file is not a certificate"
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:196
+msgid "The path exists, but the file is not a private key"
+msgstr ""
+
+#: src/views/preference/NodeSettings.vue:49
+msgid "The Public Security Number should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
+msgstr ""
+
+#: src/views/dashboard/Environments.vue:148
+msgid "The remote Nginx UI version is not compatible with the local Nginx UI version. To avoid potential errors, please upgrade the remote Nginx UI to match the local version."
+msgstr ""
+
+#: src/views/site/cert/components/AutoCertStepOne.vue:44
+msgid "The server_name in the current configuration must be the domain name you need to get the certificate, supportmultiple domains."
+msgstr ""
+
+#: src/views/preference/CertSettings.vue:22
+#: src/views/preference/HTTPSettings.vue:14
+msgid "The url is invalid"
+msgstr ""
+
+#: src/views/preference/OpenAISettings.vue:35
+#: src/views/preference/OpenAISettings.vue:49
+msgid "The url is invalid."
+msgstr ""
+
+#: src/language/constants.ts:2
+msgid "The username or password is incorrect"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceTablesCard.vue:184
+msgid "Theoretical maximum concurrent connections:"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceTablesCard.vue:188
+msgid "Theoretical maximum RPS (Requests Per Second):"
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:104
+msgid "These codes are the last resort for accessing your account in case you lose your password and second factors. If you cannot find these codes, you will lose access to your account."
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:102
+msgid "This Auto Cert item is invalid, please remove it."
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:92
+msgid "This certificate is managed by Nginx UI"
+msgstr ""
+
+#: src/views/certificate/components/CertificateEditor.vue:165
+#: src/views/certificate/components/CertificateEditor.vue:179
+#: src/views/certificate/components/CertificateEditor.vue:194
+msgid "This field is required"
+msgstr ""
+
+#: src/constants/form_errors.ts:3
+msgid "This field should be a valid email address"
+msgstr ""
+
+#: src/constants/form_errors.ts:5
+msgid "This field should be a valid hostname"
+msgstr ""
+
+#: src/components/StdDesign/StdDataEntry/StdFormItem.vue:39
+#: src/constants/form_errors.ts:2
+msgid "This field should not be empty"
+msgstr ""
+
+#: src/constants/form_errors.ts:6
+msgid "This field should only contain letters, unicode characters, numbers, and -_."
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:153
+msgid "This module provides Nginx request statistics, connection count, etc. data. After enabling it, you can view performance statistics"
+msgstr ""
+
+#: src/views/certificate/components/RemoveCert.vue:103
+msgid "This operation will only remove the certificate from the database. The certificate files on the file system will not be deleted."
+msgstr ""
+
+#: src/views/system/Backup/BackupCreator.vue:141
+msgid "This token will only be shown once and cannot be retrieved later. Please make sure to save it in a secure location."
+msgstr ""
+
+#: src/constants/form_errors.ts:4
+msgid "This value is already taken"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:227
+#: src/components/SystemRestore/SystemRestoreContent.vue:304
+msgid "This will restore all Nginx configuration files. Nginx will restart after the restoration is complete."
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:238
+#: src/components/SystemRestore/SystemRestoreContent.vue:315
+msgid "This will restore configuration files and database. Nginx UI will restart after the restoration is complete."
+msgstr ""
+
+#: src/views/environments/list/BatchUpgrader.vue:182
+msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:124
+msgid "Throttle"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:144
+#: src/views/preference/components/AddPasskey.vue:65
+#: src/views/preference/LogrotateSettings.vue:11
+msgid "Tips"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceTablesCard.vue:206
+msgid "Tips: You can increase the concurrency processing capacity by increasing worker_processes or worker_connections"
+msgstr ""
+
+#: src/views/notification/notificationColumns.tsx:45
+msgid "Title"
+msgstr ""
+
+#: src/views/certificate/components/RemoveCert.vue:121
+msgid "To confirm revocation, please type \"Revoke\" in the field below:"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:68
+msgid "To enable it, you need to install the Google or Microsoft Authenticator app on your mobile phone."
+msgstr ""
+
+#: src/views/preference/components/AddPasskey.vue:89
+msgid "To ensure security, Webauthn configuration cannot be added through the UI. Please manually configure the following in the app.ini configuration file and restart Nginx UI."
+msgstr ""
+
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:45
+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 ""
+
+#: src/views/preference/OpenAISettings.vue:36
+msgid "To use a local large model, deploy it with ollama, vllm or lmdeploy. They provide an OpenAI-compatible API endpoint, so just set the baseUrl to your local API."
+msgstr ""
+
+#: src/views/dashboard/NginxDashBoard.vue:57
+msgid "Toggle failed"
+msgstr ""
+
+#: src/views/preference/OpenAISettings.vue:61
+msgid "Token is not valid"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdPagination.vue:40
+msgid "Total %{total} item"
+msgid_plural "Total %{total} items"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: src/composables/usePerformanceMetrics.ts:94
+#: src/views/dashboard/components/PerformanceTablesCard.vue:53
+msgid "Total connections"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:89
+#: src/views/dashboard/components/PerformanceTablesCard.vue:48
+msgid "Total handshakes"
+msgstr ""
+
+#: src/views/dashboard/components/ProcessDistributionCard.vue:53
+msgid "Total Nginx processes"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceStatisticsCard.vue:94
+msgid "Total Nginx Processes"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:99
+#: src/views/dashboard/components/PerformanceTablesCard.vue:58
+msgid "Total requests"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceStatisticsCard.vue:78
+msgid "Total Requests / Total Connections"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:66
+msgid "TOTP"
+msgstr ""
+
+#: src/views/preference/components/TOTP.vue:67
+msgid "TOTP is a two-factor authentication method that uses a time-based one-time password algorithm."
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:197
+msgid "Trash"
+msgstr ""
+
+#: src/components/TwoFA/use2FAModal.ts:67
+msgid "Two-factor authentication required"
+msgstr ""
+
+#: src/views/certificate/CertificateList/certColumns.tsx:25
+#: src/views/nginx_log/NginxLogList.vue:17
+#: src/views/notification/notificationColumns.tsx:9
+#: src/views/preference/components/ExternalNotify/columns.ts:17
+msgid "Type"
+msgstr ""
+
+#: src/composables/useNginxPerformance.ts:18
+msgid "Unknown"
+msgstr ""
+
+#: src/views/system/SelfCheck/SelfCheck.vue:63
+msgid "Unknown issue"
+msgstr ""
+
+#: src/views/preference/components/Passkey.vue:39
+msgid "Update successfully"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:88
+#: src/views/certificate/DNSCredential.vue:27
+#: src/views/config/configColumns.tsx:36 src/views/config/ConfigEditor.vue:331
+#: src/views/environments/group/columns.ts:37
+#: src/views/environments/list/envColumns.tsx:90
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
+#: src/views/stream/components/RightSettings.vue:99
+#: src/views/stream/StreamList.vue:69 src/views/user/userColumns.tsx:54
+msgid "Updated at"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:121
+msgid "Updated successfully"
+msgstr ""
+
+#: src/routes/modules/system.ts:33
+#: src/views/environments/list/Environment.vue:107
+#: src/views/environments/list/Environment.vue:99
+#: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
+msgid "Upgrade"
+msgstr ""
+
+#: src/views/environments/list/BatchUpgrader.vue:137
+msgid "Upgraded Nginx UI on %{node} successfully 🎉"
+msgstr ""
+
+#: src/language/constants.ts:30
+msgid "Upgraded successfully"
+msgstr ""
+
+#: src/views/environments/list/BatchUpgrader.vue:88
+#: src/views/system/Upgrade.vue:77
+msgid "Upgrading Nginx UI, please wait..."
+msgstr ""
+
+#: src/views/site/ngx_conf/NgxUpstream.vue:172
+msgid "Upstream Name"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:179
+msgid "Uptime:"
+msgstr ""
+
+#: src/views/environments/list/envColumns.tsx:19
+msgid "URL"
+msgstr ""
+
+#: src/components/TwoFA/Authorization.vue:121
+msgid "Use OTP"
+msgstr ""
+
+#: src/components/TwoFA/Authorization.vue:117
+msgid "Use recovery code"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:158
+msgid "Use Temporary Path"
+msgstr ""
+
+#: src/components/ChatGPT/ChatGPT.vue:333
+msgid "User"
+msgstr ""
+
+#: src/constants/errors/user.ts:3
+msgid "User banned"
+msgstr ""
+
+#: src/constants/errors/user.ts:8
+msgid "User not enabled otp as 2fa"
+msgstr ""
+
+#: src/views/other/Login.vue:173 src/views/user/userColumns.tsx:9
+msgid "Username"
+msgstr ""
+
+#: src/views/other/Install.vue:148
+msgid "Username (*)"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:124
+#: src/views/certificate/CertificateList/certColumns.tsx:78
+#: src/views/site/cert/CertInfo.vue:24
+msgid "Valid"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceTablesCard.vue:21
+msgid "Value"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:216
+#: src/components/SystemRestore/SystemRestoreContent.vue:293
+msgid "Verify Backup File Integrity"
+msgstr ""
+
+#: src/views/environments/list/envColumns.tsx:31
+msgid "Version"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdTable.vue:488
+#: src/views/nginx_log/NginxLogList.vue:97
+#: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103
+msgid "View"
+msgstr ""
+
+#: src/components/Notification/Notification.vue:203
+msgid "View all notifications"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
+msgid "View Details"
+msgstr ""
+
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:262
+msgid "View Mode"
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:134
+msgid "View Recovery Codes"
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:70
+msgid "Viewed"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:114
+#: src/views/dashboard/components/PerformanceTablesCard.vue:73
+msgid "Waiting processes"
+msgstr ""
+
+#: src/constants/index.ts:23 src/views/config/InspectConfig.vue:33
+#: src/views/notification/notificationColumns.tsx:22
+#: src/views/preference/components/AddPasskey.vue:82
+#: src/views/site/site_add/SiteAdd.vue:115
+#: src/views/system/Backup/BackupCreator.vue:138
+msgid "Warning"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:178
+#: src/components/SystemRestore/SystemRestoreContent.vue:255
+msgid "Warning: Restore operation will overwrite current configurations. Make sure you have a valid backup file and security token, and carefully select what to restore."
+msgstr ""
+
+#: src/views/certificate/DNSCredential.vue:56
+msgid "We will add one or more TXT records to the DNS records of your domain for ownership verification."
+msgstr ""
+
+#: src/views/site/cert/components/ObtainCert.vue:137
+msgid "We will remove the HTTPChallenge configuration from this file and reload the Nginx. Are you sure you want to continue?"
+msgstr ""
+
+#: src/views/preference/AuthSettings.vue:97
+msgid "Webauthn"
+msgstr ""
+
+#: src/constants/errors/user.ts:7
+msgid "WebAuthn settings are not configured"
+msgstr ""
+
+#: src/views/certificate/components/RemoveCert.vue:54
+msgid "WebSocket connection error"
+msgstr ""
+
+#: src/views/certificate/ACMEUser.vue:83
+msgid "When Enabled, Nginx UI will automatically re-register users upon startup. Generally, do not enable this unless you are in a dev environment and using Pebble as CA."
+msgstr ""
+
+#: src/views/site/site_edit/RightSettings.vue:81
+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 ""
+
+#: src/views/stream/components/RightSettings.vue:114
+msgid "When you enable/disable, delete, or save this stream, the nodes set in the Node Group and the nodes selected below will be synchronized."
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:140
+msgid "When you generate new recovery codes, you must download or print the new codes."
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:160
+msgid "Whether to use a temporary path when writing temporary files"
+msgstr ""
+
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:48
+msgid "Worker Connections"
+msgstr ""
+
+#: src/composables/usePerformanceMetrics.ts:55
+#: src/views/dashboard/components/ConnectionMetricsCard.vue:48
+#: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:25
+#: src/views/dashboard/components/ProcessDistributionCard.vue:12
+msgid "Worker Processes"
+msgstr ""
+
+#: src/views/dashboard/components/PerformanceStatisticsCard.vue:103
+msgid "Workers"
+msgstr ""
+
+#: src/views/dashboard/ServerAnalytic.vue:37
+#: src/views/dashboard/ServerAnalytic.vue:373
+msgid "Writes"
+msgstr ""
+
+#: src/language/constants.ts:17
+msgid "Writing certificate private key to disk"
+msgstr ""
+
+#: src/language/constants.ts:16
+msgid "Writing certificate to disk"
+msgstr ""
+
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/views/preference/AuthSettings.vue:163
+#: src/views/preference/CertSettings.vue:72
+#: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
+#: src/views/site/ngx_conf/LocationEditor.vue:87
+msgid "Yes"
+msgstr ""
+
+#: src/views/terminal/Terminal.vue:135
+msgid "You are accessing this terminal over an insecure HTTP connection on a non-localhost domain. This may expose sensitive information."
+msgstr ""
+
+#: src/views/system/Upgrade.vue:202
+msgid "You are using the latest version"
+msgstr ""
+
+#: src/views/system/Upgrade.vue:164
+msgid "You can check Nginx UI upgrade at this page."
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:339
+msgid "You can close this dialog in %{countdown} seconds"
+msgstr ""
+
+#: src/components/SystemRestore/SystemRestoreContent.vue:342
+msgid "You can close this dialog now"
+msgstr ""
+
+#: src/views/preference/components/AddPasskey.vue:87
+msgid "You have not configured the settings of Webauthn, so you cannot add a passkey."
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:81
+msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:94
+msgid "You have not generated recovery codes yet."
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:91
+msgid "Your current recovery code might be outdated and insecure. Please generate new recovery codes at your earliest convenience to ensure security."
+msgstr ""
+
+#: src/views/preference/components/RecoveryCodes.vue:142
+#: src/views/preference/components/RecoveryCodes.vue:155
+msgid "Your old codes won't work anymore."
+msgstr ""
+
+#: src/views/preference/components/Passkey.vue:75
+msgid "Your passkeys"
+msgstr ""

+ 81 - 66
app/src/language/vi_VN/app.po

@@ -64,7 +64,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
 #: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:163
+#: src/views/site/ngx_conf/NgxServer.vue:166
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:182
 msgid "Add"
@@ -109,7 +109,7 @@ msgstr "Cập nhật thành công"
 msgid "Additional"
 msgstr "Tùy chọn bổ sung"
 
-#: src/views/site/site_edit/SiteEdit.vue:225
+#: src/views/site/site_edit/SiteEdit.vue:228
 #: src/views/stream/StreamEdit.vue:207
 msgid "Advance Mode"
 msgstr "Nâng cao"
@@ -149,7 +149,7 @@ msgstr ""
 msgid "API Type"
 msgstr "Loại"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:166
 msgid "App"
 msgstr ""
 
@@ -263,7 +263,7 @@ msgstr ""
 msgid "Attempts"
 msgstr ""
 
-#: src/views/preference/Preference.vue:194
+#: src/views/preference/Preference.vue:196
 #, fuzzy
 msgid "Auth"
 msgstr "Tác giả"
@@ -313,7 +313,7 @@ msgstr ""
 #: src/views/certificate/components/CertificateEditor.vue:257
 #: src/views/config/ConfigEditor.vue:268 src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:285
+#: src/views/site/site_edit/SiteEdit.vue:288
 #: src/views/stream/StreamEdit.vue:264
 msgid "Back"
 msgstr "Quay lại"
@@ -367,13 +367,13 @@ msgid "Base information"
 msgstr "Thông tin"
 
 #: src/views/config/ConfigEditor.vue:296
-#: src/views/site/site_edit/RightSettings.vue:52
+#: src/views/site/site_edit/RightSettings.vue:43
 #: src/views/stream/components/RightSettings.vue:79
 #, fuzzy
 msgid "Basic"
 msgstr "Cơ bản"
 
-#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/site/site_edit/SiteEdit.vue:231
 #: src/views/stream/StreamEdit.vue:210
 msgid "Basic Mode"
 msgstr "Cơ bản"
@@ -470,10 +470,10 @@ msgstr ""
 #: src/components/StdDesign/StdDetail/StdDetail.vue:101
 #: src/views/preference/components/Passkey.vue:141
 #: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51
-#: src/views/site/ngx_conf/NgxServer.vue:80
+#: src/views/site/ngx_conf/NgxServer.vue:83
 #: src/views/site/ngx_conf/NgxUpstream.vue:34
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:122
 #: src/views/stream/components/RightSettings.vue:55
 msgid "Cancel"
 msgstr "Huỷ"
@@ -496,7 +496,7 @@ msgstr ""
 msgid "Cannot remove initial user"
 msgstr ""
 
-#: src/views/preference/Preference.vue:200
+#: src/views/preference/Preference.vue:202
 #, fuzzy
 msgid "Cert"
 msgstr "Tự động ký chứng chỉ SSL"
@@ -569,7 +569,7 @@ msgid "Certificate renewed successfully"
 msgstr "Đã xóa thành công"
 
 #: src/views/certificate/components/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:60
+#: src/views/site/cert/Cert.vue:62
 #, fuzzy
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
@@ -597,7 +597,7 @@ msgstr "Phương pháp xác thực"
 msgid "Change Certificate"
 msgstr "Thay đổi chứng chỉ"
 
-#: src/views/site/cert/Cert.vue:79
+#: src/views/site/cert/Cert.vue:81
 #, fuzzy
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
@@ -701,6 +701,10 @@ msgstr ""
 msgid "Close"
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #, fuzzy
 msgid "Command"
@@ -709,7 +713,7 @@ msgstr "Bình luận"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:135
+#: src/views/site/ngx_conf/NgxServer.vue:138
 msgid "Comments"
 msgstr "Bình luận"
 
@@ -913,7 +917,7 @@ msgid "Current Version"
 msgstr "Phiên bản hiện tại"
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:194
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
 msgid "Custom"
 msgstr "Tuỳ chỉnh"
 
@@ -948,7 +952,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
-#: src/views/site/ngx_conf/NgxServer.vue:110
+#: src/views/site/ngx_conf/NgxServer.vue:113
 #: src/views/site/ngx_conf/NgxUpstream.vue:128
 #: src/views/site/site_list/SiteList.vue:131
 #: src/views/stream/StreamList.vue:248
@@ -1077,7 +1081,7 @@ msgstr "Directives"
 msgid "Directory path to store cache files"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
+#: src/views/site/components/SiteStatusSegmented.vue:88
 #, fuzzy
 msgid "disable"
 msgstr "Tắt"
@@ -1156,14 +1160,14 @@ msgstr "Đã bật %{conf_name} trên %{node_name}"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:159
-#: src/views/site/site_edit/SiteEdit.vue:199
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
 #: src/views/site/site_list/columns.tsx:111 src/views/stream/StreamEdit.vue:182
 #: src/views/stream/StreamList.vue:60 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "Đã tắt"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:56
+#: src/views/site/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:42
 #: src/views/stream/StreamList.vue:98
 msgid "Disabled successfully"
@@ -1191,7 +1195,7 @@ msgstr ""
 msgid "Do not enable this option unless you are sure that you need it."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:118
+#: src/views/site/components/SiteStatusSegmented.vue:93
 #, fuzzy
 msgid "Do you want to %{action} this site?"
 msgstr "Bạn muốn bật trang web này ?"
@@ -1215,7 +1219,7 @@ msgstr "Bạn muốn bật trang web này ?"
 msgid "Do you want to enable TLS?"
 msgstr "Bạn muốn bật TLS ?"
 
-#: src/views/site/ngx_conf/NgxServer.vue:76
+#: src/views/site/ngx_conf/NgxServer.vue:79
 #, fuzzy
 msgid "Do you want to remove this server?"
 msgstr "Bạn muốn xóa máy chủ này ?"
@@ -1280,7 +1284,7 @@ msgstr "Đã sao chép thành công vào máy cục bộ"
 msgid "Edit"
 msgstr "Sửa %{n}"
 
-#: src/views/site/site_edit/SiteEdit.vue:188
+#: src/views/site/site_edit/SiteEdit.vue:185
 #: src/views/stream/StreamEdit.vue:171
 msgid "Edit %{n}"
 msgstr "Sửa %{n}"
@@ -1308,7 +1312,7 @@ msgstr "Email (*)"
 msgid "Email (*)"
 msgstr "Email (*)"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:112
+#: src/views/site/components/SiteStatusSegmented.vue:87
 #, fuzzy
 msgid "enable"
 msgstr "Đã bật"
@@ -1327,6 +1331,10 @@ msgstr "Đã bật"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "Không thể bật tự động gia hạn SSL cho %{name}"
 
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr ""
+
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgstr ""
@@ -1408,7 +1416,7 @@ msgstr "Đã bật %{conf_name} trên %{node_name}"
 msgid "Enable stub_status module"
 msgstr ""
 
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:183
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
 msgid "Enable TLS"
 msgstr "Bật TLS"
 
@@ -1423,8 +1431,8 @@ msgstr "Bật TLS"
 #: src/views/preference/LogrotateSettings.vue:19
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:155
-#: src/views/site/site_edit/SiteEdit.vue:193
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:110
 #: src/views/stream/components/RightSettings.vue:81
 #: src/views/stream/StreamEdit.vue:176 src/views/stream/StreamList.vue:56
@@ -1432,8 +1440,8 @@ msgstr "Bật TLS"
 msgid "Enabled"
 msgstr "Đã bật"
 
+#: src/views/site/components/SiteStatusSegmented.vue:27
 #: src/views/site/site_add/SiteAdd.vue:40
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:33
 #: src/views/stream/StreamList.vue:88
 msgid "Enabled successfully"
@@ -1496,7 +1504,7 @@ msgid "Export"
 msgstr "Xuất"
 
 #: src/views/preference/ExternalNotify.vue:10
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:172
 msgid "External Notify"
 msgstr ""
 
@@ -1644,24 +1652,24 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Nhận chứng chỉ"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:63
+#: src/views/site/components/SiteStatusSegmented.vue:46
 #: src/views/stream/components/RightSettings.vue:45
 #: src/views/stream/StreamList.vue:102
 msgid "Failed to disable %{msg}"
 msgstr "Không thể tắt %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:95
+#: src/views/site/components/SiteStatusSegmented.vue:72
 #, fuzzy
 msgid "Failed to disable maintenance mode %{msg}"
 msgstr "Không thể tắt %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:47
+#: src/views/site/components/SiteStatusSegmented.vue:33
 #: src/views/stream/components/RightSettings.vue:36
 #: src/views/stream/StreamList.vue:92
 msgid "Failed to enable %{msg}"
 msgstr "Không thể bật %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:79
+#: src/views/site/components/SiteStatusSegmented.vue:59
 #, fuzzy
 msgid "Failed to enable maintenance mode %{msg}"
 msgstr "Không thể bật %{msg}"
@@ -1782,7 +1790,7 @@ msgstr "Nhận chứng chỉ"
 msgid "Failed to save Nginx performance settings"
 msgstr "Không thể truy xuất thông tin chứng chỉ"
 
-#: src/views/site/site_edit/SiteEdit.vue:139
+#: src/views/site/site_edit/SiteEdit.vue:137
 #: src/views/stream/StreamEdit.vue:122
 msgid "Failed to save, syntax error(s) was detected in the configuration."
 msgstr "Không lưu được, đã phát hiện thấy (các) lỗi cú pháp trong cấu hình."
@@ -1934,7 +1942,7 @@ msgid "Higher value means better connection reuse"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:256
-#: src/views/site/site_edit/SiteEdit.vue:212
+#: src/views/site/site_edit/SiteEdit.vue:215
 #: src/views/stream/StreamEdit.vue:195
 #, fuzzy
 msgid "History"
@@ -1948,7 +1956,7 @@ msgstr "Trang chủ"
 msgid "Host"
 msgstr ""
 
-#: src/views/preference/Preference.vue:182
+#: src/views/preference/Preference.vue:184
 msgid "HTTP"
 msgstr ""
 
@@ -2332,7 +2340,7 @@ msgstr "Đăng nhập thành công"
 msgid "Logout successful"
 msgstr "Đã đăng xuất"
 
-#: src/views/preference/Preference.vue:218
+#: src/views/preference/Preference.vue:220
 msgid "Logrotate"
 msgstr ""
 
@@ -2346,17 +2354,18 @@ msgid ""
 "minutes."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:163
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
 #: src/views/site/site_list/columns.tsx:112
 msgid "Maintenance"
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:88
+#: src/views/site/components/SiteStatusSegmented.vue:66
 #, fuzzy
 msgid "Maintenance mode disabled successfully"
 msgstr "Đã tắt thành công"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:72
+#: src/views/site/components/SiteStatusSegmented.vue:53
 #, fuzzy
 msgid "Maintenance mode enabled successfully"
 msgstr "Đã bật"
@@ -2545,8 +2554,8 @@ msgstr "Single Directive"
 #: src/views/nginx_log/NginxLogList.vue:33
 #: src/views/preference/components/AddPasskey.vue:75
 #: src/views/site/ngx_conf/NgxUpstream.vue:177
-#: src/views/site/site_edit/RightSettings.vue:63
-#: src/views/site/site_list/columns.tsx:17
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/components/RightSettings.vue:87
 #: src/views/stream/components/StreamDuplicate.vue:71
@@ -2599,7 +2608,7 @@ msgstr "Đã có phiên bản mới"
 msgid "Next"
 msgstr "Tiếp theo"
 
-#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:206
+#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:208
 msgid "Nginx"
 msgstr ""
 
@@ -2650,7 +2659,7 @@ msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 msgid "Nginx configuration has been restored"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
-#: src/views/site/site_edit/SiteEdit.vue:244
+#: src/views/site/site_edit/SiteEdit.vue:247
 #: src/views/stream/StreamEdit.vue:226
 #, fuzzy
 msgid "Nginx Configuration Parse Error"
@@ -2792,13 +2801,13 @@ msgstr ""
 msgid "No records selected"
 msgstr ""
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:178
 #, fuzzy
 msgid "Node"
 msgstr "Username"
 
-#: src/views/site/site_edit/RightSettings.vue:66
-#: src/views/site/site_list/columns.tsx:65
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:32
 #, fuzzy
@@ -2842,7 +2851,7 @@ msgstr "Không hợp lệ trước: %{date}"
 msgid "Note"
 msgstr "Ghi chú"
 
-#: src/views/site/site_edit/RightSettings.vue:95
+#: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
 msgid ""
 "Note, if the configuration file include other configurations or "
@@ -2929,10 +2938,10 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50
-#: src/views/site/ngx_conf/NgxServer.vue:79
+#: src/views/site/ngx_conf/NgxServer.vue:82
 #: src/views/site/ngx_conf/NgxUpstream.vue:33
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:121
 #: src/views/site/site_list/SiteList.vue:121
 #: src/views/stream/components/RightSettings.vue:54
 #: src/views/stream/StreamList.vue:238
@@ -2961,7 +2970,7 @@ msgstr "Trực tuyến"
 msgid "Only zip files are allowed"
 msgstr ""
 
-#: src/views/preference/Preference.vue:212
+#: src/views/preference/Preference.vue:214
 msgid "OpenAI"
 msgstr ""
 
@@ -3239,7 +3248,7 @@ msgstr "Hành động"
 msgid "Pre-release"
 msgstr ""
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:153
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:155
 msgid "Preference"
 msgstr "Cài đặt"
 
@@ -3701,10 +3710,10 @@ msgstr "Running"
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/ConfigEditor.vue:277
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:229
+#: src/views/preference/Preference.vue:231
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:292
+#: src/views/site/site_edit/SiteEdit.vue:295
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/StreamEdit.vue:271
 msgid "Save"
@@ -3762,7 +3771,7 @@ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/components/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:125
+#: src/views/preference/Preference.vue:127
 #, fuzzy
 msgid "Save successfully"
 msgstr "Lưu thành công"
@@ -3770,7 +3779,7 @@ msgstr "Lưu thành công"
 #: src/views/config/ConfigEditor.vue:194
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:157
+#: src/views/site/site_edit/SiteEdit.vue:155
 #: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "Lưu thành công"
@@ -3813,7 +3822,7 @@ msgstr ""
 msgid "Send"
 msgstr "Gửi"
 
-#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:158
+#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:160
 #, fuzzy
 msgid "Server"
 msgstr "Thông tin máy chủ"
@@ -3849,7 +3858,7 @@ msgid ""
 "step of DNS challenge."
 msgstr ""
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:114
+#: src/views/site/components/SiteStatusSegmented.vue:89
 #, fuzzy
 msgid "set to maintenance mode"
 msgstr "Gia hạn chứng chỉ SSL thất bại"
@@ -4017,8 +4026,8 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:65
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_edit/RightSettings.vue:55
-#: src/views/site/site_list/columns.tsx:89 src/views/stream/StreamList.vue:49
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90 src/views/stream/StreamList.vue:49
 msgid "Status"
 msgstr "Trạng thái"
 
@@ -4147,8 +4156,8 @@ msgstr "Gia hạn chứng chỉ SSL thành công"
 msgid "Sync Nodes"
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:101
-#: src/views/site/site_edit/RightSettings.vue:88
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/stream/components/RightSettings.vue:111
 #: src/views/stream/components/RightSettings.vue:124
 #, fuzzy
@@ -4159,7 +4168,7 @@ msgstr "Gia hạn chứng chỉ SSL"
 msgid "Sync to"
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/site/site_edit/RightSettings.vue:75
 #: src/views/stream/components/RightSettings.vue:108
 msgid "Synchronization"
 msgstr ""
@@ -4196,7 +4205,7 @@ msgstr "Không tìm thấy tệp tin"
 msgid "Telegram"
 msgstr ""
 
-#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:188
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:190
 #: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "Terminal"
@@ -4239,11 +4248,17 @@ msgid ""
 msgstr ""
 
 #: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
 msgid ""
 "The model name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
 msgstr ""
 
+#: src/views/preference/OpenAISettings.vue:90
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
+msgstr ""
+
 #: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
@@ -4529,8 +4544,8 @@ msgstr "Cập nhật thành công"
 #: src/views/config/configColumns.tsx:36 src/views/config/ConfigEditor.vue:331
 #: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
-#: src/views/site/site_edit/RightSettings.vue:75
-#: src/views/site/site_list/columns.tsx:82
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:69 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -4715,7 +4730,7 @@ msgid ""
 "Pebble as CA."
 msgstr ""
 
-#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/site/site_edit/RightSettings.vue:81
 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."

+ 82 - 67
app/src/language/zh_CN/app.po

@@ -3,7 +3,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2025-04-12 22:02+0800\n"
+"PO-Revision-Date: 2025-04-16 16:16+0800\n"
 "Last-Translator: 0xJacky <me@jackyu.cn>\n"
 "Language-Team: Chinese (Simplified Han script) <https://weblate.nginxui.com/"
 "projects/nginx-ui/frontend/zh_Hans/>\n"
@@ -68,7 +68,7 @@ msgstr "实际 Worker 与配置比例"
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
 #: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:163
+#: src/views/site/ngx_conf/NgxServer.vue:166
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:182
 msgid "Add"
@@ -109,7 +109,7 @@ msgstr "添加成功"
 msgid "Additional"
 msgstr "额外选项"
 
-#: src/views/site/site_edit/SiteEdit.vue:225
+#: src/views/site/site_edit/SiteEdit.vue:228
 #: src/views/stream/StreamEdit.vue:207
 msgid "Advance Mode"
 msgstr "高级模式"
@@ -148,7 +148,7 @@ msgstr "API Token"
 msgid "API Type"
 msgstr "API 类型"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:166
 msgid "App"
 msgstr "App"
 
@@ -246,7 +246,7 @@ msgstr "尝试修复"
 msgid "Attempts"
 msgstr "尝试次数"
 
-#: src/views/preference/Preference.vue:194
+#: src/views/preference/Preference.vue:196
 msgid "Auth"
 msgstr "认证"
 
@@ -295,7 +295,7 @@ msgstr "自动索引站点和 Stream 的配置文件。"
 #: src/views/certificate/components/CertificateEditor.vue:257
 #: src/views/config/ConfigEditor.vue:268 src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:285
+#: src/views/site/site_edit/SiteEdit.vue:288
 #: src/views/stream/StreamEdit.vue:264
 msgid "Back"
 msgstr "返回"
@@ -345,12 +345,12 @@ msgid "Base information"
 msgstr "基本信息"
 
 #: src/views/config/ConfigEditor.vue:296
-#: src/views/site/site_edit/RightSettings.vue:52
+#: src/views/site/site_edit/RightSettings.vue:43
 #: src/views/stream/components/RightSettings.vue:79
 msgid "Basic"
 msgstr "基本"
 
-#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/site/site_edit/SiteEdit.vue:231
 #: src/views/stream/StreamEdit.vue:210
 msgid "Basic Mode"
 msgstr "基本模式"
@@ -445,10 +445,10 @@ msgstr ""
 #: src/components/StdDesign/StdDetail/StdDetail.vue:101
 #: src/views/preference/components/Passkey.vue:141
 #: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51
-#: src/views/site/ngx_conf/NgxServer.vue:80
+#: src/views/site/ngx_conf/NgxServer.vue:83
 #: src/views/site/ngx_conf/NgxUpstream.vue:34
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:122
 #: src/views/stream/components/RightSettings.vue:55
 msgid "Cancel"
 msgstr "取消"
@@ -470,7 +470,7 @@ msgstr "在此状态下无法获取性能数据"
 msgid "Cannot remove initial user"
 msgstr "不可删除初始用户"
 
-#: src/views/preference/Preference.vue:200
+#: src/views/preference/Preference.vue:202
 msgid "Cert"
 msgstr "证书"
 
@@ -532,7 +532,7 @@ msgid "Certificate renewed successfully"
 msgstr "证书更新成功"
 
 #: src/views/certificate/components/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:60
+#: src/views/site/cert/Cert.vue:62
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "证书状态"
@@ -555,7 +555,7 @@ msgstr "挑战方法"
 msgid "Change Certificate"
 msgstr "更改证书"
 
-#: src/views/site/cert/Cert.vue:79
+#: src/views/site/cert/Cert.vue:81
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] "变更证书"
@@ -658,6 +658,10 @@ msgstr "客户端请求头缓冲区大小"
 msgid "Close"
 msgstr "关闭"
 
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr "代码补全模型"
+
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgstr "命令"
@@ -665,7 +669,7 @@ msgstr "命令"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:135
+#: src/views/site/ngx_conf/NgxServer.vue:138
 msgid "Comments"
 msgstr "注释"
 
@@ -858,7 +862,7 @@ msgid "Current Version"
 msgstr "当前版本"
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:194
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
 msgid "Custom"
 msgstr "自定义"
 
@@ -892,7 +896,7 @@ msgstr "定义共享内存区名称和大小,例如 proxy_cache:10m"
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
-#: src/views/site/ngx_conf/NgxServer.vue:110
+#: src/views/site/ngx_conf/NgxServer.vue:113
 #: src/views/site/ngx_conf/NgxUpstream.vue:128
 #: src/views/site/site_list/SiteList.vue:131
 #: src/views/stream/StreamList.vue:248
@@ -1009,7 +1013,7 @@ msgstr "目录级别"
 msgid "Directory path to store cache files"
 msgstr "存储缓存文件的目录路径"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
+#: src/views/site/components/SiteStatusSegmented.vue:88
 msgid "disable"
 msgstr "禁用"
 
@@ -1074,14 +1078,14 @@ msgstr "在 %{node} 上禁用 %{name} 成功"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:159
-#: src/views/site/site_edit/SiteEdit.vue:199
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
 #: src/views/site/site_list/columns.tsx:111 src/views/stream/StreamEdit.vue:182
 #: src/views/stream/StreamList.vue:60 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "禁用"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:56
+#: src/views/site/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:42
 #: src/views/stream/StreamList.vue:98
 msgid "Disabled successfully"
@@ -1109,7 +1113,7 @@ msgstr "DNS01"
 msgid "Do not enable this option unless you are sure that you need it."
 msgstr "除非确定需要,否则不要启用该选项。"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:118
+#: src/views/site/components/SiteStatusSegmented.vue:93
 msgid "Do you want to %{action} this site?"
 msgstr "您想将这个网站%{action}吗?"
 
@@ -1129,7 +1133,7 @@ msgstr "你想启用这个 Stream 吗?"
 msgid "Do you want to enable TLS?"
 msgstr "你想启用 TLS 吗?"
 
-#: src/views/site/ngx_conf/NgxServer.vue:76
+#: src/views/site/ngx_conf/NgxServer.vue:79
 msgid "Do you want to remove this server?"
 msgstr "你想删除这个服务器吗?"
 
@@ -1188,7 +1192,7 @@ msgstr "成功复制到本地"
 msgid "Edit"
 msgstr "编辑"
 
-#: src/views/site/site_edit/SiteEdit.vue:188
+#: src/views/site/site_edit/SiteEdit.vue:185
 #: src/views/stream/StreamEdit.vue:171
 msgid "Edit %{n}"
 msgstr "编辑 %{n}"
@@ -1214,7 +1218,7 @@ msgstr "邮箱"
 msgid "Email (*)"
 msgstr "邮箱 (*)"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:112
+#: src/views/site/components/SiteStatusSegmented.vue:87
 msgid "enable"
 msgstr "启用"
 
@@ -1230,6 +1234,10 @@ msgstr "二步验证启用成功"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "启用 %{name} 自动续签失败"
 
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr "启动代码补全"
+
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgstr "启用内容传输压缩"
@@ -1298,7 +1306,7 @@ msgstr "在 %{node} 上启用 %{name} 成功"
 msgid "Enable stub_status module"
 msgstr "启用 stub_status 模块"
 
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:183
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
 msgid "Enable TLS"
 msgstr "启用 TLS"
 
@@ -1312,8 +1320,8 @@ msgstr "启用 TOTP"
 #: src/views/preference/LogrotateSettings.vue:19
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:155
-#: src/views/site/site_edit/SiteEdit.vue:193
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:110
 #: src/views/stream/components/RightSettings.vue:81
 #: src/views/stream/StreamEdit.vue:176 src/views/stream/StreamList.vue:56
@@ -1321,8 +1329,8 @@ msgstr "启用 TOTP"
 msgid "Enabled"
 msgstr "启用"
 
+#: src/views/site/components/SiteStatusSegmented.vue:27
 #: src/views/site/site_add/SiteAdd.vue:40
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:33
 #: src/views/stream/StreamList.vue:88
 msgid "Enabled successfully"
@@ -1381,7 +1389,7 @@ msgid "Export"
 msgstr "导出"
 
 #: src/views/preference/ExternalNotify.vue:10
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:172
 msgid "External Notify"
 msgstr "外部通知"
 
@@ -1509,23 +1517,23 @@ msgstr "解密 Nginx UI 目录失败:{0}"
 msgid "Failed to delete certificate"
 msgstr "删除证书失败"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:63
+#: src/views/site/components/SiteStatusSegmented.vue:46
 #: src/views/stream/components/RightSettings.vue:45
 #: src/views/stream/StreamList.vue:102
 msgid "Failed to disable %{msg}"
 msgstr "禁用失败 %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:95
+#: src/views/site/components/SiteStatusSegmented.vue:72
 msgid "Failed to disable maintenance mode %{msg}"
 msgstr "停用维护模式失败 %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:47
+#: src/views/site/components/SiteStatusSegmented.vue:33
 #: src/views/stream/components/RightSettings.vue:36
 #: src/views/stream/StreamList.vue:92
 msgid "Failed to enable %{msg}"
 msgstr "启用失败 %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:79
+#: src/views/site/components/SiteStatusSegmented.vue:59
 msgid "Failed to enable maintenance mode %{msg}"
 msgstr "启用维护模式失败 %{msg}"
 
@@ -1629,7 +1637,7 @@ msgstr "证书撤销失败"
 msgid "Failed to save Nginx performance settings"
 msgstr "保存 Nginx 性能参数失败"
 
-#: src/views/site/site_edit/SiteEdit.vue:139
+#: src/views/site/site_edit/SiteEdit.vue:137
 #: src/views/stream/StreamEdit.vue:122
 msgid "Failed to save, syntax error(s) was detected in the configuration."
 msgstr "保存失败,在配置中检测到语法错误。"
@@ -1772,7 +1780,7 @@ msgid "Higher value means better connection reuse"
 msgstr "更高的值意味着更好的连接再利用"
 
 #: src/views/config/ConfigEditor.vue:256
-#: src/views/site/site_edit/SiteEdit.vue:212
+#: src/views/site/site_edit/SiteEdit.vue:215
 #: src/views/stream/StreamEdit.vue:195
 msgid "History"
 msgstr "历史"
@@ -1785,7 +1793,7 @@ msgstr "首页"
 msgid "Host"
 msgstr "主机"
 
-#: src/views/preference/Preference.vue:182
+#: src/views/preference/Preference.vue:184
 msgid "HTTP"
 msgstr "HTTP"
 
@@ -2148,7 +2156,7 @@ msgstr "登录成功"
 msgid "Logout successful"
 msgstr "登出成功"
 
-#: src/views/preference/Preference.vue:218
+#: src/views/preference/Preference.vue:220
 msgid "Logrotate"
 msgstr "Logrotate"
 
@@ -2166,16 +2174,17 @@ msgstr ""
 "Nginx 用户界面的用户,您可以手动启用该选项。Nginx UI 的定时任务任务调度器将按"
 "照您设置的时间间隔(以分钟为单位)执行 logrotate 命令。"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:163
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
 #: src/views/site/site_list/columns.tsx:112
 msgid "Maintenance"
 msgstr "维护模式"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:88
+#: src/views/site/components/SiteStatusSegmented.vue:66
 msgid "Maintenance mode disabled successfully"
 msgstr "成功禁用维护模式"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:72
+#: src/views/site/components/SiteStatusSegmented.vue:53
 msgid "Maintenance mode enabled successfully"
 msgstr "成功启用维护模式"
 
@@ -2351,8 +2360,8 @@ msgstr "多行指令"
 #: src/views/nginx_log/NginxLogList.vue:33
 #: src/views/preference/components/AddPasskey.vue:75
 #: src/views/site/ngx_conf/NgxUpstream.vue:177
-#: src/views/site/site_edit/RightSettings.vue:63
-#: src/views/site/site_list/columns.tsx:17
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/components/RightSettings.vue:87
 #: src/views/stream/components/StreamDuplicate.vue:71
@@ -2402,7 +2411,7 @@ msgstr "新版本发布"
 msgid "Next"
 msgstr "下一步"
 
-#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:206
+#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:208
 msgid "Nginx"
 msgstr "Nginx"
 
@@ -2450,7 +2459,7 @@ msgstr "未设置 Nginx 配置目录"
 msgid "Nginx configuration has been restored"
 msgstr "Nginx 配置已恢复"
 
-#: src/views/site/site_edit/SiteEdit.vue:244
+#: src/views/site/site_edit/SiteEdit.vue:247
 #: src/views/stream/StreamEdit.vue:226
 msgid "Nginx Configuration Parse Error"
 msgstr "Nginx 配置解析错误"
@@ -2583,12 +2592,12 @@ msgstr "没有数据"
 msgid "No records selected"
 msgstr "未选择记录"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:178
 msgid "Node"
 msgstr "节点"
 
-#: src/views/site/site_edit/RightSettings.vue:66
-#: src/views/site/site_list/columns.tsx:65
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:32
 msgid "Node Group"
@@ -2628,7 +2637,7 @@ msgstr "此前无效: %{date}"
 msgid "Note"
 msgstr "注意"
 
-#: src/views/site/site_edit/RightSettings.vue:95
+#: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
 msgid ""
 "Note, if the configuration file include other configurations or "
@@ -2710,10 +2719,10 @@ msgstr "确定"
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50
-#: src/views/site/ngx_conf/NgxServer.vue:79
+#: src/views/site/ngx_conf/NgxServer.vue:82
 #: src/views/site/ngx_conf/NgxUpstream.vue:33
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:121
 #: src/views/site/site_list/SiteList.vue:121
 #: src/views/stream/components/RightSettings.vue:54
 #: src/views/stream/StreamList.vue:238
@@ -2742,7 +2751,7 @@ msgstr "在线"
 msgid "Only zip files are allowed"
 msgstr "只允许使用zip文件"
 
-#: src/views/preference/Preference.vue:212
+#: src/views/preference/Preference.vue:214
 msgid "OpenAI"
 msgstr "OpenAI"
 
@@ -3010,7 +3019,7 @@ msgstr "同步后操作"
 msgid "Pre-release"
 msgstr "预发布"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:153
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:155
 msgid "Preference"
 msgstr "偏好设置"
 
@@ -3426,10 +3435,10 @@ msgstr "运行中"
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/ConfigEditor.vue:277
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:229
+#: src/views/preference/Preference.vue:231
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:292
+#: src/views/site/site_edit/SiteEdit.vue:295
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/StreamEdit.vue:271
 msgid "Save"
@@ -3479,14 +3488,14 @@ msgstr "成功将站点 %{name} 保存到 %{node} 中"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/components/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:125
+#: src/views/preference/Preference.vue:127
 msgid "Save successfully"
 msgstr "保存成功"
 
 #: src/views/config/ConfigEditor.vue:194
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:157
+#: src/views/site/site_edit/SiteEdit.vue:155
 #: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "保存成功"
@@ -3529,7 +3538,7 @@ msgstr "自我检查"
 msgid "Send"
 msgstr "上传"
 
-#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:158
+#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:160
 msgid "Server"
 msgstr "服务器"
 
@@ -3563,7 +3572,7 @@ msgid ""
 "step of DNS challenge."
 msgstr "为 DNS 挑战步骤设置递归域名服务器以覆盖操作系统的域名服务器设置。"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:114
+#: src/views/site/components/SiteStatusSegmented.vue:89
 msgid "set to maintenance mode"
 msgstr "设置为维护模式"
 
@@ -3722,8 +3731,8 @@ msgstr "开始还原"
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:65
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_edit/RightSettings.vue:55
-#: src/views/site/site_list/columns.tsx:89 src/views/stream/StreamList.vue:49
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90 src/views/stream/StreamList.vue:49
 msgid "Status"
 msgstr "状态"
 
@@ -3841,8 +3850,8 @@ msgstr "同步配置成功"
 msgid "Sync Nodes"
 msgstr "同步节点"
 
-#: src/views/site/site_edit/RightSettings.vue:101
-#: src/views/site/site_edit/RightSettings.vue:88
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/stream/components/RightSettings.vue:111
 #: src/views/stream/components/RightSettings.vue:124
 msgid "Sync strategy"
@@ -3852,7 +3861,7 @@ msgstr "同步策略"
 msgid "Sync to"
 msgstr "同步到"
 
-#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/site/site_edit/RightSettings.vue:75
 #: src/views/stream/components/RightSettings.vue:108
 msgid "Synchronization"
 msgstr "同步"
@@ -3885,7 +3894,7 @@ msgstr "未找到任务"
 msgid "Telegram"
 msgstr "Telegram"
 
-#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:188
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:190
 #: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "终端"
@@ -3927,11 +3936,17 @@ msgid ""
 msgstr "日志路径不在 settings.NginxSettings.LogDirWhiteList 中的路径之下"
 
 #: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
 msgid ""
 "The model name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
 msgstr "模型名称只能包含字母、单码、数字、连字符、破折号、冒号和点。"
 
+#: src/views/preference/OpenAISettings.vue:90
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
+msgstr "用于代码自动补全的模型,如果未设置,则使用聊天模型。"
+
 #: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
@@ -4217,8 +4232,8 @@ msgstr "更新成功"
 #: src/views/config/configColumns.tsx:36 src/views/config/ConfigEditor.vue:331
 #: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
-#: src/views/site/site_edit/RightSettings.vue:75
-#: src/views/site/site_list/columns.tsx:82
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:69 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -4394,7 +4409,7 @@ msgstr ""
 "启用后,Nginx UI 将在启动时自动重新注册用户。一般情况下,除非在开发环境中使"
 "用 Pebble 作为 CA,否则不要启用此功能。"
 
-#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/site/site_edit/RightSettings.vue:81
 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."

+ 96 - 78
app/src/language/zh_TW/app.po

@@ -72,7 +72,7 @@ msgstr "實際 worker 與設定 worker 比例"
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:186
 #: src/views/preference/CertSettings.vue:45
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:117
-#: src/views/site/ngx_conf/NgxServer.vue:163
+#: src/views/site/ngx_conf/NgxServer.vue:166
 #: src/views/site/ngx_conf/NgxUpstream.vue:154
 #: src/views/stream/StreamList.vue:182
 msgid "Add"
@@ -113,7 +113,7 @@ msgstr "新增成功"
 msgid "Additional"
 msgstr "其他設定"
 
-#: src/views/site/site_edit/SiteEdit.vue:225
+#: src/views/site/site_edit/SiteEdit.vue:228
 #: src/views/stream/StreamEdit.vue:207
 msgid "Advance Mode"
 msgstr "進階模式"
@@ -152,7 +152,7 @@ msgstr "API Token"
 msgid "API Type"
 msgstr "API 類型"
 
-#: src/views/preference/Preference.vue:164
+#: src/views/preference/Preference.vue:166
 msgid "App"
 msgstr "應用程式"
 
@@ -250,7 +250,7 @@ msgstr "嘗試修復"
 msgid "Attempts"
 msgstr "嘗試次數"
 
-#: src/views/preference/Preference.vue:194
+#: src/views/preference/Preference.vue:196
 msgid "Auth"
 msgstr "身份驗證"
 
@@ -299,7 +299,7 @@ msgstr "自動從網站和串流設定中索引。"
 #: src/views/certificate/components/CertificateEditor.vue:257
 #: src/views/config/ConfigEditor.vue:268 src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigList.vue:195 src/views/nginx_log/NginxLog.vue:173
-#: src/views/site/site_edit/SiteEdit.vue:285
+#: src/views/site/site_edit/SiteEdit.vue:288
 #: src/views/stream/StreamEdit.vue:264
 msgid "Back"
 msgstr "返回"
@@ -349,12 +349,12 @@ msgid "Base information"
 msgstr "基本資訊"
 
 #: src/views/config/ConfigEditor.vue:296
-#: src/views/site/site_edit/RightSettings.vue:52
+#: src/views/site/site_edit/RightSettings.vue:43
 #: src/views/stream/components/RightSettings.vue:79
 msgid "Basic"
 msgstr "基本"
 
-#: src/views/site/site_edit/SiteEdit.vue:228
+#: src/views/site/site_edit/SiteEdit.vue:231
 #: src/views/stream/StreamEdit.vue:210
 msgid "Basic Mode"
 msgstr "基本模式"
@@ -440,7 +440,8 @@ msgid ""
 "Calculated based on worker_processes * worker_connections. Actual "
 "performance depends on hardware, configuration, and workload"
 msgstr ""
-"依據 worker_processes × worker_connections 計算。實際效能取決於硬體、設定與工作負載"
+"依據 worker_processes × worker_connections 計算。實際效能取決於硬體、設定與工"
+"作負載"
 
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
@@ -448,10 +449,10 @@ msgstr ""
 #: src/components/StdDesign/StdDetail/StdDetail.vue:101
 #: src/views/preference/components/Passkey.vue:141
 #: src/views/site/cert/components/ObtainCert.vue:140
+#: src/views/site/components/SiteStatusSegmented.vue:97
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:51
-#: src/views/site/ngx_conf/NgxServer.vue:80
+#: src/views/site/ngx_conf/NgxServer.vue:83
 #: src/views/site/ngx_conf/NgxUpstream.vue:34
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:122
 #: src/views/stream/components/RightSettings.vue:55
 msgid "Cancel"
 msgstr "取消"
@@ -473,7 +474,7 @@ msgstr "目前狀態無法取得效能資料"
 msgid "Cannot remove initial user"
 msgstr "無法移除初始使用者"
 
-#: src/views/preference/Preference.vue:200
+#: src/views/preference/Preference.vue:202
 msgid "Cert"
 msgstr "證書"
 
@@ -535,7 +536,7 @@ msgid "Certificate renewed successfully"
 msgstr "憑證更新成功"
 
 #: src/views/certificate/components/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:60
+#: src/views/site/cert/Cert.vue:62
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgstr[0] "憑證狀態"
@@ -558,7 +559,7 @@ msgstr "驗證方式"
 msgid "Change Certificate"
 msgstr "更換憑證"
 
-#: src/views/site/cert/Cert.vue:79
+#: src/views/site/cert/Cert.vue:81
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgstr[0] "變更後憑證"
@@ -664,6 +665,10 @@ msgstr "Client 請求標頭緩衝區大小"
 msgid "Close"
 msgstr "關閉"
 
+#: src/views/preference/OpenAISettings.vue:86
+msgid "Code Completion Model"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgstr "命令"
@@ -671,7 +676,7 @@ msgstr "命令"
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/LocationEditor.vue:103
 #: src/views/site/ngx_conf/LocationEditor.vue:134
-#: src/views/site/ngx_conf/NgxServer.vue:135
+#: src/views/site/ngx_conf/NgxServer.vue:138
 msgid "Comments"
 msgstr "備註"
 
@@ -864,7 +869,7 @@ msgid "Current Version"
 msgstr "目前版本"
 
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:127
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:194
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:185
 msgid "Custom"
 msgstr "自訂"
 
@@ -898,7 +903,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:21
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:519
 #: src/views/certificate/components/RemoveCert.vue:87
-#: src/views/site/ngx_conf/NgxServer.vue:110
+#: src/views/site/ngx_conf/NgxServer.vue:113
 #: src/views/site/ngx_conf/NgxUpstream.vue:128
 #: src/views/site/site_list/SiteList.vue:131
 #: src/views/stream/StreamList.vue:248
@@ -1015,7 +1020,7 @@ msgstr "目錄層級"
 msgid "Directory path to store cache files"
 msgstr "快取檔案儲存路徑"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:113
+#: src/views/site/components/SiteStatusSegmented.vue:88
 msgid "disable"
 msgstr "停用"
 
@@ -1080,14 +1085,14 @@ msgstr "已成功從 %{node} 停用串流 %{name}"
 #: src/views/preference/HTTPSettings.vue:24
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:159
-#: src/views/site/site_edit/SiteEdit.vue:199
+#: src/views/site/components/SiteStatusSegmented.vue:134
+#: src/views/site/site_edit/SiteEdit.vue:196
 #: src/views/site/site_list/columns.tsx:111 src/views/stream/StreamEdit.vue:182
 #: src/views/stream/StreamList.vue:60 src/views/user/userColumns.tsx:41
 msgid "Disabled"
 msgstr "停用"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:56
+#: src/views/site/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:42
 #: src/views/stream/StreamList.vue:98
 msgid "Disabled successfully"
@@ -1115,7 +1120,7 @@ msgstr "DNS01"
 msgid "Do not enable this option unless you are sure that you need it."
 msgstr "除非您確定需要,否則不要啟用此選項。"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:118
+#: src/views/site/components/SiteStatusSegmented.vue:93
 msgid "Do you want to %{action} this site?"
 msgstr "您想要%{action}這個網站嗎?"
 
@@ -1135,7 +1140,7 @@ msgstr "您要啟用此 Stream 嗎?"
 msgid "Do you want to enable TLS?"
 msgstr "您想啟用 TLS 嗎?"
 
-#: src/views/site/ngx_conf/NgxServer.vue:76
+#: src/views/site/ngx_conf/NgxServer.vue:79
 msgid "Do you want to remove this server?"
 msgstr "您要移除此伺服器嗎?"
 
@@ -1194,7 +1199,7 @@ msgstr "成功複製至本機"
 msgid "Edit"
 msgstr "編輯"
 
-#: src/views/site/site_edit/SiteEdit.vue:188
+#: src/views/site/site_edit/SiteEdit.vue:185
 #: src/views/stream/StreamEdit.vue:171
 msgid "Edit %{n}"
 msgstr "編輯 %{n}"
@@ -1220,7 +1225,7 @@ msgstr "電子郵件"
 msgid "Email (*)"
 msgstr "電子郵件 (*)"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:112
+#: src/views/site/components/SiteStatusSegmented.vue:87
 msgid "enable"
 msgstr "啟用"
 
@@ -1236,6 +1241,10 @@ msgstr "啟用多因素身份驗證成功"
 msgid "Enable auto-renewal failed for %{name}"
 msgstr "啟用 %{name} 自動續簽失敗"
 
+#: src/views/preference/OpenAISettings.vue:80
+msgid "Enable Code Completion"
+msgstr ""
+
 #: src/views/dashboard/components/ParamsOpt/PerformanceConfig.vue:68
 msgid "Enable compression for content transfer"
 msgstr "啟用內容傳輸壓縮"
@@ -1304,7 +1313,7 @@ msgstr "在 %{node} 上成功啟用串流 %{name}"
 msgid "Enable stub_status module"
 msgstr ""
 
-#: src/views/site/ngx_conf/NgxConfigEditor.vue:183
+#: src/views/site/ngx_conf/NgxConfigEditor.vue:174
 msgid "Enable TLS"
 msgstr "啟用 TLS"
 
@@ -1318,8 +1327,8 @@ msgstr "啟用 TOTP"
 #: src/views/preference/LogrotateSettings.vue:19
 #: src/views/preference/NodeSettings.vue:25
 #: src/views/preference/NodeSettings.vue:30
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:155
-#: src/views/site/site_edit/SiteEdit.vue:193
+#: src/views/site/components/SiteStatusSegmented.vue:130
+#: src/views/site/site_edit/SiteEdit.vue:190
 #: src/views/site/site_list/columns.tsx:110
 #: src/views/stream/components/RightSettings.vue:81
 #: src/views/stream/StreamEdit.vue:176 src/views/stream/StreamList.vue:56
@@ -1327,8 +1336,8 @@ msgstr "啟用 TOTP"
 msgid "Enabled"
 msgstr "已啟用"
 
+#: src/views/site/components/SiteStatusSegmented.vue:27
 #: src/views/site/site_add/SiteAdd.vue:40
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:40
 #: src/views/stream/components/RightSettings.vue:33
 #: src/views/stream/StreamList.vue:88
 msgid "Enabled successfully"
@@ -1387,7 +1396,7 @@ msgid "Export"
 msgstr "匯出"
 
 #: src/views/preference/ExternalNotify.vue:10
-#: src/views/preference/Preference.vue:170
+#: src/views/preference/Preference.vue:172
 msgid "External Notify"
 msgstr "外部通知"
 
@@ -1515,23 +1524,23 @@ msgstr "解密 Nginx UI 目錄失敗:{0}"
 msgid "Failed to delete certificate"
 msgstr "憑證刪除失敗"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:63
+#: src/views/site/components/SiteStatusSegmented.vue:46
 #: src/views/stream/components/RightSettings.vue:45
 #: src/views/stream/StreamList.vue:102
 msgid "Failed to disable %{msg}"
 msgstr "停用 %{msg} 失敗"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:95
+#: src/views/site/components/SiteStatusSegmented.vue:72
 msgid "Failed to disable maintenance mode %{msg}"
 msgstr "無法停用維護模式 %{msg}"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:47
+#: src/views/site/components/SiteStatusSegmented.vue:33
 #: src/views/stream/components/RightSettings.vue:36
 #: src/views/stream/StreamList.vue:92
 msgid "Failed to enable %{msg}"
 msgstr "啟用 %{msg} 失敗"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:79
+#: src/views/site/components/SiteStatusSegmented.vue:59
 msgid "Failed to enable maintenance mode %{msg}"
 msgstr "無法啟用維護模式 %{msg}"
 
@@ -1635,7 +1644,7 @@ msgstr "撤銷憑證失敗"
 msgid "Failed to save Nginx performance settings"
 msgstr "儲存 Nginx 效能設定失敗"
 
-#: src/views/site/site_edit/SiteEdit.vue:139
+#: src/views/site/site_edit/SiteEdit.vue:137
 #: src/views/stream/StreamEdit.vue:122
 msgid "Failed to save, syntax error(s) was detected in the configuration."
 msgstr "儲存失敗,在設定中偵測到語法錯誤。"
@@ -1778,7 +1787,7 @@ msgid "Higher value means better connection reuse"
 msgstr ""
 
 #: src/views/config/ConfigEditor.vue:256
-#: src/views/site/site_edit/SiteEdit.vue:212
+#: src/views/site/site_edit/SiteEdit.vue:215
 #: src/views/stream/StreamEdit.vue:195
 msgid "History"
 msgstr "歷史"
@@ -1791,7 +1800,7 @@ msgstr "首頁"
 msgid "Host"
 msgstr "主機"
 
-#: src/views/preference/Preference.vue:182
+#: src/views/preference/Preference.vue:184
 msgid "HTTP"
 msgstr "HTTP"
 
@@ -1819,7 +1828,8 @@ msgstr "如果留空,將使用預設的 CA Dir。"
 msgid ""
 "If logs are not indexed, please check if the log file is under the directory "
 "in Nginx.LogDirWhiteList."
-msgstr "如果日誌未被索引,請檢查日誌檔案是否位於 Nginx 的 LogDirWhiteList 目錄下。"
+msgstr ""
+"如果日誌未被索引,請檢查日誌檔案是否位於 Nginx 的 LogDirWhiteList 目錄下。"
 
 #: src/views/preference/AuthSettings.vue:145
 msgid ""
@@ -2155,7 +2165,7 @@ msgstr "登入成功"
 msgid "Logout successful"
 msgstr "登出成功"
 
-#: src/views/preference/Preference.vue:218
+#: src/views/preference/Preference.vue:220
 msgid "Logrotate"
 msgstr "Logrotate"
 
@@ -2170,19 +2180,20 @@ msgid ""
 msgstr ""
 "預設情況下,對於在主機上安裝 Nginx UI 的使用者,大多數主流 Linux 發行版都啟用"
 "了 logrotate,因此您無需修改此頁面的參數。對於使用 Docker 容器安裝 Nginx UI "
-"的使用者,您可以手動啟用此選項。Nginx UI 的 crontab 任務排程器將按照您設定的"
-"鐘間隔執行 logrotate 命令。"
+"的使用者,您可以手動啟用此選項。Nginx UI 的 crontab 任務排程器將按照您設定的"
+"鐘間隔執行 logrotate 命令。"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:163
+#: src/views/site/components/SiteStatusSegmented.vue:138
+#: src/views/site/site_edit/SiteEdit.vue:202
 #: src/views/site/site_list/columns.tsx:112
 msgid "Maintenance"
 msgstr "維護"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:88
+#: src/views/site/components/SiteStatusSegmented.vue:66
 msgid "Maintenance mode disabled successfully"
 msgstr "維護模式已成功停用"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:72
+#: src/views/site/components/SiteStatusSegmented.vue:53
 msgid "Maintenance mode enabled successfully"
 msgstr "維護模式已成功啟用"
 
@@ -2357,8 +2368,8 @@ msgstr "多行指令"
 #: src/views/nginx_log/NginxLogList.vue:33
 #: src/views/preference/components/AddPasskey.vue:75
 #: src/views/site/ngx_conf/NgxUpstream.vue:177
-#: src/views/site/site_edit/RightSettings.vue:63
-#: src/views/site/site_list/columns.tsx:17
+#: src/views/site/site_edit/RightSettings.vue:53
+#: src/views/site/site_list/columns.tsx:18
 #: src/views/site/site_list/SiteDuplicate.vue:79
 #: src/views/stream/components/RightSettings.vue:87
 #: src/views/stream/components/StreamDuplicate.vue:71
@@ -2408,7 +2419,7 @@ msgstr "新版本發布"
 msgid "Next"
 msgstr "下一步"
 
-#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:206
+#: src/routes/modules/dashboard.ts:27 src/views/preference/Preference.vue:208
 msgid "Nginx"
 msgstr "Nginx"
 
@@ -2458,7 +2469,7 @@ msgstr "Nginx 設定目錄未設定"
 msgid "Nginx configuration has been restored"
 msgstr "Nginx 設定已恢復"
 
-#: src/views/site/site_edit/SiteEdit.vue:244
+#: src/views/site/site_edit/SiteEdit.vue:247
 #: src/views/stream/StreamEdit.vue:226
 msgid "Nginx Configuration Parse Error"
 msgstr "Nginx 設定解析錯誤"
@@ -2591,12 +2602,12 @@ msgstr ""
 msgid "No records selected"
 msgstr "未選取任何記錄"
 
-#: src/views/preference/Preference.vue:176
+#: src/views/preference/Preference.vue:178
 msgid "Node"
 msgstr "節點"
 
-#: src/views/site/site_edit/RightSettings.vue:66
-#: src/views/site/site_list/columns.tsx:65
+#: src/views/site/site_edit/RightSettings.vue:56
+#: src/views/site/site_list/columns.tsx:66
 #: src/views/stream/components/RightSettings.vue:90
 #: src/views/stream/StreamList.vue:32
 msgid "Node Group"
@@ -2636,7 +2647,7 @@ msgstr "此前無效:%{date}"
 msgid "Note"
 msgstr "備註"
 
-#: src/views/site/site_edit/RightSettings.vue:95
+#: src/views/site/site_edit/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:118
 msgid ""
 "Note, if the configuration file include other configurations or "
@@ -2718,10 +2729,10 @@ msgstr "確定"
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/cert/components/ObtainCert.vue:139
+#: src/views/site/components/SiteStatusSegmented.vue:96
 #: src/views/site/ngx_conf/NgxConfigEditor.vue:50
-#: src/views/site/ngx_conf/NgxServer.vue:79
+#: src/views/site/ngx_conf/NgxServer.vue:82
 #: src/views/site/ngx_conf/NgxUpstream.vue:33
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:121
 #: src/views/site/site_list/SiteList.vue:121
 #: src/views/stream/components/RightSettings.vue:54
 #: src/views/stream/StreamList.vue:238
@@ -2750,7 +2761,7 @@ msgstr "線上"
 msgid "Only zip files are allowed"
 msgstr "只允許壓縮檔"
 
-#: src/views/preference/Preference.vue:212
+#: src/views/preference/Preference.vue:214
 msgid "OpenAI"
 msgstr "OpenAI"
 
@@ -2889,8 +2900,7 @@ msgstr "純文字為空"
 msgid ""
 "Please enable the stub_status module to get request statistics, connection "
 "count, etc."
-msgstr ""
-"請啟用 stub_status 模組以取得請求統計、連線數量等資訊"
+msgstr "請啟用 stub_status 模組以取得請求統計、連線數量等資訊"
 
 #: src/views/preference/components/AddPasskey.vue:69
 msgid ""
@@ -3019,7 +3029,7 @@ msgstr "同步後動作"
 msgid "Pre-release"
 msgstr "預先發布"
 
-#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:153
+#: src/routes/modules/preference.ts:10 src/views/preference/Preference.vue:155
 msgid "Preference"
 msgstr "偏好設定"
 
@@ -3434,10 +3444,10 @@ msgstr "執行中"
 #: src/views/config/components/ConfigName.vue:59
 #: src/views/config/ConfigEditor.vue:277
 #: src/views/preference/components/Passkey.vue:130
-#: src/views/preference/Preference.vue:229
+#: src/views/preference/Preference.vue:231
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:127
 #: src/views/site/site_edit/components/ConfigName.vue:52
-#: src/views/site/site_edit/SiteEdit.vue:292
+#: src/views/site/site_edit/SiteEdit.vue:295
 #: src/views/stream/components/ConfigName.vue:52
 #: src/views/stream/StreamEdit.vue:271
 msgid "Save"
@@ -3487,14 +3497,14 @@ msgstr "串流 %{name} 成功儲存至 %{node}"
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:47
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:97
 #: src/views/certificate/components/CertificateEditor.vue:49
-#: src/views/preference/Preference.vue:125
+#: src/views/preference/Preference.vue:127
 msgid "Save successfully"
 msgstr "儲存成功"
 
 #: src/views/config/ConfigEditor.vue:194
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/site/site_add/SiteAdd.vue:37
-#: src/views/site/site_edit/SiteEdit.vue:157
+#: src/views/site/site_edit/SiteEdit.vue:155
 #: src/views/stream/StreamEdit.vue:141
 msgid "Saved successfully"
 msgstr "儲存成功"
@@ -3537,7 +3547,7 @@ msgstr "自我檢查"
 msgid "Send"
 msgstr "傳送"
 
-#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:158
+#: src/routes/modules/dashboard.ts:19 src/views/preference/Preference.vue:160
 msgid "Server"
 msgstr "伺服器"
 
@@ -3571,7 +3581,7 @@ msgid ""
 "step of DNS challenge."
 msgstr "設定遞迴名稱伺服器以覆蓋系統名稱伺服器以進行 DNS 驗證步驟。"
 
-#: src/views/site/site_edit/components/SiteStatusSegmented.vue:114
+#: src/views/site/components/SiteStatusSegmented.vue:89
 msgid "set to maintenance mode"
 msgstr "設定為維護模式"
 
@@ -3730,8 +3740,8 @@ msgstr "開始恢復"
 #: src/views/certificate/ACMEUser.vue:65
 #: src/views/certificate/CertificateList/certColumns.tsx:65
 #: src/views/environments/list/envColumns.tsx:44
-#: src/views/site/site_edit/RightSettings.vue:55
-#: src/views/site/site_list/columns.tsx:89 src/views/stream/StreamList.vue:49
+#: src/views/site/site_edit/RightSettings.vue:46
+#: src/views/site/site_list/columns.tsx:90 src/views/stream/StreamList.vue:49
 msgid "Status"
 msgstr "狀態"
 
@@ -3850,8 +3860,8 @@ msgstr "同步設定成功"
 msgid "Sync Nodes"
 msgstr "同步節點"
 
-#: src/views/site/site_edit/RightSettings.vue:101
-#: src/views/site/site_edit/RightSettings.vue:88
+#: src/views/site/site_edit/RightSettings.vue:78
+#: src/views/site/site_edit/RightSettings.vue:91
 #: src/views/stream/components/RightSettings.vue:111
 #: src/views/stream/components/RightSettings.vue:124
 msgid "Sync strategy"
@@ -3861,7 +3871,7 @@ msgstr "同步策略"
 msgid "Sync to"
 msgstr "同步到"
 
-#: src/views/site/site_edit/RightSettings.vue:85
+#: src/views/site/site_edit/RightSettings.vue:75
 #: src/views/stream/components/RightSettings.vue:108
 msgid "Synchronization"
 msgstr "同步"
@@ -3894,7 +3904,7 @@ msgstr "找不到任務"
 msgid "Telegram"
 msgstr "Telegram"
 
-#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:188
+#: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:190
 #: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "終端機"
@@ -3936,11 +3946,17 @@ msgid ""
 msgstr "日誌路徑不在 settings.NginxSettings.LogDirWhiteList 設定中的路徑範圍內"
 
 #: src/views/preference/OpenAISettings.vue:23
+#: src/views/preference/OpenAISettings.vue:89
 msgid ""
 "The model name should only contain letters, unicode, numbers, hyphens, "
 "dashes, colons, and dots."
 msgstr "模型名稱僅能包含字母、Unicode 字元、數字、連字號、破折號、冒號和句點。"
 
+#: src/views/preference/OpenAISettings.vue:90
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
+msgstr ""
+
 #: src/views/preference/NodeSettings.vue:18
 msgid ""
 "The node name should only contain letters, unicode, numbers, hyphens, "
@@ -4140,8 +4156,8 @@ msgid ""
 "provide an OpenAI-compatible API endpoint, so just set the baseUrl to your "
 "local API."
 msgstr ""
-"要使用本機大型語言模型,請使用 ollama、vllm 或 lmdeploy 部署。它們提供與 OpenAI "
-"相容的 API 端點,因此只需將 baseUrl 設定為您的本機 API。"
+"要使用本機大型語言模型,請使用 ollama、vllm 或 lmdeploy 部署。它們提供與 "
+"OpenAI 相容的 API 端點,因此只需將 baseUrl 設定為您的本機 API。"
 
 #: src/views/dashboard/NginxDashBoard.vue:57
 msgid "Toggle failed"
@@ -4225,8 +4241,8 @@ msgstr "更新成功"
 #: src/views/config/configColumns.tsx:36 src/views/config/ConfigEditor.vue:331
 #: src/views/environments/group/columns.ts:37
 #: src/views/environments/list/envColumns.tsx:90
-#: src/views/site/site_edit/RightSettings.vue:75
-#: src/views/site/site_list/columns.tsx:82
+#: src/views/site/site_edit/RightSettings.vue:65
+#: src/views/site/site_list/columns.tsx:83
 #: src/views/stream/components/RightSettings.vue:99
 #: src/views/stream/StreamList.vue:69 src/views/user/userColumns.tsx:54
 msgid "Updated at"
@@ -4403,7 +4419,7 @@ msgstr ""
 "啟用後,Nginx UI 將在啟動時自動重新註冊使用者。通常,除非您處於開發環境並使"
 "用 Pebble 作為 CA,否則不建議啟用此功能。"
 
-#: src/views/site/site_edit/RightSettings.vue:91
+#: src/views/site/site_edit/RightSettings.vue:81
 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."
@@ -4471,7 +4487,8 @@ msgstr "是的"
 msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
-msgstr "您正在透過非本機網域的不安全 HTTP 連接存取此終端,這可能會洩露敏感資訊。"
+msgstr ""
+"您正在透過非本機網域的不安全 HTTP 連接存取此終端,這可能會洩露敏感資訊。"
 
 #: src/views/system/Upgrade.vue:202
 msgid "You are using the latest version"
@@ -4580,7 +4597,8 @@ msgstr "您的通行金鑰"
 #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: "
 #~ "%{resp}"
 #~ msgstr ""
-#~ "在 %{env_name} 上將 %{orig_path} 重新命名為 %{new_path} 失敗,回應:%{resp}"
+#~ "在 %{env_name} 上將 %{orig_path} 重新命名為 %{new_path} 失敗,回應:"
+#~ "%{resp}"
 
 #~ msgid ""
 #~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
@@ -4635,8 +4653,8 @@ msgstr "您的通行金鑰"
 #~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade "
 #~ "the remote Nginx UI to the latest version"
 #~ msgstr ""
-#~ "將 %{orig_path} 重新命名為 %{new_path} 在 %{env_name} 失敗,請將遠端 Nginx "
-#~ "UI 升級到最新版本"
+#~ "將 %{orig_path} 重新命名為 %{new_path} 在 %{env_name} 失敗,請將遠端 "
+#~ "Nginx UI 升級到最新版本"
 
 #~ msgid "Server Name"
 #~ msgstr "伺服器名稱"