浏览代码

feat: mcp server

Jacky 3 天之前
父节点
当前提交
e8ee931e16
共有 51 个文件被更改,包括 2749 次插入1526 次删除
  1. 3 46
      api/config/list.go
  2. 98 104
      app/src/language/ar/app.po
  3. 99 108
      app/src/language/de_DE/app.po
  4. 72 73
      app/src/language/en/app.po
  5. 97 103
      app/src/language/es/app.po
  6. 95 107
      app/src/language/fr_FR/app.po
  7. 100 100
      app/src/language/ja_JP/app.po
  8. 96 104
      app/src/language/ko_KR/app.po
  9. 72 73
      app/src/language/messages.pot
  10. 99 103
      app/src/language/pt_PT/app.po
  11. 97 104
      app/src/language/ru_RU/app.po
  12. 101 109
      app/src/language/tr_TR/app.po
  13. 105 103
      app/src/language/uk_UA/app.po
  14. 101 109
      app/src/language/vi_VN/app.po
  15. 77 78
      app/src/language/zh_CN/app.po
  16. 93 97
      app/src/language/zh_TW/app.po
  17. 9 0
      docs/.vitepress/config/en.ts
  18. 9 0
      docs/.vitepress/config/zh_CN.ts
  19. 9 0
      docs/.vitepress/config/zh_TW.ts
  20. 127 0
      docs/guide/mcp-config.md
  21. 22 0
      docs/guide/mcp-nginx.md
  22. 43 0
      docs/guide/mcp.md
  23. 55 0
      docs/zh_CN/guide/mcp-config.md
  24. 22 0
      docs/zh_CN/guide/mcp-nginx.md
  25. 43 0
      docs/zh_CN/guide/mcp.md
  26. 127 0
      docs/zh_TW/guide/mcp-config.md
  27. 22 0
      docs/zh_TW/guide/mcp-nginx.md
  28. 43 0
      docs/zh_TW/guide/mcp.md
  29. 2 0
      go.mod
  30. 4 2
      go.sum
  31. 60 0
      internal/config/config_list.go
  32. 0 1
      internal/docker/ota.go
  33. 2 2
      internal/kernel/boot.go
  34. 60 0
      internal/mcp/server.go
  35. 6 0
      internal/middleware/middleware.go
  36. 114 0
      mcp/config/config_add.go
  37. 27 0
      mcp/config/config_base_path.go
  38. 67 0
      mcp/config/config_get.go
  39. 30 0
      mcp/config/config_history.go
  40. 32 0
      mcp/config/config_list.go
  41. 45 0
      mcp/config/config_mkdir.go
  42. 96 0
      mcp/config/config_modify.go
  43. 120 0
      mcp/config/config_rename.go
  44. 16 0
      mcp/config/register.go
  45. 11 0
      mcp/nginx/register.go
  46. 24 0
      mcp/nginx/reload.go
  47. 24 0
      mcp/nginx/restart.go
  48. 41 0
      mcp/nginx/status.go
  49. 11 0
      mcp/register.go
  50. 18 0
      mcp/router.go
  51. 3 0
      router/routers.go

+ 3 - 46
api/config/list.go

@@ -7,10 +7,8 @@ import (
 	"strings"
 
 	"github.com/0xJacky/Nginx-UI/internal/config"
-	"github.com/0xJacky/Nginx-UI/internal/nginx"
 	"github.com/gin-gonic/gin"
 	"github.com/uozi-tech/cosy"
-	"github.com/uozi-tech/cosy/logger"
 )
 
 func GetConfigs(c *gin.Context) {
@@ -43,55 +41,14 @@ func GetConfigs(c *gin.Context) {
 		dir = strings.TrimSuffix(dir, "/")
 	}
 
-	configFiles, err := os.ReadDir(nginx.GetConfPath(dir))
+	configs, err := config.GetConfigList(dir, func(file os.FileInfo) bool {
+		return name == "" || strings.Contains(file.Name(), name)
+	})
 	if err != nil {
 		cosy.ErrHandler(c, err)
 		return
 	}
 
-	configs := make([]config.Config, 0)
-
-	for i := range configFiles {
-		file := configFiles[i]
-		fileInfo, _ := file.Info()
-
-		if name != "" && !strings.Contains(file.Name(), name) {
-			continue
-		}
-
-		switch mode := fileInfo.Mode(); {
-		case mode.IsRegular(): // regular file, not a hidden file
-			if "." == file.Name()[0:1] {
-				continue
-			}
-		case mode&os.ModeSymlink != 0: // is a symbol
-			var targetPath string
-			targetPath, err = os.Readlink(nginx.GetConfPath(dir, file.Name()))
-			if err != nil {
-				logger.Error("Read Symlink Error", targetPath, err)
-				continue
-			}
-
-			var targetInfo os.FileInfo
-			targetInfo, err = os.Stat(targetPath)
-			if err != nil {
-				logger.Error("Stat Error", targetPath, err)
-				continue
-			}
-			// hide the file if it's target file is a directory
-			if targetInfo.IsDir() {
-				continue
-			}
-		}
-
-		configs = append(configs, config.Config{
-			Name:       file.Name(),
-			ModifiedAt: fileInfo.ModTime(),
-			Size:       fileInfo.Size(),
-			IsDir:      fileInfo.IsDir(),
-		})
-	}
-
 	configs = config.Sort(sortBy, order, configs)
 
 	c.JSON(http.StatusOK, gin.H{

+ 98 - 104
app/src/language/ar/app.po

@@ -13,42 +13,42 @@ msgstr ""
 "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 "X-Generator: Weblate 5.6.2\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 "[Nginx UI] مستخدم ACME: %{name}، البريد الإلكتروني: %{email}، دليل CA: "
 "%{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr "[Nginx UI] يتم إنشاء نسخة احتياطية من الشهادة الحالية لإلغائها لاحقًا"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "تم المسح بنجاح"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "تم إعادة تشغيل Nginx بنجاح"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr "[Nginx UI] تم استخدام الشهادة للخادم، إعادة تحميل شهادة TLS للخادم"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "يؤدي إنشاء العميل إلى تسهيل الاتصال بخادم CA"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "تم تنظيف متغيرات البيئة"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] تم الانتهاء"
 
@@ -57,11 +57,11 @@ msgstr "[Nginx UI] تم الانتهاء"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "تم إصدار الشهادة بنجاح"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] الحصول على الشهادة"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] التحضير لإلغاء الشهادة"
 
@@ -69,23 +69,23 @@ msgstr "[Nginx UI] التحضير لإلغاء الشهادة"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] إعداد تكوينات ليغو"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] إعادة تحميل nginx"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] اكتمال الإلغاء"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] إلغاء الشهادة"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] إبطال الشهادة القديمة"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] تعيين موفر تحدي DNS01"
 
@@ -94,15 +94,15 @@ msgstr "[Nginx UI] تعيين موفر تحدي DNS01"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "تعيين متغيرات البيئة"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] تعيين موفر تحدي HTTP01"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] كتابة مفتاح الشهادة الخاص إلى القرص"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] كتابة الشهادة على القرص"
 
@@ -125,7 +125,7 @@ msgstr "سجلات الدخول"
 
 #: src/constants/errors/self_check.ts:21
 msgid "Access log path not exist"
-msgstr ""
+msgstr "مسار سجل الوصول غير موجود"
 
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
@@ -215,7 +215,7 @@ msgstr "الوضع المتقدم"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr "بعد ذلك، قم بتحديث هذه الصفحة وانقر على إضافة مفتاح مرور مرة أخرى."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "الكل"
@@ -286,7 +286,7 @@ msgstr "هل أنت متأكد أنك تريد الحذف؟"
 msgid "Are you sure you want to apply to all selected?"
 msgstr "هل أنت متأكد أنك تريد الحذف؟"
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 msgid "Are you sure you want to clear all notifications?"
 msgstr "هل أنت متأكد أنك تريد مسح كافة التنبيهات؟"
@@ -312,7 +312,7 @@ msgstr "هل أنت متأكد أنك تريد الحذف؟"
 msgid "Are you sure you want to recover this item?"
 msgstr "هل أنت متأكد أنك تريد استرداد هذا العنصر؟"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "هل أنت متأكد أنك تريد الحذف؟"
@@ -329,7 +329,7 @@ msgstr "هل أنت متأكد أنك تريد إزالة هذا العنصر؟"
 msgid "Are you sure you want to remove this location?"
 msgstr "هل أنت متأكد أنك تريد إزالة هذا المكان؟"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "هل أنت متأكد أنك تريد مسح كافة التنبيهات؟"
@@ -391,13 +391,12 @@ msgstr "تم تمكين التجديد التلقائي لـ‏%{name}"
 
 #: src/views/certificate/components/RenewCert.vue:49
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:84
-#, fuzzy
 msgid "AutoCert is running, please wait..."
-msgstr "هذا العنصر في الشهادة التلقائية غير صالح، يرجى إزالته."
+msgstr "AutoCert قيد التشغيل، يرجى الانتظار..."
 
 #: src/components/ProcessingStatus/ProcessingStatus.vue:39
 msgid "AutoCert is running..."
-msgstr ""
+msgstr "\"AutoCert قيد التشغيل...\""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:332
 msgid "Automatic Restart"
@@ -630,7 +629,7 @@ msgstr "انتهت صلاحية الشهادة"
 msgid "Certificate Expiring Soon"
 msgstr "شهادة على وشك الانتهاء"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgstr "خطأ في فك تشفير الشهادة"
@@ -657,7 +656,7 @@ msgstr "الفاصل الزمني لتجديد الشهادة"
 msgid "Certificate renewed successfully"
 msgstr "تم المسح بنجاح"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgstr "تمت إزالة الشهادة بنجاح"
@@ -674,7 +673,7 @@ msgstr[4] "حالة الشهادات"
 msgstr[5] "حالة الشهادة"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 msgid "Certificates"
 msgstr "شهادات"
 
@@ -734,48 +733,48 @@ msgstr ""
 "تحقق مما إذا كان HTTPS ممكّنًا. استخدام HTTP خارج localhost غير آمن ويمنع "
 "استخدام ميزات Passkeys والحافظة."
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
-msgstr ""
+msgstr "تحقق مما إذا كان مقبس Docker موجودًا."
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
-msgstr ""
+msgstr "تحقق مما إذا كان مسار سجل الوصول لـ nginx موجودًا"
 
 #: src/language/generate.ts:29
 #, fuzzy
 msgid "Check if the nginx configuration directory exists"
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل conf.d."
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 #, fuzzy
 msgid "Check if the nginx configuration entry file exists"
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل conf.d."
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
-msgstr ""
+msgstr "التحقق مما إذا كان مسار سجل أخطاء nginx موجودًا"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
-msgstr ""
+msgstr "تحقق مما إذا كان مسار معرف عملية Nginx موجودًا"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 #, fuzzy
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل conf.d."
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 #, fuzzy
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل sites-enabled."
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 #, fuzzy
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل streams-enabled."
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 #, fuzzy
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
@@ -784,7 +783,7 @@ msgstr ""
 "تحقق مما إذا كانت الدلائل sites-available و sites-enabled موجودة ضمن دليل "
 "تكوين nginx."
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 #, fuzzy
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
@@ -802,12 +801,12 @@ msgid "Cleaning environment variables"
 msgstr "تنظيف متغيرات البيئة"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "مسح"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 msgid "Cleared successfully"
 msgstr "تم المسح بنجاح"
@@ -890,14 +889,12 @@ msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "مستوى الضغط ، 1 هو أدنى ، 9 هو الأعلى"
 
 #: src/constants/errors/self_check.ts:17
-#, fuzzy
 msgid "Config directory not exist"
-msgstr "قائمة السماح لمجلد سجلات Nginx"
+msgstr "دليل التكوين غير موجود"
 
 #: src/constants/errors/self_check.ts:18
-#, fuzzy
 msgid "Config entry file not exist"
-msgstr "قائمة السماح لمجلد سجلات Nginx"
+msgstr "ملف إدخال التكوين غير موجود"
 
 #: src/constants/errors/backup.ts:14
 #, fuzzy
@@ -1032,7 +1029,7 @@ msgstr ""
 "سيتم تنزيل ملفات النسخ الاحتياطي تلقائيًا إلى جهاز الكمبيوتر الخاص بك."
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1197,13 +1194,13 @@ msgstr "وصف"
 
 #: src/constants/errors/site.ts:3 src/constants/errors/stream.ts:3
 msgid "Destination file already exists"
-msgstr ""
+msgstr "الملف الوجهة موجود بالفعل"
 
 #: src/constants/errors/config.ts:3
 msgid "Destination file: {0} already exists"
-msgstr ""
+msgstr "الملف الوجهة: {0} موجود بالفعل"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
 msgstr "تفاصيل"
 
@@ -1213,7 +1210,7 @@ msgstr "وضع التطوير"
 
 #: src/views/preference/components/ExternalNotify/dingtalk.ts:5
 msgid "DingTalk"
-msgstr ""
+msgstr "دينجتوك"
 
 #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:72
 msgid "Directive"
@@ -1221,31 +1218,29 @@ msgstr "توجيه"
 
 #: src/constants/errors/nginx_log.ts:6
 msgid "Directive params is empty"
-msgstr ""
+msgstr "معلمات التوجيه فارغة"
 
 #: src/constants/errors/nginx_log.ts:5
 msgid "Directive.Params neither access_log nor error_log"
-msgstr ""
+msgstr "معلمات التوجيه ليست access_log ولا error_log"
 
 #: src/constants/errors/nginx_log.ts:4
 msgid "DirectiveIdx out of range"
-msgstr ""
+msgstr "الفهرس خارج النطاق"
 
 #: src/components/NgxConfigEditor/directive/DirectiveEditor.vue:38
 msgid "Directives"
 msgstr "توجيهات"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
-#, fuzzy
 msgid "Directory Levels"
-msgstr "توجيهات"
+msgstr "مستويات الدليل"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
-msgstr ""
+msgstr "مسار الدليل لتخزين ملفات الذاكرة المؤقتة"
 
 #: src/views/site/components/SiteStatusSegmented.vue:88
-#, fuzzy
 msgid "disable"
 msgstr "تعطيل"
 
@@ -1255,25 +1250,23 @@ msgstr "تعطيل"
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
 msgid "Disable auto-renewal failed for %{name}"
-msgstr "فشل تعطيل التجديد التلقائي لـ {name}%"
+msgstr "فشل تعطيل التجديد التلقائي لـ %{name}"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
 msgid "Disable Remote Site Error"
-msgstr "خطأ في تعطيل الموقع البعيد"
+msgstr "خطأ تعطيل الموقع البعيد"
 
 #: src/components/Notification/notifications.ts:101
-#, fuzzy
 msgid "Disable Remote Site Maintenance Error"
-msgstr "خطأ في تعطيل الموقع البعيد"
+msgstr "خطأ في تعطيل صيانة الموقع البعيد"
 
 #: src/components/Notification/notifications.ts:105
-#, fuzzy
 msgid "Disable Remote Site Maintenance Success"
-msgstr "تعطيل الموقع البعيد بنجاح"
+msgstr "تعطيل صيانة الموقع البعيد بنجاح"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
 msgid "Disable Remote Site Success"
-msgstr "تعطيل الموقع البعيد بنجاح"
+msgstr "تم تعطيل الموقع البعيد بنجاح"
 
 #: src/components/Notification/notifications.ts:133
 #, fuzzy
@@ -1390,7 +1383,7 @@ msgstr "هل تريد إزالة هذا المصدر؟"
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1833,7 +1826,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "فشل في الحصول على الشهادة"
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "فشل في الحصول على الشهادة"
@@ -2005,7 +1998,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgstr "فشل في الحصول على الشهادة"
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 #, fuzzy
 msgid "Failed to revoke certificate: %{error}"
 msgstr "فشل في الحصول على الشهادة"
@@ -2229,7 +2222,7 @@ msgstr ""
 "إذا كان لنطاقك سجلات CNAME ولا يمكنك الحصول على شهادات، تحتاج إلى تفعيل هذا "
 "الخيار."
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr "استيراد"
 
@@ -2380,7 +2373,7 @@ msgstr "رمز 2FA أو الاسترداد غير صالح"
 msgid "IP"
 msgstr "IP"
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 msgid "Issue wildcard certificate"
 msgstr "إصدار شهادة wildcard"
 
@@ -2468,7 +2461,7 @@ msgstr ""
 
 #: src/components/AutoCertForm/AutoCertForm.vue:104
 msgid "Lego disable CNAME Support"
-msgstr "تعطيل دعم ‏Lego CNAME"
+msgstr "تعطيل دعم CNAME في Lego"
 
 #: src/views/system/About.vue:63
 msgid "License"
@@ -2535,7 +2528,7 @@ msgstr "أماكن"
 msgid "Log"
 msgstr "سجل"
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2833,7 +2826,7 @@ msgstr "Nginx"
 msgid "Nginx Access Log Path"
 msgstr "مسار سجل الوصول لـ Nginx"
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 #, fuzzy
 msgid "Nginx access log path exists"
 msgstr "مسار سجل الوصول لـ Nginx"
@@ -2864,12 +2857,12 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr "قائمة السماح لمجلد سجلات Nginx"
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 #, fuzzy
 msgid "Nginx configuration directory exists"
 msgstr "مجلد تكوينات Nginx"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 #, fuzzy
 msgid "Nginx configuration entry file exists"
 msgstr "خطأ في تحليل تكوين Nginx"
@@ -2911,7 +2904,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr "مسار سجل أخطاء Nginx"
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 #, fuzzy
 msgid "Nginx error log path exists"
 msgstr "مسار سجل أخطاء Nginx"
@@ -2951,7 +2944,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr "مسار PID لـ Nginx"
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 #, fuzzy
 msgid "Nginx PID path exists"
 msgstr "مسار PID لـ Nginx"
@@ -3018,27 +3011,27 @@ msgid ""
 "few seconds."
 msgstr "خطأ في تحليل تكوين Nginx"
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 #, fuzzy
 msgid "Nginx.conf includes conf.d directory"
 msgstr "أمر إعادة تشغيل Nginx"
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 #, fuzzy
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل sites-enabled."
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 #, fuzzy
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل streams-enabled."
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -3128,7 +3121,7 @@ msgstr ""
 msgid "Notification"
 msgstr "إشعار"
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 msgid "Notifications"
 msgstr "الإشعارات"
@@ -3183,7 +3176,7 @@ msgstr ""
 msgid "Off"
 msgstr "غير متصل"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -3201,7 +3194,7 @@ msgstr "حسنًا"
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3224,7 +3217,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgstr "بمجرد اكتمال التحقق، سيتم إزالة السجلات."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3665,7 +3658,7 @@ msgstr "ملاحظة الإصدار"
 msgid "Reload"
 msgstr "إعادة تحميل"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3699,7 +3692,7 @@ msgstr "خطأ في إعادة تسمية الموقع البعيد"
 msgid "Reload Remote Nginx Success"
 msgstr "تم إعادة تسمية الموقع البعيد بنجاح"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3720,7 +3713,7 @@ msgstr "إزالة"
 msgid "Remove successfully"
 msgstr "إزالة بنجاح"
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 msgid "Removed successfully"
 msgstr "تمت الإزالة بنجاح"
 
@@ -3859,7 +3852,7 @@ msgstr ""
 msgid "Restart"
 msgstr "إعادة تشغيل"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
@@ -3886,7 +3879,7 @@ msgstr "خطأ في إعادة تسمية الموقع البعيد"
 msgid "Restart Remote Nginx Success"
 msgstr "تم إعادة تسمية الموقع البعيد بنجاح"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -4199,7 +4192,7 @@ msgstr "سجلات الموقع"
 msgid "Site not found"
 msgstr "لم يتم العثور على الملف"
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 #, fuzzy
 msgid "Sites directory exists"
 msgstr "مجلد"
@@ -4321,7 +4314,7 @@ msgstr "معطل"
 msgid "Stream not found"
 msgstr "لم يتم العثور على الملف"
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 #, fuzzy
 msgid "Streams directory exists"
 msgstr "مجلد"
@@ -4413,7 +4406,7 @@ msgstr "خطأ في تزامن التكوين"
 msgid "Sync Config Success"
 msgstr "تمت مزامنة التكوين بنجاح"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgstr "مزامنة العقد"
@@ -4478,9 +4471,8 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
-msgstr "محطة"
+msgstr "طرفية"
 
 #: src/views/preference/tabs/TerminalSettings.vue:10
 msgid "Terminal Start Command"
@@ -4700,7 +4692,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr "عنوان"
 
@@ -4943,7 +4935,7 @@ msgstr "إصدار"
 msgid "View"
 msgstr "عرض"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 msgid "View all notifications"
 msgstr "عرض جميع التنبيهات"
 
@@ -5075,8 +5067,8 @@ msgstr "كتابة مفتاح الشهادة الخاص إلى القرص"
 msgid "Writing certificate to disk"
 msgstr "كتابة الشهادة إلى القرص"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163
@@ -5089,6 +5081,8 @@ msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
 msgstr ""
+"أنت تتصل بهذا الطرف عبر اتصال HTTP غير آمن في نطاق غير محلي. قد يؤدي هذا إلى "
+"كشف معلومات حساسة."
 
 #: src/views/system/Upgrade.vue:202
 msgid "You are using the latest version"

+ 99 - 108
app/src/language/de_DE/app.po

@@ -9,43 +9,43 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 "[Nginx UI] ACME-Benutzer: %{name}, E-Mail: %{email}, CA-Verzeichnis: %{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr "[Nginx UI] Aktuelles Zertifikat wird für spätere Widerrufung gesichert"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Erfolgreich deaktiviert"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Speichern erfolgreich"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 "[Nginx UI] Zertifikat wurde für den Server verwendet, Server-TLS-Zertifikat "
 "wird neu geladen"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "Er"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Umgebungsvariablen gesäubert"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Abgeschlossen"
 
@@ -54,11 +54,11 @@ msgstr "[Nginx UI] Abgeschlossen"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Aktivieren erfolgreich"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] Zertifikat wird abgerufen"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Vorbereitung auf den Widerruf des Zertifikats"
 
@@ -66,23 +66,23 @@ msgstr "[Nginx UI] Vorbereitung auf den Widerruf des Zertifikats"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Vorbereiten der Lego-Konfigurationen"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Nginx wird neu geladen"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] Widerruf abgeschlossen"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Zertifikat wird widerrufen"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Altes Zertifikat wird widerrufen"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] DNS01-Herausforderungsanbieter wird eingerichtet"
 
@@ -91,15 +91,15 @@ msgstr "[Nginx UI] DNS01-Herausforderungsanbieter wird eingerichtet"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Setze Umgebungsvariablen"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] HTTP01-Herausforderungsanbieter wird eingerichtet"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] Schreibe privaten Zertifikatsschlüssel auf die Festplatte"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] Zertifikat wird auf die Festplatte geschrieben"
 
@@ -122,7 +122,7 @@ msgstr "Zugriffslog"
 
 #: src/constants/errors/self_check.ts:21
 msgid "Access log path not exist"
-msgstr ""
+msgstr "Zugriffsprotokollpfad existiert nicht"
 
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
@@ -219,7 +219,7 @@ msgstr ""
 "Aktualisieren Sie anschließend diese Seite und klicken Sie erneut auf "
 "\"Passkey hinzufügen\"."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "Alle"
@@ -291,7 +291,7 @@ msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 msgid "Are you sure you want to apply to all selected?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 #, fuzzy
 msgid "Are you sure you want to clear all notifications?"
@@ -323,7 +323,7 @@ msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 msgid "Are you sure you want to recover this item?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
@@ -343,7 +343,7 @@ msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
@@ -405,13 +405,12 @@ msgstr "Automatische Verlängerung aktiviert für %{name}"
 
 #: src/views/certificate/components/RenewCert.vue:49
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:84
-#, fuzzy
 msgid "AutoCert is running, please wait..."
-msgstr "Dieses Auto-Zertifikatselement ist ungültig, bitte entferne es."
+msgstr "AutoCert wird ausgeführt, bitte warten..."
 
 #: src/components/ProcessingStatus/ProcessingStatus.vue:39
 msgid "AutoCert is running..."
-msgstr ""
+msgstr "\"AutoCert wird ausgeführt...\""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:332
 msgid "Automatic Restart"
@@ -651,7 +650,7 @@ msgstr "Zertifikat abgelaufen"
 msgid "Certificate Expiring Soon"
 msgstr "Zertifikat läuft bald ab"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgstr "Fehler beim Dekodieren des Zertifikats"
@@ -679,7 +678,7 @@ msgstr "Zeitifikat ist gültig"
 msgid "Certificate renewed successfully"
 msgstr "Erfolgreich deaktiviert"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgstr "Zertifikat erfolgreich entfernt"
@@ -693,7 +692,7 @@ msgstr[0] "Zertifikatsstatus"
 msgstr[1] "Zertifikatsstatus"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 #, fuzzy
 msgid "Certificates"
 msgstr "Zertifikatsstatus"
@@ -755,50 +754,50 @@ msgstr ""
 "von localhost ist unsicher und verhindert die Nutzung von Passkeys und "
 "Zwischenablage-Funktionen."
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
-msgstr ""
+msgstr "Überprüfen Sie, ob der Docker-Socket vorhanden ist."
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
-msgstr ""
+msgstr "Überprüfen Sie, ob der Pfad für das Nginx-Zugriffsprotokoll existiert"
 
 #: src/language/generate.ts:29
 #, fuzzy
 msgid "Check if the nginx configuration directory exists"
 msgstr "Überprüfen Sie, ob die nginx.conf das conf.d-Verzeichnis enthält."
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 #, fuzzy
 msgid "Check if the nginx configuration entry file exists"
 msgstr "Überprüfen Sie, ob die nginx.conf das conf.d-Verzeichnis enthält."
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
-msgstr ""
+msgstr "Überprüfen Sie, ob der Pfad für das Nginx-Fehlerprotokoll existiert"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
-msgstr ""
+msgstr "Überprüfen Sie, ob der Nginx-PID-Pfad existiert"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 #, fuzzy
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "Überprüfen Sie, ob die nginx.conf das conf.d-Verzeichnis enthält."
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 #, fuzzy
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr ""
 "Überprüfen Sie, ob die nginx.conf das Verzeichnis sites-enabled enthält."
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 #, fuzzy
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr ""
 "Überprüfen Sie, ob die nginx.conf das Verzeichnis streams-enabled enthält."
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 #, fuzzy
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
@@ -807,7 +806,7 @@ msgstr ""
 "Überprüfen Sie, ob die Verzeichnisse sites-available und sites-enabled im "
 "nginx-Konfigurationsverzeichnis enthalten sind."
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 #, fuzzy
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
@@ -825,12 +824,12 @@ msgid "Cleaning environment variables"
 msgstr "Säuberung von Umgebungsvariablen"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "Säubern"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 #, fuzzy
 msgid "Cleared successfully"
@@ -917,14 +916,12 @@ msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "Kompressionsniveau, 1 ist am niedrigsten, 9 ist am höchsten"
 
 #: src/constants/errors/self_check.ts:17
-#, fuzzy
 msgid "Config directory not exist"
-msgstr "Nginx-Log-Verzeichnis-Whitelist"
+msgstr "Konfigurationsverzeichnis existiert nicht"
 
 #: src/constants/errors/self_check.ts:18
-#, fuzzy
 msgid "Config entry file not exist"
-msgstr "Nginx-Log-Verzeichnis-Whitelist"
+msgstr "Konfigurations-Eingabedatei existiert nicht"
 
 #: src/constants/errors/backup.ts:14
 #, fuzzy
@@ -1065,7 +1062,7 @@ msgstr ""
 "Computer heruntergeladen."
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1237,13 +1234,13 @@ msgstr "Beschreibung"
 
 #: src/constants/errors/site.ts:3 src/constants/errors/stream.ts:3
 msgid "Destination file already exists"
-msgstr ""
+msgstr "Die Zieldatei existiert bereits"
 
 #: src/constants/errors/config.ts:3
 msgid "Destination file: {0} already exists"
-msgstr ""
+msgstr "Zieldatei: {0} existiert bereits"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
 msgstr "Details"
 
@@ -1253,7 +1250,7 @@ msgstr "Entwicklungsmodus"
 
 #: src/views/preference/components/ExternalNotify/dingtalk.ts:5
 msgid "DingTalk"
-msgstr ""
+msgstr "DingTalk"
 
 #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:72
 msgid "Directive"
@@ -1261,62 +1258,55 @@ msgstr "Anweisung"
 
 #: src/constants/errors/nginx_log.ts:6
 msgid "Directive params is empty"
-msgstr ""
+msgstr "Die Direktivenparameter sind leer"
 
 #: src/constants/errors/nginx_log.ts:5
 msgid "Directive.Params neither access_log nor error_log"
-msgstr ""
+msgstr "Directive.Params ist weder access_log noch error_log"
 
 #: src/constants/errors/nginx_log.ts:4
 msgid "DirectiveIdx out of range"
-msgstr ""
+msgstr "DirectiveIdx außerhalb des Bereichs"
 
 #: src/components/NgxConfigEditor/directive/DirectiveEditor.vue:38
 msgid "Directives"
 msgstr "Anweisung"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
-#, fuzzy
 msgid "Directory Levels"
-msgstr "Anweisung"
+msgstr "Verzeichnisebenen"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
-msgstr ""
+msgstr "Verzeichnispfad zum Speichern der Cache-Dateien"
 
 #: src/views/site/components/SiteStatusSegmented.vue:88
-#, fuzzy
 msgid "disable"
-msgstr "Deaktiviert"
+msgstr "Deaktivieren"
 
 #: src/views/stream/StreamList.vue:209
-#, fuzzy
 msgid "Disable"
-msgstr "Deaktiviert"
+msgstr "Deaktivieren"
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
 msgid "Disable auto-renewal failed for %{name}"
-msgstr "Automatische Verlängerung deaktiviert für %{name}"
+msgstr "Automatische Verlängerung für %{name} konnte nicht deaktiviert werden"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
-#, fuzzy
 msgid "Disable Remote Site Error"
-msgstr "Zertifikat ist gültig"
+msgstr "Fehler beim Deaktivieren der Remote-Site"
 
 #: src/components/Notification/notifications.ts:101
-#, fuzzy
 msgid "Disable Remote Site Maintenance Error"
-msgstr "Zertifikat ist gültig"
+msgstr "Fehler beim Deaktivieren der Remote-Site-Wartung"
 
 #: src/components/Notification/notifications.ts:105
-#, fuzzy
 msgid "Disable Remote Site Maintenance Success"
-msgstr "Zertifikat ist gültig"
+msgstr "Wartungsmodus der Remote-Website erfolgreich deaktiviert"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
-#, fuzzy
 msgid "Disable Remote Site Success"
-msgstr "Zertifikat ist gültig"
+msgstr "Remote-Site erfolgreich deaktiviert"
 
 #: src/components/Notification/notifications.ts:133
 #, fuzzy
@@ -1440,7 +1430,7 @@ msgstr "Bist du sicher, dass du diese Richtlinie löschen möchtest?"
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1892,7 +1882,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Zertifikat ist gültig"
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "Zertifikat ist gültig"
@@ -2060,7 +2050,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgstr "Zertifikat ist gültig"
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 #, fuzzy
 msgid "Failed to revoke certificate: %{error}"
 msgstr "Zertifikat ist gültig"
@@ -2289,7 +2279,7 @@ msgstr ""
 "Wenn deine Domain CNAME-Einträge hat und du keine Zertifikate erhalten "
 "kannst, musst du diese Option aktivieren."
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr "Import"
 
@@ -2441,7 +2431,7 @@ msgstr "Ungültiger 2FA- oder Wiederherstellungscode"
 msgid "IP"
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 #, fuzzy
 msgid "Issue wildcard certificate"
 msgstr "Zertifikat ist gültig"
@@ -2536,7 +2526,7 @@ msgstr ""
 
 #: src/components/AutoCertForm/AutoCertForm.vue:104
 msgid "Lego disable CNAME Support"
-msgstr "Legoe deaktiviert CNAME-Unterstützung"
+msgstr "Lego deaktiviert CNAME-Unterstützung"
 
 #: src/views/system/About.vue:63
 #, fuzzy
@@ -2608,7 +2598,7 @@ msgstr "Orte"
 msgid "Log"
 msgstr "Login"
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2917,7 +2907,7 @@ msgstr ""
 msgid "Nginx Access Log Path"
 msgstr "Nginx Zugriffslog-Pfad"
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 #, fuzzy
 msgid "Nginx access log path exists"
 msgstr "Nginx Zugriffslog-Pfad"
@@ -2948,12 +2938,12 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr "Nginx-Log-Verzeichnis-Whitelist"
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 #, fuzzy
 msgid "Nginx configuration directory exists"
 msgstr "Name der Konfiguration"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 #, fuzzy
 msgid "Nginx configuration entry file exists"
 msgstr "Name der Konfiguration"
@@ -2997,7 +2987,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr "Nginx Fehlerlog-Pfad"
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 #, fuzzy
 msgid "Nginx error log path exists"
 msgstr "Nginx Fehlerlog-Pfad"
@@ -3037,7 +3027,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr "Nginx PID-Pfad"
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 #, fuzzy
 msgid "Nginx PID path exists"
 msgstr "Nginx PID-Pfad"
@@ -3106,29 +3096,29 @@ msgid ""
 "few seconds."
 msgstr "Name der Konfiguration"
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 #, fuzzy
 msgid "Nginx.conf includes conf.d directory"
 msgstr "Beffehl zum Neustarten von Nginx"
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 #, fuzzy
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr ""
 "Überprüfen Sie, ob die nginx.conf das Verzeichnis sites-enabled enthält."
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 #, fuzzy
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr ""
 "Überprüfen Sie, ob die nginx.conf das Verzeichnis streams-enabled enthält."
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -3221,7 +3211,7 @@ msgstr ""
 msgid "Notification"
 msgstr "Zertifikat ist gültig"
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 #, fuzzy
 msgid "Notifications"
@@ -3278,7 +3268,7 @@ msgstr ""
 msgid "Off"
 msgstr "Offline"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -3296,7 +3286,7 @@ msgstr "OK"
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3320,7 +3310,7 @@ msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 "Sobaöd die Überprüfung abgeschlossen ist, werden die Einträge entfernt."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3781,7 +3771,7 @@ msgstr "Änderungsprotokoll"
 msgid "Reload"
 msgstr "Neu laden"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3815,7 +3805,7 @@ msgstr "Zertifikat ist gültig"
 msgid "Reload Remote Nginx Success"
 msgstr "Zertifikat ist gültig"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3837,7 +3827,7 @@ msgstr "Löschen"
 msgid "Remove successfully"
 msgstr "Speichern erfolgreich"
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 #, fuzzy
 msgid "Removed successfully"
 msgstr "Speichern erfolgreich"
@@ -3989,7 +3979,7 @@ msgstr ""
 msgid "Restart"
 msgstr "Neustart"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
@@ -4016,7 +4006,7 @@ msgstr "Zertifikat ist gültig"
 msgid "Restart Remote Nginx Success"
 msgstr "Zertifikat ist gültig"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -4335,7 +4325,7 @@ msgstr "Liste der Seiten"
 msgid "Site not found"
 msgstr "File Not Found"
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 #, fuzzy
 msgid "Sites directory exists"
 msgstr "Anweisung"
@@ -4461,7 +4451,7 @@ msgstr "Deaktiviert"
 msgid "Stream not found"
 msgstr "File Not Found"
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 #, fuzzy
 msgid "Streams directory exists"
 msgstr "Anweisung"
@@ -4557,7 +4547,7 @@ msgstr "Zertifikat ist gültig"
 msgid "Sync Config Success"
 msgstr "Zertifikat ist gültig"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgstr "Synchrone Knoten"
@@ -4623,7 +4613,6 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "Terminal"
 
@@ -4851,7 +4840,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr "Titel"
 
@@ -5095,7 +5084,7 @@ msgstr "Version"
 msgid "View"
 msgstr "Anzeigen"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 #, fuzzy
 msgid "View all notifications"
 msgstr "Zertifikat ist gültig"
@@ -5232,8 +5221,8 @@ msgstr "Scrheibe Zertifikat-Privatschlüssel auf die Festplatte"
 msgid "Writing certificate to disk"
 msgstr "Schreibe Zertifikat auf die Festplatte"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163
@@ -5246,6 +5235,8 @@ msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
 msgstr ""
+"Sie greifen auf dieses Terminal über eine unsichere HTTP-Verbindung in einer "
+"Nicht-Localhost-Domäne zu. Dies könnte sensible Informationen preisgeben."
 
 #: src/views/system/Upgrade.vue:202
 msgid "You are using the latest version"

+ 72 - 73
app/src/language/en/app.po

@@ -1,33 +1,33 @@
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr ""
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr ""
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr ""
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr ""
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr ""
 
@@ -35,11 +35,11 @@ msgstr ""
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr ""
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr ""
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr ""
 
@@ -47,23 +47,23 @@ msgstr ""
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr ""
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr ""
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr ""
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr ""
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr ""
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr ""
 
@@ -71,15 +71,15 @@ msgstr ""
 msgid "[Nginx UI] Setting environment variables"
 msgstr ""
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr ""
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr ""
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr ""
 
@@ -191,7 +191,7 @@ msgstr ""
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr ""
@@ -257,7 +257,7 @@ msgstr ""
 msgid "Are you sure you want to apply to all selected?"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 msgid "Are you sure you want to clear all notifications?"
 msgstr ""
@@ -283,7 +283,7 @@ msgstr ""
 msgid "Are you sure you want to recover this item?"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr ""
 
@@ -299,7 +299,7 @@ msgstr ""
 msgid "Are you sure you want to remove this location?"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr ""
 
@@ -587,7 +587,7 @@ msgstr ""
 msgid "Certificate Expiring Soon"
 msgstr ""
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 msgid "Certificate not found: %{error}"
 msgstr ""
 
@@ -612,7 +612,7 @@ msgstr ""
 msgid "Certificate renewed successfully"
 msgstr ""
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 msgid "Certificate revoked successfully"
 msgstr ""
 
@@ -624,7 +624,7 @@ msgstr[0] ""
 msgstr[1] ""
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 msgid "Certificates"
 msgstr ""
 
@@ -676,11 +676,11 @@ msgid ""
 "prevents using Passkeys and clipboard features"
 msgstr ""
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
 msgstr ""
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
 msgstr ""
 
@@ -688,37 +688,37 @@ msgstr ""
 msgid "Check if the nginx configuration directory exists"
 msgstr ""
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 msgid "Check if the nginx configuration entry file exists"
 msgstr ""
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
 msgstr ""
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
 msgstr ""
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr ""
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr ""
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr ""
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
 "nginx configuration directory"
 msgstr ""
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
 "nginx configuration directory"
@@ -733,12 +733,12 @@ msgid "Cleaning environment variables"
 msgstr ""
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 msgid "Cleared successfully"
 msgstr ""
@@ -951,7 +951,7 @@ msgid ""
 msgstr ""
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1114,7 +1114,7 @@ msgstr ""
 msgid "Destination file: {0} already exists"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
 msgstr ""
 
@@ -1288,7 +1288,7 @@ msgstr ""
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1688,7 +1688,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr ""
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 msgid "Failed to delete certificate from database: %{error}"
 msgstr ""
 
@@ -1832,7 +1832,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgstr ""
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 msgid "Failed to revoke certificate: %{error}"
 msgstr ""
 
@@ -2037,7 +2037,7 @@ msgid ""
 "need to enable this option."
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr ""
 
@@ -2178,7 +2178,7 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 msgid "Issue wildcard certificate"
 msgstr ""
 
@@ -2329,7 +2329,7 @@ msgstr ""
 msgid "Log"
 msgstr ""
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2610,7 +2610,7 @@ msgstr ""
 msgid "Nginx Access Log Path"
 msgstr ""
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 msgid "Nginx access log path exists"
 msgstr ""
 
@@ -2638,11 +2638,11 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr ""
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 msgid "Nginx configuration directory exists"
 msgstr ""
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 msgid "Nginx configuration entry file exists"
 msgstr ""
 
@@ -2680,7 +2680,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr ""
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 msgid "Nginx error log path exists"
 msgstr ""
 
@@ -2717,7 +2717,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr ""
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 msgid "Nginx PID path exists"
 msgstr ""
 
@@ -2777,24 +2777,24 @@ msgid ""
 "few seconds."
 msgstr ""
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 msgid "Nginx.conf includes conf.d directory"
 msgstr ""
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr ""
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr ""
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -2877,7 +2877,7 @@ msgstr ""
 msgid "Notification"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 msgid "Notifications"
 msgstr ""
@@ -2928,7 +2928,7 @@ msgstr ""
 msgid "Off"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -2946,7 +2946,7 @@ msgstr ""
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -2969,7 +2969,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3391,7 +3391,7 @@ msgstr ""
 msgid "Reload"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3419,7 +3419,7 @@ msgstr ""
 msgid "Reload Remote Nginx Success"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3440,7 +3440,7 @@ msgstr ""
 msgid "Remove successfully"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 msgid "Removed successfully"
 msgstr ""
 
@@ -3571,7 +3571,7 @@ msgstr ""
 msgid "Restart"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 msgid "Restart Nginx"
@@ -3593,7 +3593,7 @@ msgstr ""
 msgid "Restart Remote Nginx Success"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -3884,7 +3884,7 @@ msgstr ""
 msgid "Site not found"
 msgstr ""
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 msgid "Sites directory exists"
 msgstr ""
 
@@ -3997,7 +3997,7 @@ msgstr ""
 msgid "Stream not found"
 msgstr ""
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 msgid "Streams directory exists"
 msgstr ""
 
@@ -4083,7 +4083,7 @@ msgstr ""
 msgid "Sync Config Success"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgstr ""
@@ -4142,7 +4142,6 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr ""
 
@@ -4347,7 +4346,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr ""
 
@@ -4571,7 +4570,7 @@ msgstr ""
 msgid "View"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 msgid "View all notifications"
 msgstr ""
 
@@ -4692,8 +4691,8 @@ msgstr ""
 msgid "Writing certificate to disk"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163

+ 97 - 103
app/src/language/es/app.po

@@ -16,46 +16,46 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 5.6.2\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 "[Nginx UI] Usuario ACME: %{name}, Correo electrónico: %{email}, Directorio "
 "CA: %{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 "[Nginx UI] Haciendo copia de seguridad del certificado actual para su "
 "posterior revocación"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Limpiado exitoso"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Nginx reiniciado con éxito"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 "[Nginx UI] El certificado se utilizó para el servidor, recargando el "
 "certificado TLS del servidor"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "La creación de un cliente facilita la comunicación con el servidor CA"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Variables de entorno limpiadas"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Finalizado"
 
@@ -64,11 +64,11 @@ msgstr "[Nginx UI] Finalizado"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Certificado emitido con éxito"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] Obteniendo certificado"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Preparándose para la revocación del certificado"
 
@@ -76,23 +76,23 @@ msgstr "[Nginx UI] Preparándose para la revocación del certificado"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Preparando configuraciones de lego"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Recargando nginx"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] Revocación completada"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Revocando certificado"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Revocando certificado antiguo"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] Configurando el proveedor de desafío DNS01"
 
@@ -101,15 +101,15 @@ msgstr "[Nginx UI] Configurando el proveedor de desafío DNS01"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Configuración de variables de entorno"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] Configurando el proveedor de desafío HTTP01"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] Escribiendo la clave privada del certificado en el disco"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] Escribiendo certificado en el disco"
 
@@ -132,7 +132,7 @@ msgstr "Logs de acceso"
 
 #: src/constants/errors/self_check.ts:21
 msgid "Access log path not exist"
-msgstr ""
+msgstr "La ruta del registro de acceso no existe"
 
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
@@ -224,7 +224,7 @@ msgstr ""
 "Después, actualice esta página y haga clic en agregar clave de acceso "
 "nuevamente."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "Todos"
@@ -295,7 +295,7 @@ msgstr "¿Está seguro de que quiere borrar?"
 msgid "Are you sure you want to apply to all selected?"
 msgstr "¿Está seguro de que quiere borrar?"
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 msgid "Are you sure you want to clear all notifications?"
 msgstr "¿Está seguro de que desea borrar todas las notificaciones?"
@@ -321,7 +321,7 @@ msgstr "¿Está seguro de que quiere borrar?"
 msgid "Are you sure you want to recover this item?"
 msgstr "¿Está seguro de que quiere recuperar este elemento?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "¿Está seguro de que quiere borrar?"
@@ -338,7 +338,7 @@ msgstr "¿Está seguro de que desea eliminar este elemento?"
 msgid "Are you sure you want to remove this location?"
 msgstr "¿Está seguro de que quiere borrar esta ubicación?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "¿Está seguro de que desea borrar todas las notificaciones?"
@@ -400,13 +400,12 @@ msgstr "Renovación automática habilitada por %{name}"
 
 #: src/views/certificate/components/RenewCert.vue:49
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:84
-#, fuzzy
 msgid "AutoCert is running, please wait..."
-msgstr "Este elemento de Auto Cert es inválido, elimínelo por favor."
+msgstr "AutoCert se está ejecutando, por favor espere..."
 
 #: src/components/ProcessingStatus/ProcessingStatus.vue:39
 msgid "AutoCert is running..."
-msgstr ""
+msgstr "\"AutoCert se está ejecutando...\""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:332
 msgid "Automatic Restart"
@@ -646,7 +645,7 @@ msgstr "Certificado caducado"
 msgid "Certificate Expiring Soon"
 msgstr "Certificado a punto de expirar"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgstr "Error de decodificación del certificado"
@@ -673,7 +672,7 @@ msgstr "Intervalo de renovación del Certificado"
 msgid "Certificate renewed successfully"
 msgstr "Limpiado exitoso"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgstr "Certificado eliminado correctamente"
@@ -686,7 +685,7 @@ msgstr[0] "Estado del Certificado"
 msgstr[1] "Estado de los Certificados"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 msgid "Certificates"
 msgstr "Certificados"
 
@@ -742,49 +741,49 @@ msgstr ""
 "Verifica si HTTPS está habilitado. Usar HTTP fuera de localhost es inseguro "
 "e impide el uso de Passkeys y funciones del portapapeles."
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
-msgstr ""
+msgstr "Verifique si existe el socket de Docker."
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
-msgstr ""
+msgstr "Verificar si existe la ruta del registro de acceso de nginx"
 
 #: src/language/generate.ts:29
 #, fuzzy
 msgid "Check if the nginx configuration directory exists"
 msgstr "Verifique si el archivo nginx.conf incluye el directorio conf.d."
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 #, fuzzy
 msgid "Check if the nginx configuration entry file exists"
 msgstr "Verifique si el archivo nginx.conf incluye el directorio conf.d."
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
-msgstr ""
+msgstr "Verificar si existe la ruta del registro de errores de nginx"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
-msgstr ""
+msgstr "Verificar si existe la ruta del PID de Nginx"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 #, fuzzy
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "Verifique si el archivo nginx.conf incluye el directorio conf.d."
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 #, fuzzy
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "Verifica si el archivo nginx.conf incluye el directorio sites-enabled."
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 #, fuzzy
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr ""
 "Verifique si el archivo nginx.conf incluye el directorio streams-enabled."
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 #, fuzzy
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
@@ -793,7 +792,7 @@ msgstr ""
 "Verifique si los directorios sites-available y sites-enabled están dentro "
 "del directorio de configuración de nginx."
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 #, fuzzy
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
@@ -811,12 +810,12 @@ msgid "Cleaning environment variables"
 msgstr "Borrar las variables de entorno"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "Borrar"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 msgid "Cleared successfully"
 msgstr "Limpiado exitoso"
@@ -900,14 +899,12 @@ msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "Nivel de compresión, 1 es más bajo, 9 es más alto"
 
 #: src/constants/errors/self_check.ts:17
-#, fuzzy
 msgid "Config directory not exist"
-msgstr "Lista blanca de directorios de registro de Nginx"
+msgstr "El directorio de configuración no existe"
 
 #: src/constants/errors/self_check.ts:18
-#, fuzzy
 msgid "Config entry file not exist"
-msgstr "Lista blanca de directorios de registro de Nginx"
+msgstr "El archivo de entrada de configuración no existe"
 
 #: src/constants/errors/backup.ts:14
 #, fuzzy
@@ -1045,7 +1042,7 @@ msgstr ""
 "automáticamente en tu computadora."
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1214,13 +1211,13 @@ msgstr "Descripción"
 
 #: src/constants/errors/site.ts:3 src/constants/errors/stream.ts:3
 msgid "Destination file already exists"
-msgstr ""
+msgstr "El archivo de destino ya existe"
 
 #: src/constants/errors/config.ts:3
 msgid "Destination file: {0} already exists"
-msgstr ""
+msgstr "Archivo de destino: {0} ya existe"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
 msgstr "Detalles"
 
@@ -1230,7 +1227,7 @@ msgstr "Modo de desarrollo"
 
 #: src/views/preference/components/ExternalNotify/dingtalk.ts:5
 msgid "DingTalk"
-msgstr ""
+msgstr "DingTalk"
 
 #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:72
 msgid "Directive"
@@ -1238,31 +1235,29 @@ msgstr "Directiva"
 
 #: src/constants/errors/nginx_log.ts:6
 msgid "Directive params is empty"
-msgstr ""
+msgstr "Los parámetros de la directiva están vacíos"
 
 #: src/constants/errors/nginx_log.ts:5
 msgid "Directive.Params neither access_log nor error_log"
-msgstr ""
+msgstr "Los parámetros de la directiva no son ni access_log ni error_log"
 
 #: src/constants/errors/nginx_log.ts:4
 msgid "DirectiveIdx out of range"
-msgstr ""
+msgstr "DirectiveIdx fuera de rango"
 
 #: src/components/NgxConfigEditor/directive/DirectiveEditor.vue:38
 msgid "Directives"
 msgstr "Directivas"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
-#, fuzzy
 msgid "Directory Levels"
-msgstr "Directivas"
+msgstr "Niveles de directorio"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
-msgstr ""
+msgstr "Ruta del directorio para almacenar archivos de caché"
 
 #: src/views/site/components/SiteStatusSegmented.vue:88
-#, fuzzy
 msgid "disable"
 msgstr "Desactivar"
 
@@ -1272,25 +1267,23 @@ msgstr "Desactivar"
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
 msgid "Disable auto-renewal failed for %{name}"
-msgstr "No se pudo desactivar la renovación automática por %{name}"
+msgstr "Error al desactivar la renovación automática para %{name}"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
 msgid "Disable Remote Site Error"
-msgstr "Error al deshabilitar el sitio remoto"
+msgstr "Error al deshabilitar sitio remoto"
 
 #: src/components/Notification/notifications.ts:101
-#, fuzzy
 msgid "Disable Remote Site Maintenance Error"
-msgstr "Error al deshabilitar el sitio remoto"
+msgstr "Error al desactivar el mantenimiento del sitio remoto"
 
 #: src/components/Notification/notifications.ts:105
-#, fuzzy
 msgid "Disable Remote Site Maintenance Success"
-msgstr "Deshabilitado de sitio remoto exitoso"
+msgstr "Desactivación del mantenimiento del sitio remoto exitosa"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
 msgid "Disable Remote Site Success"
-msgstr "Deshabilitado de sitio remoto exitoso"
+msgstr "Sitio remoto deshabilitado correctamente"
 
 #: src/components/Notification/notifications.ts:133
 #, fuzzy
@@ -1407,7 +1400,7 @@ msgstr "¿Quieres eliminar esta transmisión?"
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1851,7 +1844,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Falla al obtener el certificado"
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "Falla al obtener el certificado"
@@ -2019,7 +2012,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgstr "Falla al obtener el certificado"
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 #, fuzzy
 msgid "Failed to revoke certificate: %{error}"
 msgstr "Falla al obtener el certificado"
@@ -2247,7 +2240,7 @@ msgstr ""
 "Si su dominio tiene registros CNAME y no puede obtener certificados, "
 "necesita habilitar esta opción."
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr "Importar"
 
@@ -2395,7 +2388,7 @@ msgstr "Código 2FA o de recuperación inválido"
 msgid "IP"
 msgstr "IP"
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 msgid "Issue wildcard certificate"
 msgstr "Obtener certificado comodín"
 
@@ -2485,7 +2478,7 @@ msgstr ""
 
 #: src/components/AutoCertForm/AutoCertForm.vue:104
 msgid "Lego disable CNAME Support"
-msgstr "Lego deshabilita el soporte de CNAME"
+msgstr "Lego desactivar soporte CNAME"
 
 #: src/views/system/About.vue:63
 msgid "License"
@@ -2552,7 +2545,7 @@ msgstr "Ubicaciones"
 msgid "Log"
 msgstr "Registro"
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2851,7 +2844,7 @@ msgstr "Nginx"
 msgid "Nginx Access Log Path"
 msgstr "Ruta de registro de acceso de Nginx"
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 #, fuzzy
 msgid "Nginx access log path exists"
 msgstr "Ruta de registro de acceso de Nginx"
@@ -2882,12 +2875,12 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr "Lista blanca de directorios de registro de Nginx"
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 #, fuzzy
 msgid "Nginx configuration directory exists"
 msgstr "Error de análisis de configuración de Nginx"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 #, fuzzy
 msgid "Nginx configuration entry file exists"
 msgstr "Error de análisis de configuración de Nginx"
@@ -2930,7 +2923,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr "Ruta de registro de errores de Nginx"
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 #, fuzzy
 msgid "Nginx error log path exists"
 msgstr "Ruta de registro de errores de Nginx"
@@ -2971,7 +2964,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr "Ruta de registro de errores de Nginx"
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 #, fuzzy
 msgid "Nginx PID path exists"
 msgstr "Ruta de registro de errores de Nginx"
@@ -3039,28 +3032,28 @@ msgid ""
 "few seconds."
 msgstr "Error de análisis de configuración de Nginx"
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 #, fuzzy
 msgid "Nginx.conf includes conf.d directory"
 msgstr "Comando de inicio de terminal"
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 #, fuzzy
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr "Verifica si el archivo nginx.conf incluye el directorio sites-enabled."
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 #, fuzzy
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr ""
 "Verifique si el archivo nginx.conf incluye el directorio streams-enabled."
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -3152,7 +3145,7 @@ msgstr ""
 msgid "Notification"
 msgstr "Notificación"
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 msgid "Notifications"
 msgstr "Notificaciones"
@@ -3207,7 +3200,7 @@ msgstr ""
 msgid "Off"
 msgstr "Desconectado"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -3225,7 +3218,7 @@ msgstr "Ok"
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3248,7 +3241,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgstr "Una vez que se complete la verificación, los registros se eliminarán."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3706,7 +3699,7 @@ msgstr "Nota de versión"
 msgid "Reload"
 msgstr "Recargar"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3740,7 +3733,7 @@ msgstr "Error al renombrar la configuración remota"
 msgid "Reload Remote Nginx Success"
 msgstr "Renombrar Configuración Remota Exitosa"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3761,7 +3754,7 @@ msgstr "Eliminar"
 msgid "Remove successfully"
 msgstr "Eliminado con éxito"
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 msgid "Removed successfully"
 msgstr "Eliminado con éxito"
 
@@ -3903,7 +3896,7 @@ msgstr ""
 msgid "Restart"
 msgstr "Reiniciar"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
@@ -3930,7 +3923,7 @@ msgstr "Error al renombrar la configuración remota"
 msgid "Restart Remote Nginx Success"
 msgstr "Renombrar Configuración Remota Exitosa"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -4247,7 +4240,7 @@ msgstr "Registros del sitio"
 msgid "Site not found"
 msgstr "Archivo no Encontrado"
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 #, fuzzy
 msgid "Sites directory exists"
 msgstr "Directorio"
@@ -4367,7 +4360,7 @@ msgstr "Certificado automático"
 msgid "Stream not found"
 msgstr "Archivo no Encontrado"
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 #, fuzzy
 msgid "Streams directory exists"
 msgstr "Directorio"
@@ -4458,7 +4451,7 @@ msgstr "Error de Configuración de Sincronización"
 msgid "Sync Config Success"
 msgstr "Configuración de sincronización exitosa"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 #, fuzzy
 msgid "Sync Nodes"
@@ -4525,7 +4518,6 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "Terminal"
 
@@ -4759,7 +4751,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr "Título"
 
@@ -5001,7 +4993,7 @@ msgstr "Versión"
 msgid "View"
 msgstr "Ver"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 msgid "View all notifications"
 msgstr "Ver todas las notificaciones"
 
@@ -5136,8 +5128,8 @@ msgstr "Escribir la clave privada del certificado a disco"
 msgid "Writing certificate to disk"
 msgstr "Escribir certificado a disco"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163
@@ -5150,6 +5142,8 @@ msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
 msgstr ""
+"Estás accediendo a esta terminal a través de una conexión HTTP insegura en "
+"un dominio que no es localhost. Esto puede exponer información sensible."
 
 #: src/views/system/Upgrade.vue:202
 msgid "You are using the latest version"

+ 95 - 107
app/src/language/fr_FR/app.po

@@ -14,45 +14,45 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
 "X-Generator: Weblate 5.9.2\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 "[Nginx UI] Utilisateur ACME : %{name}, Email : %{email}, Répertoire CA : "
 "%{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 "[Nginx UI] Sauvegarde du certificat actuel pour une révocation ultérieure"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Désactivé avec succès"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Nginx a redémarré avec succès"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 "[Nginx UI] Le certificat a été utilisé pour le serveur, rechargement du "
 "certificat TLS du serveur"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "La création du client facilite la communication avec le serveur CA"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Définition des variables d'environnement"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Terminé"
 
@@ -61,11 +61,11 @@ msgstr "[Nginx UI] Terminé"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Certificat délivré avec succès"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] Obtention du certificat"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Préparation de la révocation du certificat"
 
@@ -73,23 +73,23 @@ msgstr "[Nginx UI] Préparation de la révocation du certificat"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Préparation des configurations lego"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Rechargement de nginx"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] Révocation terminée"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Révoquer le certificat"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Révoquer l'ancien certificat"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] Configuration du fournisseur de défi DNS01"
 
@@ -98,15 +98,15 @@ msgstr "[Nginx UI] Configuration du fournisseur de défi DNS01"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Définition des variables d'environnement"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] Configuration du fournisseur de défi HTTP01"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] Écriture de la clé privée du certificat sur le disque"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] Écriture du certificat sur le disque"
 
@@ -129,7 +129,7 @@ msgstr "Journaux d'accès"
 
 #: src/constants/errors/self_check.ts:21
 msgid "Access log path not exist"
-msgstr ""
+msgstr "Le chemin du journal d'accès n'existe pas"
 
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
@@ -226,7 +226,7 @@ msgstr ""
 "Ensuite, rafraîchissez cette page et cliquez à nouveau sur ajouter une clé "
 "d'accès."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "Tous"
@@ -300,7 +300,7 @@ msgstr "Etes-vous sûr que vous voulez supprimer ?"
 msgid "Are you sure you want to apply to all selected?"
 msgstr "Etes-vous sûr que vous voulez supprimer ?"
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 #, fuzzy
 msgid "Are you sure you want to clear all notifications?"
@@ -330,7 +330,7 @@ msgstr "Etes-vous sûr que vous voulez supprimer ?"
 msgid "Are you sure you want to recover this item?"
 msgstr "Voulez-vous vraiment supprimer cette directive ?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "Etes-vous sûr que vous voulez supprimer ?"
@@ -348,7 +348,7 @@ msgstr "Voulez-vous vraiment supprimer cette directive ?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Voulez-vous vraiment supprimer cette localisation ?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "Voulez-vous vraiment effacer l'historique du chat ?"
@@ -411,15 +411,12 @@ msgstr "Renouvellement automatique activé pour %{name}"
 
 #: src/views/certificate/components/RenewCert.vue:49
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:84
-#, fuzzy
 msgid "AutoCert is running, please wait..."
-msgstr ""
-"Cet élément de certification automatique n'est pas valide, veuillez le "
-"supprimer."
+msgstr "AutoCert est en cours d'exécution, veuillez patienter..."
 
 #: src/components/ProcessingStatus/ProcessingStatus.vue:39
 msgid "AutoCert is running..."
-msgstr ""
+msgstr "\"AutoCert est en cours d'exécution...\""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:332
 msgid "Automatic Restart"
@@ -658,7 +655,7 @@ msgstr "Certificat expiré"
 msgid "Certificate Expiring Soon"
 msgstr "Certificat expirant bientôt"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgstr "Erreur de décodage du certificat"
@@ -686,7 +683,7 @@ msgstr "Le certificat est valide"
 msgid "Certificate renewed successfully"
 msgstr "Désactivé avec succès"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgstr "Certificat supprimé avec succès"
@@ -700,7 +697,7 @@ msgstr[0] "État du certificat"
 msgstr[1] "État du certificat"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 #, fuzzy
 msgid "Certificates"
 msgstr "État du certificat"
@@ -761,48 +758,48 @@ msgstr ""
 "est non sécurisée et empêche l'utilisation des fonctionnalités Passkeys et "
 "presse-papiers."
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
-msgstr ""
+msgstr "Vérifiez si le socket Docker existe."
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
-msgstr ""
+msgstr "Vérifiez si le chemin du journal d'accès de nginx existe"
 
 #: src/language/generate.ts:29
 #, fuzzy
 msgid "Check if the nginx configuration directory exists"
 msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 #, fuzzy
 msgid "Check if the nginx configuration entry file exists"
 msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
-msgstr ""
+msgstr "Vérifier si le chemin du journal d'erreurs de nginx existe"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
-msgstr ""
+msgstr "Vérifier si le chemin du PID de Nginx existe"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 #, fuzzy
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 #, fuzzy
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 #, fuzzy
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "Vérifie si le nginx.conf inclus le répertoire streams-enabled."
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 #, fuzzy
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
@@ -811,7 +808,7 @@ msgstr ""
 "Vérifie si les répertoires sites-available et sites-enabled sont dans le "
 "répertoire de configuration nginx."
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 #, fuzzy
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
@@ -829,12 +826,12 @@ msgid "Cleaning environment variables"
 msgstr "Nettoyage des variables d'environnement"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "Effacer"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 #, fuzzy
 msgid "Cleared successfully"
@@ -923,14 +920,12 @@ msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "Le niveau de compression, 1 est le plus bas, 9 est le plus élevé"
 
 #: src/constants/errors/self_check.ts:17
-#, fuzzy
 msgid "Config directory not exist"
-msgstr "Erreur d'analyse de configuration Nginx"
+msgstr "Le répertoire de configuration n'existe pas"
 
 #: src/constants/errors/self_check.ts:18
-#, fuzzy
 msgid "Config entry file not exist"
-msgstr "Erreur d'analyse de configuration Nginx"
+msgstr "Le fichier d'entrée de configuration n'existe pas"
 
 #: src/constants/errors/backup.ts:14
 #, fuzzy
@@ -1070,7 +1065,7 @@ msgstr ""
 "téléchargés sur votre ordinateur."
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1247,11 +1242,10 @@ msgid "Destination file already exists"
 msgstr "Le fichier de destination existe déjà"
 
 #: src/constants/errors/config.ts:3
-#, fuzzy
 msgid "Destination file: {0} already exists"
-msgstr "Le fichier de destination existe déjà"
+msgstr "Fichier de destination : {0} existe déjà"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
 msgstr "Détails"
 
@@ -1261,7 +1255,7 @@ msgstr "Mode développement"
 
 #: src/views/preference/components/ExternalNotify/dingtalk.ts:5
 msgid "DingTalk"
-msgstr ""
+msgstr "DingTalk"
 
 #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:72
 msgid "Directive"
@@ -1285,47 +1279,40 @@ msgid "Directives"
 msgstr "Directives"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
-#, fuzzy
 msgid "Directory Levels"
-msgstr "Directives"
+msgstr "Niveaux de répertoire"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
-msgstr ""
+msgstr "Chemin du répertoire pour stocker les fichiers de cache"
 
 #: src/views/site/components/SiteStatusSegmented.vue:88
-#, fuzzy
 msgid "disable"
-msgstr "Désactivé"
+msgstr "Désactiver"
 
 #: src/views/stream/StreamList.vue:209
-#, fuzzy
 msgid "Disable"
-msgstr "Désactivé"
+msgstr "Désactiver"
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
 msgid "Disable auto-renewal failed for %{name}"
-msgstr "La désactivation du renouvellement automatique a échoué pour %{name}"
+msgstr "Échec de la désactivation du renouvellement automatique pour %{name}"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
-#, fuzzy
 msgid "Disable Remote Site Error"
-msgstr "Changer de certificat"
+msgstr "Erreur de désactivation du site distant"
 
 #: src/components/Notification/notifications.ts:101
-#, fuzzy
 msgid "Disable Remote Site Maintenance Error"
-msgstr "Changer de certificat"
+msgstr "Erreur de désactivation de la maintenance du site distant"
 
 #: src/components/Notification/notifications.ts:105
-#, fuzzy
 msgid "Disable Remote Site Maintenance Success"
-msgstr "Changer de certificat"
+msgstr "Désactivation de la maintenance du site distant réussie"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
-#, fuzzy
 msgid "Disable Remote Site Success"
-msgstr "Changer de certificat"
+msgstr "Site distant désactivé avec succès"
 
 #: src/components/Notification/notifications.ts:133
 #, fuzzy
@@ -1446,7 +1433,7 @@ msgstr "Voulez-vous supprimer ce serveur ?"
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1902,7 +1889,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Obtenir un certificat"
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "Obtenir un certificat"
@@ -2076,7 +2063,7 @@ msgstr "Erreur lecture nginx.conf"
 msgid "Failed to revoke certificate"
 msgstr "Obtenir un certificat"
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 #, fuzzy
 msgid "Failed to revoke certificate: %{error}"
 msgstr "Obtenir un certificat"
@@ -2308,7 +2295,7 @@ msgstr ""
 "Si votre domaine possède des entrées CNAME et que vous ne pouvez pas obtenir "
 "de certificats, activez cette option."
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 #, fuzzy
 msgid "Import"
 msgstr "Exporter"
@@ -2459,7 +2446,7 @@ msgstr "Format de la requête invalide"
 msgid "IP"
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 #, fuzzy
 msgid "Issue wildcard certificate"
 msgstr "Obtenir un certificat"
@@ -2556,7 +2543,7 @@ msgstr ""
 
 #: src/components/AutoCertForm/AutoCertForm.vue:104
 msgid "Lego disable CNAME Support"
-msgstr ""
+msgstr "Lego désactiver la prise en charge CNAME"
 
 #: src/views/system/About.vue:63
 #, fuzzy
@@ -2630,7 +2617,7 @@ msgstr "Localisations"
 msgid "Log"
 msgstr "Connexion"
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2931,7 +2918,7 @@ msgstr "Journal Nginx"
 msgid "Nginx Access Log Path"
 msgstr "Chemin du journal d'accès Nginx"
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 #, fuzzy
 msgid "Nginx access log path exists"
 msgstr "Chemin du journal d'accès Nginx"
@@ -2962,12 +2949,12 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr "Erreur d'analyse de configuration Nginx"
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 #, fuzzy
 msgid "Nginx configuration directory exists"
 msgstr "Erreur d'analyse de configuration Nginx"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 #, fuzzy
 msgid "Nginx configuration entry file exists"
 msgstr "Erreur d'analyse de configuration Nginx"
@@ -3010,7 +2997,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr "Chemin du journal des erreurs Nginx"
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 #, fuzzy
 msgid "Nginx error log path exists"
 msgstr "Chemin du journal des erreurs Nginx"
@@ -3050,7 +3037,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr "Chemin du journal des erreurs Nginx"
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 #, fuzzy
 msgid "Nginx PID path exists"
 msgstr "Chemin du journal des erreurs Nginx"
@@ -3118,27 +3105,27 @@ msgid ""
 "few seconds."
 msgstr "Erreur d'analyse de configuration Nginx"
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 #, fuzzy
 msgid "Nginx.conf includes conf.d directory"
 msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 #, fuzzy
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 #, fuzzy
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr "Vérifie si le nginx.conf inclus le répertoire streams-enabled."
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -3229,7 +3216,7 @@ msgstr ""
 msgid "Notification"
 msgstr "Certification"
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 #, fuzzy
 msgid "Notifications"
@@ -3282,7 +3269,7 @@ msgstr ""
 msgid "Off"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -3300,7 +3287,7 @@ msgstr ""
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3323,7 +3310,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3772,7 +3759,7 @@ msgstr "Note de version"
 msgid "Reload"
 msgstr "Recharger"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3806,7 +3793,7 @@ msgstr "Changer de certificat"
 msgid "Reload Remote Nginx Success"
 msgstr "Changer de certificat"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3828,7 +3815,7 @@ msgstr ""
 msgid "Remove successfully"
 msgstr "Enregistré avec succès"
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 #, fuzzy
 msgid "Removed successfully"
 msgstr "Enregistré avec succès"
@@ -3981,7 +3968,7 @@ msgstr ""
 msgid "Restart"
 msgstr "Redémarrer"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
@@ -4008,7 +3995,7 @@ msgstr "Changer de certificat"
 msgid "Restart Remote Nginx Success"
 msgstr "Changer de certificat"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -4323,7 +4310,7 @@ msgstr "Journaux du site"
 msgid "Site not found"
 msgstr "Fichier introuvable"
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 #, fuzzy
 msgid "Sites directory exists"
 msgstr "Directive"
@@ -4449,7 +4436,7 @@ msgstr "Auto Cert"
 msgid "Stream not found"
 msgstr "Fichier introuvable"
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 #, fuzzy
 msgid "Streams directory exists"
 msgstr "Directive"
@@ -4548,7 +4535,7 @@ msgstr "Changer de certificat"
 msgid "Sync Config Success"
 msgstr "Changer de certificat"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgstr ""
@@ -4615,7 +4602,6 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "Terminal"
 
@@ -4836,7 +4822,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr ""
 
@@ -5070,7 +5056,7 @@ msgstr "Version actuelle"
 msgid "View"
 msgstr "Voir"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 #, fuzzy
 msgid "View all notifications"
 msgstr "Certification"
@@ -5197,8 +5183,8 @@ msgstr "Écriture de la clé privée du certificat sur le disque"
 msgid "Writing certificate to disk"
 msgstr "Écriture du certificat sur le disque"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163
@@ -5211,6 +5197,8 @@ msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
 msgstr ""
+"Vous accédez à ce terminal via une connexion HTTP non sécurisée sur un "
+"domaine non localhost. Cela peut exposer des informations sensibles."
 
 #: src/views/system/Upgrade.vue:202
 msgid "You are using the latest version"

+ 100 - 100
app/src/language/ja_JP/app.po

@@ -13,43 +13,43 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: Weblate 5.6.2\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 "[Nginx UI] ACME ユーザー: %{name}、メール: %{email}、CA ディレクトリ: "
 "%{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr "[Nginx UI] 現在の証明書を後で失効させるためにバックアップ中"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "正常に削除しました"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "証明書の削除に成功しました"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 "[Nginx UI] サーバーで証明書が使用されました、サーバーのTLS証明書を再読み込み"
 "中"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "[Nginx UI] CA サーバーとの通信を容易にするクライアントを作成中"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "環境変数を削除する"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] 完了しました"
 
@@ -58,11 +58,11 @@ msgstr "[Nginx UI] 完了しました"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "証明書の削除に成功しました"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] 証明書を取得中"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] 証明書の失効準備中"
 
@@ -70,23 +70,23 @@ msgstr "[Nginx UI] 証明書の失効準備中"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Lego 設定の準備中"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Nginx を再読み込み中"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] 失効が完了しました"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] 証明書を失効中"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] 古い証明書を失効中"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] DNS01 チャレンジプロバイダーを設定中"
 
@@ -95,15 +95,15 @@ msgstr "[Nginx UI] DNS01 チャレンジプロバイダーを設定中"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "環境変数を削除する"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] HTTP01 チャレンジプロバイダーの設定"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] 証明書の秘密鍵をディスクに書き込んでいます"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] 証明書をディスクに書き込み中"
 
@@ -126,7 +126,7 @@ msgstr "アクセスログ"
 
 #: src/constants/errors/self_check.ts:21
 msgid "Access log path not exist"
-msgstr ""
+msgstr "アクセスログのパスが存在しません"
 
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
@@ -216,7 +216,7 @@ msgstr "アドバンスモード"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr "その後、このページを更新し、再度パスキーを追加をクリックしてください。"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "すべて"
@@ -288,7 +288,7 @@ msgstr "削除してもよろしいですか?"
 msgid "Are you sure you want to apply to all selected?"
 msgstr "削除してもよろしいですか?"
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 msgid "Are you sure you want to clear all notifications?"
 msgstr "すべての通知をクリアしてもよろしいですか?"
@@ -314,7 +314,7 @@ msgstr "削除してもよろしいですか?"
 msgid "Are you sure you want to recover this item?"
 msgstr "このアイテムを復元してもよろしいですか?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "このアイテムを削除してもよろしいですか?"
@@ -331,7 +331,7 @@ msgstr "このアイテムを削除してもよろしいですか?"
 msgid "Are you sure you want to remove this location?"
 msgstr "このLocationを削除してもよろしいですか?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "このアイテムを削除してもよろしいですか?"
@@ -394,11 +394,11 @@ msgstr "%{name}の自動更新が有効になっています"
 #: src/views/certificate/components/RenewCert.vue:49
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:84
 msgid "AutoCert is running, please wait..."
-msgstr ""
+msgstr "AutoCert が実行中です。お待ちください..."
 
 #: src/components/ProcessingStatus/ProcessingStatus.vue:39
 msgid "AutoCert is running..."
-msgstr ""
+msgstr "\"AutoCert が実行中...\""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:332
 msgid "Automatic Restart"
@@ -629,7 +629,7 @@ msgstr "証明書の有効期限が切れました"
 msgid "Certificate Expiring Soon"
 msgstr "証明書の有効期限が近づいています"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgstr "証明書のデコードエラー"
@@ -656,7 +656,7 @@ msgstr "証明書更新間隔"
 msgid "Certificate renewed successfully"
 msgstr "正常に削除しました"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgstr "証明書の削除に成功しました"
@@ -668,7 +668,7 @@ msgid_plural "Certificates Status"
 msgstr[0] "証明書のステータス"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 msgid "Certificates"
 msgstr "証明書"
 
@@ -723,48 +723,48 @@ msgstr ""
 "HTTPS が有効かどうかを確認します。localhost 以外で HTTP を使用すると安全では"
 "なく、Passkeys やクリップボード機能の使用が妨げられます。"
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
-msgstr ""
+msgstr "Docker ソケットが存在するか確認してください。"
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
-msgstr ""
+msgstr "Nginx のアクセスログパスが存在するか確認する"
 
 #: src/language/generate.ts:29
 #, fuzzy
 msgid "Check if the nginx configuration directory exists"
 msgstr "nginx.conf に conf.d ディレクトリが含まれているか確認します。"
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 #, fuzzy
 msgid "Check if the nginx configuration entry file exists"
 msgstr "nginx.conf に conf.d ディレクトリが含まれているか確認します。"
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
-msgstr ""
+msgstr "Nginx のエラーログパスが存在するか確認する"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
-msgstr ""
+msgstr "Nginx の PID パスが存在するか確認する"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 #, fuzzy
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "nginx.conf に conf.d ディレクトリが含まれているか確認します。"
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 #, fuzzy
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "nginx.conf に sites-enabled ディレクトリが含まれているか確認します。"
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 #, fuzzy
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "nginx.conf に streams-enabled ディレクトリが含まれているか確認します。"
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 #, fuzzy
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
@@ -773,7 +773,7 @@ msgstr ""
 "sites-available と sites-enabled ディレクトリが nginx の設定ディレクトリ配下"
 "にあるか確認します。"
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 #, fuzzy
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
@@ -791,12 +791,12 @@ msgid "Cleaning environment variables"
 msgstr "環境変数を削除する"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "削除"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 msgid "Cleared successfully"
 msgstr "正常に削除しました"
@@ -881,11 +881,11 @@ msgstr "圧縮レベル、1は最も低く、9は最高です"
 
 #: src/constants/errors/self_check.ts:17
 msgid "Config directory not exist"
-msgstr ""
+msgstr "設定ディレクトリが存在しません"
 
 #: src/constants/errors/self_check.ts:18
 msgid "Config entry file not exist"
-msgstr ""
+msgstr "設定エントリファイルが存在しません"
 
 #: src/constants/errors/backup.ts:14
 #, fuzzy
@@ -1020,7 +1020,7 @@ msgstr ""
 "プファイルは自動的にコンピュータにダウンロードされます。"
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1180,15 +1180,15 @@ msgstr "説明"
 
 #: src/constants/errors/site.ts:3 src/constants/errors/stream.ts:3
 msgid "Destination file already exists"
-msgstr ""
+msgstr "宛先ファイルは既に存在します"
 
 #: src/constants/errors/config.ts:3
 msgid "Destination file: {0} already exists"
-msgstr ""
+msgstr "宛先ファイル: {0} は既に存在します"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
-msgstr ""
+msgstr "詳細"
 
 #: src/views/system/About.vue:28
 msgid "Development Mode"
@@ -1196,7 +1196,7 @@ msgstr "開発モード"
 
 #: src/views/preference/components/ExternalNotify/dingtalk.ts:5
 msgid "DingTalk"
-msgstr ""
+msgstr "ディンタオク"
 
 #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:72
 msgid "Directive"
@@ -1204,56 +1204,55 @@ msgstr "ディレクティブ"
 
 #: src/constants/errors/nginx_log.ts:6
 msgid "Directive params is empty"
-msgstr ""
+msgstr "ディレクティブのパラメータが空です"
 
 #: src/constants/errors/nginx_log.ts:5
 msgid "Directive.Params neither access_log nor error_log"
-msgstr ""
+msgstr "ディレクティブのパラメータは access_log でも error_log でもありません"
 
 #: src/constants/errors/nginx_log.ts:4
 msgid "DirectiveIdx out of range"
-msgstr ""
+msgstr "DirectiveIdx が範囲外です"
 
 #: src/components/NgxConfigEditor/directive/DirectiveEditor.vue:38
 msgid "Directives"
 msgstr "ディレクティブ"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
-#, fuzzy
 msgid "Directory Levels"
-msgstr "ディレクトリ"
+msgstr "ディレクトリレベル"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
-msgstr ""
+msgstr "キャッシュファイルを保存するディレクトリパス"
 
 #: src/views/site/components/SiteStatusSegmented.vue:88
 msgid "disable"
-msgstr ""
+msgstr "無効化"
 
 #: src/views/stream/StreamList.vue:209
 msgid "Disable"
-msgstr ""
+msgstr "無効化"
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
 msgid "Disable auto-renewal failed for %{name}"
-msgstr ""
+msgstr "%{name} の自動更新の無効化に失敗しました"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
 msgid "Disable Remote Site Error"
-msgstr ""
+msgstr "リモートサイトの無効化エラー"
 
 #: src/components/Notification/notifications.ts:101
 msgid "Disable Remote Site Maintenance Error"
-msgstr ""
+msgstr "リモートサイトメンテナンスの無効化エラー"
 
 #: src/components/Notification/notifications.ts:105
 msgid "Disable Remote Site Maintenance Success"
-msgstr ""
+msgstr "リモートサイトのメンテナンスを無効化しました"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
 msgid "Disable Remote Site Success"
-msgstr ""
+msgstr "リモートサイトの無効化に成功しました"
 
 #: src/components/Notification/notifications.ts:133
 msgid "Disable Remote Stream Error"
@@ -1362,7 +1361,7 @@ msgstr ""
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1762,7 +1761,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr ""
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 msgid "Failed to delete certificate from database: %{error}"
 msgstr ""
 
@@ -1906,7 +1905,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgstr ""
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 msgid "Failed to revoke certificate: %{error}"
 msgstr ""
 
@@ -2113,7 +2112,7 @@ msgid ""
 "need to enable this option."
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr ""
 
@@ -2254,7 +2253,7 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 msgid "Issue wildcard certificate"
 msgstr ""
 
@@ -2342,7 +2341,7 @@ msgstr ""
 
 #: src/components/AutoCertForm/AutoCertForm.vue:104
 msgid "Lego disable CNAME Support"
-msgstr ""
+msgstr "Lego CNAME サポートを無効にする"
 
 #: src/views/system/About.vue:63
 msgid "License"
@@ -2409,7 +2408,7 @@ msgstr ""
 msgid "Log"
 msgstr ""
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2694,7 +2693,7 @@ msgstr ""
 msgid "Nginx Access Log Path"
 msgstr ""
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 msgid "Nginx access log path exists"
 msgstr ""
 
@@ -2722,12 +2721,12 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr ""
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 #, fuzzy
 msgid "Nginx configuration directory exists"
 msgstr "設定"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 #, fuzzy
 msgid "Nginx configuration entry file exists"
 msgstr "設定"
@@ -2768,7 +2767,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr ""
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 msgid "Nginx error log path exists"
 msgstr ""
 
@@ -2805,7 +2804,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr ""
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 msgid "Nginx PID path exists"
 msgstr ""
 
@@ -2865,27 +2864,27 @@ msgid ""
 "few seconds."
 msgstr ""
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 #, fuzzy
 msgid "Nginx.conf includes conf.d directory"
 msgstr "nginx.conf に conf.d ディレクトリが含まれているか確認します。"
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 #, fuzzy
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr "nginx.conf に sites-enabled ディレクトリが含まれているか確認します。"
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 #, fuzzy
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr "nginx.conf に streams-enabled ディレクトリが含まれているか確認します。"
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -2969,7 +2968,7 @@ msgstr ""
 msgid "Notification"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 msgid "Notifications"
 msgstr ""
@@ -3020,7 +3019,7 @@ msgstr ""
 msgid "Off"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -3038,7 +3037,7 @@ msgstr ""
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3061,7 +3060,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3488,7 +3487,7 @@ msgstr ""
 msgid "Reload"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3516,7 +3515,7 @@ msgstr ""
 msgid "Reload Remote Nginx Success"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3537,7 +3536,7 @@ msgstr ""
 msgid "Remove successfully"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 msgid "Removed successfully"
 msgstr ""
 
@@ -3669,7 +3668,7 @@ msgstr ""
 msgid "Restart"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 msgid "Restart Nginx"
@@ -3691,7 +3690,7 @@ msgstr ""
 msgid "Restart Remote Nginx Success"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -3986,7 +3985,7 @@ msgstr ""
 msgid "Site not found"
 msgstr ""
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 #, fuzzy
 msgid "Sites directory exists"
 msgstr "ディレクトリ"
@@ -4100,7 +4099,7 @@ msgstr ""
 msgid "Stream not found"
 msgstr ""
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 #, fuzzy
 msgid "Streams directory exists"
 msgstr "ディレクトリ"
@@ -4187,7 +4186,7 @@ msgstr ""
 msgid "Sync Config Success"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgstr ""
@@ -4250,7 +4249,6 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "ターミナル"
 
@@ -4455,7 +4453,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr ""
 
@@ -4679,7 +4677,7 @@ msgstr "バージョン"
 msgid "View"
 msgstr "ビュー"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 msgid "View all notifications"
 msgstr "すべての通知を表示します"
 
@@ -4801,8 +4799,8 @@ msgstr ""
 msgid "Writing certificate to disk"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163
@@ -4815,6 +4813,8 @@ msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
 msgstr ""
+"あなたは非localhostドメインで安全でないHTTP接続を介してこのターミナルにアクセ"
+"スしています。これにより機密情報が漏洩する可能性があります。"
 
 #: src/views/system/Upgrade.vue:202
 msgid "You are using the latest version"

+ 96 - 104
app/src/language/ko_KR/app.po

@@ -14,42 +14,42 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Weblate 5.10.4\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 "[Nginx UI] ACME 사용자: %{name}, 이메일: %{email}, CA 디렉터리: %{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr "[Nginx UI] 현재 인증서를 나중에 취소하기 위해 백업 중"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "성공적으로 제거됨"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Nginx가 성공적으로 재시작됨"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 "[Nginx UI] 서버에 인증서가 사용되었습니다, 서버 TLS 인증서 다시 불러오는 중"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "클라이언트 생성은 CA 서버와의 통신을 용이하게 합니다"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "환경 변수 설정"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] 완료됨"
 
@@ -58,11 +58,11 @@ msgstr "[Nginx UI] 완료됨"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "성공적으로 활성화됨"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] 인증서 획득 중"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] 인증서 해지 준비 중"
 
@@ -70,23 +70,23 @@ msgstr "[Nginx UI] 인증서 해지 준비 중"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] 레고 구성 준비 중"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Nginx 다시 로드 중"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] 해지 완료"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] 인증서 취소 중"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] 이전 인증서 취소 중"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] DNS01 챌린지 공급자 설정 중"
 
@@ -95,15 +95,15 @@ msgstr "[Nginx UI] DNS01 챌린지 공급자 설정 중"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "환경 변수 설정"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] HTTP01 챌린지 공급자 설정 중"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] 인증서 개인 키를 디스크에 기록 중"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] 인증서를 디스크에 작성 중"
 
@@ -126,7 +126,7 @@ msgstr "접근 로그"
 
 #: src/constants/errors/self_check.ts:21
 msgid "Access log path not exist"
-msgstr ""
+msgstr "액세스 로그 경로가 존재하지 않습니다"
 
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
@@ -216,7 +216,7 @@ msgstr "고급 모드"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr "이후에 이 페이지를 새로 고치고 패스키 추가를 다시 클릭하세요."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "모두"
@@ -284,7 +284,7 @@ msgstr "2FA를 재설정하시겠습니까?"
 msgid "Are you sure you want to apply to all selected?"
 msgstr "선택한 모든 항목에 적용하시겠습니까?"
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 msgid "Are you sure you want to clear all notifications?"
 msgstr "모든 알림을 지우시겠습니까?"
@@ -310,7 +310,7 @@ msgstr "정말 삭제하시겠습니까?"
 msgid "Are you sure you want to recover this item?"
 msgstr "정말로 이 항목을 복구하시겠습니까?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "다음 동기화 노드에서 Nginx를 다시 로드하시겠습니까?"
 
@@ -326,7 +326,7 @@ msgstr "이 항목을 제거하시겠습니까?"
 msgid "Are you sure you want to remove this location?"
 msgstr "이 위치를 제거하시겠습니까?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "다음 동기화 노드에서 Nginx를 다시 시작하시겠습니까?"
 
@@ -386,13 +386,12 @@ msgstr "%{name}에 대한 자동 갱신 활성화됨"
 
 #: src/views/certificate/components/RenewCert.vue:49
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:84
-#, fuzzy
 msgid "AutoCert is running, please wait..."
-msgstr "이 자동 인증 항목이 유효하지 않습니다. 제거해주세요."
+msgstr "AutoCert가 실행 중입니다. 잠시 기다려 주세요..."
 
 #: src/components/ProcessingStatus/ProcessingStatus.vue:39
 msgid "AutoCert is running..."
-msgstr ""
+msgstr "\"AutoCert 실행 중...\""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:332
 msgid "Automatic Restart"
@@ -624,7 +623,7 @@ msgstr "인증서 만료됨"
 msgid "Certificate Expiring Soon"
 msgstr "인증서 만료 임박"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgstr "인증서 디코드 오류"
@@ -651,7 +650,7 @@ msgstr "인증서 갱신 간격"
 msgid "Certificate renewed successfully"
 msgstr "성공적으로 제거됨"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgstr "인증서가 성공적으로 제거되었습니다"
@@ -664,7 +663,7 @@ msgstr[0] "인증서 상태"
 msgstr[1] "인증서 상태"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 msgid "Certificates"
 msgstr "인증서"
 
@@ -722,48 +721,48 @@ msgstr ""
 "HTTPS가 활성화되었는지 확인하세요. localhost 외부에서 HTTP를 사용하는 것은 안"
 "전하지 않으며 Passkeys 및 클립보드 기능 사용을 방해요."
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
-msgstr ""
+msgstr "Docker 소켓이 존재하는지 확인하세요."
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
-msgstr ""
+msgstr "Nginx 액세스 로그 경로가 존재하는지 확인"
 
 #: src/language/generate.ts:29
 #, fuzzy
 msgid "Check if the nginx configuration directory exists"
 msgstr "nginx.conf에 conf.d 디렉터리가 포함되어 있는지 확인하세요."
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 #, fuzzy
 msgid "Check if the nginx configuration entry file exists"
 msgstr "nginx.conf에 conf.d 디렉터리가 포함되어 있는지 확인하세요."
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
-msgstr ""
+msgstr "Nginx 오류 로그 경로가 존재하는지 확인"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
-msgstr ""
+msgstr "Nginx PID 경로가 존재하는지 확인"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 #, fuzzy
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "nginx.conf에 conf.d 디렉터리가 포함되어 있는지 확인하세요."
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 #, fuzzy
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "nginx.conf에 sites-enabled 디렉터리가 포함되어 있는지 확인하세요."
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 #, fuzzy
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "nginx.conf에 streams-enabled 디렉터리가 포함되어 있는지 확인하세요."
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 #, fuzzy
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
@@ -772,7 +771,7 @@ msgstr ""
 "sites-available 및 sites-enabled 디렉터리가 nginx 구성 디렉터리 아래에 있는"
 "지 확인합니다."
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 #, fuzzy
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
@@ -790,12 +789,12 @@ msgid "Cleaning environment variables"
 msgstr "환경 변수 정리"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "클리어"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 msgid "Cleared successfully"
 msgstr "성공적으로 제거됨"
@@ -878,14 +877,12 @@ msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "압축 수준, 1은 가장 낮고 9는 가장 높습니다"
 
 #: src/constants/errors/self_check.ts:17
-#, fuzzy
 msgid "Config directory not exist"
-msgstr "Nginx 구성 오류름"
+msgstr "구성 디렉터리가 존재하지 않습니다"
 
 #: src/constants/errors/self_check.ts:18
-#, fuzzy
 msgid "Config entry file not exist"
-msgstr "Nginx 구성 오류름"
+msgstr "구성 항목 파일이 존재하지 않습니다"
 
 #: src/constants/errors/backup.ts:14
 #, fuzzy
@@ -1020,7 +1017,7 @@ msgstr ""
 "동으로 컴퓨터에 다운로드됩니다."
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1188,13 +1185,13 @@ msgstr "설명"
 
 #: src/constants/errors/site.ts:3 src/constants/errors/stream.ts:3
 msgid "Destination file already exists"
-msgstr ""
+msgstr "대상 파일이 이미 존재합니다"
 
 #: src/constants/errors/config.ts:3
 msgid "Destination file: {0} already exists"
-msgstr ""
+msgstr "대상 파일: {0} 이미 존재합니다"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
 msgstr "세부 사항"
 
@@ -1204,7 +1201,7 @@ msgstr "개발 모드"
 
 #: src/views/preference/components/ExternalNotify/dingtalk.ts:5
 msgid "DingTalk"
-msgstr ""
+msgstr "딩톡"
 
 #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:72
 msgid "Directive"
@@ -1212,31 +1209,29 @@ msgstr "지시문"
 
 #: src/constants/errors/nginx_log.ts:6
 msgid "Directive params is empty"
-msgstr ""
+msgstr "지시어 매개변수가 비어 있습니다"
 
 #: src/constants/errors/nginx_log.ts:5
 msgid "Directive.Params neither access_log nor error_log"
-msgstr ""
+msgstr "지시자 매개변수가 access_log도 error_log도 아님"
 
 #: src/constants/errors/nginx_log.ts:4
 msgid "DirectiveIdx out of range"
-msgstr ""
+msgstr "DirectiveIdx 범위를 벗어남"
 
 #: src/components/NgxConfigEditor/directive/DirectiveEditor.vue:38
 msgid "Directives"
 msgstr "지시문들"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
-#, fuzzy
 msgid "Directory Levels"
-msgstr "지시문들"
+msgstr "디렉토리 레벨"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
-msgstr ""
+msgstr "캐시 파일을 저장할 디렉터리 경로"
 
 #: src/views/site/components/SiteStatusSegmented.vue:88
-#, fuzzy
 msgid "disable"
 msgstr "비활성화"
 
@@ -1249,24 +1244,20 @@ msgid "Disable auto-renewal failed for %{name}"
 msgstr "%{name}의 자동 갱신 비활성화 실패"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
-#, fuzzy
 msgid "Disable Remote Site Error"
-msgstr "인증서 갱신 오류"
+msgstr "원격 사이트 비활성화 오류"
 
 #: src/components/Notification/notifications.ts:101
-#, fuzzy
 msgid "Disable Remote Site Maintenance Error"
-msgstr "인증서 갱신 오류"
+msgstr "원격 사이트 유지 관리 비활성화 오류"
 
 #: src/components/Notification/notifications.ts:105
-#, fuzzy
 msgid "Disable Remote Site Maintenance Success"
-msgstr "인증서 갱신 성공"
+msgstr "원격 사이트 유지 관리 비활성화 성공"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
-#, fuzzy
 msgid "Disable Remote Site Success"
-msgstr "인증서 갱신 성공"
+msgstr "원격 사이트 비활성화 성공"
 
 #: src/components/Notification/notifications.ts:133
 #, fuzzy
@@ -1383,7 +1374,7 @@ msgstr "이 업스트림을 제거하시겠습니까?"
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1828,7 +1819,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "인증서 획득 실패"
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "인증서 획득 실패"
@@ -1996,7 +1987,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgstr "인증서 획득 실패"
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 #, fuzzy
 msgid "Failed to revoke certificate: %{error}"
 msgstr "인증서 획득 실패"
@@ -2214,7 +2205,7 @@ msgid ""
 "need to enable this option."
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr "가져오기"
 
@@ -2364,7 +2355,7 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 #, fuzzy
 msgid "Issue wildcard certificate"
 msgstr "인증서 유효"
@@ -2459,7 +2450,7 @@ msgstr ""
 
 #: src/components/AutoCertForm/AutoCertForm.vue:104
 msgid "Lego disable CNAME Support"
-msgstr ""
+msgstr "Lego CNAME 지원 비활성화"
 
 #: src/views/system/About.vue:63
 #, fuzzy
@@ -2531,7 +2522,7 @@ msgstr "위치들"
 msgid "Log"
 msgstr "로그인"
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2837,7 +2828,7 @@ msgstr "Nginx"
 msgid "Nginx Access Log Path"
 msgstr "Nginx 접근 로그 경로"
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 #, fuzzy
 msgid "Nginx access log path exists"
 msgstr "Nginx 접근 로그 경로"
@@ -2868,12 +2859,12 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr "Nginx 구성 오류름"
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 #, fuzzy
 msgid "Nginx configuration directory exists"
 msgstr "Nginx 구성 오류름"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 #, fuzzy
 msgid "Nginx configuration entry file exists"
 msgstr "Nginx 구성 오류름"
@@ -2917,7 +2908,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr "Nginx 오류 로그 경로"
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 #, fuzzy
 msgid "Nginx error log path exists"
 msgstr "Nginx 오류 로그 경로"
@@ -2956,7 +2947,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr "Nginx 오류 로그 경로"
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 #, fuzzy
 msgid "Nginx PID path exists"
 msgstr "Nginx 오류 로그 경로"
@@ -3025,27 +3016,27 @@ msgid ""
 "few seconds."
 msgstr "Nginx 구성 오류름"
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 #, fuzzy
 msgid "Nginx.conf includes conf.d directory"
 msgstr "터미널 시작 명령"
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 #, fuzzy
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr "nginx.conf에 sites-enabled 디렉터리가 포함되어 있는지 확인하세요."
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 #, fuzzy
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr "nginx.conf에 streams-enabled 디렉터리가 포함되어 있는지 확인하세요."
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -3135,7 +3126,7 @@ msgstr ""
 msgid "Notification"
 msgstr "알림"
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 #, fuzzy
 msgid "Notifications"
@@ -3190,7 +3181,7 @@ msgstr ""
 msgid "Off"
 msgstr "오프라인"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -3208,7 +3199,7 @@ msgstr ""
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3231,7 +3222,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgstr "검증이 완료되면, 레코드는 제거됩니다."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3679,7 +3670,7 @@ msgstr "릴리스 노트"
 msgid "Reload"
 msgstr "리로드"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3713,7 +3704,7 @@ msgstr "인증서 갱신 오류"
 msgid "Reload Remote Nginx Success"
 msgstr "인증서 갱신 성공"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3735,7 +3726,7 @@ msgstr ""
 msgid "Remove successfully"
 msgstr "성공적으로 제거됨"
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 #, fuzzy
 msgid "Removed successfully"
 msgstr "성공적으로 제거됨"
@@ -3888,7 +3879,7 @@ msgstr ""
 msgid "Restart"
 msgstr "재시작"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
@@ -3915,7 +3906,7 @@ msgstr "인증서 갱신 오류"
 msgid "Restart Remote Nginx Success"
 msgstr "인증서 갱신 성공"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -4230,7 +4221,7 @@ msgstr "사이트 로그"
 msgid "Site not found"
 msgstr "파일을 찾을 수 없음"
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 #, fuzzy
 msgid "Sites directory exists"
 msgstr "디렉토리"
@@ -4355,7 +4346,7 @@ msgstr "비활성화됨"
 msgid "Stream not found"
 msgstr "파일을 찾을 수 없음"
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 #, fuzzy
 msgid "Streams directory exists"
 msgstr "디렉토리"
@@ -4452,7 +4443,7 @@ msgstr "인증서 갱신 오류"
 msgid "Sync Config Success"
 msgstr "인증서 갱신 성공"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgstr ""
@@ -4518,7 +4509,6 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "터미널"
 
@@ -4736,7 +4726,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr "제목"
 
@@ -4971,7 +4961,7 @@ msgstr "현재 버전"
 msgid "View"
 msgstr "보기"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 #, fuzzy
 msgid "View all notifications"
 msgstr "Certificate is valid"
@@ -5101,8 +5091,8 @@ msgstr "인증서 개인 키를 디스크에 쓰기"
 msgid "Writing certificate to disk"
 msgstr "인증서를 디스크에 쓰기"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163
@@ -5115,6 +5105,8 @@ msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
 msgstr ""
+"비 로컬호스트 도메인에서 안전하지 않은 HTTP 연결을 통해 이 터미널에 접속하고 "
+"있습니다. 이로 인해 민감한 정보가 노출될 수 있습니다."
 
 #: src/views/system/Upgrade.vue:202
 msgid "You are using the latest version"

+ 72 - 73
app/src/language/messages.pot

@@ -2,35 +2,35 @@ msgid ""
 msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr ""
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr ""
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr ""
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr ""
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr ""
 
@@ -38,11 +38,11 @@ msgstr ""
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr ""
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr ""
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr ""
 
@@ -50,23 +50,23 @@ msgstr ""
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr ""
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr ""
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr ""
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr ""
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr ""
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr ""
 
@@ -74,15 +74,15 @@ msgstr ""
 msgid "[Nginx UI] Setting environment variables"
 msgstr ""
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr ""
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr ""
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr ""
 
@@ -198,7 +198,7 @@ msgstr ""
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr ""
@@ -264,7 +264,7 @@ msgstr ""
 msgid "Are you sure you want to apply to all selected?"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 msgid "Are you sure you want to clear all notifications?"
 msgstr ""
@@ -290,7 +290,7 @@ msgstr ""
 msgid "Are you sure you want to recover this item?"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr ""
 
@@ -306,7 +306,7 @@ msgstr ""
 msgid "Are you sure you want to remove this location?"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr ""
 
@@ -594,7 +594,7 @@ msgstr ""
 msgid "Certificate Expiring Soon"
 msgstr ""
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 msgid "Certificate not found: %{error}"
 msgstr ""
 
@@ -619,7 +619,7 @@ msgstr ""
 msgid "Certificate renewed successfully"
 msgstr ""
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 msgid "Certificate revoked successfully"
 msgstr ""
 
@@ -631,7 +631,7 @@ msgstr[0] ""
 msgstr[1] ""
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 msgid "Certificates"
 msgstr ""
 
@@ -681,11 +681,11 @@ msgstr ""
 msgid "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and prevents using Passkeys and clipboard features"
 msgstr ""
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
 msgstr ""
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
 msgstr ""
 
@@ -693,35 +693,35 @@ msgstr ""
 msgid "Check if the nginx configuration directory exists"
 msgstr ""
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 msgid "Check if the nginx configuration entry file exists"
 msgstr ""
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
 msgstr ""
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
 msgstr ""
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr ""
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr ""
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr ""
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 msgid "Check if the sites-available and sites-enabled directories are under the nginx configuration directory"
 msgstr ""
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 msgid "Check if the streams-available and streams-enabled directories are under the nginx configuration directory"
 msgstr ""
 
@@ -734,12 +734,12 @@ msgid "Cleaning environment variables"
 msgstr ""
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 msgid "Cleared successfully"
 msgstr ""
@@ -951,7 +951,7 @@ msgid "Create system backups including Nginx configuration and Nginx UI settings
 msgstr ""
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1117,7 +1117,7 @@ msgstr ""
 msgid "Destination file: {0} already exists"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
 msgstr ""
 
@@ -1294,7 +1294,7 @@ msgstr ""
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1697,7 +1697,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr ""
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 msgid "Failed to delete certificate from database: %{error}"
 msgstr ""
 
@@ -1841,7 +1841,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgstr ""
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 msgid "Failed to revoke certificate: %{error}"
 msgstr ""
 
@@ -2039,7 +2039,7 @@ msgstr ""
 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
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr ""
 
@@ -2177,7 +2177,7 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 msgid "Issue wildcard certificate"
 msgstr ""
 
@@ -2326,7 +2326,7 @@ msgstr ""
 msgid "Log"
 msgstr ""
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid "Log file %{log_path} is not a regular file. If you are using nginx-ui in docker container, please refer to https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information."
 msgstr ""
 
@@ -2607,7 +2607,7 @@ msgstr ""
 msgid "Nginx Access Log Path"
 msgstr ""
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 msgid "Nginx access log path exists"
 msgstr ""
 
@@ -2635,11 +2635,11 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr ""
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 msgid "Nginx configuration directory exists"
 msgstr ""
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 msgid "Nginx configuration entry file exists"
 msgstr ""
 
@@ -2677,7 +2677,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr ""
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 msgid "Nginx error log path exists"
 msgstr ""
 
@@ -2715,7 +2715,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr ""
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 msgid "Nginx PID path exists"
 msgstr ""
 
@@ -2775,24 +2775,24 @@ msgstr ""
 msgid "Nginx UI configuration has been restored and will restart automatically in a few seconds."
 msgstr ""
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 msgid "Nginx.conf includes conf.d directory"
 msgstr ""
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr ""
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr ""
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -2873,7 +2873,7 @@ msgstr ""
 msgid "Notification"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 msgid "Notifications"
 msgstr ""
@@ -2922,7 +2922,7 @@ msgstr ""
 msgid "Off"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -2940,7 +2940,7 @@ msgstr ""
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -2963,7 +2963,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3370,7 +3370,7 @@ msgstr ""
 msgid "Reload"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3398,7 +3398,7 @@ msgstr ""
 msgid "Reload Remote Nginx Success"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3419,7 +3419,7 @@ msgstr ""
 msgid "Remove successfully"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 msgid "Removed successfully"
 msgstr ""
 
@@ -3549,7 +3549,7 @@ msgstr ""
 msgid "Restart"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 msgid "Restart Nginx"
@@ -3571,7 +3571,7 @@ msgstr ""
 msgid "Restart Remote Nginx Success"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -3857,7 +3857,7 @@ msgstr ""
 msgid "Site not found"
 msgstr ""
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 msgid "Sites directory exists"
 msgstr ""
 
@@ -3972,7 +3972,7 @@ msgstr ""
 msgid "Stream not found"
 msgstr ""
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 msgid "Streams directory exists"
 msgstr ""
 
@@ -4059,7 +4059,7 @@ msgstr ""
 msgid "Sync Config Success"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgstr ""
@@ -4119,7 +4119,6 @@ msgstr ""
 
 #: src/routes/modules/terminal.ts:10
 #: src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr ""
 
@@ -4289,7 +4288,7 @@ msgstr ""
 msgid "Tips: You can increase the concurrency processing capacity by increasing worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr ""
 
@@ -4503,7 +4502,7 @@ msgstr ""
 msgid "View"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 msgid "View all notifications"
 msgstr ""
 
@@ -4612,8 +4611,8 @@ msgstr ""
 msgid "Writing certificate to disk"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163

+ 99 - 103
app/src/language/pt_PT/app.po

@@ -12,45 +12,45 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
 "X-Generator: Weblate 5.6.2\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 "[Nginx UI] Utilizador ACME: %{name}, Email: %{email}, Diretório CA: %{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 "[Nginx UI] A fazer cópia de segurança do certificado atual para posterior "
 "revogação"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Limpo com sucesso"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Nginx reiniciado com sucesso"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 "[Nginx UI] O certificado foi usado para o servidor, a recarregar o "
 "certificado TLS do servidor"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "Criar cliente facilita comunicação com o servidor CA"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Variáveis de ambiente limpas"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Concluído"
 
@@ -59,11 +59,11 @@ msgstr "[Nginx UI] Concluído"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Certificado emitido com sucesso"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] A obter certificado"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Preparando para a revogação do certificado"
 
@@ -71,23 +71,23 @@ msgstr "[Nginx UI] Preparando para a revogação do certificado"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] A preparar configurações do lego"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] A recarregar o nginx"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] Revogação concluída"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Revogar certificado"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Revogar certificado antigo"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] A configurar o fornecedor de desafio DNS01"
 
@@ -96,15 +96,15 @@ msgstr "[Nginx UI] A configurar o fornecedor de desafio DNS01"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Definindo variáveis de ambiente"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] A configurar o fornecedor de desafio HTTP01"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] A gravar a chave privada do certificado no disco"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] A escrever o certificado no disco"
 
@@ -127,7 +127,7 @@ msgstr "Logs de Acesso"
 
 #: src/constants/errors/self_check.ts:21
 msgid "Access log path not exist"
-msgstr ""
+msgstr "O caminho do registo de acesso não existe"
 
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
@@ -218,7 +218,7 @@ msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 "Depois, atualize esta página e clique em adicionar chave de acesso novamente."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "Todos"
@@ -290,7 +290,7 @@ msgstr "Tem certeza que pretende eliminar?"
 msgid "Are you sure you want to apply to all selected?"
 msgstr "Tem certeza que pretende eliminar?"
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 msgid "Are you sure you want to clear all notifications?"
 msgstr "Tem certeza que pretende limpar todas notificações?"
@@ -316,7 +316,7 @@ msgstr "Tem certeza que pretende eliminar?"
 msgid "Are you sure you want to recover this item?"
 msgstr "Tem certeza que pretende recuperar este item?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "Tem certeza que pretende eliminar este item?"
@@ -333,7 +333,7 @@ msgstr "Tem certeza que pretende eliminar este item?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Tem certeza que pretende eliminar este local?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "Tem certeza que pretende eliminar este item?"
@@ -395,13 +395,12 @@ msgstr "Renovação automática activada para %{name}"
 
 #: src/views/certificate/components/RenewCert.vue:49
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:84
-#, fuzzy
 msgid "AutoCert is running, please wait..."
-msgstr "Este item Auto Cert é inválido, por favor remova-o."
+msgstr "O AutoCert está em execução, aguarde..."
 
 #: src/components/ProcessingStatus/ProcessingStatus.vue:39
 msgid "AutoCert is running..."
-msgstr ""
+msgstr "\"AutoCert está em execução...\""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:332
 msgid "Automatic Restart"
@@ -638,7 +637,7 @@ msgstr "Certificado expirado"
 msgid "Certificate Expiring Soon"
 msgstr "Certificado a expirar em breve"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgstr "Erro de descodificação do certificado"
@@ -665,7 +664,7 @@ msgstr "Intervalo de Renovação do Certificado"
 msgid "Certificate renewed successfully"
 msgstr "Limpo com sucesso"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgstr "Certificado removido com sucesso"
@@ -678,7 +677,7 @@ msgstr[0] "Estado do Certificado"
 msgstr[1] "Estado dos Certificados"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 msgid "Certificates"
 msgstr "Certificados"
 
@@ -734,48 +733,48 @@ msgstr ""
 "Verifique se o HTTPS está ativado. Usar HTTP fora do localhost é inseguro e "
 "impede a utilização de Passkeys e funcionalidades da área de transferência."
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
-msgstr ""
+msgstr "Verifique se o socket do Docker existe."
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
-msgstr ""
+msgstr "Verificar se o caminho do registo de acesso do nginx existe"
 
 #: src/language/generate.ts:29
 #, fuzzy
 msgid "Check if the nginx configuration directory exists"
 msgstr "Verifique se o nginx.conf inclui o diretório conf.d."
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 #, fuzzy
 msgid "Check if the nginx configuration entry file exists"
 msgstr "Verifique se o nginx.conf inclui o diretório conf.d."
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
-msgstr ""
+msgstr "Verificar se o caminho do registo de erros do nginx existe"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
-msgstr ""
+msgstr "Verificar se o caminho do PID do Nginx existe"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 #, fuzzy
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "Verifique se o nginx.conf inclui o diretório conf.d."
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 #, fuzzy
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "Verifique se o nginx.conf inclui o diretório sites-enabled."
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 #, fuzzy
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "Verifique se o nginx.conf inclui o diretório streams-enabled."
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 #, fuzzy
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
@@ -784,7 +783,7 @@ msgstr ""
 "Verifique se os diretórios sites-available e sites-enabled estão no "
 "diretório de configuração do nginx."
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 #, fuzzy
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
@@ -802,12 +801,12 @@ msgid "Cleaning environment variables"
 msgstr "Limpando variáveis de ambiente"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "Limpar"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 msgid "Cleared successfully"
 msgstr "Limpo com sucesso"
@@ -892,11 +891,11 @@ msgstr "O nível de compressão, 1 é mais baixo, 9 é mais alto"
 
 #: src/constants/errors/self_check.ts:17
 msgid "Config directory not exist"
-msgstr ""
+msgstr "O diretório de configuração não existe"
 
 #: src/constants/errors/self_check.ts:18
 msgid "Config entry file not exist"
-msgstr ""
+msgstr "O ficheiro de entrada de configuração não existe"
 
 #: src/constants/errors/backup.ts:14
 #, fuzzy
@@ -1034,7 +1033,7 @@ msgstr ""
 "automaticamente para o seu computador."
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1208,13 +1207,13 @@ msgstr "Descrição"
 
 #: src/constants/errors/site.ts:3 src/constants/errors/stream.ts:3
 msgid "Destination file already exists"
-msgstr ""
+msgstr "O ficheiro de destino já existe"
 
 #: src/constants/errors/config.ts:3
 msgid "Destination file: {0} already exists"
-msgstr ""
+msgstr "Ficheiro de destino: {0} já existe"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
 msgstr "Detalhes"
 
@@ -1224,7 +1223,7 @@ msgstr "Modo Desenvolvimento"
 
 #: src/views/preference/components/ExternalNotify/dingtalk.ts:5
 msgid "DingTalk"
-msgstr ""
+msgstr "DingTalk"
 
 #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:72
 msgid "Directive"
@@ -1232,59 +1231,55 @@ msgstr "Directiva"
 
 #: src/constants/errors/nginx_log.ts:6
 msgid "Directive params is empty"
-msgstr ""
+msgstr "Os parâmetros da diretiva estão vazios"
 
 #: src/constants/errors/nginx_log.ts:5
 msgid "Directive.Params neither access_log nor error_log"
-msgstr ""
+msgstr "Os parâmetros da diretiva não são nem access_log nem error_log"
 
 #: src/constants/errors/nginx_log.ts:4
 msgid "DirectiveIdx out of range"
-msgstr ""
+msgstr "DirectiveIdx fora do intervalo"
 
 #: src/components/NgxConfigEditor/directive/DirectiveEditor.vue:38
 msgid "Directives"
 msgstr "Directivas"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
-#, fuzzy
 msgid "Directory Levels"
-msgstr "Directório"
+msgstr "Níveis de diretório"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
-msgstr ""
+msgstr "Caminho do diretório para armazenar ficheiros de cache"
 
 #: src/views/site/components/SiteStatusSegmented.vue:88
-#, fuzzy
 msgid "disable"
-msgstr "Desabilitar"
+msgstr "Desativar"
 
 #: src/views/stream/StreamList.vue:209
 msgid "Disable"
-msgstr "Desabilitar"
+msgstr "Desativar"
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
 msgid "Disable auto-renewal failed for %{name}"
-msgstr "Falha na desativação da renovação automática para %{name}"
+msgstr "Falha ao desativar a renovação automática para %{name}"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
-#, fuzzy
 msgid "Disable Remote Site Error"
-msgstr "Erro ao renomear configuração remota"
+msgstr "Erro ao desativar site remoto"
 
 #: src/components/Notification/notifications.ts:101
 msgid "Disable Remote Site Maintenance Error"
-msgstr ""
+msgstr "Erro ao desativar a manutenção do site remoto"
 
 #: src/components/Notification/notifications.ts:105
 msgid "Disable Remote Site Maintenance Success"
-msgstr ""
+msgstr "Desativação da manutenção do site remoto com sucesso"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
-#, fuzzy
 msgid "Disable Remote Site Success"
-msgstr "Configuração remota renomeado com sucesso"
+msgstr "Site remoto desativado com sucesso"
 
 #: src/components/Notification/notifications.ts:133
 #, fuzzy
@@ -1401,7 +1396,7 @@ msgstr "Remover este upstream?"
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1828,7 +1823,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Obtenção de Certificado Falhou"
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "Obtenção de Certificado Falhou"
@@ -1993,7 +1988,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgstr "Obtenção de Certificado Falhou"
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 #, fuzzy
 msgid "Failed to revoke certificate: %{error}"
 msgstr "Obtenção de Certificado Falhou"
@@ -2217,7 +2212,7 @@ msgstr ""
 "Se o seu domínio tiver registos CNAME e não conseguir obter certificados, "
 "terá de ativar esta opção."
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr "Importar"
 
@@ -2364,7 +2359,7 @@ msgstr ""
 msgid "IP"
 msgstr "IP"
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 msgid "Issue wildcard certificate"
 msgstr "Emitir certificado wildcard"
 
@@ -2455,7 +2450,7 @@ msgstr ""
 
 #: src/components/AutoCertForm/AutoCertForm.vue:104
 msgid "Lego disable CNAME Support"
-msgstr "Lego desativa suporte CNAME"
+msgstr "Lego desativar suporte CNAME"
 
 #: src/views/system/About.vue:63
 msgid "License"
@@ -2522,7 +2517,7 @@ msgstr "Localizações"
 msgid "Log"
 msgstr "Log"
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2818,7 +2813,7 @@ msgstr "Nginx"
 msgid "Nginx Access Log Path"
 msgstr "Caminho para Logs de Acesso do Nginx"
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 #, fuzzy
 msgid "Nginx access log path exists"
 msgstr "Caminho para Logs de Acesso do Nginx"
@@ -2847,12 +2842,12 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr ""
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 #, fuzzy
 msgid "Nginx configuration directory exists"
 msgstr "Erro na análise de configuração do Nginx"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 #, fuzzy
 msgid "Nginx configuration entry file exists"
 msgstr "Erro na análise de configuração do Nginx"
@@ -2895,7 +2890,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr "Caminho para Logs de Erro do Nginx"
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 #, fuzzy
 msgid "Nginx error log path exists"
 msgstr "Caminho para Logs de Erro do Nginx"
@@ -2934,7 +2929,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr "Caminho para Logs de Erro do Nginx"
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 #, fuzzy
 msgid "Nginx PID path exists"
 msgstr "Caminho para Logs de Erro do Nginx"
@@ -2997,27 +2992,27 @@ msgid ""
 "few seconds."
 msgstr ""
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 #, fuzzy
 msgid "Nginx.conf includes conf.d directory"
 msgstr "Verifique se o nginx.conf inclui o diretório conf.d."
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 #, fuzzy
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr "Verifique se o nginx.conf inclui o diretório sites-enabled."
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 #, fuzzy
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr "Verifique se o nginx.conf inclui o diretório streams-enabled."
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -3102,7 +3097,7 @@ msgstr ""
 msgid "Notification"
 msgstr "Notificação"
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 msgid "Notifications"
 msgstr "Notificações"
@@ -3157,7 +3152,7 @@ msgstr ""
 msgid "Off"
 msgstr "Off-line"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -3175,7 +3170,7 @@ msgstr "Ok"
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3199,7 +3194,7 @@ msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 "Assim que a verificação estiver concluída, os registos serão removidos."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3648,7 +3643,7 @@ msgstr "Nota de Lançamento"
 msgid "Reload"
 msgstr "Recarregar"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3684,7 +3679,7 @@ msgstr "Erro ao renomear configuração remota"
 msgid "Reload Remote Nginx Success"
 msgstr "Configuração remota renomeado com sucesso"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3705,7 +3700,7 @@ msgstr "Remover"
 msgid "Remove successfully"
 msgstr "Removido com sucesso"
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 msgid "Removed successfully"
 msgstr "Removido com sucesso"
 
@@ -3855,7 +3850,7 @@ msgstr ""
 msgid "Restart"
 msgstr "Reiniciar"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
@@ -3884,7 +3879,7 @@ msgstr "Erro ao renomear configuração remota"
 msgid "Restart Remote Nginx Success"
 msgstr "Configuração remota renomeado com sucesso"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -4197,7 +4192,7 @@ msgstr "Logs do Site"
 msgid "Site not found"
 msgstr "Ficheiro não encontrado"
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 #, fuzzy
 msgid "Sites directory exists"
 msgstr "Directório"
@@ -4315,7 +4310,7 @@ msgstr ""
 msgid "Stream not found"
 msgstr "Ficheiro não encontrado"
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 #, fuzzy
 msgid "Streams directory exists"
 msgstr "Directório"
@@ -4411,7 +4406,7 @@ msgstr "Erro de Configuração de Sincronização"
 msgid "Sync Config Success"
 msgstr "Sucesso na configuração da sincronização"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 #, fuzzy
 msgid "Sync Nodes"
@@ -4478,7 +4473,6 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "Terminal"
 
@@ -4710,7 +4704,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr "Título"
 
@@ -4945,7 +4939,7 @@ msgstr "Versão"
 msgid "View"
 msgstr "Ver"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 msgid "View all notifications"
 msgstr "Ver todas notificações"
 
@@ -5072,8 +5066,8 @@ msgstr "Escrever chave privada do certificado ao disco"
 msgid "Writing certificate to disk"
 msgstr "Escrevendo certificado no disco"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163
@@ -5086,6 +5080,8 @@ msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
 msgstr ""
+"Está a aceder a este terminal através de uma ligação HTTP insegura num "
+"domínio que não é localhost. Isto pode expor informações sensíveis."
 
 #: src/views/system/Upgrade.vue:202
 msgid "You are using the latest version"

+ 97 - 104
app/src/language/ru_RU/app.po

@@ -16,44 +16,44 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 3.5\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 "[Nginx UI] Пользователь ACME: %{name}, Email: %{email}, Каталог CA: %{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 "[Nginx UI] Резервное копирование текущего сертификата для последующего отзыва"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Сертификат успешно продлен"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Nginx успешно перезапущен"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 "[Nginx UI] Сертификат использовался для сервера, перезагрузка TLS-"
 "сертификата сервера"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "Создание клиента облегчает связь с сервером CA"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Переменные окружения очищены"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Завершено"
 
@@ -62,11 +62,11 @@ msgstr "[Nginx UI] Завершено"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Сертификат успешно выдан"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] Получение сертификата"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Подготовка к отзыву сертификата"
 
@@ -74,23 +74,23 @@ msgstr "[Nginx UI] Подготовка к отзыву сертификата"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Подготовка конфигураций lego"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Перезагрузка nginx"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] Отзыв завершен"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Отзыв сертификата"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Отзыв старого сертификата"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] Настройка провайдера проверки DNS01"
 
@@ -99,15 +99,15 @@ msgstr "[Nginx UI] Настройка провайдера проверки DNS0
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Настройка переменных сред"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] Настройка провайдера HTTP01-проверки"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] Запись закрытого ключа сертификата на диск"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] Запись сертификата на диск"
 
@@ -130,7 +130,7 @@ msgstr "Журналы доступа"
 
 #: src/constants/errors/self_check.ts:21
 msgid "Access log path not exist"
-msgstr ""
+msgstr "Путь к журналу доступа не существует"
 
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
@@ -221,7 +221,7 @@ msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 "После этого обновите эту страницу и снова нажмите «Добавить ключ доступа»."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "Все"
@@ -288,7 +288,7 @@ msgstr "Вы уверены, что хотите сбросить 2FA?"
 msgid "Are you sure you want to apply to all selected?"
 msgstr "Вы уверены, что хотите удалить?"
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 msgid "Are you sure you want to clear all notifications?"
 msgstr "Вы уверены, что хотите очистить все уведомления?"
@@ -314,7 +314,7 @@ msgstr "Вы уверены, что хотите удалить?"
 msgid "Are you sure you want to recover this item?"
 msgstr "Вы уверены, что хотите восстановить этот элемент?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "Вы уверены, что хотите удалить?"
@@ -331,7 +331,7 @@ msgstr "Вы уверены, что хотите удалить этот эле
 msgid "Are you sure you want to remove this location?"
 msgstr "Вы уверены, что хотите удалить location?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "Вы уверены, что хотите очистить все уведомления?"
@@ -392,13 +392,12 @@ msgstr "Автообновление включено для %{name}"
 
 #: src/views/certificate/components/RenewCert.vue:49
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:84
-#, fuzzy
 msgid "AutoCert is running, please wait..."
-msgstr "Этот элемент автосертификата недействителен, удалите его.."
+msgstr "AutoCert выполняется, пожалуйста, подождите..."
 
 #: src/components/ProcessingStatus/ProcessingStatus.vue:39
 msgid "AutoCert is running..."
-msgstr ""
+msgstr "\"AutoCert выполняется...\""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:332
 msgid "Automatic Restart"
@@ -632,7 +631,7 @@ msgstr "Сертификат истёк"
 msgid "Certificate Expiring Soon"
 msgstr "Сертификат скоро истекает"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgstr "Ошибка декодирования сертификата"
@@ -658,7 +657,7 @@ msgstr "Интервал обновления сертификата"
 msgid "Certificate renewed successfully"
 msgstr "Сертификат успешно продлен"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgstr "Сертификат успешно удален"
@@ -671,7 +670,7 @@ msgstr[0] "Статус сертификата"
 msgstr[1] "Статус сертификатов"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 msgid "Certificates"
 msgstr "Сертификаты"
 
@@ -727,48 +726,48 @@ msgstr ""
 "Проверьте, включён ли HTTPS. Использование HTTP вне localhost небезопасно и "
 "блокирует функции Passkeys и буфера обмена."
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
-msgstr ""
+msgstr "Проверьте, существует ли сокет Docker."
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
-msgstr ""
+msgstr "Проверить, существует ли путь к журналу доступа nginx"
 
 #: src/language/generate.ts:29
 #, fuzzy
 msgid "Check if the nginx configuration directory exists"
 msgstr "Проверьте, включает ли файл nginx.conf каталог conf.d."
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 #, fuzzy
 msgid "Check if the nginx configuration entry file exists"
 msgstr "Проверьте, включает ли файл nginx.conf каталог conf.d."
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
-msgstr ""
+msgstr "Проверить, существует ли путь к журналу ошибок nginx"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
-msgstr ""
+msgstr "Проверить, существует ли путь к PID Nginx"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 #, fuzzy
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "Проверьте, включает ли файл nginx.conf каталог conf.d."
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 #, fuzzy
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "Проверьте, включает ли файл nginx.conf каталог sites-enabled."
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 #, fuzzy
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "Проверьте, включает ли файл nginx.conf каталог streams-enabled."
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 #, fuzzy
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
@@ -777,7 +776,7 @@ msgstr ""
 "Проверьте, находятся ли каталоги sites-available и sites-enabled в каталоге "
 "конфигурации nginx."
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 #, fuzzy
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
@@ -795,12 +794,12 @@ msgid "Cleaning environment variables"
 msgstr "Очистка переменных среды"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "Очистить"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 msgid "Cleared successfully"
 msgstr "Очищено успешно"
@@ -885,14 +884,12 @@ msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "Уровень сжатия, 1 самый низкий, 9 - самый высокий"
 
 #: src/constants/errors/self_check.ts:17
-#, fuzzy
 msgid "Config directory not exist"
-msgstr "Белый список директорий для логов Nginx"
+msgstr "Каталог конфигурации не существует"
 
 #: src/constants/errors/self_check.ts:18
-#, fuzzy
 msgid "Config entry file not exist"
-msgstr "Белый список директорий для логов Nginx"
+msgstr "Файл входа конфигурации не существует"
 
 #: src/constants/errors/backup.ts:14
 #, fuzzy
@@ -1029,7 +1026,7 @@ msgstr ""
 "компьютер."
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1195,13 +1192,13 @@ msgstr "Описание"
 
 #: src/constants/errors/site.ts:3 src/constants/errors/stream.ts:3
 msgid "Destination file already exists"
-msgstr ""
+msgstr "Файл назначения уже существует"
 
 #: src/constants/errors/config.ts:3
 msgid "Destination file: {0} already exists"
-msgstr ""
+msgstr "Файл назначения: {0} уже существует"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
 msgstr "Детали"
 
@@ -1211,7 +1208,7 @@ msgstr "Режим разработки"
 
 #: src/views/preference/components/ExternalNotify/dingtalk.ts:5
 msgid "DingTalk"
-msgstr ""
+msgstr "ДинТок"
 
 #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:72
 msgid "Directive"
@@ -1219,31 +1216,29 @@ msgstr "Директива"
 
 #: src/constants/errors/nginx_log.ts:6
 msgid "Directive params is empty"
-msgstr ""
+msgstr "Параметры директивы пусты"
 
 #: src/constants/errors/nginx_log.ts:5
 msgid "Directive.Params neither access_log nor error_log"
-msgstr ""
+msgstr "Параметры директивы не являются ни access_log, ни error_log"
 
 #: src/constants/errors/nginx_log.ts:4
 msgid "DirectiveIdx out of range"
-msgstr ""
+msgstr "DirectiveIdx вне диапазона"
 
 #: src/components/NgxConfigEditor/directive/DirectiveEditor.vue:38
 msgid "Directives"
 msgstr "Директивы"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
-#, fuzzy
 msgid "Directory Levels"
-msgstr "Директивы"
+msgstr "Уровни каталога"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
-msgstr ""
+msgstr "Путь к каталогу для хранения кэшированных файлов"
 
 #: src/views/site/components/SiteStatusSegmented.vue:88
-#, fuzzy
 msgid "disable"
 msgstr "Отключить"
 
@@ -1256,24 +1251,20 @@ msgid "Disable auto-renewal failed for %{name}"
 msgstr "Не удалось отключить автоматическое продление для %{name}"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
-#, fuzzy
 msgid "Disable Remote Site Error"
-msgstr "Ошибка переименования удаленной конфигурации"
+msgstr "Ошибка отключения удаленного сайта"
 
 #: src/components/Notification/notifications.ts:101
-#, fuzzy
 msgid "Disable Remote Site Maintenance Error"
-msgstr "Ошибка переименования удаленной конфигурации"
+msgstr "Ошибка отключения обслуживания удаленного сайта"
 
 #: src/components/Notification/notifications.ts:105
-#, fuzzy
 msgid "Disable Remote Site Maintenance Success"
-msgstr "Переименование удаленной конфигурации прошло успешно"
+msgstr "Успешное отключение обслуживания удаленного сайта"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
-#, fuzzy
 msgid "Disable Remote Site Success"
-msgstr "Переименование удаленной конфигурации прошло успешно"
+msgstr "Удалённый сайт успешно отключён"
 
 #: src/components/Notification/notifications.ts:133
 #, fuzzy
@@ -1391,7 +1382,7 @@ msgstr "Хотите удалить этот сервер?"
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1831,7 +1822,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Не удалось получить сертификат"
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "Не удалось получить сертификат"
@@ -1999,7 +1990,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgstr "Не удалось получить сертификат"
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 #, fuzzy
 msgid "Failed to revoke certificate: %{error}"
 msgstr "Не удалось получить сертификат"
@@ -2227,7 +2218,7 @@ msgstr ""
 "Если у вашего домена есть записи CNAME и вы не можете получить сертификаты, "
 "вам нужно включить эту опцию."
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr "Импорт"
 
@@ -2373,7 +2364,7 @@ msgstr "Неверный код восстановления"
 msgid "IP"
 msgstr "IP"
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 msgid "Issue wildcard certificate"
 msgstr "Выпустить wildcard-сертификат"
 
@@ -2463,7 +2454,7 @@ msgstr "Устаревшие коды восстановления не разр
 
 #: src/components/AutoCertForm/AutoCertForm.vue:104
 msgid "Lego disable CNAME Support"
-msgstr "Lego отключает поддержку CNAME"
+msgstr "Lego отключить поддержку CNAME"
 
 #: src/views/system/About.vue:63
 msgid "License"
@@ -2530,7 +2521,7 @@ msgstr "Локации"
 msgid "Log"
 msgstr "Журнал"
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2828,7 +2819,7 @@ msgstr "Nginx"
 msgid "Nginx Access Log Path"
 msgstr "Путь для Nginx Access Log"
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 #, fuzzy
 msgid "Nginx access log path exists"
 msgstr "Путь для Nginx Access Log"
@@ -2859,12 +2850,12 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr "Белый список директорий для логов Nginx"
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 #, fuzzy
 msgid "Nginx configuration directory exists"
 msgstr "Ошибка разбора конфигурации Nginx"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 #, fuzzy
 msgid "Nginx configuration entry file exists"
 msgstr "Ошибка разбора конфигурации Nginx"
@@ -2907,7 +2898,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr "Путь для Nginx Error Log"
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 #, fuzzy
 msgid "Nginx error log path exists"
 msgstr "Путь для Nginx Error Log"
@@ -2948,7 +2939,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr "Путь для Nginx Error Log"
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 #, fuzzy
 msgid "Nginx PID path exists"
 msgstr "Путь для Nginx Error Log"
@@ -3015,27 +3006,27 @@ msgid ""
 "few seconds."
 msgstr "Ошибка разбора конфигурации Nginx"
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 #, fuzzy
 msgid "Nginx.conf includes conf.d directory"
 msgstr "Терминальная команда запуска"
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 #, fuzzy
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr "Проверьте, включает ли файл nginx.conf каталог sites-enabled."
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 #, fuzzy
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr "Проверьте, включает ли файл nginx.conf каталог streams-enabled."
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -3125,7 +3116,7 @@ msgstr ""
 msgid "Notification"
 msgstr "Уведомление"
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 msgid "Notifications"
 msgstr "Уведомления"
@@ -3180,7 +3171,7 @@ msgstr ""
 msgid "Off"
 msgstr "Оффлайн"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -3198,7 +3189,7 @@ msgstr "Ок"
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3221,7 +3212,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgstr "После завершения проверки записи будут удалены."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3671,7 +3662,7 @@ msgstr "Что нового"
 msgid "Reload"
 msgstr "Перегрузить"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3705,7 +3696,7 @@ msgstr "Ошибка переименования удаленной конфи
 msgid "Reload Remote Nginx Success"
 msgstr "Переименование удаленной конфигурации прошло успешно"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3726,7 +3717,7 @@ msgstr "Удалить"
 msgid "Remove successfully"
 msgstr "Удалено успешно"
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 msgid "Removed successfully"
 msgstr "Успешно удалено"
 
@@ -3866,7 +3857,7 @@ msgstr ""
 msgid "Restart"
 msgstr "Перезапуск"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
@@ -3893,7 +3884,7 @@ msgstr "Ошибка переименования удаленной конфи
 msgid "Restart Remote Nginx Success"
 msgstr "Переименование удаленной конфигурации прошло успешно"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -4207,7 +4198,7 @@ msgstr "Журналы сайта"
 msgid "Site not found"
 msgstr "Файл не найден"
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 #, fuzzy
 msgid "Sites directory exists"
 msgstr "Каталог"
@@ -4327,7 +4318,7 @@ msgstr "Авто Сертификат"
 msgid "Stream not found"
 msgstr "Файл не найден"
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 #, fuzzy
 msgid "Streams directory exists"
 msgstr "Каталог"
@@ -4418,7 +4409,7 @@ msgstr "Ошибка синхронизации конфигурации"
 msgid "Sync Config Success"
 msgstr "Синхронизация конфигурации успешна"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 #, fuzzy
 msgid "Sync Nodes"
@@ -4485,7 +4476,6 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "Терминал"
 
@@ -4718,7 +4708,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr "Заголовок"
 
@@ -4953,7 +4943,7 @@ msgstr "Версия"
 msgid "View"
 msgstr "Просмотр"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 msgid "View all notifications"
 msgstr "Просмотреть все уведомления"
 
@@ -5082,8 +5072,8 @@ msgstr "Запись закрытого ключа сертификата на 
 msgid "Writing certificate to disk"
 msgstr "Запись сертификата на диск"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163
@@ -5096,6 +5086,9 @@ msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
 msgstr ""
+"Вы обращаетесь к этому терминалу через небезопасное HTTP-соединение в "
+"домене, отличном от localhost. Это может раскрыть конфиденциальную "
+"информацию."
 
 #: src/views/system/Upgrade.vue:202
 msgid "You are using the latest version"

+ 101 - 109
app/src/language/tr_TR/app.po

@@ -14,44 +14,44 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 5.10.4\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 "[Nginx UI] ACME Kullanıcısı: %{name}, E-posta: %{email}, CA Dizini: %{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 "[Nginx UI] Geçerli sertifika daha sonra iptal edilmek üzere yedekleniyor"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Başarıyla temizlendi"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Nginx başarıyla yeniden başlatıldı"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 "[Nginx UI] Sertifika sunucu için kullanıldı, sunucu TLS sertifikası yeniden "
 "yükleniyor"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "İstemci oluşturmak, CA sunucusuyla iletişimi kolaylaştırır"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Ortam değişkenleri temizlendi"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Tamamlandı"
 
@@ -60,11 +60,11 @@ msgstr "[Nginx UI] Tamamlandı"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Sertifika başarıyla yayınlandı"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] Sertifika alınıyor"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Sertifika iptali için hazırlanıyor"
 
@@ -72,23 +72,23 @@ msgstr "[Nginx UI] Sertifika iptali için hazırlanıyor"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Lego yapılandırmaları hazırlanıyor"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Nginx yeniden yükleniyor"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] İptal tamamlandı"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Sertifika iptal ediliyor"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Eski sertifika iptal ediliyor"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] DNS01 meydan okuma sağlayıcısı ayarlanıyor"
 
@@ -97,15 +97,15 @@ msgstr "[Nginx UI] DNS01 meydan okuma sağlayıcısı ayarlanıyor"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Ortam değişkenlerini ayarlama"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] HTTP01 meydan okuma sağlayıcısı ayarlanıyor"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] Sertifika özel anahtarı diske yazılıyor"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] Sertifika diske yazılıyor"
 
@@ -127,7 +127,7 @@ msgstr "Erişim Kayıtları"
 
 #: src/constants/errors/self_check.ts:21
 msgid "Access log path not exist"
-msgstr ""
+msgstr "Erişim günlüğü yolu mevcut değil"
 
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
@@ -218,7 +218,7 @@ msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 "Daha sonra bu sayfayı yenileyin ve tekrar parola anahtarı ekle'ye tıklayın."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "Tümü"
@@ -284,7 +284,7 @@ msgstr "İki aşamalı doğrulama sıfırlanacaktır. Emin misiniz?"
 msgid "Are you sure you want to apply to all selected?"
 msgstr "Tüm seçilenlere uygulamak istediğinizden emin misiniz?"
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 msgid "Are you sure you want to clear all notifications?"
 msgstr "Tüm bildirimleri temizlemek istediğinizden emin misiniz?"
@@ -310,7 +310,7 @@ msgstr "Silmek istediğine emin misin?"
 msgid "Are you sure you want to recover this item?"
 msgstr "Bu öğeyi kurtarmak istediğinizden emin misiniz?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "Silmek istediğine emin misin?"
@@ -327,7 +327,7 @@ msgstr "Bu öğeyi kaldırmak istediğinizden emin misiniz?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Bu konumu kaldırmak istediğinizden emin misiniz?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "Tüm bildirimleri temizlemek istediğinizden emin misiniz?"
@@ -389,13 +389,12 @@ msgstr "Otomatik yenileme %{name} için etkinleştirildi"
 
 #: src/views/certificate/components/RenewCert.vue:49
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:84
-#, fuzzy
 msgid "AutoCert is running, please wait..."
-msgstr "Bu Otomatik Sertifika öğesi geçersizdir, lütfen kaldırın."
+msgstr "AutoCert çalışıyor, lütfen bekleyin..."
 
 #: src/components/ProcessingStatus/ProcessingStatus.vue:39
 msgid "AutoCert is running..."
-msgstr ""
+msgstr "\"AutoCert çalışıyor...\""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:332
 msgid "Automatic Restart"
@@ -629,7 +628,7 @@ msgstr "Sertifikanın süresi doldu"
 msgid "Certificate Expiring Soon"
 msgstr "Sertifika Yakında Sona Eriyor"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgstr "Sertifika çözme hatası"
@@ -656,7 +655,7 @@ msgstr "Sertifika Yenileme Aralığı"
 msgid "Certificate renewed successfully"
 msgstr "Başarıyla temizlendi"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgstr "Sertifika başarıyla kaldırıldı"
@@ -669,7 +668,7 @@ msgstr[0] "Sertifika Durumu"
 msgstr[1] "Sertifikaların Durumu"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 msgid "Certificates"
 msgstr "Sertifikalar"
 
@@ -726,13 +725,13 @@ msgstr ""
 "kullanmak güvensizdir ve Passkeys ile panosu özelliklerini kullanmayı "
 "engeller."
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
-msgstr ""
+msgstr "Docker soketinin var olup olmadığını kontrol edin."
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
-msgstr ""
+msgstr "Nginx erişim günlüğü yolunun var olup olmadığını kontrol edin"
 
 #: src/language/generate.ts:29
 #, fuzzy
@@ -740,41 +739,41 @@ msgid "Check if the nginx configuration directory exists"
 msgstr ""
 "nginx.conf dosyasının conf.d dizinini içerip içermediğini kontrol edin."
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 #, fuzzy
 msgid "Check if the nginx configuration entry file exists"
 msgstr ""
 "nginx.conf dosyasının conf.d dizinini içerip içermediğini kontrol edin."
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
-msgstr ""
+msgstr "Nginx hata günlüğü yolunun var olup olmadığını kontrol edin"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
-msgstr ""
+msgstr "Nginx PID yolunun var olup olmadığını kontrol edin"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 #, fuzzy
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr ""
 "nginx.conf dosyasının conf.d dizinini içerip içermediğini kontrol edin."
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 #, fuzzy
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr ""
 "nginx.conf dosyasının sites-enabled dizinini içerip içermediğini kontrol "
 "edin."
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 #, fuzzy
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr ""
 "nginx.conf dosyasının streams-enabled dizinini içerip içermediğini kontrol "
 "edin."
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 #, fuzzy
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
@@ -783,7 +782,7 @@ msgstr ""
 "sites-available ve sites-enabled dizinlerinin nginx yapılandırma dizini "
 "altında olup olmadığını kontrol edin."
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 #, fuzzy
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
@@ -801,12 +800,12 @@ msgid "Cleaning environment variables"
 msgstr "Ortam değişkenlerini temizleme"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "Temizle"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 msgid "Cleared successfully"
 msgstr "Başarıyla temizlendi"
@@ -889,14 +888,12 @@ msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "Sıkıştırma seviyesi, 1 en düşük, 9 en yüksek"
 
 #: src/constants/errors/self_check.ts:17
-#, fuzzy
 msgid "Config directory not exist"
-msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
+msgstr "Yapılandırma dizini mevcut değil"
 
 #: src/constants/errors/self_check.ts:18
-#, fuzzy
 msgid "Config entry file not exist"
-msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
+msgstr "Yapılandırma giriş dosyası mevcut değil"
 
 #: src/constants/errors/backup.ts:14
 #, fuzzy
@@ -1032,7 +1029,7 @@ msgstr ""
 "oluşturun. Yedek dosyaları otomatik olarak bilgisayarınıza indirilecektir."
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1203,13 +1200,13 @@ msgstr "Açıklama"
 
 #: src/constants/errors/site.ts:3 src/constants/errors/stream.ts:3
 msgid "Destination file already exists"
-msgstr ""
+msgstr "Hedef dosya zaten mevcut"
 
 #: src/constants/errors/config.ts:3
 msgid "Destination file: {0} already exists"
-msgstr ""
+msgstr "Hedef dosya: {0} zaten mevcut"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
 msgstr "Detaylar"
 
@@ -1219,7 +1216,7 @@ msgstr "Geliştirme modu"
 
 #: src/views/preference/components/ExternalNotify/dingtalk.ts:5
 msgid "DingTalk"
-msgstr ""
+msgstr "DingTalk"
 
 #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:72
 msgid "Directive"
@@ -1227,61 +1224,55 @@ msgstr "Talimat"
 
 #: src/constants/errors/nginx_log.ts:6
 msgid "Directive params is empty"
-msgstr ""
+msgstr "Yönerge parametreleri boş"
 
 #: src/constants/errors/nginx_log.ts:5
 msgid "Directive.Params neither access_log nor error_log"
-msgstr ""
+msgstr "Directive.Params ne access_log ne de error_log"
 
 #: src/constants/errors/nginx_log.ts:4
 msgid "DirectiveIdx out of range"
-msgstr ""
+msgstr "DirectiveIdx aralık dışında"
 
 #: src/components/NgxConfigEditor/directive/DirectiveEditor.vue:38
 msgid "Directives"
 msgstr "Yönergeler"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
-#, fuzzy
 msgid "Directory Levels"
-msgstr "Yönergeler"
+msgstr "Dizin Seviyeleri"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
-msgstr ""
+msgstr "Önbellek dosyalarını depolamak için dizin yolu"
 
 #: src/views/site/components/SiteStatusSegmented.vue:88
-#, fuzzy
 msgid "disable"
-msgstr "Devre Dışı"
+msgstr "Devre dışı bırak"
 
 #: src/views/stream/StreamList.vue:209
 msgid "Disable"
-msgstr "Devre Dışı"
+msgstr "Devre Dışı Bırak"
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
 msgid "Disable auto-renewal failed for %{name}"
-msgstr "%{name} için otomatik yenilemeyi devre dışı bırakma başarısız oldu"
+msgstr "%{name} için otomatik yenileme devre dışı bırakılamadı"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
-#, fuzzy
 msgid "Disable Remote Site Error"
-msgstr "Uzak Yapılandırmayı Yeniden Adlandır Hatası"
+msgstr "Uzak Site Devre Dışı Bırakma Hatası"
 
 #: src/components/Notification/notifications.ts:101
-#, fuzzy
 msgid "Disable Remote Site Maintenance Error"
-msgstr "Uzak Yapılandırmayı Yeniden Adlandır Hatası"
+msgstr "Uzak Site Bakımını Devre Dışı Bırakma Hatası"
 
 #: src/components/Notification/notifications.ts:105
-#, fuzzy
 msgid "Disable Remote Site Maintenance Success"
-msgstr "Uzak Yapılandırmayı Yeniden Adlandırma Başarılı"
+msgstr "Uzak Site Bakımı Başarıyla Devre Dışı Bırakıldı"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
-#, fuzzy
 msgid "Disable Remote Site Success"
-msgstr "Uzak Yapılandırmayı Yeniden Adlandırma Başarılı"
+msgstr "Uzak Site Başarıyla Devre Dışı Bırakıldı"
 
 #: src/components/Notification/notifications.ts:133
 #, fuzzy
@@ -1410,7 +1401,7 @@ msgstr "Bu upstream'i kaldırmak istiyor musunuz?"
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1865,7 +1856,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Sertifika alınamadı"
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "Sertifika alınamadı"
@@ -2033,7 +2024,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgstr "Sertifika alınamadı"
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 #, fuzzy
 msgid "Failed to revoke certificate: %{error}"
 msgstr "Sertifika alınamadı"
@@ -2262,7 +2253,7 @@ msgstr ""
 "Alan adınızda CNAME kayıtları varsa ve sertifika alamıyorsanız, bu seçeneği "
 "etkinleştirmeniz gerekir."
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr "İçe Aktar"
 
@@ -2410,7 +2401,7 @@ msgstr "Geçersiz 2FA veya kurtarma kodu"
 msgid "IP"
 msgstr "IP"
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 msgid "Issue wildcard certificate"
 msgstr "Wildcard sertifikası düzenle"
 
@@ -2499,7 +2490,7 @@ msgstr ""
 
 #: src/components/AutoCertForm/AutoCertForm.vue:104
 msgid "Lego disable CNAME Support"
-msgstr "Lego CNAME desteğini devre dışı bırak"
+msgstr "Lego CNAME Desteğini Devre Dışı Bırak"
 
 #: src/views/system/About.vue:63
 msgid "License"
@@ -2566,7 +2557,7 @@ msgstr "Konumlar"
 msgid "Log"
 msgstr "Günlük"
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2891,7 +2882,7 @@ msgstr "Nginx"
 msgid "Nginx Access Log Path"
 msgstr "Nginx Erişim Günlüğü Yolu"
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 #, fuzzy
 msgid "Nginx access log path exists"
 msgstr "Nginx Erişim Günlüğü Yolu"
@@ -2922,12 +2913,12 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 #, fuzzy
 msgid "Nginx configuration directory exists"
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 #, fuzzy
 msgid "Nginx configuration entry file exists"
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
@@ -2973,7 +2964,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr "Nginx Hata Günlüğü Yolu"
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 #, fuzzy
 msgid "Nginx error log path exists"
 msgstr "Nginx Hata Günlüğü Yolu"
@@ -3016,7 +3007,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr "Nginx Hata Günlüğü Yolu"
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 #, fuzzy
 msgid "Nginx PID path exists"
 msgstr "Nginx Hata Günlüğü Yolu"
@@ -3085,19 +3076,19 @@ msgid ""
 "few seconds."
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 #, fuzzy
 msgid "Nginx.conf includes conf.d directory"
 msgstr "Terminal Başlatma Komutu"
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 #, fuzzy
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr ""
 "nginx.conf dosyasının sites-enabled dizinini içerip içermediğini kontrol "
 "edin."
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 #, fuzzy
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr ""
@@ -3105,11 +3096,11 @@ msgstr ""
 "edin."
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -3205,7 +3196,7 @@ msgstr ""
 msgid "Notification"
 msgstr "Bildirim"
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 #, fuzzy
 msgid "Notifications"
@@ -3265,7 +3256,7 @@ msgstr ""
 msgid "Off"
 msgstr "Çevrimdışı"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -3285,7 +3276,7 @@ msgstr "Tamam"
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3310,7 +3301,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgstr "Doğrulama tamamlandıktan sonra kayıtlar kaldırılacaktır."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3818,7 +3809,7 @@ msgstr "Yayın Notu"
 msgid "Reload"
 msgstr "Tekrar yükle"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3852,7 +3843,7 @@ msgstr "Uzak Yapılandırmayı Yeniden Adlandır Hatası"
 msgid "Reload Remote Nginx Success"
 msgstr "Uzak Yapılandırmayı Yeniden Adlandırma Başarılı"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3877,7 +3868,7 @@ msgstr "Kaldır"
 msgid "Remove successfully"
 msgstr "Başarıyla kaldırıldı"
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 #, fuzzy
 msgid "Removed successfully"
 msgstr "Başarıyla kaldırıldı"
@@ -4039,7 +4030,7 @@ msgstr ""
 msgid "Restart"
 msgstr "Yeniden başlat"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
@@ -4068,7 +4059,7 @@ msgstr "Uzak Yapılandırmayı Yeniden Adlandır Hatası"
 msgid "Restart Remote Nginx Success"
 msgstr "Uzak Yapılandırmayı Yeniden Adlandırma Başarılı"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -4407,7 +4398,7 @@ msgstr "Site Günlükleri"
 msgid "Site not found"
 msgstr "Dosya bulunamadı"
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 #, fuzzy
 msgid "Sites directory exists"
 msgstr "Dizin"
@@ -4537,7 +4528,7 @@ msgstr "Devre dışı"
 msgid "Stream not found"
 msgstr "Dosya bulunamadı"
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 #, fuzzy
 msgid "Streams directory exists"
 msgstr "Dizin"
@@ -4639,7 +4630,7 @@ msgstr "Senkronizasyon Yapılandırma Hatası"
 msgid "Sync Config Success"
 msgstr "Senkronizasyon Yapılandırması Başarılı"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 #, fuzzy
 msgid "Sync Nodes"
@@ -4709,10 +4700,8 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
-#, fuzzy
 msgid "Terminal"
-msgstr "terminal"
+msgstr "Terminal"
 
 #: src/views/preference/tabs/TerminalSettings.vue:10
 #, fuzzy
@@ -4957,7 +4946,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 #, fuzzy
 msgid "Title"
 msgstr "Başlık"
@@ -5226,7 +5215,7 @@ msgstr "Versiyon"
 msgid "View"
 msgstr "Görünüm"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 #, fuzzy
 msgid "View all notifications"
 msgstr "Tüm bildirimleri görüntüle"
@@ -5367,8 +5356,8 @@ msgstr "Sertifika özel anahtarını diske yazma"
 msgid "Writing certificate to disk"
 msgstr "Sertifikayı diske yazma"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163
@@ -5382,6 +5371,9 @@ msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
 msgstr ""
+"Bu terminale, localhost olmayan bir alan adında güvenli olmayan bir HTTP "
+"bağlantısı üzerinden erişiyorsunuz. Bu, hassas bilgilerin açığa çıkmasına "
+"neden olabilir."
 
 #: src/views/system/Upgrade.vue:202
 #, fuzzy

+ 105 - 103
app/src/language/uk_UA/app.po

@@ -14,45 +14,45 @@ msgstr ""
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 "X-Generator: Weblate 5.11\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 "[Nginx UI] Користувач ACME: %{name}, Електронна пошта: %{email}, Каталог CA: "
 "%{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 "[Nginx UI] Резервне копіювання поточного сертифіката для подальшого "
 "відкликання"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Сертифікат успішно поновлено"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Сертифікат успішно видалено"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 "[Nginx UI] Сертифікат використовувався для сервера, перезавантаження TLS-"
 "сертифіката сервера"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "[Nginx UI] Створення клієнта для спрощення зв’язку з сервером CA"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Змінні навколишнього середовища очищення"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Завершено"
 
@@ -61,11 +61,11 @@ msgstr "[Nginx UI] Завершено"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Сертифікат успішно видалено"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] Отримання сертифіката"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Підготовка до відкликання сертифіката"
 
@@ -73,23 +73,23 @@ msgstr "[Nginx UI] Підготовка до відкликання сертиф
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Підготовка конфігурацій lego"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Перезавантаження nginx"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] Відкликання завершено"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Відкликання сертифіката"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Відкликання старого сертифіката"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] Налаштування провайдера виклику DNS01"
 
@@ -98,15 +98,15 @@ msgstr "[Nginx UI] Налаштування провайдера виклику
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Змінні навколишнього середовища очищення"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] Налаштування провайдера HTTP01-виклику"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] Запис приватного ключа сертифіката на диск"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] Запис сертифіката на диск"
 
@@ -128,7 +128,7 @@ msgstr "Логи доступу"
 
 #: src/constants/errors/self_check.ts:21
 msgid "Access log path not exist"
-msgstr ""
+msgstr "Шлях до журналу доступу не існує"
 
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
@@ -219,7 +219,7 @@ msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 "Після цього оновіть цю сторінку та натисніть «Додати ключ доступу» знову."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "Усі"
@@ -285,7 +285,7 @@ msgstr "Ви впевнені, що хочете скинути 2FA?"
 msgid "Are you sure you want to apply to all selected?"
 msgstr "Ви впевнені, що бажаєте застосувати до всіх вибраних?"
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 msgid "Are you sure you want to clear all notifications?"
 msgstr "Ви впевнені, що бажаєте очистити всі сповіщення?"
@@ -311,7 +311,7 @@ msgstr "Ви впевнені, що хочете видалити?"
 msgid "Are you sure you want to recover this item?"
 msgstr "Ви впевнені, що бажаєте відновити цей елемент?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr ""
 "Ви впевнені, що бажаєте перезавантажити Nginx на наступних вузлах "
@@ -329,7 +329,7 @@ msgstr "Ви впевнені, що хочете видалити цей еле
 msgid "Are you sure you want to remove this location?"
 msgstr "Ви впевнені, що хочете видалити цю локацію?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr ""
 "Ви впевнені, що хочете перезавантажити Nginx на вказаних синхронізованих "
@@ -392,11 +392,11 @@ msgstr "Автоматичне відновлення увімкнено для
 #: src/views/certificate/components/RenewCert.vue:49
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:84
 msgid "AutoCert is running, please wait..."
-msgstr ""
+msgstr "AutoCert виконується, будь ласка, зачекайте..."
 
 #: src/components/ProcessingStatus/ProcessingStatus.vue:39
 msgid "AutoCert is running..."
-msgstr ""
+msgstr "\"AutoCert виконується...\""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:332
 msgid "Automatic Restart"
@@ -625,7 +625,7 @@ msgstr "Термін дії сертифіката закінчився"
 msgid "Certificate Expiring Soon"
 msgstr "Сертифікат незабаром закінчується"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgstr "Помилка декодування сертифіката"
@@ -651,7 +651,7 @@ msgstr "Інтервал оновлення сертифіката"
 msgid "Certificate renewed successfully"
 msgstr "Сертифікат успішно поновлено"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgstr "Сертифікат успішно видалено"
@@ -666,7 +666,7 @@ msgstr[1] "Статус сертифіката"
 msgstr[2] "Статус сертифіката"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 msgid "Certificates"
 msgstr "Сертифікати"
 
@@ -723,48 +723,48 @@ msgstr ""
 "Перевірте, чи ввімкнено HTTPS. Використання HTTP поза localhost є "
 "небезпечним і блокує функції Passkeys та буфера обміну."
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
-msgstr ""
+msgstr "Перевірте, чи існує сокет Docker."
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
-msgstr ""
+msgstr "Перевірити, чи існує шлях до журналу доступу nginx"
 
 #: src/language/generate.ts:29
 #, fuzzy
 msgid "Check if the nginx configuration directory exists"
 msgstr "Перевірте, чи файл nginx.conf містить каталог conf.d."
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 #, fuzzy
 msgid "Check if the nginx configuration entry file exists"
 msgstr "Перевірте, чи файл nginx.conf містить каталог conf.d."
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
-msgstr ""
+msgstr "Перевірити, чи існує шлях до журналу помилок nginx"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
-msgstr ""
+msgstr "Перевірити, чи існує шлях до PID Nginx"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 #, fuzzy
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "Перевірте, чи файл nginx.conf містить каталог conf.d."
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 #, fuzzy
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "Перевірте, чи включає файл nginx.conf каталог sites-enabled."
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 #, fuzzy
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "Перевірте, чи включає файл nginx.conf каталог streams-enabled."
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 #, fuzzy
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
@@ -773,7 +773,7 @@ msgstr ""
 "Перевірте, чи знаходяться каталоги sites-available та sites-enabled у "
 "каталозі конфігурації nginx."
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 #, fuzzy
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
@@ -791,12 +791,12 @@ msgid "Cleaning environment variables"
 msgstr "Змінні навколишнього середовища очищення"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "Чіткий"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 msgid "Cleared successfully"
 msgstr "Успішно очищено"
@@ -881,11 +881,11 @@ msgstr "Рівень стиснення, 1 найнижчий, 9 - найвищ
 
 #: src/constants/errors/self_check.ts:17
 msgid "Config directory not exist"
-msgstr ""
+msgstr "Каталог конфігурації не існує"
 
 #: src/constants/errors/self_check.ts:18
 msgid "Config entry file not exist"
-msgstr ""
+msgstr "Вхідний файл конфігурації не існує"
 
 #: src/constants/errors/backup.ts:14
 msgid "Config path is empty"
@@ -1016,7 +1016,7 @@ msgstr ""
 "комп’ютер."
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1247,79 +1247,79 @@ msgstr ""
 
 #: src/constants/errors/site.ts:3 src/constants/errors/stream.ts:3
 msgid "Destination file already exists"
-msgstr ""
+msgstr "Файл призначення вже існує"
 
 #: src/constants/errors/config.ts:3
 msgid "Destination file: {0} already exists"
-msgstr ""
+msgstr "Файл призначення: {0} вже існує"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
-msgstr ""
+msgstr "Деталі"
 
 #: src/views/system/About.vue:28
 msgid "Development Mode"
-msgstr ""
+msgstr "Режим розробки"
 
 #: src/views/preference/components/ExternalNotify/dingtalk.ts:5
 msgid "DingTalk"
-msgstr ""
+msgstr "ДінТок"
 
 #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:72
 msgid "Directive"
-msgstr ""
+msgstr "Директива"
 
 #: src/constants/errors/nginx_log.ts:6
 msgid "Directive params is empty"
-msgstr ""
+msgstr "Параметри директиви порожні"
 
 #: src/constants/errors/nginx_log.ts:5
 msgid "Directive.Params neither access_log nor error_log"
-msgstr ""
+msgstr "Параметри директиви не є ні access_log, ні error_log"
 
 #: src/constants/errors/nginx_log.ts:4
 msgid "DirectiveIdx out of range"
-msgstr ""
+msgstr "DirectiveIdx поза діапазоном"
 
 #: src/components/NgxConfigEditor/directive/DirectiveEditor.vue:38
 msgid "Directives"
-msgstr ""
+msgstr "Директиви"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
 msgid "Directory Levels"
-msgstr ""
+msgstr "Рівні каталогу"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
-msgstr ""
+msgstr "Шлях до каталогу для зберігання файлів кешу"
 
 #: src/views/site/components/SiteStatusSegmented.vue:88
 msgid "disable"
-msgstr ""
+msgstr "Вимкнути"
 
 #: src/views/stream/StreamList.vue:209
 msgid "Disable"
-msgstr ""
+msgstr "Вимкнути"
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
 msgid "Disable auto-renewal failed for %{name}"
-msgstr ""
+msgstr "Не вдалося вимкнути автоматичне поновлення для %{name}"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
 msgid "Disable Remote Site Error"
-msgstr ""
+msgstr "Помилка вимкнення віддаленого сайту"
 
 #: src/components/Notification/notifications.ts:101
 msgid "Disable Remote Site Maintenance Error"
-msgstr ""
+msgstr "Помилка вимкнення технічного обслуговування віддаленого сайту"
 
 #: src/components/Notification/notifications.ts:105
 msgid "Disable Remote Site Maintenance Success"
-msgstr ""
+msgstr "Вимкнення технічного обслуговування віддаленого сайту успішне"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
 msgid "Disable Remote Site Success"
-msgstr ""
+msgstr "Віддалений сайт успішно вимкнено"
 
 #: src/components/Notification/notifications.ts:133
 msgid "Disable Remote Stream Error"
@@ -1427,7 +1427,7 @@ msgstr ""
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1828,7 +1828,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr ""
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 msgid "Failed to delete certificate from database: %{error}"
 msgstr ""
 
@@ -1972,7 +1972,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgstr ""
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 msgid "Failed to revoke certificate: %{error}"
 msgstr ""
 
@@ -2177,7 +2177,7 @@ msgid ""
 "need to enable this option."
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr ""
 
@@ -2318,7 +2318,7 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 msgid "Issue wildcard certificate"
 msgstr ""
 
@@ -2404,7 +2404,7 @@ msgstr ""
 
 #: src/components/AutoCertForm/AutoCertForm.vue:104
 msgid "Lego disable CNAME Support"
-msgstr ""
+msgstr "Lego вимкнути підтримку CNAME"
 
 #: src/views/system/About.vue:63
 msgid "License"
@@ -2469,7 +2469,7 @@ msgstr ""
 msgid "Log"
 msgstr ""
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2750,7 +2750,7 @@ msgstr ""
 msgid "Nginx Access Log Path"
 msgstr ""
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 msgid "Nginx access log path exists"
 msgstr ""
 
@@ -2778,12 +2778,12 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr ""
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 #, fuzzy
 msgid "Nginx configuration directory exists"
 msgstr "Історія конфігурації"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 msgid "Nginx configuration entry file exists"
 msgstr ""
 
@@ -2821,7 +2821,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr ""
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 msgid "Nginx error log path exists"
 msgstr ""
 
@@ -2858,7 +2858,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr ""
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 msgid "Nginx PID path exists"
 msgstr ""
 
@@ -2918,27 +2918,27 @@ msgid ""
 "few seconds."
 msgstr ""
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 #, fuzzy
 msgid "Nginx.conf includes conf.d directory"
 msgstr "Перевірте, чи файл nginx.conf містить каталог conf.d."
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 #, fuzzy
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr "Перевірте, чи включає файл nginx.conf каталог sites-enabled."
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 #, fuzzy
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr "Перевірте, чи включає файл nginx.conf каталог streams-enabled."
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -3021,7 +3021,7 @@ msgstr ""
 msgid "Notification"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 msgid "Notifications"
 msgstr ""
@@ -3072,7 +3072,7 @@ msgstr ""
 msgid "Off"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -3090,7 +3090,7 @@ msgstr ""
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3113,7 +3113,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3535,7 +3535,7 @@ msgstr ""
 msgid "Reload"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3563,7 +3563,7 @@ msgstr ""
 msgid "Reload Remote Nginx Success"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3584,7 +3584,7 @@ msgstr ""
 msgid "Remove successfully"
 msgstr ""
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 msgid "Removed successfully"
 msgstr ""
 
@@ -3715,7 +3715,7 @@ msgstr ""
 msgid "Restart"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 msgid "Restart Nginx"
@@ -3737,7 +3737,7 @@ msgstr ""
 msgid "Restart Remote Nginx Success"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -4028,7 +4028,7 @@ msgstr ""
 msgid "Site not found"
 msgstr ""
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 msgid "Sites directory exists"
 msgstr ""
 
@@ -4141,7 +4141,7 @@ msgstr ""
 msgid "Stream not found"
 msgstr ""
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 msgid "Streams directory exists"
 msgstr ""
 
@@ -4227,7 +4227,7 @@ msgstr ""
 msgid "Sync Config Success"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgstr ""
@@ -4286,9 +4286,8 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
-msgstr ""
+msgstr "Термінал"
 
 #: src/views/preference/tabs/TerminalSettings.vue:10
 msgid "Terminal Start Command"
@@ -4491,7 +4490,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr ""
 
@@ -4716,7 +4715,7 @@ msgstr "Версія"
 msgid "View"
 msgstr "Переглянути"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 msgid "View all notifications"
 msgstr "Переглянути всі сповіщення"
 
@@ -4837,8 +4836,8 @@ msgstr ""
 msgid "Writing certificate to disk"
 msgstr ""
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163
@@ -4851,6 +4850,9 @@ msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
 msgstr ""
+"Ви отримуєте доступ до цього терміналу через незахищене HTTP-з’єднання в "
+"домені, який не є локальним. Це може призвести до витоку конфіденційної "
+"інформації."
 
 #: src/views/system/Upgrade.vue:202
 msgid "You are using the latest version"

+ 101 - 109
app/src/language/vi_VN/app.po

@@ -9,43 +9,43 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 "[Nginx UI] Người dùng ACME: %{name}, Email: %{email}, Thư mục CA: %{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr "[Nginx UI] Đang sao lưu chứng chỉ hiện tại để thu hồi sau này"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Đã xóa thành công"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Restart Nginx thành công"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 "[Nginx UI] Chứng chỉ đã được sử dụng cho máy chủ, đang tải lại chứng chỉ TLS "
 "của máy chủ"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "Tạo client để giao tiếp với CA server"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Đặt biến môi trường"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Đã hoàn thành"
 
@@ -54,11 +54,11 @@ msgstr "[Nginx UI] Đã hoàn thành"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Cấp chứng chỉ thành công"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] Đang lấy chứng chỉ"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Chuẩn bị thu hồi chứng chỉ"
 
@@ -66,23 +66,23 @@ msgstr "[Nginx UI] Chuẩn bị thu hồi chứng chỉ"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Đang chuẩn bị cấu hình lego"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Đang tải lại nginx"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] Đã hoàn tất thu hồi"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Đang thu hồi chứng chỉ"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Đang thu hồi chứng chỉ cũ"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] Đang thiết lập nhà cung cấp thử thách DNS01"
 
@@ -91,15 +91,15 @@ msgstr "[Nginx UI] Đang thiết lập nhà cung cấp thử thách DNS01"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Đặt biến môi trường"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] Đang thiết lập nhà cung cấp thử thách HTTP01"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] Đang ghi khóa riêng của chứng chỉ vào ổ đĩa"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] Đang ghi chứng chỉ vào ổ đĩa"
 
@@ -122,7 +122,7 @@ msgstr "Log truy cập"
 
 #: src/constants/errors/self_check.ts:21
 msgid "Access log path not exist"
-msgstr ""
+msgstr "Đường dẫn nhật ký truy cập không tồn tại"
 
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
@@ -217,7 +217,7 @@ msgstr "Nâng cao"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr "Sau đó, làm mới trang này và nhấp vào thêm khóa truy cập một lần nữa."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "Tất cả"
@@ -290,7 +290,7 @@ msgstr "Bạn chắc chắn muốn xóa nó "
 msgid "Are you sure you want to apply to all selected?"
 msgstr "Bạn chắc chắn muốn xóa nó "
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 #, fuzzy
 msgid "Are you sure you want to clear all notifications?"
@@ -322,7 +322,7 @@ msgstr "Bạn chắc chắn muốn xóa nó "
 msgid "Are you sure you want to recover this item?"
 msgstr "Bạn chắc chắn muốn xoá directive này ?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 #, fuzzy
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "Bạn chắc chắn muốn xóa nó "
@@ -341,7 +341,7 @@ msgstr "Bạn chắc chắn muốn xoá directive này ?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Bạn chắc chắn muốn xoá location này ?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 #, fuzzy
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "Bạn có chắc chắn muốn xóa tất cả thông báo không ?"
@@ -403,13 +403,12 @@ msgstr "Đã bật tự động gia hạn SSL cho %{name}"
 
 #: src/views/certificate/components/RenewCert.vue:49
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:84
-#, fuzzy
 msgid "AutoCert is running, please wait..."
-msgstr "Mục Chứng chỉ tự động này không hợp lệ, vui lòng xóa nó"
+msgstr "AutoCert đang chạy, vui lòng chờ..."
 
 #: src/components/ProcessingStatus/ProcessingStatus.vue:39
 msgid "AutoCert is running..."
-msgstr ""
+msgstr "\"AutoCert đang chạy...\""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:332
 msgid "Automatic Restart"
@@ -645,7 +644,7 @@ msgstr "Chứng chỉ đã hết hạn"
 msgid "Certificate Expiring Soon"
 msgstr "Chứng chỉ sắp hết hạn"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgstr "Lỗi giải mã chứng chỉ"
@@ -673,7 +672,7 @@ msgstr "Chứng chỉ SSL hợp lệ"
 msgid "Certificate renewed successfully"
 msgstr "Đã xóa thành công"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgstr "Đã xóa chứng chỉ thành công"
@@ -687,7 +686,7 @@ msgstr[0] "Trạng thái chứng chỉ"
 msgstr[1] "Trạng thái chứng chỉ"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 #, fuzzy
 msgid "Certificates"
 msgstr "Chứng chỉ"
@@ -748,48 +747,48 @@ msgstr ""
 "Kiểm tra xem HTTPS đã được bật chưa. Sử dụng HTTP bên ngoài localhost không "
 "an toàn và ngăn chặn việc sử dụng tính năng Passkeys cùng khay nhớ tạm."
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
-msgstr ""
+msgstr "Kiểm tra xem ổ cắm Docker có tồn tại không."
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
-msgstr ""
+msgstr "Kiểm tra xem đường dẫn nhật ký truy cập nginx có tồn tại không"
 
 #: src/language/generate.ts:29
 #, fuzzy
 msgid "Check if the nginx configuration directory exists"
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục conf.d không."
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 #, fuzzy
 msgid "Check if the nginx configuration entry file exists"
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục conf.d không."
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
-msgstr ""
+msgstr "Kiểm tra xem đường dẫn nhật ký lỗi nginx có tồn tại không"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
-msgstr ""
+msgstr "Kiểm tra xem đường dẫn PID của Nginx có tồn tại không"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 #, fuzzy
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục conf.d không."
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 #, fuzzy
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục sites-enabled không."
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 #, fuzzy
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục streams-enabled không."
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 #, fuzzy
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
@@ -798,7 +797,7 @@ msgstr ""
 "Kiểm tra xem các thư mục sites-available và sites-enabled có nằm trong thư "
 "mục cấu hình nginx hay không."
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 #, fuzzy
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
@@ -816,12 +815,12 @@ msgid "Cleaning environment variables"
 msgstr "Xoá các biến môi trường"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "Xoá"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 #, fuzzy
 msgid "Cleared successfully"
@@ -906,14 +905,12 @@ msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "Mức nén, 1 là thấp nhất, 9 là cao nhất"
 
 #: src/constants/errors/self_check.ts:17
-#, fuzzy
 msgid "Config directory not exist"
-msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
+msgstr "Thư mục cấu hình không tồn tại"
 
 #: src/constants/errors/self_check.ts:18
-#, fuzzy
 msgid "Config entry file not exist"
-msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
+msgstr "Tệp nhập cấu hình không tồn tại"
 
 #: src/constants/errors/backup.ts:14
 #, fuzzy
@@ -1049,7 +1046,7 @@ msgstr ""
 "sao lưu sẽ tự động được tải xuống máy tính của bạn."
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1220,13 +1217,13 @@ msgstr "Mô tả"
 
 #: src/constants/errors/site.ts:3 src/constants/errors/stream.ts:3
 msgid "Destination file already exists"
-msgstr ""
+msgstr "Tệp đích đã tồn tại"
 
 #: src/constants/errors/config.ts:3
 msgid "Destination file: {0} already exists"
-msgstr ""
+msgstr "Tệp đích: {0} đã tồn tại"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
 msgstr "Chi tiết"
 
@@ -1236,7 +1233,7 @@ msgstr "Chế độ phát triển"
 
 #: src/views/preference/components/ExternalNotify/dingtalk.ts:5
 msgid "DingTalk"
-msgstr ""
+msgstr "DingTalk"
 
 #: src/components/NgxConfigEditor/directive/DirectiveAdd.vue:72
 msgid "Directive"
@@ -1244,62 +1241,55 @@ msgstr "Directive"
 
 #: src/constants/errors/nginx_log.ts:6
 msgid "Directive params is empty"
-msgstr ""
+msgstr "Tham số chỉ thị trống"
 
 #: src/constants/errors/nginx_log.ts:5
 msgid "Directive.Params neither access_log nor error_log"
-msgstr ""
+msgstr "Tham số Directive không phải là access_log hoặc error_log"
 
 #: src/constants/errors/nginx_log.ts:4
 msgid "DirectiveIdx out of range"
-msgstr ""
+msgstr "DirectiveIdx nằm ngoài phạm vi"
 
 #: src/components/NgxConfigEditor/directive/DirectiveEditor.vue:38
 msgid "Directives"
 msgstr "Directives"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
-#, fuzzy
 msgid "Directory Levels"
-msgstr "Directives"
+msgstr "Cấp độ thư mục"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
-msgstr ""
+msgstr "Đường dẫn thư mục để lưu trữ các tệp bộ nhớ đệm"
 
 #: src/views/site/components/SiteStatusSegmented.vue:88
-#, fuzzy
 msgid "disable"
-msgstr "Tắt"
+msgstr "Vô hiệu hóa"
 
 #: src/views/stream/StreamList.vue:209
-#, fuzzy
 msgid "Disable"
-msgstr "Tắt"
+msgstr "Vô hiệu hóa"
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
 msgid "Disable auto-renewal failed for %{name}"
-msgstr "Tắt tự động gia hạn SSL cho %{name} thất bại"
+msgstr "Vô hiệu hóa gia hạn tự động thất bại cho %{name}"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
-#, fuzzy
 msgid "Disable Remote Site Error"
-msgstr "Gia hạn chứng chỉ SSL thất bại"
+msgstr "Lỗi vô hiệu hóa trang từ xa"
 
 #: src/components/Notification/notifications.ts:101
-#, fuzzy
 msgid "Disable Remote Site Maintenance Error"
-msgstr "Gia hạn chứng chỉ SSL thất bại"
+msgstr "Lỗi tắt bảo trì trang web từ xa"
 
 #: src/components/Notification/notifications.ts:105
-#, fuzzy
 msgid "Disable Remote Site Maintenance Success"
-msgstr "Gia hạn chứng chỉ SSL thành công"
+msgstr "Vô hiệu hóa bảo trì trang web từ xa thành công"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
-#, fuzzy
 msgid "Disable Remote Site Success"
-msgstr "Gia hạn chứng chỉ SSL thành công"
+msgstr "Đã vô hiệu hóa trang web từ xa thành công"
 
 #: src/components/Notification/notifications.ts:133
 #, fuzzy
@@ -1421,7 +1411,7 @@ msgstr "Bạn muốn xóa máy chủ này ?"
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1871,7 +1861,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgstr "Nhận chứng chỉ"
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "Nhận chứng chỉ"
@@ -2039,7 +2029,7 @@ msgstr ""
 msgid "Failed to revoke certificate"
 msgstr "Nhận chứng chỉ"
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 #, fuzzy
 msgid "Failed to revoke certificate: %{error}"
 msgstr "Nhận chứng chỉ"
@@ -2256,7 +2246,7 @@ msgid ""
 "need to enable this option."
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 #, fuzzy
 msgid "Import"
 msgstr "Xuất"
@@ -2407,7 +2397,7 @@ msgstr ""
 msgid "IP"
 msgstr ""
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 #, fuzzy
 msgid "Issue wildcard certificate"
 msgstr "Gia hạn SSL"
@@ -2503,7 +2493,7 @@ msgstr ""
 
 #: src/components/AutoCertForm/AutoCertForm.vue:104
 msgid "Lego disable CNAME Support"
-msgstr ""
+msgstr "Lego tắt hỗ trợ CNAME"
 
 #: src/views/system/About.vue:63
 #, fuzzy
@@ -2574,7 +2564,7 @@ msgstr "Locations"
 msgid "Log"
 msgstr "Log"
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2874,7 +2864,7 @@ msgstr ""
 msgid "Nginx Access Log Path"
 msgstr "Vị trí lưu log truy cập (Access log) của Nginx"
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 #, fuzzy
 msgid "Nginx access log path exists"
 msgstr "Vị trí lưu log truy cập (Access log) của Nginx"
@@ -2905,12 +2895,12 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 #, fuzzy
 msgid "Nginx configuration directory exists"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 #, fuzzy
 msgid "Nginx configuration entry file exists"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
@@ -2953,7 +2943,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 #, fuzzy
 msgid "Nginx error log path exists"
 msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
@@ -2992,7 +2982,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 #, fuzzy
 msgid "Nginx PID path exists"
 msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
@@ -3059,27 +3049,27 @@ msgid ""
 "few seconds."
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 #, fuzzy
 msgid "Nginx.conf includes conf.d directory"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 #, fuzzy
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục sites-enabled không."
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 #, fuzzy
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục streams-enabled không."
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -3169,7 +3159,7 @@ msgstr ""
 msgid "Notification"
 msgstr "Thông báo"
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 #, fuzzy
 msgid "Notifications"
@@ -3224,7 +3214,7 @@ msgstr ""
 msgid "Off"
 msgstr "Ngoại tuyến"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -3242,7 +3232,7 @@ msgstr ""
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3265,7 +3255,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgstr "Sau khi quá trình xác minh hoàn tất, bản ghi sẽ bị xóa."
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3711,7 +3701,7 @@ msgstr "Ghi chú phát hành"
 msgid "Reload"
 msgstr "Tải lại"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3745,7 +3735,7 @@ msgstr "Gia hạn chứng chỉ SSL thất bại"
 msgid "Reload Remote Nginx Success"
 msgstr "Gia hạn chứng chỉ SSL thành công"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr ""
 
@@ -3767,7 +3757,7 @@ msgstr ""
 msgid "Remove successfully"
 msgstr "Xoá thành công"
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 #, fuzzy
 msgid "Removed successfully"
 msgstr "Xoá thành công"
@@ -3920,7 +3910,7 @@ msgstr ""
 msgid "Restart"
 msgstr "Khởi động lại"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 #, fuzzy
@@ -3947,7 +3937,7 @@ msgstr "Gia hạn chứng chỉ SSL thất bại"
 msgid "Restart Remote Nginx Success"
 msgstr "Gia hạn chứng chỉ SSL thành công"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr ""
 
@@ -4263,7 +4253,7 @@ msgstr "Logs"
 msgid "Site not found"
 msgstr "Không tìm thấy tệp tin"
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 #, fuzzy
 msgid "Sites directory exists"
 msgstr "Thư mục"
@@ -4384,7 +4374,7 @@ msgstr "Đã tắt"
 msgid "Stream not found"
 msgstr "Không tìm thấy tệp tin"
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 #, fuzzy
 msgid "Streams directory exists"
 msgstr "Thư mục"
@@ -4481,7 +4471,7 @@ msgstr "Gia hạn chứng chỉ SSL thất bại"
 msgid "Sync Config Success"
 msgstr "Gia hạn chứng chỉ SSL thành công"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgstr ""
@@ -4547,9 +4537,8 @@ msgid "Telegram"
 msgstr ""
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
-msgstr "Terminal"
+msgstr "Thiết bị đầu cuối"
 
 #: src/views/preference/tabs/TerminalSettings.vue:10
 msgid "Terminal Start Command"
@@ -4760,7 +4749,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr "Tiêu đề"
 
@@ -4996,7 +4985,7 @@ msgstr "Phiên bản hiện tại"
 msgid "View"
 msgstr "Xem"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 #, fuzzy
 msgid "View all notifications"
 msgstr "Xem tất cả thông báo"
@@ -5126,8 +5115,8 @@ msgstr "Ghi Private Key vào disk"
 msgid "Writing certificate to disk"
 msgstr "Ghi chứng chỉ vào disk"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163
@@ -5140,6 +5129,9 @@ msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
 msgstr ""
+"Bạn đang truy cập thiết bị đầu cuối này thông qua kết nối HTTP không an toàn "
+"trên một miền không phải localhost. Điều này có thể làm lộ thông tin nhạy "
+"cảm."
 
 #: src/views/system/Upgrade.vue:202
 msgid "You are using the latest version"

+ 77 - 78
app/src/language/zh_CN/app.po

@@ -15,36 +15,36 @@ msgstr ""
 "X-Generator: Poedit 3.6\n"
 "Generated-By: easygettext\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr "[Nginx UI] ACME 用户:%{name},邮箱:%{email},CA 目录:%{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr "[Nginx UI] 正在备份当前证书以便后续撤销"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "[Nginx UI] 证书更新成功"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "[Nginx UI] 证书成功撤销"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr "[Nginx UI] 证书已用于服务器,正在重新加载服务器 TLS 证书"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "[Nginx UI] 正在创建客户端用于与 CA 服务器通信"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "[Nginx UI] 环境变量已清理"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] 已完成"
 
@@ -52,11 +52,11 @@ msgstr "[Nginx UI] 已完成"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "[Nginx UI] 证书申请成功"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] 正在获取证书"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] 准备撤销证书"
 
@@ -64,23 +64,23 @@ msgstr "[Nginx UI] 准备撤销证书"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] 正在准备 lego 配置"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] 重新加载 Nginx"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] 吊销完成"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] 正在撤销证书"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] 正在撤销旧证书"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] 正在设置 DNS01 验证提供程序"
 
@@ -88,15 +88,15 @@ msgstr "[Nginx UI] 正在设置 DNS01 验证提供程序"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "[Nginx UI] 正在设置环境变量"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] 正在设置 HTTP01 验证提供程序"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] 正在将证书私钥写入磁盘"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] 正在将证书写入磁盘"
 
@@ -208,7 +208,7 @@ msgstr "高级模式"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr "之后,请刷新此页面并再次点击添加通行密钥。"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "全部"
@@ -274,7 +274,7 @@ msgstr "您确定要重设双重身份验证?"
 msgid "Are you sure you want to apply to all selected?"
 msgstr "您确定要应用于所有选定的对象吗?"
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 msgid "Are you sure you want to clear all notifications?"
 msgstr "您确定要清除所有通知吗?"
@@ -300,7 +300,7 @@ msgstr "您确定要删除吗?"
 msgid "Are you sure you want to recover this item?"
 msgstr "您确定要恢复这个项目吗?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "你确定要在以下同步节点上重载 Nginx?"
 
@@ -316,7 +316,7 @@ msgstr "您确定要删除这个项目吗?"
 msgid "Are you sure you want to remove this location?"
 msgstr "您确定要删除这个 Location?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "你确定要在以下同步节点上重启 Nginx 吗?"
 
@@ -606,7 +606,7 @@ msgstr "证书已过期"
 msgid "Certificate Expiring Soon"
 msgstr "证书即将过期"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 msgid "Certificate not found: %{error}"
 msgstr "未找到证书:%{error}"
 
@@ -631,7 +631,7 @@ msgstr "证书续期间隔"
 msgid "Certificate renewed successfully"
 msgstr "证书更新成功"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 msgid "Certificate revoked successfully"
 msgstr "证书撤销成功"
 
@@ -642,7 +642,7 @@ msgid_plural "Certificates Status"
 msgstr[0] "证书状态"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 msgid "Certificates"
 msgstr "证书"
 
@@ -695,11 +695,11 @@ msgstr ""
 "检查是否启用了 HTTPS。在本地主机之外使用 HTTP 是不安全的,这也会导致无法使用 "
 "Passkey 和剪贴板功能"
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
 msgstr "检查 docker socket 是否存在。"
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
 msgstr "检查 Nginx 访问日志路径是否存在"
 
@@ -707,37 +707,37 @@ msgstr "检查 Nginx 访问日志路径是否存在"
 msgid "Check if the nginx configuration directory exists"
 msgstr "检查 Nginx 配置目录是否存在"
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 msgid "Check if the nginx configuration entry file exists"
 msgstr "检查 nginx 配置入口文件是否存在"
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
 msgstr "检查 Nginx 错误日志路径是否存在"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
 msgstr "检查 Nginx PID 路径是否存在"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "检查 nginx.conf 是否包含 conf.d 目录"
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "检查 nginx.conf 是否包含 sites-enabled 目录"
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "检查 nginx.conf 是否包含 streams-enabled 的目录"
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
 "nginx configuration directory"
 msgstr "检查 sites-available 和 sites-enabled 目录是否位于 Nginx 配置目录下"
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
 "nginx configuration directory"
@@ -752,12 +752,12 @@ msgid "Cleaning environment variables"
 msgstr "正在清理环境变量"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "清空"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 msgid "Cleared successfully"
 msgstr "清除成功"
@@ -971,7 +971,7 @@ msgstr ""
 "创建系统备份,包括 Nginx 配置和 Nginx UI 设置。备份文件将自动下载到你的电脑。"
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1132,9 +1132,9 @@ msgstr "目标文件已存在"
 
 #: src/constants/errors/config.ts:3
 msgid "Destination file: {0} already exists"
-msgstr "目标文件:{0} 已经存在"
+msgstr "目标文件: {0} 已存在"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
 msgstr "详情"
 
@@ -1168,7 +1168,7 @@ msgstr "指令"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:135
 msgid "Directory Levels"
-msgstr "目录级"
+msgstr "目录级"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
@@ -1184,7 +1184,7 @@ msgstr "禁用"
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
 msgid "Disable auto-renewal failed for %{name}"
-msgstr "关闭 %{name} 自动续签失败"
+msgstr "禁用 %{name} 的自动续期失败"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
 msgid "Disable Remote Site Error"
@@ -1196,11 +1196,11 @@ msgstr "禁用远程站点维护错误"
 
 #: src/components/Notification/notifications.ts:105
 msgid "Disable Remote Site Maintenance Success"
-msgstr "禁用远程站点维护成功"
+msgstr "远程站点维护成功禁用"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
 msgid "Disable Remote Site Success"
-msgstr "禁用远程站点成功"
+msgstr "远程站点禁用成功"
 
 #: src/components/Notification/notifications.ts:133
 msgid "Disable Remote Stream Error"
@@ -1308,7 +1308,7 @@ msgstr "你想删除这个 Upstream 吗?"
 msgid "Docker client not initialized"
 msgstr "Docker 客户端未初始化"
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr "Docker Socket 存在"
 
@@ -1709,7 +1709,7 @@ msgstr "解密 Nginx UI 目录失败:{0}"
 msgid "Failed to delete certificate"
 msgstr "删除证书失败"
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "从数据库中删除证书失败:%{error}"
 
@@ -1853,7 +1853,7 @@ msgstr "恢复 Nginx UI 文件失败:{0}"
 msgid "Failed to revoke certificate"
 msgstr "证书撤销失败"
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 msgid "Failed to revoke certificate: %{error}"
 msgstr "撤销证书失败:%{error}"
 
@@ -2060,7 +2060,7 @@ msgid ""
 "need to enable this option."
 msgstr "如果您的域名有 CNAME 记录且无法获取证书,则需要启用此选项。"
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr "导入"
 
@@ -2201,7 +2201,7 @@ msgstr "安全令牌格式无效"
 msgid "IP"
 msgstr "IP"
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 msgid "Issue wildcard certificate"
 msgstr "签发通配符证书"
 
@@ -2353,7 +2353,7 @@ msgstr "Locations"
 msgid "Log"
 msgstr "日志"
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
 "docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
@@ -2642,7 +2642,7 @@ msgstr "Nginx"
 msgid "Nginx Access Log Path"
 msgstr "Nginx 访问日志路径"
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 msgid "Nginx access log path exists"
 msgstr "存在 Nginx 访问日志路径"
 
@@ -2670,11 +2670,11 @@ msgstr "Nginx Conf 中未引用 stream-enabled"
 msgid "Nginx config directory is not set"
 msgstr "未设置 Nginx 配置目录"
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 msgid "Nginx configuration directory exists"
 msgstr "Nginx 配置目录存在"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 msgid "Nginx configuration entry file exists"
 msgstr "存在 Nginx 配置入口文件"
 
@@ -2712,7 +2712,7 @@ msgstr "Nginx CPU 使用率"
 msgid "Nginx Error Log Path"
 msgstr "Nginx 错误日志路径"
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 msgid "Nginx error log path exists"
 msgstr "存在 Nginx 错误日志路径"
 
@@ -2749,7 +2749,7 @@ msgstr "Nginx 内存使用量"
 msgid "Nginx PID Path"
 msgstr "Nginx PID 路径"
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 msgid "Nginx PID path exists"
 msgstr "Nginx PID 路径存在"
 
@@ -2809,24 +2809,24 @@ msgid ""
 "few seconds."
 msgstr "Nginx UI 配置已恢复,几秒钟后将自动重启。"
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 msgid "Nginx.conf includes conf.d directory"
 msgstr "Nginx.conf 包括 conf.d 目录"
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr "Nginx.conf 包含 sites-enabled 目录"
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr "检查 nginx.conf 是否包含 streams-enabled 的目录"
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -2909,7 +2909,7 @@ msgstr "注意,如果配置文件中包含其他配置或证书,请提前将
 msgid "Notification"
 msgstr "通知"
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 msgid "Notifications"
 msgstr "通知"
@@ -2960,7 +2960,7 @@ msgstr "某些用户在使用 Firefox 首次访问时,OCSP Must Staple 可能
 msgid "Off"
 msgstr "关闭"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -2978,7 +2978,7 @@ msgstr "确定"
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3001,7 +3001,7 @@ msgstr "开启"
 msgid "Once the verification is complete, the records will be removed."
 msgstr "一旦验证完成,这些记录将被删除。"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3429,7 +3429,7 @@ msgstr "发行日志"
 msgid "Reload"
 msgstr "重载"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3457,7 +3457,7 @@ msgstr "重载远程 Nginx 错误"
 msgid "Reload Remote Nginx Success"
 msgstr "重载远程 Nginx 成功"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr "重载请求失败,请检查网络连接"
 
@@ -3478,7 +3478,7 @@ msgstr "删除"
 msgid "Remove successfully"
 msgstr "移除成功"
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 msgid "Removed successfully"
 msgstr "删除成功"
 
@@ -3611,7 +3611,7 @@ msgstr "响应"
 msgid "Restart"
 msgstr "重启"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 msgid "Restart Nginx"
@@ -3633,7 +3633,7 @@ msgstr "重启远程 Nginx 错误"
 msgid "Restart Remote Nginx Success"
 msgstr "重启远程 Nginx 成功"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr "重启请求失败,请检查网络连接"
 
@@ -3928,7 +3928,7 @@ msgstr "站点列表"
 msgid "Site not found"
 msgstr "网站未找到"
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 msgid "Sites directory exists"
 msgstr "网站目录存在"
 
@@ -4041,7 +4041,7 @@ msgstr "Stream 已启用"
 msgid "Stream not found"
 msgstr "Stream 未找到"
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 msgid "Streams directory exists"
 msgstr "Streams 目录存在"
 
@@ -4129,7 +4129,7 @@ msgstr "同步配置错误"
 msgid "Sync Config Success"
 msgstr "同步配置成功"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgstr "同步节点"
@@ -4188,7 +4188,6 @@ msgid "Telegram"
 msgstr "Telegram"
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
 msgstr "终端"
 
@@ -4400,7 +4399,7 @@ msgid ""
 msgstr ""
 "提示您可以通过增加 worker_processes 或 worker_connections 来提高并发处理能力"
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr "标题"
 
@@ -4630,7 +4629,7 @@ msgstr "版本"
 msgid "View"
 msgstr "查看"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 msgid "View all notifications"
 msgstr "查看全部通知"
 
@@ -4758,8 +4757,8 @@ msgstr "正在将证书私钥写入磁盘"
 msgid "Writing certificate to disk"
 msgstr "正在将证书写入磁盘"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163

+ 93 - 97
app/src/language/zh_TW/app.po

@@ -19,40 +19,40 @@ msgstr ""
 "X-Generator: Weblate 5.10.4\n"
 "Generated-By: easygettext\n"
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:14
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr "[Nginx UI] ACME 使用者:%{name},電子郵件:%{email},CA 目錄:%{caDir}"
 
-#: src/language/generate.ts:32
+#: src/language/generate.ts:40
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr "[Nginx UI] 正在備份當前憑證以便後續撤銷"
 
-#: src/language/generate.ts:48
+#: src/language/generate.ts:41
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "憑證更新成功"
 
-#: src/language/generate.ts:44
+#: src/language/generate.ts:18
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Nginx 重啟成功"
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr "[Nginx UI] 憑證已用於伺服器,正在重新載入伺服器 TLS 憑證"
 
-#: src/language/generate.ts:22
+#: src/language/generate.ts:33
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "建立客戶端方便與 CA 伺服器通訊"
 
-#: src/language/generate.ts:23
+#: src/language/generate.ts:24
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "環境變數已清理"
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] 已完成"
 
@@ -61,11 +61,11 @@ msgstr "[Nginx UI] 已完成"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "憑證簽發成功"
 
-#: src/language/generate.ts:41
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] 正在取得憑證"
 
-#: src/language/generate.ts:35
+#: src/language/generate.ts:21
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] 準備撤銷憑證"
 
@@ -73,23 +73,23 @@ msgstr "[Nginx UI] 準備撤銷憑證"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] 正在準備 lego 配置"
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:15
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] 重新載入 Nginx"
 
-#: src/language/generate.ts:43
+#: src/language/generate.ts:17
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] 撤銷完成"
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] 正在撤銷證書"
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] 正在撤銷舊憑證"
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:34
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] 正在設定 DNS01 驗證提供者"
 
@@ -98,15 +98,15 @@ msgstr "[Nginx UI] 正在設定 DNS01 驗證提供者"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "設定環境變數中"
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:10
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] 正在設定 HTTP01 驗證提供者"
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:16
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] 正在將證書私鑰寫入磁碟"
 
-#: src/language/generate.ts:42
+#: src/language/generate.ts:5
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] 正在將憑證寫入磁碟"
 
@@ -128,7 +128,7 @@ msgstr "存取日誌"
 
 #: src/constants/errors/self_check.ts:21
 msgid "Access log path not exist"
-msgstr ""
+msgstr "存取記錄路徑不存在"
 
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
@@ -218,7 +218,7 @@ msgstr "進階模式"
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr "之後,請重新整理此頁面並再次點擊新增通行金鑰。"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:115
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 msgid "All"
 msgstr "全部"
@@ -284,7 +284,7 @@ msgstr "您確定要重設 2FA 嗎?"
 msgid "Are you sure you want to apply to all selected?"
 msgstr "您確定要應用於所有選擇項目嗎?"
 
-#: src/components/Notification/Notification.vue:135
+#: src/components/Notification/Notification.vue:112
 #: src/views/notification/Notification.vue:39
 msgid "Are you sure you want to clear all notifications?"
 msgstr "您確定要清除所有通知嗎?"
@@ -310,7 +310,7 @@ msgstr "您確定要刪除嗎?"
 msgid "Are you sure you want to recover this item?"
 msgstr "您確定要恢復此項目嗎?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:132
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:129
 msgid "Are you sure you want to reload Nginx on the following sync nodes?"
 msgstr "您確定要在以下同步節點上重新載入 Nginx 嗎?"
 
@@ -326,7 +326,7 @@ msgstr "您確定要刪除此項目嗎?"
 msgid "Are you sure you want to remove this location?"
 msgstr "您確定要刪除此 Location 嗎?"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:144
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:141
 msgid "Are you sure you want to restart Nginx on the following sync nodes?"
 msgstr "您確定要在以下同步節點上重新啟動 Nginx 嗎?"
 
@@ -386,13 +386,12 @@ msgstr "已啟用 %{name} 的自動續簽"
 
 #: src/views/certificate/components/RenewCert.vue:49
 #: src/views/site/site_edit/components/Cert/IssueCert.vue:84
-#, fuzzy
 msgid "AutoCert is running, please wait..."
-msgstr "此自動憑證項目無效,請將其移除。"
+msgstr "AutoCert 正在執行中,請稍候..."
 
 #: src/components/ProcessingStatus/ProcessingStatus.vue:39
 msgid "AutoCert is running..."
-msgstr ""
+msgstr "\"AutoCert 正在運行...\""
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:332
 msgid "Automatic Restart"
@@ -617,7 +616,7 @@ msgstr "憑證已過期"
 msgid "Certificate Expiring Soon"
 msgstr "憑證即將到期"
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:9
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgstr "證書解碼錯誤"
@@ -643,7 +642,7 @@ msgstr "憑證更新間隔"
 msgid "Certificate renewed successfully"
 msgstr "憑證更新成功"
 
-#: src/language/generate.ts:39
+#: src/language/generate.ts:31
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgstr "憑證已成功移除"
@@ -655,7 +654,7 @@ msgid_plural "Certificates Status"
 msgstr[0] "憑證狀態"
 
 #: src/routes/modules/certificates.ts:11
-#: src/views/certificate/CertificateList/Certificate.vue:14
+#: src/views/certificate/CertificateList/Certificate.vue:19
 msgid "Certificates"
 msgstr "憑證"
 
@@ -710,48 +709,48 @@ msgstr ""
 "檢查是否啟用了 HTTPS。在本機主機之外使用 HTTP 是不安全的,並且會阻止使用通行"
 "證和剪貼簿功能。"
 
-#: src/language/generate.ts:38
+#: src/language/generate.ts:46
 msgid "Check if the docker socket exists."
-msgstr ""
+msgstr "檢查 Docker 通訊端是否存在。"
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:44
 msgid "Check if the nginx access log path exists"
-msgstr ""
+msgstr "檢查 Nginx 存取日誌路徑是否存在"
 
 #: src/language/generate.ts:29
 #, fuzzy
 msgid "Check if the nginx configuration directory exists"
 msgstr "請確認 nginx.conf 是否有包含 conf.d 資料夾。"
 
-#: src/language/generate.ts:33
+#: src/language/generate.ts:43
 #, fuzzy
 msgid "Check if the nginx configuration entry file exists"
 msgstr "請確認 nginx.conf 是否有包含 conf.d 資料夾。"
 
-#: src/language/generate.ts:31
+#: src/language/generate.ts:8
 msgid "Check if the nginx error log path exists"
-msgstr ""
+msgstr "檢查 Nginx 錯誤日誌路徑是否存在"
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:50
 msgid "Check if the nginx PID path exists"
-msgstr ""
+msgstr "檢查 Nginx PID 路徑是否存在"
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:11
 #, fuzzy
 msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "請確認 nginx.conf 是否有包含 conf.d 資料夾。"
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:22
 #, fuzzy
 msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "請確認 nginx.conf 是否有包含 sites-enabled 資料夾。"
 
-#: src/language/generate.ts:46
+#: src/language/generate.ts:36
 #, fuzzy
 msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "請確認 nginx.conf 是否有包含 streams-enabled 資料夾。"
 
-#: src/language/generate.ts:49
+#: src/language/generate.ts:6
 #, fuzzy
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
@@ -759,7 +758,7 @@ msgid ""
 msgstr ""
 "請確認 sites-available 和 sites-enabled 資料夾是否位於 Nginx 設定資料夾內。"
 
-#: src/language/generate.ts:51
+#: src/language/generate.ts:42
 #, fuzzy
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
@@ -777,12 +776,12 @@ msgid "Cleaning environment variables"
 msgstr "清理環境變數"
 
 #: src/components/ChatGPT/ChatGPT.vue:380
-#: src/components/Notification/Notification.vue:140
+#: src/components/Notification/Notification.vue:117
 #: src/views/notification/Notification.vue:44
 msgid "Clear"
 msgstr "清除"
 
-#: src/components/Notification/Notification.vue:93
+#: src/components/Notification/Notification.vue:70
 #: src/views/notification/Notification.vue:13
 msgid "Cleared successfully"
 msgstr "清除成功"
@@ -864,14 +863,12 @@ msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "壓縮等級,1 為最低,9 為最高"
 
 #: src/constants/errors/self_check.ts:17
-#, fuzzy
 msgid "Config directory not exist"
-msgstr "Nginx 設定目錄未設定"
+msgstr "配置目錄不存在"
 
 #: src/constants/errors/self_check.ts:18
-#, fuzzy
 msgid "Config entry file not exist"
-msgstr "Nginx 設定目錄未設定"
+msgstr "配置入口文件不存在"
 
 #: src/constants/errors/backup.ts:14
 msgid "Config path is empty"
@@ -999,7 +996,7 @@ msgstr ""
 "建立系統備份,包括 Nginx 設定與 Nginx UI 設定。備份檔案將自動下載至您的電腦。"
 
 #: src/views/environments/group/columns.ts:31
-#: src/views/notification/notificationColumns.tsx:59
+#: src/views/notification/notificationColumns.tsx:45
 #: src/views/preference/components/AuthSettings/Passkey.vue:95
 #: src/views/preference/components/ExternalNotify/columns.ts:41
 #: src/views/user/userColumns.tsx:48
@@ -1159,13 +1156,12 @@ msgid "Destination file already exists"
 msgstr "目的檔案已存在"
 
 #: src/constants/errors/config.ts:3
-#, fuzzy
 msgid "Destination file: {0} already exists"
-msgstr "目的檔案已存在"
+msgstr "目標檔案: {0} 已存在"
 
-#: src/views/notification/notificationColumns.tsx:53
+#: src/views/notification/notificationColumns.tsx:60
 msgid "Details"
-msgstr "詳細資料"
+msgstr "細節"
 
 #: src/views/system/About.vue:28
 msgid "Development Mode"
@@ -1201,11 +1197,11 @@ msgstr "目錄層級"
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:127
 msgid "Directory path to store cache files"
-msgstr "快取檔案儲存路徑"
+msgstr "儲存快取檔案的目錄路徑"
 
 #: src/views/site/components/SiteStatusSegmented.vue:88
 msgid "disable"
-msgstr "用"
+msgstr "用"
 
 #: src/views/stream/StreamList.vue:209
 msgid "Disable"
@@ -1213,23 +1209,23 @@ msgstr "停用"
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:80
 msgid "Disable auto-renewal failed for %{name}"
-msgstr "關閉 %{name} 自動續簽失敗"
+msgstr "停用 %{name} 的自動續期失敗"
 
 #: src/components/Notification/notifications.ts:77 src/language/constants.ts:52
 msgid "Disable Remote Site Error"
-msgstr "用遠端站點錯誤"
+msgstr "用遠端站點錯誤"
 
 #: src/components/Notification/notifications.ts:101
 msgid "Disable Remote Site Maintenance Error"
-msgstr "停用遠端網站維護錯誤"
+msgstr "禁用遠端站點維護錯誤"
 
 #: src/components/Notification/notifications.ts:105
 msgid "Disable Remote Site Maintenance Success"
-msgstr "遠端站維護已成功停用"
+msgstr "遠端站維護已成功停用"
 
 #: src/components/Notification/notifications.ts:81 src/language/constants.ts:51
 msgid "Disable Remote Site Success"
-msgstr "停用遠端站點成功"
+msgstr "遠端站點停用成功"
 
 #: src/components/Notification/notifications.ts:133
 msgid "Disable Remote Stream Error"
@@ -1337,7 +1333,7 @@ msgstr "您要移除這個 Upstream 嗎?"
 msgid "Docker client not initialized"
 msgstr ""
 
-#: src/language/generate.ts:37
+#: src/language/generate.ts:30
 msgid "Docker socket exists"
 msgstr ""
 
@@ -1741,7 +1737,7 @@ msgstr "解密 Nginx UI 目錄失敗:{0}"
 msgid "Failed to delete certificate"
 msgstr "憑證刪除失敗"
 
-#: src/language/generate.ts:34
+#: src/language/generate.ts:23
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "憑證刪除失敗"
@@ -1892,7 +1888,7 @@ msgstr "還原 Nginx UI 檔案失敗:{0}"
 msgid "Failed to revoke certificate"
 msgstr "撤銷憑證失敗"
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:39
 #, fuzzy
 msgid "Failed to revoke certificate: %{error}"
 msgstr "撤銷憑證失敗"
@@ -2101,7 +2097,7 @@ msgid ""
 "need to enable this option."
 msgstr "如果您的域名有 CNAME 記錄且無法取得證書,您需要啟用此選項。"
 
-#: src/views/certificate/CertificateList/Certificate.vue:22
+#: src/views/certificate/CertificateList/Certificate.vue:27
 msgid "Import"
 msgstr "匯入"
 
@@ -2243,7 +2239,7 @@ msgstr "無效的安全令牌格式"
 msgid "IP"
 msgstr "IP"
 
-#: src/views/certificate/CertificateList/Certificate.vue:31
+#: src/views/certificate/CertificateList/Certificate.vue:37
 msgid "Issue wildcard certificate"
 msgstr "發行萬用字元憑證"
 
@@ -2397,7 +2393,7 @@ msgstr "Locations"
 msgid "Log"
 msgstr "日誌"
 
-#: src/language/generate.ts:40
+#: src/language/generate.ts:32
 #, fuzzy
 msgid ""
 "Log file %{log_path} is not a regular file. If you are using nginx-ui in "
@@ -2686,7 +2682,7 @@ msgstr "Nginx"
 msgid "Nginx Access Log Path"
 msgstr "Nginx 存取日誌路徑"
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:51
 #, fuzzy
 msgid "Nginx access log path exists"
 msgstr "Nginx 存取日誌路徑"
@@ -2716,12 +2712,12 @@ msgstr "Nginx 設定檔未包含 stream-enabled"
 msgid "Nginx config directory is not set"
 msgstr "Nginx 設定目錄未設定"
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:49
 #, fuzzy
 msgid "Nginx configuration directory exists"
 msgstr "Nginx 設定目錄"
 
-#: src/language/generate.ts:17
+#: src/language/generate.ts:12
 #, fuzzy
 msgid "Nginx configuration entry file exists"
 msgstr "Nginx 設定已恢復"
@@ -2761,7 +2757,7 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgstr "Nginx 錯誤日誌路徑"
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:45
 #, fuzzy
 msgid "Nginx error log path exists"
 msgstr "Nginx 錯誤日誌路徑"
@@ -2800,7 +2796,7 @@ msgstr ""
 msgid "Nginx PID Path"
 msgstr "Nginx PID 路徑"
 
-#: src/language/generate.ts:30
+#: src/language/generate.ts:38
 #, fuzzy
 msgid "Nginx PID path exists"
 msgstr "Nginx PID 路徑"
@@ -2863,27 +2859,27 @@ msgid ""
 "few seconds."
 msgstr "Nginx UI 設定已恢復,將在幾秒後自動重新啟動。"
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:37
 #, fuzzy
 msgid "Nginx.conf includes conf.d directory"
 msgstr "請確認 nginx.conf 是否有包含 conf.d 資料夾。"
 
-#: src/language/generate.ts:36
+#: src/language/generate.ts:7
 #, fuzzy
 msgid "Nginx.conf includes sites-enabled directory"
 msgstr "請確認 nginx.conf 是否有包含 sites-enabled 資料夾。"
 
-#: src/language/generate.ts:45
+#: src/language/generate.ts:19
 #, fuzzy
 msgid "Nginx.conf includes streams-enabled directory"
 msgstr "請確認 nginx.conf 是否有包含 streams-enabled 資料夾。"
 
 #: src/components/ChatGPT/ChatGPT.vue:374
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:131
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:143
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:99
 #: src/components/NgxConfigEditor/LocationEditor.vue:89
-#: src/components/Notification/Notification.vue:133
+#: src/components/Notification/Notification.vue:110
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:63
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:94
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:510
@@ -2966,7 +2962,7 @@ msgstr "請注意,如果設定檔包含其他設定或憑證,請提前將它
 msgid "Notification"
 msgstr "通知"
 
-#: src/components/Notification/Notification.vue:131
+#: src/components/Notification/Notification.vue:108
 #: src/routes/modules/notifications.ts:10
 msgid "Notifications"
 msgstr "通知"
@@ -3017,7 +3013,7 @@ msgstr "OCSP 強制裝訂可能會導致部分使用者在首次使用 Firefox 
 msgid "Off"
 msgstr "關"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:109
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environments/list/envColumns.tsx:56
@@ -3035,7 +3031,7 @@ msgstr "確定"
 #: src/components/ChatGPT/ChatGPT.vue:375
 #: src/components/NgxConfigEditor/NgxServer.vue:53
 #: src/components/NgxConfigEditor/NgxUpstream.vue:36
-#: src/components/Notification/Notification.vue:134
+#: src/components/Notification/Notification.vue:111
 #: src/components/StdDesign/StdDataDisplay/StdBulkActions.vue:95
 #: src/views/notification/Notification.vue:38
 #: src/views/site/components/SiteStatusSegmented.vue:96
@@ -3058,7 +3054,7 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgstr "驗證完成後,記錄將被刪除。"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:159
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:89
 #: src/views/dashboard/Environments.vue:100
@@ -3485,7 +3481,7 @@ msgstr "發行公告"
 msgid "Reload"
 msgstr "重新載入"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:139
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:136
 #: src/views/environments/group/columns.ts:24
 #: src/views/environments/group/EnvGroup.vue:37
 #: src/views/environments/list/Environment.vue:120
@@ -3514,7 +3510,7 @@ msgstr "重新載入遠端 Nginx 錯誤"
 msgid "Reload Remote Nginx Success"
 msgstr "遠端 Nginx 重新載入成功"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:87
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:84
 msgid "Reload request failed, please check your network connection"
 msgstr "重新載入請求失敗,請檢查您的網路連線"
 
@@ -3535,7 +3531,7 @@ msgstr "移除"
 msgid "Remove successfully"
 msgstr "移除成功"
 
-#: src/components/Notification/Notification.vue:102
+#: src/components/Notification/Notification.vue:79
 msgid "Removed successfully"
 msgstr "移除成功"
 
@@ -3668,7 +3664,7 @@ msgstr "回應"
 msgid "Restart"
 msgstr "重新啟動"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:151
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:148
 #: src/views/environments/list/Environment.vue:141
 #: src/views/environments/list/Environment.vue:149
 msgid "Restart Nginx"
@@ -3690,7 +3686,7 @@ msgstr "遠端 Nginx 重啟錯誤"
 msgid "Restart Remote Nginx Success"
 msgstr "遠端 Nginx 重啟成功"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:107
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:104
 msgid "Restart request failed, please check your network connection"
 msgstr "重新啟動請求失敗,請檢查您的網路連線"
 
@@ -3985,7 +3981,7 @@ msgstr "網站日誌"
 msgid "Site not found"
 msgstr "站點未找到"
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:28
 #, fuzzy
 msgid "Sites directory exists"
 msgstr "sites-enabled 資料夾不存在"
@@ -4099,7 +4095,7 @@ msgstr "串流已啟用"
 msgid "Stream not found"
 msgstr "串流未找到"
 
-#: src/language/generate.ts:50
+#: src/language/generate.ts:35
 #, fuzzy
 msgid "Streams directory exists"
 msgstr "Streams 資料夾"
@@ -4189,7 +4185,7 @@ msgstr "同步設定錯誤"
 msgid "Sync Config Success"
 msgstr "同步設定成功"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:125
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:122
 #: src/views/environments/group/EnvGroup.vue:18
 msgid "Sync Nodes"
 msgstr "同步節點"
@@ -4250,9 +4246,8 @@ msgid "Telegram"
 msgstr "Telegram"
 
 #: src/routes/modules/terminal.ts:10 src/views/preference/Preference.vue:76
-#: src/views/terminal/Terminal.vue:129
 msgid "Terminal"
-msgstr "終端"
+msgstr "終端"
 
 #: src/views/preference/tabs/TerminalSettings.vue:10
 msgid "Terminal Start Command"
@@ -4461,7 +4456,7 @@ msgid ""
 "worker_processes or worker_connections"
 msgstr ""
 
-#: src/views/notification/notificationColumns.tsx:45
+#: src/views/notification/notificationColumns.tsx:52
 msgid "Title"
 msgstr "標題"
 
@@ -4691,7 +4686,7 @@ msgstr "版本"
 msgid "View"
 msgstr "檢視"
 
-#: src/components/Notification/Notification.vue:203
+#: src/components/Notification/Notification.vue:180
 msgid "View all notifications"
 msgstr "檢視所有通知"
 
@@ -4822,8 +4817,8 @@ msgstr "將憑證私鑰寫入磁碟"
 msgid "Writing certificate to disk"
 msgstr "將憑證寫入磁碟"
 
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:133
-#: src/components/EnvGroupTabs/EnvGroupTabs.vue:145
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:130
+#: src/components/EnvGroupTabs/EnvGroupTabs.vue:142
 #: src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue:98
 #: src/components/NgxConfigEditor/LocationEditor.vue:88
 #: src/views/preference/tabs/AuthSettings.vue:163
@@ -4836,7 +4831,8 @@ msgid ""
 "You are accessing this terminal over an insecure HTTP connection on a non-"
 "localhost domain. This may expose sensitive information."
 msgstr ""
-"您正在透過非本機網域的不安全 HTTP 連接存取此終端,這可能會洩露敏感資訊。"
+"您正在透過非本地主機域上的不安全 HTTP 連線存取此終端機。這可能會暴露敏感資"
+"訊。"
 
 #: src/views/system/Upgrade.vue:202
 msgid "You are using the latest version"

+ 9 - 0
docs/.vitepress/config/en.ts

@@ -31,6 +31,15 @@ export const enConfig: LocaleSpecificConfig<DefaultTheme.Config> = {
             { text: 'Contributing', link: '/guide/contributing' }
           ]
         },
+        {
+          text: 'MCP',
+          collapsed: false,
+          items: [
+            { text: 'Overview', link: '/guide/mcp' },
+            { text: 'Configuration Management', link: '/guide/mcp-config' },
+            { text: 'Nginx Service Management', link: '/guide/mcp-nginx' },
+          ]
+        },
         {
           text: 'Configuration',
           collapsed: false,

+ 9 - 0
docs/.vitepress/config/zh_CN.ts

@@ -36,6 +36,15 @@ export const zhCNConfig: LocaleSpecificConfig<DefaultTheme.Config> = {
             { text: '贡献代码', link: '/zh_CN/guide/contributing' }
           ]
         },
+        {
+          text: 'MCP',
+          collapsed: false,
+          items: [
+            { text: '概述', link: '/zh_CN/guide/mcp' },
+            { text: '配置文件管理', link: '/zh_CN/guide/mcp-config' },
+            { text: 'Nginx 服务管理', link: '/zh_CN/guide/mcp-nginx' },
+          ]
+        },
         {
           text: '配置',
           collapsed: false,

+ 9 - 0
docs/.vitepress/config/zh_TW.ts

@@ -36,6 +36,15 @@ export const zhTWConfig: LocaleSpecificConfig<DefaultTheme.Config> = {
             { text: '貢獻程式碼', link: '/zh_TW/guide/contributing' }
           ]
         },
+        {
+          text: 'MCP',
+          collapsed: false,
+          items: [
+            { text: '概述', link: '/zh_TW/guide/mcp' },
+            { text: '配置文件管理', link: '/zh_TW/guide/mcp-config' },
+            { text: 'Nginx 服務管理', link: '/zh_TW/guide/mcp-nginx' },
+          ]
+        },
         {
           text: '配置',
           collapsed: false,

+ 127 - 0
docs/guide/mcp-config.md

@@ -0,0 +1,127 @@
+# MCP Configuration File Management
+
+## Introduction
+
+The MCP Configuration File Management module provides a set of tools and resources for managing Nginx configuration files. These features allow AI agents and automation tools to perform various configuration file operations, including reading, creating, modifying, and organizing configuration files.
+
+## Feature List
+
+### Get Nginx Configuration File Base Path
+
+- Type: `tool`
+- Name: `nginx_config_base_path`
+
+### List Configuration Files
+
+- Type: `tool`
+- Name: `nginx_config_list`
+
+### Get Configuration File Content
+
+- Type: `tool`
+- Name: `nginx_config_get`
+
+### Add New Configuration File
+
+- Type: `tool`
+- Name: `nginx_config_add`
+
+### Modify Existing Configuration File
+
+- Type: `tool`
+- Name: `nginx_config_modify`
+
+### Rename Configuration File
+
+- Type: `tool`
+- Name: `nginx_config_rename`
+
+### Create Configuration Directory
+
+- Type: `tool`
+- Name: `nginx_config_mkdir`
+
+### History
+
+- Type: `tool`
+- Name: `nginx_config_history`
+
+## Usage Examples
+
+Here are some examples of using MCP Configuration File Management features:
+
+### Get Base Path
+
+```json
+{
+  "tool": "nginx_config_base_path",
+  "parameters": {}
+}
+```
+
+Example response:
+
+```json
+{
+  "base_path": "/etc/nginx"
+}
+```
+
+### List Configuration Files
+
+```json
+{
+  "tool": "nginx_config_list",
+  "parameters": {
+    "path": "/etc/nginx/conf.d"
+  }
+}
+```
+
+Example response:
+
+```json
+{
+  "files": [
+    {
+      "name": "default.conf",
+      "is_dir": false,
+      "path": "/etc/nginx/conf.d/default.conf"
+    },
+    {
+      "name": "example.conf",
+      "is_dir": false,
+      "path": "/etc/nginx/conf.d/example.conf"
+    }
+  ]
+}
+```
+
+### Get Configuration File Content
+
+```json
+{
+  "tool": "nginx_config_get",
+  "parameters": {
+    "path": "/etc/nginx/conf.d/default.conf"
+  }
+}
+```
+
+### Modify Configuration File
+
+```json
+{
+  "tool": "nginx_config_modify",
+  "parameters": {
+    "path": "/etc/nginx/conf.d/default.conf",
+    "content": "server {\n    listen 80;\n    server_name example.com;\n    location / {\n        root /usr/share/nginx/html;\n        index index.html;\n    }\n}"
+  }
+}
+```
+
+## Important Notes
+
+- All path operations are relative to the Nginx configuration base path
+- Configuration file modifications are automatically backed up and can be restored using the history feature
+- Some operations may require validation of configuration file syntax 

+ 22 - 0
docs/guide/mcp-nginx.md

@@ -0,0 +1,22 @@
+# MCP Nginx Service Management
+
+## Introduction
+
+The MCP Nginx Service Management module provides a set of tools and resources for monitoring and controlling the Nginx service. These features enable AI agents and automation tools to query Nginx status, reload configurations, and restart services without requiring traditional command-line interfaces.
+
+## Feature List
+
+### Get Nginx Status
+
+- Type: `tool`
+- Name: `nginx_status`
+
+### Reload Nginx
+
+- Type: `tool`
+- Name: `nginx_reload`
+
+### Restart Nginx Service
+
+- Type: `tool`
+- Name: `nginx_restart`

+ 43 - 0
docs/guide/mcp.md

@@ -0,0 +1,43 @@
+# MCP Module
+
+## Introduction
+
+MCP (Model Context Protocol) is a special interface provided by Nginx UI that allows AI agents to interact with Nginx UI. Through MCP, AI models can access and manage Nginx configuration files, perform Nginx-related operations (such as restart, reload), and get Nginx running status.
+
+## Feature Overview
+
+The MCP module is divided into two main functional areas:
+
+- [Configuration File Management](./mcp-config.md) - Various operations for managing Nginx configuration files
+- [Nginx Service Management](./mcp-nginx.md) - Control and monitor Nginx service status
+
+## Interface
+
+The MCP interface is accessible through the `/mcp` path and provides streaming via SSE.
+
+## Authentication
+
+The MCP interface is authenticated using the `node_secret` query parameter.
+
+For example:
+
+```
+http://localhost:9000/mcp?node_secret=<your_node_secret>
+```
+
+### Resources
+
+Resources are readable information provided by MCP, such as Nginx status.
+
+### Tools
+
+Tools are executable operations provided by MCP, such as restarting Nginx, modifying configuration files, etc.
+
+## Use Cases
+
+MCP is mainly used in the following scenarios:
+
+1. AI-driven Nginx configuration management
+2. Integration with automated operations tools
+3. Integration of third-party systems with Nginx UI
+4. Providing machine-readable APIs for automation scripts 

+ 55 - 0
docs/zh_CN/guide/mcp-config.md

@@ -0,0 +1,55 @@
+# MCP 配置文件管理
+
+## 简介
+
+MCP 配置文件管理模块提供了一系列工具和资源,用于管理 Nginx 配置文件。这些功能允许 AI 代理和自动化工具执行各种配置文件操作,包括读取、创建、修改和组织配置文件。
+
+## 功能列表
+
+### 获取 Nginx 配置文件的根目录路径
+
+- 类型:`tool`
+- 名称:`nginx_config_base_path`
+- 描述:获取 Nginx 配置文件的根目录路径
+
+### 列出配置文件
+
+- 类型:`tool`
+- 名称:`nginx_config_list`
+- 描述:获取指定目录下的配置文件和子目录列表
+
+### 获取配置文件内容
+
+- 类型:`tool`
+- 名称:`nginx_config_get`
+- 描述:读取指定配置文件的内容
+
+### 添加新的配置文件
+
+- 类型:`tool`
+- 名称:`nginx_config_add`
+- 描述:创建新的配置文件
+
+### 修改现有配置文件
+
+- 类型:`tool`
+- 名称:`nginx_config_modify`
+- 描述:更新现有配置文件的内容
+
+### 重命名配置文件
+
+- 类型:`tool`
+- 名称:`nginx_config_rename`
+- 描述:修改配置文件的名称或路径
+
+### 创建配置目录
+
+- 类型:`tool`
+- 名称:`nginx_config_mkdir`
+- 描述:创建新的配置目录
+
+### 历史记录
+
+- 类型:`tool`
+- 名称:`nginx_config_history`
+- 描述:获取配置文件的修改历史记录

+ 22 - 0
docs/zh_CN/guide/mcp-nginx.md

@@ -0,0 +1,22 @@
+# MCP Nginx 服务管理
+
+## 简介
+
+MCP Nginx 服务管理模块提供了一组工具和资源,用于监控和控制 Nginx 服务。这些功能使 AI 代理和自动化工具能够查询 Nginx 状态、重新加载配置和重启服务,而无需通过传统命令行界面。
+
+## 功能列表
+
+### 获取 Nginx 状态
+
+- 类型:`tool`
+- 名称:`nginx_status`
+
+### 重新加载 Nginx
+
+- 类型:`tool`
+- 名称:`nginx_reload`
+
+### 重启 Nginx 服务
+
+- 类型:`tool`
+- 名称:`nginx_restart`

+ 43 - 0
docs/zh_CN/guide/mcp.md

@@ -0,0 +1,43 @@
+# MCP 模块
+
+## 简介
+
+MCP(Model Context Protocol)是 Nginx UI 提供的一个特殊接口,允许 AI 代理与 Nginx UI 交互。通过 MCP,AI 模型可以访问和管理 Nginx 配置文件、执行 Nginx 相关操作(如重启、重载)以及获取 Nginx 运行状态。
+
+## 功能概览
+
+MCP 模块主要分为两大部分功能:
+
+- [配置文件管理](./mcp-config.md) - 管理 Nginx 配置文件的各种操作
+- [Nginx 服务管理](./mcp-nginx.md) - 控制和监控 Nginx 服务状态
+
+## 接口
+
+MCP 接口通过 `/mcp` 路径提供 SSE 流式传输。
+
+## 认证
+
+MCP 接口通过 `node_secret` 查询参数进行认证。
+
+例如:
+
+```
+http://localhost:9000/mcp?node_secret=<your_node_secret>
+```
+
+### 资源(Resource)
+
+资源是 MCP 提供的可读取信息,例如 Nginx 状态。
+
+### 工具(Tool)
+
+工具是 MCP 提供的可执行操作,例如重启 Nginx、修改配置文件等。
+
+## 使用场景
+
+MCP 主要用于以下场景:
+
+1. AI 驱动的 Nginx 配置管理
+2. 自动化运维工具集成
+3. 第三方系统与 Nginx UI 的集成
+4. 提供机器可读的 API 以便于自动化脚本使用

+ 127 - 0
docs/zh_TW/guide/mcp-config.md

@@ -0,0 +1,127 @@
+# MCP 配置文件管理
+
+## 簡介
+
+MCP 配置文件管理模組提供了一系列工具和資源,用於管理 Nginx 配置文件。這些功能允許 AI 代理和自動化工具執行各種配置文件操作,包括讀取、創建、修改和組織配置文件。
+
+## 功能列表
+
+### 獲取 Nginx 配置文件的根目錄路徑
+
+- 類型:`tool`
+- 名稱:`nginx_config_base_path`
+
+### 列出配置文件
+
+- 類型:`tool`
+- 名稱:`nginx_config_list`
+
+### 獲取配置文件內容
+
+- 類型:`tool`
+- 名稱:`nginx_config_get`
+
+### 添加新的配置文件
+
+- 類型:`tool`
+- 名稱:`nginx_config_add`
+
+### 修改現有配置文件
+
+- 類型:`tool`
+- 名稱:`nginx_config_modify`
+
+### 重命名配置文件
+
+- 類型:`tool`
+- 名稱:`nginx_config_rename`
+
+### 創建配置目錄
+
+- 類型:`tool`
+- 名稱:`nginx_config_mkdir`
+
+### 歷史記錄
+
+- 類型:`tool`
+- 名稱:`nginx_config_history`
+
+## 使用示例
+
+以下是一些使用 MCP 配置文件管理功能的示例:
+
+### 獲取基礎路徑
+
+```json
+{
+  "tool": "nginx_config_base_path",
+  "parameters": {}
+}
+```
+
+返回結果示例:
+
+```json
+{
+  "base_path": "/etc/nginx"
+}
+```
+
+### 列出配置文件
+
+```json
+{
+  "tool": "nginx_config_list",
+  "parameters": {
+    "path": "/etc/nginx/conf.d"
+  }
+}
+```
+
+返回結果示例:
+
+```json
+{
+  "files": [
+    {
+      "name": "default.conf",
+      "is_dir": false,
+      "path": "/etc/nginx/conf.d/default.conf"
+    },
+    {
+      "name": "example.conf",
+      "is_dir": false,
+      "path": "/etc/nginx/conf.d/example.conf"
+    }
+  ]
+}
+```
+
+### 獲取配置文件內容
+
+```json
+{
+  "tool": "nginx_config_get",
+  "parameters": {
+    "path": "/etc/nginx/conf.d/default.conf"
+  }
+}
+```
+
+### 修改配置文件
+
+```json
+{
+  "tool": "nginx_config_modify",
+  "parameters": {
+    "path": "/etc/nginx/conf.d/default.conf",
+    "content": "server {\n    listen 80;\n    server_name example.com;\n    location / {\n        root /usr/share/nginx/html;\n        index index.html;\n    }\n}"
+  }
+}
+```
+
+## 注意事項
+
+- 所有路徑操作都是相對於 Nginx 配置基礎路徑的
+- 配置文件修改會自動備份,可通過歷史記錄功能恢復
+- 某些操作可能需要驗證配置文件語法正確性 

+ 22 - 0
docs/zh_TW/guide/mcp-nginx.md

@@ -0,0 +1,22 @@
+# MCP Nginx 服務管理
+
+## 簡介
+
+MCP Nginx 服務管理模組提供了一組工具和資源,用於監控和控制 Nginx 服務。這些功能使 AI 代理和自動化工具能夠查詢 Nginx 狀態、重新加載配置和重啟服務,而無需通過傳統命令行界面。
+
+## 功能列表
+
+### 獲取 Nginx 狀態
+
+- 類型:`tool`
+- 名稱:`nginx_status`
+
+### 重新加載 Nginx
+
+- 類型:`tool`
+- 名稱:`nginx_reload`
+
+### 重啟 Nginx 服務
+
+- 類型:`tool`
+- 名稱:`nginx_restart`

+ 43 - 0
docs/zh_TW/guide/mcp.md

@@ -0,0 +1,43 @@
+# MCP 模組
+
+## 簡介
+
+MCP(Model Context Protocol)是 Nginx UI 提供的一個特殊介面,允許 AI 代理與 Nginx UI 互動。通過 MCP,AI 模型可以訪問和管理 Nginx 配置文件、執行 Nginx 相關操作(如重啓、重載)以及獲取 Nginx 運行狀態。
+
+## 功能概覽
+
+MCP 模組主要分為兩大部分功能:
+
+- [配置文件管理](./mcp-config.md) - 管理 Nginx 配置文件的各種操作
+- [Nginx 服務管理](./mcp-nginx.md) - 控制和監控 Nginx 服務狀態
+
+## 介面
+
+MCP 介面通過 `/mcp` 路徑提供 SSE 流式傳輸。
+
+## 認證
+
+MCP 介面通過 `node_secret` 查詢參數進行認證。
+
+例如:
+
+```
+http://localhost:9000/mcp?node_secret=<your_node_secret>
+```
+
+### 資源(Resource)
+
+資源是 MCP 提供的可讀取信息,例如 Nginx 狀態。
+
+### 工具(Tool)
+
+工具是 MCP 提供的可執行操作,例如重啓 Nginx、修改配置文件等。
+
+## 使用場景
+
+MCP 主要用於以下場景:
+
+1. AI 驅動的 Nginx 配置管理
+2. 自動化運維工具集成
+3. 第三方系統與 Nginx UI 的集成
+4. 提供機器可讀的 API 以便於自動化腳本使用 

+ 2 - 0
go.mod

@@ -27,6 +27,7 @@ require (
 	github.com/gorilla/websocket v1.5.3
 	github.com/jpillora/overseer v1.1.6
 	github.com/lib/pq v1.10.9
+	github.com/mark3labs/mcp-go v0.23.1
 	github.com/minio/selfupdate v0.6.0
 	github.com/nikoksr/notify v1.3.0
 	github.com/nxadm/tail v1.4.11
@@ -263,6 +264,7 @@ require (
 	github.com/x448/float16 v0.8.4 // indirect
 	github.com/yandex-cloud/go-genproto v0.0.0-20250415125903-e04f82fce08c // indirect
 	github.com/yandex-cloud/go-sdk v0.0.0-20250415134549-3e9c77f74bb7 // indirect
+	github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
 	github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
 	github.com/yusufpapurcu/wmi v1.2.4 // indirect
 	go.mongodb.org/mongo-driver v1.17.3 // indirect

+ 4 - 2
go.sum

@@ -1423,6 +1423,8 @@ github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WV
 github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
 github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
 github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/mark3labs/mcp-go v0.23.1 h1:RzTzZ5kJ+HxwnutKA4rll8N/pKV6Wh5dhCmiJUu5S9I=
+github.com/mark3labs/mcp-go v0.23.1/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4=
 github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
 github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
@@ -1837,8 +1839,6 @@ github.com/uozi-tech/cosy-driver-postgres v0.2.1/go.mod h1:eAy1A89yHbAEfjkhNAifa
 github.com/uozi-tech/cosy-driver-sqlite v0.2.1 h1:W+Z4pY25PSJCeReqroG7LIBeffsqotbpHzgqSMqZDIM=
 github.com/uozi-tech/cosy-driver-sqlite v0.2.1/go.mod h1:2ya7Z5P3HzFi1ktfL8gvwaAGx0DDV0bmWxNSNpaLlwo=
 github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
-github.com/urfave/cli/v3 v3.1.1 h1:bNnl8pFI5dxPOjeONvFCDFoECLQsceDG4ejahs4Jtxk=
-github.com/urfave/cli/v3 v3.1.1/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo=
 github.com/urfave/cli/v3 v3.2.0 h1:m8WIXY0U9LCuUl5r+0fqLWDhNYWt6qvlW+GcF4EoXf8=
 github.com/urfave/cli/v3 v3.2.0/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo=
 github.com/vinyldns/go-vinyldns v0.9.16 h1:GZJStDkcCk1F1AcRc64LuuMh+ENL8pHA0CVd4ulRMcQ=
@@ -1862,6 +1862,8 @@ github.com/yandex-cloud/go-genproto v0.0.0-20250415125903-e04f82fce08c h1:AHeznz
 github.com/yandex-cloud/go-genproto v0.0.0-20250415125903-e04f82fce08c/go.mod h1:0LDD/IZLIUIV4iPH+YcF+jysO3jkSvADFGm4dCAuwQo=
 github.com/yandex-cloud/go-sdk v0.0.0-20250415134549-3e9c77f74bb7 h1:ydVq9gVDCyavCMzSoVQlpeaRiYlesMUwEW9s/ALFQXE=
 github.com/yandex-cloud/go-sdk v0.0.0-20250415134549-3e9c77f74bb7/go.mod h1:aBC6JVH0vdnoTnHQLRWkwr5f+fmXq8f8qYSs1Vt0HBQ=
+github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zIM+UJPGz4=
+github.com/yosida95/uritemplate/v3 v3.0.2/go.mod h1:ILOh0sOhIJR3+L/8afwt/kE++YT040gmv5BQTMR2HP4=
 github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
 github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM=
 github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=

+ 60 - 0
internal/config/config_list.go

@@ -1,7 +1,11 @@
 package config
 
 import (
+	"os"
 	"sort"
+
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/uozi-tech/cosy/logger"
 )
 
 type ConfigsSort struct {
@@ -59,3 +63,59 @@ func Sort(key string, order string, configs []Config) []Config {
 
 	return configsSort.ConfigList
 }
+
+func GetConfigList(relativePath string, filter func(file os.FileInfo) bool) ([]Config, error) {
+	configFiles, err := os.ReadDir(nginx.GetConfPath(relativePath))
+	if err != nil {
+		return nil, err
+	}
+
+	configs := make([]Config, 0)
+
+	for i := range configFiles {
+		file := configFiles[i]
+		fileInfo, err := file.Info()
+		if err != nil {
+			logger.Error("Get File Info Error", file.Name(), err)
+			continue
+		}
+
+		if filter != nil && !filter(fileInfo) {
+			continue
+		}
+
+		switch mode := fileInfo.Mode(); {
+		case mode.IsRegular(): // regular file, not a hidden file
+			if "." == file.Name()[0:1] {
+				continue
+			}
+		case mode&os.ModeSymlink != 0: // is a symbol
+			var targetPath string
+			targetPath, err = os.Readlink(nginx.GetConfPath(relativePath, file.Name()))
+			if err != nil {
+				logger.Error("Read Symlink Error", targetPath, err)
+				continue
+			}
+
+			var targetInfo os.FileInfo
+			targetInfo, err = os.Stat(targetPath)
+			if err != nil {
+				logger.Error("Stat Error", targetPath, err)
+				continue
+			}
+			// hide the file if it's target file is a directory
+			if targetInfo.IsDir() {
+				continue
+			}
+		}
+
+		configs = append(configs, Config{
+			Name:       file.Name(),
+			ModifiedAt: fileInfo.ModTime(),
+			Size:       fileInfo.Size(),
+			IsDir:      fileInfo.IsDir(),
+		})
+	}
+
+	return configs, nil
+}

+ 0 - 1
internal/docker/ota.go

@@ -340,7 +340,6 @@ func UpgradeStepThree() error {
 	// Get old container name from environment variable, fallback to settings if not available
 	currentContainerName := os.Getenv("NGINX_UI_CONTAINER_NAME")
 	if currentContainerName == "" {
-		logger.Warn("Old container name not found in environment, skipping cleanup")
 		return nil
 	}
 	oldContainerName := currentContainerName + OldSuffix

+ 2 - 2
internal/kernel/boot.go

@@ -13,6 +13,7 @@ import (
 	"github.com/0xJacky/Nginx-UI/internal/cluster"
 	"github.com/0xJacky/Nginx-UI/internal/cron"
 	"github.com/0xJacky/Nginx-UI/internal/docker"
+	"github.com/0xJacky/Nginx-UI/internal/mcp"
 	"github.com/0xJacky/Nginx-UI/internal/passkey"
 	"github.com/0xJacky/Nginx-UI/internal/validation"
 	"github.com/0xJacky/Nginx-UI/model"
@@ -61,6 +62,7 @@ func InitAfterDatabase() {
 		analytic.RetrieveNodesStatus,
 		passkey.Init,
 		RegisterAcmeUser,
+		mcp.Init,
 	}
 
 	for _, v := range syncs {
@@ -138,7 +140,5 @@ func CheckAndCleanupOTAContainers() {
 	err := docker.UpgradeStepThree()
 	if err != nil {
 		logger.Error("Failed to cleanup OTA containers:", err)
-	} else {
-		logger.Info("OTA container cleanup completed successfully")
 	}
 }

+ 60 - 0
internal/mcp/server.go

@@ -0,0 +1,60 @@
+package mcp
+
+import (
+	"context"
+	"sync"
+
+	"github.com/gin-gonic/gin"
+	"github.com/mark3labs/mcp-go/mcp"
+	"github.com/mark3labs/mcp-go/server"
+)
+
+var (
+	mcpServer = server.NewMCPServer(
+		"Nginx",
+		"1.0.0",
+		server.WithResourceCapabilities(true, true),
+		server.WithLogging(),
+		server.WithRecovery(),
+	)
+	sseServer = server.NewSSEServer(
+		mcpServer,
+		server.WithSSEEndpoint("/mcp"),
+		server.WithMessageEndpoint("/mcp_message"),
+	)
+)
+
+const (
+	MimeTypeJSON = "application/json"
+	MimeTypeText = "text/plain"
+)
+
+type Resource struct {
+	Resource mcp.Resource
+	Handler  func(ctx context.Context, request mcp.ReadResourceRequest) ([]mcp.ResourceContents, error)
+}
+
+type Tool struct {
+	Tool    mcp.Tool
+	Handler func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error)
+}
+
+var (
+	tools         = []Tool{}
+	toolMutex     sync.Mutex
+)
+func AddTool(tool mcp.Tool, handler func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error)) {
+	toolMutex.Lock()
+	defer toolMutex.Unlock()
+	tools = append(tools, Tool{Tool: tool, Handler: handler})
+}
+
+func ServeHTTP(c *gin.Context) {
+	sseServer.ServeHTTP(c.Writer, c.Request)
+}
+
+func Init() {
+	for _, tool := range tools {
+		mcpServer.AddTool(tool.Tool, tool.Handler)
+	}
+}

+ 6 - 0
internal/middleware/middleware.go

@@ -59,6 +59,12 @@ func AuthRequired() gin.HandlerFunc {
 			return
 		}
 
+		if token := c.Query("node_secret"); token != "" && token == settings.NodeSettings.Secret {
+			c.Set("Secret", token)
+			c.Next()
+			return
+		}
+
 		token := getToken(c)
 		if token == "" {
 			abortWithAuthFailure()

+ 114 - 0
mcp/config/config_add.go

@@ -0,0 +1,114 @@
+package config
+
+import (
+	"context"
+	"encoding/json"
+	"errors"
+	"os"
+	"path/filepath"
+
+	"github.com/0xJacky/Nginx-UI/internal/config"
+	"github.com/0xJacky/Nginx-UI/internal/helper"
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/0xJacky/Nginx-UI/model"
+	"github.com/0xJacky/Nginx-UI/query"
+	"github.com/mark3labs/mcp-go/mcp"
+)
+
+const nginxConfigAddToolName = "nginx_config_add"
+
+// ErrFileAlreadyExists is returned when trying to create a file that already exists
+var ErrFileAlreadyExists = errors.New("file already exists")
+
+var nginxConfigAddTool = mcp.NewTool(
+	nginxConfigAddToolName,
+	mcp.WithDescription("Add or create a new Nginx configuration file"),
+	mcp.WithString("name", mcp.Description("The name of the configuration file to create")),
+	mcp.WithString("content", mcp.Description("The content of the configuration file")),
+	mcp.WithString("base_dir", mcp.Description("The base directory for the configuration")),
+	mcp.WithBoolean("overwrite", mcp.Description("Whether to overwrite an existing file")),
+	mcp.WithArray("sync_node_ids", mcp.Description("IDs of nodes to sync the configuration to")),
+)
+
+func handleNginxConfigAdd(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
+	args := request.Params.Arguments
+	name := args["name"].(string)
+	content := args["content"].(string)
+	baseDir := args["base_dir"].(string)
+	overwrite := args["overwrite"].(bool)
+
+	// Convert sync_node_ids from []interface{} to []uint64
+	syncNodeIdsInterface, ok := args["sync_node_ids"].([]interface{})
+	syncNodeIds := make([]uint64, 0)
+	if ok {
+		for _, id := range syncNodeIdsInterface {
+			if idFloat, ok := id.(float64); ok {
+				syncNodeIds = append(syncNodeIds, uint64(idFloat))
+			}
+		}
+	}
+
+	dir := nginx.GetConfPath(baseDir)
+	path := filepath.Join(dir, name)
+	if !helper.IsUnderDirectory(path, nginx.GetConfPath()) {
+		return nil, config.ErrPathIsNotUnderTheNginxConfDir
+	}
+
+	if !overwrite && helper.FileExists(path) {
+		return nil, ErrFileAlreadyExists
+	}
+
+	// Check if the directory exists, if not, create it
+	if !helper.FileExists(dir) {
+		err := os.MkdirAll(dir, 0755)
+		if err != nil {
+			return nil, err
+		}
+	}
+
+	err := os.WriteFile(path, []byte(content), 0644)
+	if err != nil {
+		return nil, err
+	}
+
+	output, err := nginx.Reload()
+	if err != nil {
+		return nil, err
+	}
+
+	if nginx.GetLogLevel(output) >= nginx.Warn {
+		return nil, config.ErrNginxReloadFailed
+	}
+
+	q := query.Config
+	_, err = q.Where(q.Filepath.Eq(path)).Delete()
+	if err != nil {
+		return nil, err
+	}
+
+	cfg := &model.Config{
+		Name:          name,
+		Filepath:      path,
+		SyncNodeIds:   syncNodeIds,
+		SyncOverwrite: overwrite,
+	}
+
+	err = q.Create(cfg)
+	if err != nil {
+		return nil, err
+	}
+
+	err = config.SyncToRemoteServer(cfg)
+	if err != nil {
+		return nil, err
+	}
+
+	result := map[string]interface{}{
+		"name":      name,
+		"content":   content,
+		"file_path": path,
+	}
+
+	jsonResult, _ := json.Marshal(result)
+	return mcp.NewToolResultText(string(jsonResult)), nil
+}

+ 27 - 0
mcp/config/config_base_path.go

@@ -0,0 +1,27 @@
+package config
+
+import (
+	"context"
+	"encoding/json"
+
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/mark3labs/mcp-go/mcp"
+)
+
+const nginxConfigBasePathToolName = "nginx_config_base_path"
+
+var nginxConfigBasePathTool = mcp.NewTool(
+	nginxConfigBasePathToolName,
+	mcp.WithDescription("Get the base path of Nginx configurations"),
+)
+
+func handleNginxConfigBasePath(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
+	basePath := nginx.GetConfPath()
+
+	result := map[string]interface{}{
+		"base_path": basePath,
+	}
+
+	jsonResult, _ := json.Marshal(result)
+	return mcp.NewToolResultText(string(jsonResult)), nil
+}

+ 67 - 0
mcp/config/config_get.go

@@ -0,0 +1,67 @@
+package config
+
+import (
+	"context"
+	"encoding/json"
+	"os"
+	"path/filepath"
+
+	"github.com/0xJacky/Nginx-UI/internal/config"
+	"github.com/0xJacky/Nginx-UI/internal/helper"
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/0xJacky/Nginx-UI/query"
+	"github.com/mark3labs/mcp-go/mcp"
+)
+
+const nginxConfigGetToolName = "nginx_config_get"
+
+var nginxConfigGetTool = mcp.NewTool(
+	nginxConfigGetToolName,
+	mcp.WithDescription("Get a specific Nginx configuration file"),
+	mcp.WithString("relative_path", mcp.Description("The relative path to the configuration file")),
+)
+
+func handleNginxConfigGet(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
+	relativePath := request.Params.Arguments["relative_path"].(string)
+
+	absPath := nginx.GetConfPath(relativePath)
+	if !helper.IsUnderDirectory(absPath, nginx.GetConfPath()) {
+		return nil, config.ErrPathIsNotUnderTheNginxConfDir
+	}
+
+	stat, err := os.Stat(absPath)
+	if err != nil {
+		return nil, err
+	}
+
+	content, err := os.ReadFile(absPath)
+	if err != nil {
+		return nil, err
+	}
+
+	q := query.Config
+	g := query.ChatGPTLog
+	chatgpt, err := g.Where(g.Name.Eq(absPath)).FirstOrCreate()
+	if err != nil {
+		return nil, err
+	}
+
+	cfg, err := q.Where(q.Filepath.Eq(absPath)).FirstOrInit()
+	if err != nil {
+		return nil, err
+	}
+
+	result := map[string]interface{}{
+		"name":              stat.Name(),
+		"content":           string(content),
+		"chat_gpt_messages": chatgpt.Content,
+		"file_path":         absPath,
+		"modified_at":       stat.ModTime(),
+		"dir":               filepath.Dir(relativePath),
+		"sync_node_ids":     cfg.SyncNodeIds,
+		"sync_overwrite":    cfg.SyncOverwrite,
+	}
+
+	jsonResult, _ := json.Marshal(result)
+	return mcp.NewToolResultText(string(jsonResult)), nil
+}

+ 30 - 0
mcp/config/config_history.go

@@ -0,0 +1,30 @@
+package config
+
+import (
+	"context"
+	"encoding/json"
+
+	"github.com/0xJacky/Nginx-UI/query"
+	"github.com/mark3labs/mcp-go/mcp"
+)
+
+const nginxConfigHistoryToolName = "nginx_config_history"
+
+var nginxConfigHistoryTool = mcp.NewTool(
+	nginxConfigHistoryToolName,
+	mcp.WithDescription("Get history of Nginx configuration changes"),
+	mcp.WithString("filepath", mcp.Description("The file path to get history for")),
+)
+
+func handleNginxConfigHistory(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
+	filepath := request.Params.Arguments["filepath"].(string)
+
+	q := query.ConfigBackup
+	var histories, err = q.Where(q.FilePath.Eq(filepath)).Order(q.ID.Desc()).Find()
+	if err != nil {
+		return nil, err
+	}
+
+	jsonResult, _ := json.Marshal(histories)
+	return mcp.NewToolResultText(string(jsonResult)), nil
+}

+ 32 - 0
mcp/config/config_list.go

@@ -0,0 +1,32 @@
+package config
+
+import (
+	"context"
+	"encoding/json"
+	"os"
+	"strings"
+
+	"github.com/0xJacky/Nginx-UI/internal/config"
+	"github.com/mark3labs/mcp-go/mcp"
+)
+
+const nginxConfigListToolName = "nginx_config_list"
+
+var nginxConfigListTool = mcp.NewTool(
+	nginxConfigListToolName,
+	mcp.WithDescription("This is the list of Nginx configurations"),
+	mcp.WithString("relative_path", mcp.Description("The relative path to the Nginx configurations")),
+	mcp.WithString("filter_by_name", mcp.Description("Filter the Nginx configurations by name")),
+)
+
+func handleNginxConfigList(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
+	relativePath := request.Params.Arguments["relative_path"].(string)
+	filterByName := request.Params.Arguments["filter_by_name"].(string)
+	configs, err := config.GetConfigList(relativePath, func(file os.FileInfo) bool {
+		return filterByName == "" || strings.Contains(file.Name(), filterByName)
+	})
+
+	jsonResult, _ := json.Marshal(configs)
+
+	return mcp.NewToolResultText(string(jsonResult)), err
+}

+ 45 - 0
mcp/config/config_mkdir.go

@@ -0,0 +1,45 @@
+package config
+
+import (
+	"context"
+	"encoding/json"
+	"os"
+
+	"github.com/0xJacky/Nginx-UI/internal/config"
+	"github.com/0xJacky/Nginx-UI/internal/helper"
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/mark3labs/mcp-go/mcp"
+)
+
+const nginxConfigMkdirToolName = "nginx_config_mkdir"
+
+var nginxConfigMkdirTool = mcp.NewTool(
+	nginxConfigMkdirToolName,
+	mcp.WithDescription("Create a new directory in the Nginx configuration path"),
+	mcp.WithString("base_path", mcp.Description("The base path where to create the directory")),
+	mcp.WithString("folder_name", mcp.Description("The name of the folder to create")),
+)
+
+func handleNginxConfigMkdir(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
+	args := request.Params.Arguments
+	basePath := args["base_path"].(string)
+	folderName := args["folder_name"].(string)
+
+	fullPath := nginx.GetConfPath(basePath, folderName)
+	if !helper.IsUnderDirectory(fullPath, nginx.GetConfPath()) {
+		return nil, config.ErrPathIsNotUnderTheNginxConfDir
+	}
+
+	err := os.Mkdir(fullPath, 0755)
+	if err != nil {
+		return nil, err
+	}
+
+	result := map[string]interface{}{
+		"message": "Directory created successfully",
+		"path":    fullPath,
+	}
+
+	jsonResult, _ := json.Marshal(result)
+	return mcp.NewToolResultText(string(jsonResult)), nil
+}

+ 96 - 0
mcp/config/config_modify.go

@@ -0,0 +1,96 @@
+package config
+
+import (
+	"context"
+	"encoding/json"
+	"errors"
+	"path/filepath"
+
+	"github.com/0xJacky/Nginx-UI/internal/config"
+	"github.com/0xJacky/Nginx-UI/internal/helper"
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/0xJacky/Nginx-UI/model"
+	"github.com/0xJacky/Nginx-UI/query"
+	"github.com/mark3labs/mcp-go/mcp"
+	"gorm.io/gen/field"
+)
+
+const nginxConfigModifyToolName = "nginx_config_modify"
+
+// ErrFileNotFound is returned when a file is not found
+var ErrFileNotFound = errors.New("file not found")
+
+var nginxConfigModifyTool = mcp.NewTool(
+	nginxConfigModifyToolName,
+	mcp.WithDescription("Modify an existing Nginx configuration file"),
+	mcp.WithString("relative_path", mcp.Description("The relative path to the configuration file")),
+	mcp.WithString("content", mcp.Description("The new content of the configuration file")),
+	mcp.WithBoolean("sync_overwrite", mcp.Description("Whether to overwrite existing files when syncing")),
+	mcp.WithArray("sync_node_ids", mcp.Description("IDs of nodes to sync the configuration to")),
+)
+
+func handleNginxConfigModify(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
+	args := request.Params.Arguments
+	relativePath := args["relative_path"].(string)
+	content := args["content"].(string)
+	syncOverwrite := args["sync_overwrite"].(bool)
+
+	// Convert sync_node_ids from []interface{} to []uint64
+	syncNodeIdsInterface, ok := args["sync_node_ids"].([]interface{})
+	syncNodeIds := make([]uint64, 0)
+	if ok {
+		for _, id := range syncNodeIdsInterface {
+			if idFloat, ok := id.(float64); ok {
+				syncNodeIds = append(syncNodeIds, uint64(idFloat))
+			}
+		}
+	}
+
+	absPath := nginx.GetConfPath(relativePath)
+	if !helper.IsUnderDirectory(absPath, nginx.GetConfPath()) {
+		return nil, config.ErrPathIsNotUnderTheNginxConfDir
+	}
+
+	if !helper.FileExists(absPath) {
+		return nil, ErrFileNotFound
+	}
+
+	q := query.Config
+	cfg, err := q.Assign(field.Attrs(&model.Config{
+		Filepath: absPath,
+	})).Where(q.Filepath.Eq(absPath)).FirstOrCreate()
+	if err != nil {
+		return nil, err
+	}
+
+	// Update database record
+	_, err = q.Where(q.Filepath.Eq(absPath)).
+		Select(q.SyncNodeIds, q.SyncOverwrite).
+		Updates(&model.Config{
+			SyncNodeIds:   syncNodeIds,
+			SyncOverwrite: syncOverwrite,
+		})
+	if err != nil {
+		return nil, err
+	}
+
+	cfg.SyncNodeIds = syncNodeIds
+	cfg.SyncOverwrite = syncOverwrite
+
+	err = config.Save(absPath, content, cfg)
+	if err != nil {
+		return nil, err
+	}
+
+	result := map[string]interface{}{
+		"name":           filepath.Base(absPath),
+		"content":        content,
+		"file_path":      absPath,
+		"dir":            filepath.Dir(relativePath),
+		"sync_node_ids":  cfg.SyncNodeIds,
+		"sync_overwrite": cfg.SyncOverwrite,
+	}
+
+	jsonResult, _ := json.Marshal(result)
+	return mcp.NewToolResultText(string(jsonResult)), nil
+}

+ 120 - 0
mcp/config/config_rename.go

@@ -0,0 +1,120 @@
+package config
+
+import (
+	"context"
+	"encoding/json"
+	"os"
+	"path/filepath"
+	"strings"
+
+	"github.com/0xJacky/Nginx-UI/internal/config"
+	"github.com/0xJacky/Nginx-UI/internal/helper"
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/0xJacky/Nginx-UI/model"
+	"github.com/0xJacky/Nginx-UI/query"
+	"github.com/mark3labs/mcp-go/mcp"
+)
+
+const nginxConfigRenameToolName = "nginx_config_rename"
+
+var nginxConfigRenameTool = mcp.NewTool(
+	nginxConfigRenameToolName,
+	mcp.WithDescription("Rename a file or directory in the Nginx configuration path"),
+	mcp.WithString("base_path", mcp.Description("The base path where the file or directory is located")),
+	mcp.WithString("orig_name", mcp.Description("The original name of the file or directory")),
+	mcp.WithString("new_name", mcp.Description("The new name for the file or directory")),
+	mcp.WithArray("sync_node_ids", mcp.Description("IDs of nodes to sync the rename operation to")),
+)
+
+func handleNginxConfigRename(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
+	args := request.Params.Arguments
+	basePath := args["base_path"].(string)
+	origName := args["orig_name"].(string)
+	newName := args["new_name"].(string)
+
+	// Convert sync_node_ids from []interface{} to []uint64
+	syncNodeIdsInterface, ok := args["sync_node_ids"].([]interface{})
+	syncNodeIds := make([]uint64, 0)
+	if ok {
+		for _, id := range syncNodeIdsInterface {
+			if idFloat, ok := id.(float64); ok {
+				syncNodeIds = append(syncNodeIds, uint64(idFloat))
+			}
+		}
+	}
+
+	if origName == newName {
+		result := map[string]interface{}{
+			"message": "No changes needed, names are identical",
+		}
+		jsonResult, _ := json.Marshal(result)
+		return mcp.NewToolResultText(string(jsonResult)), nil
+	}
+
+	origFullPath := nginx.GetConfPath(basePath, origName)
+	newFullPath := nginx.GetConfPath(basePath, newName)
+	if !helper.IsUnderDirectory(origFullPath, nginx.GetConfPath()) ||
+		!helper.IsUnderDirectory(newFullPath, nginx.GetConfPath()) {
+		return nil, config.ErrPathIsNotUnderTheNginxConfDir
+	}
+
+	stat, err := os.Stat(origFullPath)
+	if err != nil {
+		return nil, err
+	}
+
+	if helper.FileExists(newFullPath) {
+		return nil, ErrFileAlreadyExists
+	}
+
+	err = os.Rename(origFullPath, newFullPath)
+	if err != nil {
+		return nil, err
+	}
+
+	// update ChatGPT records
+	g := query.ChatGPTLog
+	q := query.Config
+	cfg, err := q.Where(q.Filepath.Eq(origFullPath)).FirstOrInit()
+	if err != nil {
+		return nil, err
+	}
+
+	if !stat.IsDir() {
+		_, _ = g.Where(g.Name.Eq(newFullPath)).Delete()
+		_, _ = g.Where(g.Name.Eq(origFullPath)).Update(g.Name, newFullPath)
+		// for file, the sync policy for this file is used
+		syncNodeIds = cfg.SyncNodeIds
+	} else {
+		// is directory, update all records under the directory
+		_, _ = g.Where(g.Name.Like(origFullPath+"%")).Update(g.Name, g.Name.Replace(origFullPath, newFullPath))
+	}
+
+	_, err = q.Where(q.Filepath.Eq(origFullPath)).Updates(&model.Config{
+		Filepath: newFullPath,
+		Name:     newName,
+	})
+	if err != nil {
+		return nil, err
+	}
+
+	b := query.ConfigBackup
+	_, _ = b.Where(b.FilePath.Eq(origFullPath)).Updates(map[string]interface{}{
+		"filepath": newFullPath,
+		"name":     newName,
+	})
+
+	if len(syncNodeIds) > 0 {
+		err = config.SyncRenameOnRemoteServer(origFullPath, newFullPath, syncNodeIds)
+		if err != nil {
+			return nil, err
+		}
+	}
+
+	result := map[string]interface{}{
+		"path": strings.TrimLeft(filepath.Join(basePath, newName), "/"),
+	}
+
+	jsonResult, _ := json.Marshal(result)
+	return mcp.NewToolResultText(string(jsonResult)), nil
+}

+ 16 - 0
mcp/config/register.go

@@ -0,0 +1,16 @@
+package config
+
+import (
+	"github.com/0xJacky/Nginx-UI/internal/mcp"
+)
+
+func Init() {
+	mcp.AddTool(nginxConfigAddTool, handleNginxConfigAdd)
+	mcp.AddTool(nginxConfigBasePathTool, handleNginxConfigBasePath)
+	mcp.AddTool(nginxConfigGetTool, handleNginxConfigGet)
+	mcp.AddTool(nginxConfigHistoryTool, handleNginxConfigHistory)
+	mcp.AddTool(nginxConfigListTool, handleNginxConfigList)
+	mcp.AddTool(nginxConfigMkdirTool, handleNginxConfigMkdir)
+	mcp.AddTool(nginxConfigModifyTool, handleNginxConfigModify)
+	mcp.AddTool(nginxConfigRenameTool, handleNginxConfigRename)
+}

+ 11 - 0
mcp/nginx/register.go

@@ -0,0 +1,11 @@
+package nginx
+
+import (
+	"github.com/0xJacky/Nginx-UI/internal/mcp"
+)
+
+func Init() {
+	mcp.AddTool(nginxReloadTool, handleNginxReload)
+	mcp.AddTool(nginxRestartTool, handleNginxRestart)
+	mcp.AddTool(statusTool, handleNginxStatus)
+}

+ 24 - 0
mcp/nginx/reload.go

@@ -0,0 +1,24 @@
+package nginx
+
+import (
+	"context"
+
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/mark3labs/mcp-go/mcp"
+)
+
+const nginxReloadToolName = "reload_nginx"
+
+var nginxReloadTool = mcp.NewTool(
+	nginxReloadToolName,
+	mcp.WithDescription("Perform a graceful reload of the Nginx configuration"),
+)
+
+func handleNginxReload(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
+	output, err := nginx.Reload()
+	if err != nil {
+		return mcp.NewToolResultError(output + "\n" + err.Error()), err
+	}
+
+	return mcp.NewToolResultText(output), nil
+}

+ 24 - 0
mcp/nginx/restart.go

@@ -0,0 +1,24 @@
+package nginx
+
+import (
+	"context"
+
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/mark3labs/mcp-go/mcp"
+)
+
+const nginxRestartToolName = "restart_nginx"
+
+var nginxRestartTool = mcp.NewTool(
+	nginxRestartToolName,
+	mcp.WithDescription("Perform a graceful restart of the Nginx configuration"),
+)
+
+func handleNginxRestart(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
+	nginx.Restart()
+	output, err := nginx.GetLastOutput()
+	if err != nil {
+		return mcp.NewToolResultError(output + "\n" + err.Error()), err
+	}
+	return mcp.NewToolResultText(output), nil
+}

+ 41 - 0
mcp/nginx/status.go

@@ -0,0 +1,41 @@
+package nginx
+
+import (
+	"context"
+	"encoding/json"
+
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+	"github.com/gin-gonic/gin"
+	"github.com/mark3labs/mcp-go/mcp"
+)
+
+const nginxStatusToolName = "nginx_status"
+
+// statusResource is the status of the Nginx server
+var statusTool = mcp.NewTool(
+	nginxStatusToolName,
+	mcp.WithDescription("This is the status of the Nginx server"),
+)
+
+// handleNginxStatus handles the Nginx status request
+func handleNginxStatus(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
+	lastOutput, err := nginx.GetLastOutput()
+	if err != nil {
+		return mcp.NewToolResultError(lastOutput + "\n" + err.Error()), err
+	}
+
+	running := nginx.IsNginxRunning()
+	level := nginx.GetLogLevel(lastOutput)
+
+	// build result
+	result := gin.H{
+		"running": running,
+		"message": lastOutput,
+		"level":   level,
+	}
+
+	// marshal to json and return text result
+	jsonResult, _ := json.Marshal(result)
+
+	return mcp.NewToolResultText(string(jsonResult)), nil
+}

+ 11 - 0
mcp/register.go

@@ -0,0 +1,11 @@
+package mcp
+
+import (
+	"github.com/0xJacky/Nginx-UI/mcp/config"
+	"github.com/0xJacky/Nginx-UI/mcp/nginx"
+)
+
+func init() {
+	config.Init()
+	nginx.Init()
+}

+ 18 - 0
mcp/router.go

@@ -0,0 +1,18 @@
+package mcp
+
+import (
+	"github.com/0xJacky/Nginx-UI/internal/mcp"
+	"github.com/0xJacky/Nginx-UI/internal/middleware"
+	"github.com/gin-gonic/gin"
+)
+
+func InitRouter(r *gin.Engine) {
+	r.Any("/mcp", middleware.IPWhiteList(), middleware.AuthRequired(),
+		func(c *gin.Context) {
+			mcp.ServeHTTP(c)
+		})
+	r.Any("/mcp_message", middleware.IPWhiteList(),
+		func(c *gin.Context) {
+			mcp.ServeHTTP(c)
+		})
+}

+ 3 - 0
router/routers.go

@@ -26,6 +26,7 @@ import (
 	"github.com/0xJacky/Nginx-UI/api/upstream"
 	"github.com/0xJacky/Nginx-UI/api/user"
 	"github.com/0xJacky/Nginx-UI/internal/middleware"
+	"github.com/0xJacky/Nginx-UI/mcp"
 	"github.com/gin-gonic/gin"
 	"github.com/uozi-tech/cosy"
 	cSettings "github.com/uozi-tech/cosy/settings"
@@ -44,6 +45,8 @@ func InitRouter() {
 		})
 	})
 
+	mcp.InitRouter(r)
+
 	root := r.Group("/api", middleware.IPWhiteList())
 	{
 		public.InitRouter(root)