Ver código fonte

refactor(otp): styles for TOTP settings

Hintay 5 meses atrás
pai
commit
3738bebca7

+ 87 - 75
app/src/language/ar/app.po

@@ -71,8 +71,8 @@ msgstr "إضافة تكوين"
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "أضف التوجيه أدناه"
 msgstr "أضف التوجيه أدناه"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:132
-#: src/views/site/ngx_conf/LocationEditor.vue:159
+#: src/views/site/ngx_conf/LocationEditor.vue:130
+#: src/views/site/ngx_conf/LocationEditor.vue:157
 msgid "Add Location"
 msgid "Add Location"
 msgstr "أضف مكان"
 msgstr "أضف مكان"
 
 
@@ -187,7 +187,7 @@ msgstr "هل أنت متأكد أنك تريد إزالة هذا التوجيه
 msgid "Are you sure you want to remove this item?"
 msgid "Are you sure you want to remove this item?"
 msgstr "هل أنت متأكد أنك تريد إزالة هذا العنصر؟"
 msgstr "هل أنت متأكد أنك تريد إزالة هذا العنصر؟"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:88
+#: src/views/site/ngx_conf/LocationEditor.vue:86
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "هل أنت متأكد أنك تريد إزالة هذا المكان؟"
 msgstr "هل أنت متأكد أنك تريد إزالة هذا المكان؟"
 
 
@@ -315,10 +315,6 @@ msgstr "مجلد سلطة التصديق"
 msgid "CADir"
 msgid "CADir"
 msgstr "مجلد سلطة التصديق"
 msgstr "مجلد سلطة التصديق"
 
 
-#: src/views/preference/components/TOTP.vue:145
-msgid "Can't scan? Use text key binding"
-msgstr "لا يمكن المسح؟ استخدم ربط مفتاح النص"
-
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
@@ -372,7 +368,7 @@ msgid "Certificate Renewal Interval"
 msgstr "الفاصل الزمني لتجديد الشهادة"
 msgstr "الفاصل الزمني لتجديد الشهادة"
 
 
 #: src/views/certificate/CertificateEditor.vue:128
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:32
+#: src/views/site/cert/Cert.vue:33
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgid_plural "Certificates Status"
 msgstr[0] "صفر"
 msgstr[0] "صفر"
@@ -400,7 +396,7 @@ msgstr "طريقة التحدي"
 msgid "Change Certificate"
 msgid "Change Certificate"
 msgstr "تغيير الشهادة"
 msgstr "تغيير الشهادة"
 
 
-#: src/views/site/cert/Cert.vue:51
+#: src/views/site/cert/Cert.vue:52
 msgid "Changed Certificate"
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
 msgstr[0] "صفر"
 msgstr[0] "صفر"
@@ -461,13 +457,17 @@ msgstr "مسح"
 msgid "Cleared successfully"
 msgid "Cleared successfully"
 msgstr "تم المسح بنجاح"
 msgstr "تم المسح بنجاح"
 
 
+#: src/views/preference/components/TOTP.vue:125
+msgid "Click to copy"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgid "Command"
 msgstr "أمر"
 msgstr "أمر"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
-#: src/views/site/ngx_conf/LocationEditor.vue:105
-#: src/views/site/ngx_conf/LocationEditor.vue:136
+#: src/views/site/ngx_conf/LocationEditor.vue:103
+#: src/views/site/ngx_conf/LocationEditor.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 msgid "Comments"
 msgid "Comments"
 msgstr "تعليقات"
 msgstr "تعليقات"
@@ -501,8 +501,8 @@ msgid "Connection lost, please refresh the page."
 msgstr "تم فقدان الاتصال، يرجى تحديث الصفحة."
 msgstr "تم فقدان الاتصال، يرجى تحديث الصفحة."
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
-#: src/views/site/ngx_conf/LocationEditor.vue:117
-#: src/views/site/ngx_conf/LocationEditor.vue:145
+#: src/views/site/ngx_conf/LocationEditor.vue:115
+#: src/views/site/ngx_conf/LocationEditor.vue:143
 msgid "Content"
 msgid "Content"
 msgstr "محتوى"
 msgstr "محتوى"
 
 
@@ -519,11 +519,11 @@ msgstr "نسخ"
 msgid "Core Upgrade"
 msgid "Core Upgrade"
 msgstr "ترقية نواة"
 msgstr "ترقية نواة"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:305
+#: src/views/dashboard/ServerAnalytic.vue:301
 msgid "CPU Status"
 msgid "CPU Status"
 msgstr "حالة CPU"
 msgstr "حالة CPU"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:199
+#: src/views/dashboard/ServerAnalytic.vue:195
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU:"
 msgstr "CPU:"
 
 
@@ -565,11 +565,11 @@ msgstr "بيان الاعتماد"
 msgid "Credentials"
 msgid "Credentials"
 msgstr "بيانات الاعتماد"
 msgstr "بيانات الاعتماد"
 
 
-#: src/views/preference/components/TOTP.vue:93
+#: src/views/preference/components/TOTP.vue:75
 msgid "Current account is enabled TOTP."
 msgid "Current account is enabled TOTP."
 msgstr "TOTP مفعل للحساب الحالي."
 msgstr "TOTP مفعل للحساب الحالي."
 
 
-#: src/views/preference/components/TOTP.vue:90
+#: src/views/preference/components/TOTP.vue:73
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "TOTP معطل للحساب الحالي."
 msgstr "TOTP معطل للحساب الحالي."
 
 
@@ -731,7 +731,7 @@ msgstr "معطل"
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "تم التعطيل بنجاح"
 msgstr "تم التعطيل بنجاح"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:370
+#: src/views/dashboard/ServerAnalytic.vue:366
 msgid "Disk IO"
 msgid "Disk IO"
 msgstr "إدخال/إخراج القرص"
 msgstr "إدخال/إخراج القرص"
 
 
@@ -906,7 +906,7 @@ msgstr "فشل تفعيل %{conf_name} في %{node_name}"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr "تم تفعيل %{conf_name} في %{node_name} بنجاح"
 msgstr "تم تفعيل %{conf_name} في %{node_name} بنجاح"
 
 
-#: src/views/preference/components/TOTP.vue:52
+#: src/views/preference/components/TOTP.vue:38
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr "تم تفعيل المصادقة الثنائية بنجاح"
 msgstr "تم تفعيل المصادقة الثنائية بنجاح"
 
 
@@ -942,7 +942,7 @@ msgstr "تم التفعيل بنجاح"
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "تفعيل TLS"
 msgstr "تفعيل TLS"
 
 
-#: src/views/preference/components/TOTP.vue:119
+#: src/views/preference/components/TOTP.vue:101
 msgid "Enable TOTP"
 msgid "Enable TOTP"
 msgstr "تفعيل TOTP"
 msgstr "تفعيل TOTP"
 
 
@@ -976,7 +976,7 @@ msgid "Environment variables cleaned"
 msgstr "تم تنظيف متغيرات البيئة"
 msgstr "تم تنظيف متغيرات البيئة"
 
 
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
-#: src/views/environment/Environment.vue:33
+#: src/views/environment/Environment.vue:43
 msgid "Environments"
 msgid "Environments"
 msgstr "البيئات"
 msgstr "البيئات"
 
 
@@ -1038,8 +1038,9 @@ msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/self_check.ts:3
 #: src/constants/errors/self_check.ts:3
+#, fuzzy
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
-msgstr ""
+msgstr "فشل في التفعيل %{msg}"
 
 
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/stream/StreamEdit.vue:122
 #: src/views/stream/StreamEdit.vue:122
@@ -1157,7 +1158,7 @@ msgstr ""
 "إذا وصل عدد محاولات تسجيل الدخول الفاشلة من عنوان IP إلى الحد الأقصى "
 "إذا وصل عدد محاولات تسجيل الدخول الفاشلة من عنوان IP إلى الحد الأقصى "
 "للمحاولات في حد دقائق الحظر، سيتم حظر عنوان IP لفترة من الوقت."
 "للمحاولات في حد دقائق الحظر، سيتم حظر عنوان IP لفترة من الوقت."
 
 
-#: src/views/preference/components/TOTP.vue:105
+#: src/views/preference/components/TOTP.vue:87
 msgid ""
 msgid ""
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "2FA."
 "2FA."
@@ -1198,12 +1199,12 @@ msgstr "خطأ في ترقية النواة الأولية"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "بدء ترقية النواة"
 msgstr "بدء ترقية النواة"
 
 
-#: src/views/preference/components/TOTP.vue:152
+#: src/views/preference/components/TOTP.vue:134
 msgid "Input the code from the app:"
 msgid "Input the code from the app:"
 msgstr "أدخل الرمز من التطبيق:"
 msgstr "أدخل الرمز من التطبيق:"
 
 
 #: src/components/TwoFA/Authorization.vue:82
 #: src/components/TwoFA/Authorization.vue:82
-#: src/views/preference/components/TOTP.vue:165
+#: src/views/preference/components/TOTP.vue:148
 msgid "Input the recovery code:"
 msgid "Input the recovery code:"
 msgstr "أدخل رمز الاسترداد:"
 msgstr "أدخل رمز الاسترداد:"
 
 
@@ -1321,15 +1322,15 @@ msgstr "ابدأ الرابط"
 msgid "List"
 msgid "List"
 msgstr "قائمة"
 msgstr "قائمة"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:187
+#: src/views/dashboard/ServerAnalytic.vue:183
 msgid "Load Average:"
 msgid "Load Average:"
 msgstr "متوسط التحميل:"
 msgstr "متوسط التحميل:"
 
 
-#: src/views/environment/Environment.vue:39
+#: src/views/environment/Environment.vue:49
 msgid "Load from settings"
 msgid "Load from settings"
 msgstr "تحميل من الإعدادات"
 msgstr "تحميل من الإعدادات"
 
 
-#: src/views/environment/Environment.vue:13
+#: src/views/environment/Environment.vue:17
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "تم التحميل بنجاح"
 msgstr "تم التحميل بنجاح"
 
 
@@ -1338,7 +1339,7 @@ msgstr "تم التحميل بنجاح"
 msgid "Local"
 msgid "Local"
 msgstr "محلي"
 msgstr "محلي"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:69
+#: src/views/site/ngx_conf/LocationEditor.vue:68
 msgid "Location"
 msgid "Location"
 msgstr "مكان"
 msgstr "مكان"
 
 
@@ -1415,12 +1416,12 @@ msgstr "شهادة مُدارة"
 msgid "Max Attempts"
 msgid "Max Attempts"
 msgstr "الحد الأقصى للمحاولات"
 msgstr "الحد الأقصى للمحاولات"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:226
-#: src/views/dashboard/ServerAnalytic.vue:227
+#: src/views/dashboard/ServerAnalytic.vue:222
+#: src/views/dashboard/ServerAnalytic.vue:223
 msgid "Memory"
 msgid "Memory"
 msgstr "ذاكرة"
 msgstr "ذاكرة"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:216
+#: src/views/dashboard/ServerAnalytic.vue:212
 msgid "Memory and Storage"
 msgid "Memory and Storage"
 msgstr "الذاكرة والتخزين"
 msgstr "الذاكرة والتخزين"
 
 
@@ -1474,19 +1475,19 @@ msgstr "توجيه متعدد الأسطر"
 msgid "Name"
 msgid "Name"
 msgstr "اسم"
 msgstr "اسم"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:331
+#: src/views/dashboard/ServerAnalytic.vue:327
 msgid "Network"
 msgid "Network"
 msgstr "شبكة"
 msgstr "شبكة"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:273
+#: src/views/dashboard/ServerAnalytic.vue:269
 msgid "Network Statistics"
 msgid "Network Statistics"
 msgstr "إحصائيات الشبكة"
 msgstr "إحصائيات الشبكة"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:280
+#: src/views/dashboard/ServerAnalytic.vue:276
 msgid "Network Total Receive"
 msgid "Network Total Receive"
 msgstr "إجمالي استقبال الشبكة"
 msgstr "إجمالي استقبال الشبكة"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:286
+#: src/views/dashboard/ServerAnalytic.vue:282
 msgid "Network Total Send"
 msgid "Network Total Send"
 msgstr "إجمالي إرسال الشبكة"
 msgstr "إجمالي إرسال الشبكة"
 
 
@@ -1600,7 +1601,7 @@ msgstr "تم إعادة تشغيل Nginx بنجاح"
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/CertSettings.vue:70
 #: src/views/preference/CertSettings.vue:70
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
-#: src/views/site/ngx_conf/LocationEditor.vue:90
+#: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/stream/StreamList.vue:163
 #: src/views/stream/StreamList.vue:163
 msgid "No"
 msgid "No"
@@ -1716,6 +1717,10 @@ msgstr "أوبن أي آي"
 msgid "Or"
 msgid "Or"
 msgstr "أو"
 msgstr "أو"
 
 
+#: src/views/preference/components/TOTP.vue:127
+msgid "Or enter the secret: %{secret}"
+msgstr ""
+
 #: src/views/config/components/Rename.vue:68
 #: src/views/config/components/Rename.vue:68
 msgid "Original name"
 msgid "Original name"
 msgstr "الاسم الأصلي"
 msgstr "الاسم الأصلي"
@@ -1724,7 +1729,7 @@ msgstr "الاسم الأصلي"
 msgid "OS"
 msgid "OS"
 msgstr "نظام التشغيل"
 msgstr "نظام التشغيل"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:193
+#: src/views/dashboard/ServerAnalytic.vue:189
 msgid "OS:"
 msgid "OS:"
 msgstr "نظام التشغيل:"
 msgstr "نظام التشغيل:"
 
 
@@ -1779,8 +1784,8 @@ msgid "Password length cannot exceed 20 characters"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/ConfigEditor.vue:263
 #: src/views/config/ConfigEditor.vue:263
-#: src/views/site/ngx_conf/LocationEditor.vue:111
-#: src/views/site/ngx_conf/LocationEditor.vue:139
+#: src/views/site/ngx_conf/LocationEditor.vue:109
+#: src/views/site/ngx_conf/LocationEditor.vue:137
 msgid "Path"
 msgid "Path"
 msgstr "مسار"
 msgstr "مسار"
 
 
@@ -1875,7 +1880,7 @@ msgid ""
 "Please note that the unit of time configurations below are all in seconds."
 "Please note that the unit of time configurations below are all in seconds."
 msgstr "يرجى ملاحظة أن تكوين وحدات الوقت أدناه كلها بالثواني."
 msgstr "يرجى ملاحظة أن تكوين وحدات الوقت أدناه كلها بالثواني."
 
 
-#: src/views/environment/Environment.vue:48
+#: src/views/environment/Environment.vue:58
 msgid "Please select at least one node to upgrade"
 msgid "Please select at least one node to upgrade"
 msgstr "يرجى اختيار عقدة واحدة على الأقل للترقية"
 msgstr "يرجى اختيار عقدة واحدة على الأقل للترقية"
 
 
@@ -1932,11 +1937,11 @@ msgid "Public Security Number"
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:387
+#: src/views/dashboard/ServerAnalytic.vue:383
 msgid "Reads"
 msgid "Reads"
 msgstr "يقرأ"
 msgstr "يقرأ"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:338
+#: src/views/dashboard/ServerAnalytic.vue:334
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Receive"
 msgid "Receive"
 msgstr "يستقبل"
 msgstr "يستقبل"
@@ -1955,15 +1960,15 @@ msgid "Recovered Successfully"
 msgstr "تم الاسترداد بنجاح"
 msgstr "تم الاسترداد بنجاح"
 
 
 #: src/components/TwoFA/Authorization.vue:89
 #: src/components/TwoFA/Authorization.vue:89
-#: src/views/preference/components/TOTP.vue:172
+#: src/views/preference/components/TOTP.vue:155
 msgid "Recovery"
 msgid "Recovery"
 msgstr "استرداد"
 msgstr "استرداد"
 
 
-#: src/views/preference/components/TOTP.vue:98
+#: src/views/preference/components/TOTP.vue:80
 msgid "Recovery Code"
 msgid "Recovery Code"
 msgstr "رمز الاسترداد"
 msgstr "رمز الاسترداد"
 
 
-#: src/views/preference/components/TOTP.vue:107
+#: src/views/preference/components/TOTP.vue:89
 msgid "Recovery Code:"
 msgid "Recovery Code:"
 msgstr "رمز الاسترداد:"
 msgstr "رمز الاسترداد:"
 
 
@@ -2063,8 +2068,8 @@ msgstr "إعادة تسمية"
 msgid ""
 msgid ""
 "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}"
 "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}"
 msgstr ""
 msgstr ""
-"فشل إعادة تسمية %{orig_path} إلى %{new_path} على %{env_name}، الاستجابة: %"
-"{resp}"
+"فشل إعادة تسمية %{orig_path} إلى %{new_path} على %{env_name}، الاستجابة: "
+"%{resp}"
 
 
 #: src/components/Notification/config.ts:20
 #: src/components/Notification/config.ts:20
 msgid "Rename %{orig_path} to %{new_path} on %{env_name} successfully"
 msgid "Rename %{orig_path} to %{new_path} on %{env_name} successfully"
@@ -2089,8 +2094,8 @@ msgstr "تم إعادة تسمية الموقع البعيد بنجاح"
 #: src/components/Notification/config.ts:95
 #: src/components/Notification/config.ts:95
 msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
 msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
 msgstr ""
 msgstr ""
-"خطأ في إعادة تسمية الموقع %{site} إلى %{new_site} على %{node}، الاستجابة: %"
-"{resp}"
+"خطأ في إعادة تسمية الموقع %{site} إلى %{new_site} على %{node}، الاستجابة: "
+"%{resp}"
 
 
 #: src/components/Notification/config.ts:87
 #: src/components/Notification/config.ts:87
 msgid "Rename Site %{site} to %{new_site} on %{node} successfully"
 msgid "Rename Site %{site} to %{new_site} on %{node} successfully"
@@ -2131,7 +2136,7 @@ msgstr "تم الطلب باستخدام عوامل خاطئة"
 msgid "Reset"
 msgid "Reset"
 msgstr "إعادة تعيين"
 msgstr "إعادة تعيين"
 
 
-#: src/views/preference/components/TOTP.vue:127
+#: src/views/preference/components/TOTP.vue:109
 msgid "Reset 2FA"
 msgid "Reset 2FA"
 msgstr "إعادة تعيين التحقق بخطوتين"
 msgstr "إعادة تعيين التحقق بخطوتين"
 
 
@@ -2218,7 +2223,7 @@ msgstr "تم الحفظ بنجاح"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "تم الحفظ بنجاح"
 msgstr "تم الحفظ بنجاح"
 
 
-#: src/views/preference/components/TOTP.vue:88
+#: src/views/preference/components/TOTP.vue:72
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr "امسح رمز الاستجابة السريعة بهاتفك المحمول لإضافة الحساب إلى التطبيق."
 msgstr "امسح رمز الاستجابة السريعة بهاتفك المحمول لإضافة الحساب إلى التطبيق."
 
 
@@ -2226,7 +2231,7 @@ msgstr "امسح رمز الاستجابة السريعة بهاتفك المح
 msgid "SDK"
 msgid "SDK"
 msgstr "حزمة تطوير البرمجيات SDK"
 msgstr "حزمة تطوير البرمجيات SDK"
 
 
-#: src/views/preference/components/TOTP.vue:144
+#: src/views/preference/components/TOTP.vue:124
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr "تم نسخ السر"
 msgstr "تم نسخ السر"
 
 
@@ -2238,12 +2243,12 @@ msgstr "المحدد"
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:348
+#: src/views/dashboard/ServerAnalytic.vue:344
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Send"
 msgid "Send"
 msgstr "إرسال"
 msgstr "إرسال"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:179
+#: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgid "Server Info"
 msgstr "معلومات الخادم"
 msgstr "معلومات الخادم"
 
 
@@ -2260,8 +2265,9 @@ msgid "ServerIdx out of range"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/user.ts:11
 #: src/constants/errors/user.ts:11
+#, fuzzy
 msgid "Session not found"
 msgid "Session not found"
-msgstr ""
+msgstr "لم يتم العثور على الملف"
 
 
 #: src/views/preference/CertSettings.vue:33
 #: src/views/preference/CertSettings.vue:33
 msgid ""
 msgid ""
@@ -2285,14 +2291,14 @@ msgstr "تعيين موفر تحدي HTTP01"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
@@ -2335,12 +2341,14 @@ msgid "Sites List"
 msgstr "قائمة المواقع"
 msgstr "قائمة المواقع"
 
 
 #: src/constants/errors/self_check.ts:10
 #: src/constants/errors/self_check.ts:10
+#, fuzzy
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
-msgstr ""
+msgstr "مجلد"
 
 
 #: src/constants/errors/self_check.ts:11
 #: src/constants/errors/self_check.ts:11
+#, fuzzy
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
-msgstr ""
+msgstr "مجلد"
 
 
 #: src/views/certificate/CertificateEditor.vue:211
 #: src/views/certificate/CertificateEditor.vue:211
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
@@ -2379,8 +2387,8 @@ msgstr "الحالة"
 msgid "Stopped"
 msgid "Stopped"
 msgstr "متوقف"
 msgstr "متوقف"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:254
-#: src/views/dashboard/ServerAnalytic.vue:255
+#: src/views/dashboard/ServerAnalytic.vue:250
+#: src/views/dashboard/ServerAnalytic.vue:251
 msgid "Storage"
 msgid "Storage"
 msgstr "تخزين"
 msgstr "تخزين"
 
 
@@ -2390,8 +2398,9 @@ msgid "Streams Directory"
 msgstr "مجلد"
 msgstr "مجلد"
 
 
 #: src/constants/errors/self_check.ts:12
 #: src/constants/errors/self_check.ts:12
+#, fuzzy
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
-msgstr ""
+msgstr "مجلد"
 
 
 #: src/constants/errors/self_check.ts:13
 #: src/constants/errors/self_check.ts:13
 #, fuzzy
 #, fuzzy
@@ -2410,8 +2419,8 @@ msgid ""
 "guide/nginx-proxy-example.html"
 "guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:240
-#: src/views/dashboard/ServerAnalytic.vue:241
+#: src/views/dashboard/ServerAnalytic.vue:236
+#: src/views/dashboard/ServerAnalytic.vue:237
 msgid "Swap"
 msgid "Swap"
 msgstr "تبديل"
 msgstr "تبديل"
 
 
@@ -2581,7 +2590,7 @@ msgstr ""
 "يجب أن يحتوي اسم العقدة على حروف وأحرف يونيكود وأرقام وشرطات وعلامات وصل "
 "يجب أن يحتوي اسم العقدة على حروف وأحرف يونيكود وأرقام وشرطات وعلامات وصل "
 "ونقاط فقط."
 "ونقاط فقط."
 
 
-#: src/views/preference/components/TOTP.vue:106
+#: src/views/preference/components/TOTP.vue:88
 msgid ""
 msgid ""
 "The recovery code is only displayed once, please save it in a safe place."
 "The recovery code is only displayed once, please save it in a safe place."
 msgstr "رمز الاسترداد يُعرض مرة واحدة فقط، يرجى حفظه في مكان آمن."
 msgstr "رمز الاسترداد يُعرض مرة واحدة فقط، يرجى حفظه في مكان آمن."
@@ -2672,7 +2681,7 @@ msgstr "نصائح"
 msgid "Title"
 msgid "Title"
 msgstr "عنوان"
 msgstr "عنوان"
 
 
-#: src/views/preference/components/TOTP.vue:87
+#: src/views/preference/components/TOTP.vue:71
 msgid ""
 msgid ""
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "on your mobile phone."
 "on your mobile phone."
@@ -2725,11 +2734,11 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[4] ""
 msgstr[5] ""
 msgstr[5] ""
 
 
-#: src/views/preference/components/TOTP.vue:85
+#: src/views/preference/components/TOTP.vue:69
 msgid "TOTP"
 msgid "TOTP"
 msgstr "كلمة مرور لمرة واحدة تعتمد على الوقت"
 msgstr "كلمة مرور لمرة واحدة تعتمد على الوقت"
 
 
-#: src/views/preference/components/TOTP.vue:86
+#: src/views/preference/components/TOTP.vue:70
 msgid ""
 msgid ""
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "password algorithm."
 "password algorithm."
@@ -2770,7 +2779,7 @@ msgstr "محدث في"
 msgid "Updated successfully"
 msgid "Updated successfully"
 msgstr "تم التحديث بنجاح"
 msgstr "تم التحديث بنجاح"
 
 
-#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
+#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 msgid "Upgrade"
 msgid "Upgrade"
 msgstr "ترقية"
 msgstr "ترقية"
@@ -2791,7 +2800,7 @@ msgstr "جارٍ ترقية Nginx UI، يرجى الانتظار..."
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr "اسم المنبع"
 msgstr "اسم المنبع"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:183
+#: src/views/dashboard/ServerAnalytic.vue:179
 msgid "Uptime:"
 msgid "Uptime:"
 msgstr "مدة التشغيل:"
 msgstr "مدة التشغيل:"
 
 
@@ -2903,7 +2912,7 @@ msgstr ""
 "الموقع والعقد المحددة أدناه."
 "الموقع والعقد المحددة أدناه."
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:377
+#: src/views/dashboard/ServerAnalytic.vue:373
 msgid "Writes"
 msgid "Writes"
 msgstr "يكتب"
 msgstr "يكتب"
 
 
@@ -2918,7 +2927,7 @@ msgstr "كتابة الشهادة إلى القرص"
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/CertSettings.vue:69
 #: src/views/preference/CertSettings.vue:69
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
-#: src/views/site/ngx_conf/LocationEditor.vue:89
+#: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"
 msgid "Yes"
 msgstr "نعم"
 msgstr "نعم"
 
 
@@ -2940,6 +2949,9 @@ msgstr "لم تقم بتكوين إعدادات Webauthn، لذا لا يمكن
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr "مفاتيح المرور الخاصة بك"
 msgstr "مفاتيح المرور الخاصة بك"
 
 
+#~ msgid "Can't scan? Use text key binding"
+#~ msgstr "لا يمكن المسح؟ استخدم ربط مفتاح النص"
+
 #~ msgid "Directory"
 #~ msgid "Directory"
 #~ msgstr "مجلد"
 #~ msgstr "مجلد"
 
 

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

@@ -22,8 +22,9 @@ msgid "About"
 msgstr "About"
 msgstr "About"
 
 
 #: src/routes/index.ts:210 src/views/site/ngx_conf/LogEntry.vue:75
 #: src/routes/index.ts:210 src/views/site/ngx_conf/LogEntry.vue:75
+#, fuzzy
 msgid "Access Logs"
 msgid "Access Logs"
-msgstr ""
+msgstr "Sites List"
 
 
 #: src/routes/index.ts:148 src/views/certificate/ACMEUser.vue:113
 #: src/routes/index.ts:148 src/views/certificate/ACMEUser.vue:113
 #: src/views/certificate/ACMEUserSelector.vue:85
 #: src/views/certificate/ACMEUserSelector.vue:85
@@ -69,8 +70,8 @@ msgstr "Edit Configuration"
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "Add Directive Below"
 msgstr "Add Directive Below"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:132
-#: src/views/site/ngx_conf/LocationEditor.vue:159
+#: src/views/site/ngx_conf/LocationEditor.vue:130
+#: src/views/site/ngx_conf/LocationEditor.vue:157
 msgid "Add Location"
 msgid "Add Location"
 msgstr "Add Location"
 msgstr "Add Location"
 
 
@@ -112,8 +113,9 @@ msgid "API Base Url"
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/DNSChallenge.vue:83
 #: src/views/certificate/DNSChallenge.vue:83
+#, fuzzy
 msgid "API Document"
 msgid "API Document"
-msgstr ""
+msgstr "Comments"
 
 
 #: src/views/preference/OpenAISettings.vue:57
 #: src/views/preference/OpenAISettings.vue:57
 msgid "API Proxy"
 msgid "API Proxy"
@@ -196,7 +198,7 @@ msgstr "Are you sure you want to remove this directive?"
 msgid "Are you sure you want to remove this item?"
 msgid "Are you sure you want to remove this item?"
 msgstr "Are you sure you want to remove this directive?"
 msgstr "Are you sure you want to remove this directive?"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:88
+#: src/views/site/ngx_conf/LocationEditor.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Are you sure you want to remove this directive?"
 msgstr "Are you sure you want to remove this directive?"
@@ -327,10 +329,6 @@ msgstr ""
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:145
-msgid "Can't scan? Use text key binding"
-msgstr ""
-
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
@@ -383,7 +381,7 @@ msgid "Certificate Renewal Interval"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
 #: src/views/certificate/CertificateEditor.vue:128
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:32
+#: src/views/site/cert/Cert.vue:33
 #, fuzzy
 #, fuzzy
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgid_plural "Certificates Status"
@@ -411,7 +409,7 @@ msgstr ""
 msgid "Change Certificate"
 msgid "Change Certificate"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/views/site/cert/Cert.vue:51
+#: src/views/site/cert/Cert.vue:52
 #, fuzzy
 #, fuzzy
 msgid "Changed Certificate"
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
@@ -471,14 +469,18 @@ msgstr ""
 msgid "Cleared successfully"
 msgid "Cleared successfully"
 msgstr "Disabled successfully"
 msgstr "Disabled successfully"
 
 
+#: src/views/preference/components/TOTP.vue:125
+msgid "Click to copy"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #: src/views/preference/LogrotateSettings.vue:22
 #, fuzzy
 #, fuzzy
 msgid "Command"
 msgid "Command"
 msgstr "Comments"
 msgstr "Comments"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
-#: src/views/site/ngx_conf/LocationEditor.vue:105
-#: src/views/site/ngx_conf/LocationEditor.vue:136
+#: src/views/site/ngx_conf/LocationEditor.vue:103
+#: src/views/site/ngx_conf/LocationEditor.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 msgid "Comments"
 msgid "Comments"
 msgstr "Comments"
 msgstr "Comments"
@@ -513,8 +515,8 @@ msgid "Connection lost, please refresh the page."
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
-#: src/views/site/ngx_conf/LocationEditor.vue:117
-#: src/views/site/ngx_conf/LocationEditor.vue:145
+#: src/views/site/ngx_conf/LocationEditor.vue:115
+#: src/views/site/ngx_conf/LocationEditor.vue:143
 msgid "Content"
 msgid "Content"
 msgstr "Content"
 msgstr "Content"
 
 
@@ -531,11 +533,11 @@ msgstr ""
 msgid "Core Upgrade"
 msgid "Core Upgrade"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:305
+#: src/views/dashboard/ServerAnalytic.vue:301
 msgid "CPU Status"
 msgid "CPU Status"
 msgstr "CPU Status"
 msgstr "CPU Status"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:199
+#: src/views/dashboard/ServerAnalytic.vue:195
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU:"
 msgstr "CPU:"
 
 
@@ -581,11 +583,11 @@ msgstr ""
 msgid "Credentials"
 msgid "Credentials"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:93
+#: src/views/preference/components/TOTP.vue:75
 msgid "Current account is enabled TOTP."
 msgid "Current account is enabled TOTP."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:90
+#: src/views/preference/components/TOTP.vue:73
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr ""
 msgstr ""
 
 
@@ -661,12 +663,14 @@ msgid "Deploy"
 msgstr ""
 msgstr ""
 
 
 #: src/views/stream/components/Deploy.vue:57
 #: src/views/stream/components/Deploy.vue:57
+#, fuzzy
 msgid "Deploy %{conf_name} to %{node_name} failed"
 msgid "Deploy %{conf_name} to %{node_name} failed"
-msgstr ""
+msgstr "Saved successfully"
 
 
 #: src/views/stream/components/Deploy.vue:36
 #: src/views/stream/components/Deploy.vue:36
+#, fuzzy
 msgid "Deploy %{conf_name} to %{node_name} successfully"
 msgid "Deploy %{conf_name} to %{node_name} successfully"
-msgstr ""
+msgstr "Saved successfully"
 
 
 #: src/views/stream/components/Deploy.vue:34
 #: src/views/stream/components/Deploy.vue:34
 #, fuzzy
 #, fuzzy
@@ -756,7 +760,7 @@ msgstr "Disabled"
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "Disabled successfully"
 msgstr "Disabled successfully"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:370
+#: src/views/dashboard/ServerAnalytic.vue:366
 msgid "Disk IO"
 msgid "Disk IO"
 msgstr "Disk IO"
 msgstr "Disk IO"
 
 
@@ -785,8 +789,9 @@ msgstr[0] "Are you sure you want to remove this directive?"
 msgstr[1] "Are you sure you want to remove this directive?"
 msgstr[1] "Are you sure you want to remove this directive?"
 
 
 #: src/views/site/cert/components/ObtainCert.vue:136
 #: src/views/site/cert/components/ObtainCert.vue:136
+#, fuzzy
 msgid "Do you want to disable auto-cert renewal?"
 msgid "Do you want to disable auto-cert renewal?"
-msgstr ""
+msgstr "Are you sure you want to remove this directive?"
 
 
 #: src/views/site/site_edit/RightSettings.vue:51
 #: src/views/site/site_edit/RightSettings.vue:51
 #, fuzzy
 #, fuzzy
@@ -865,8 +870,9 @@ msgstr ""
 #: src/views/site/site_list/SiteList.vue:140
 #: src/views/site/site_list/SiteList.vue:140
 #: src/views/stream/components/StreamDuplicate.vue:121
 #: src/views/stream/components/StreamDuplicate.vue:121
 #: src/views/stream/StreamList.vue:160
 #: src/views/stream/StreamList.vue:160
+#, fuzzy
 msgid "Duplicate"
 msgid "Duplicate"
-msgstr ""
+msgstr "Enable failed"
 
 
 #: src/views/stream/components/StreamDuplicate.vue:82
 #: src/views/stream/components/StreamDuplicate.vue:82
 #, fuzzy
 #, fuzzy
@@ -929,14 +935,16 @@ msgid "Enable"
 msgstr "Enabled"
 msgstr "Enabled"
 
 
 #: src/views/stream/components/Deploy.vue:47
 #: src/views/stream/components/Deploy.vue:47
+#, fuzzy
 msgid "Enable %{conf_name} in %{node_name} failed"
 msgid "Enable %{conf_name} in %{node_name} failed"
-msgstr ""
+msgstr "Saved successfully"
 
 
 #: src/views/stream/components/Deploy.vue:43
 #: src/views/stream/components/Deploy.vue:43
+#, fuzzy
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
-msgstr ""
+msgstr "Saved successfully"
 
 
-#: src/views/preference/components/TOTP.vue:52
+#: src/views/preference/components/TOTP.vue:38
 #, fuzzy
 #, fuzzy
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr "Enabled successfully"
 msgstr "Enabled successfully"
@@ -978,7 +986,7 @@ msgstr "Enabled successfully"
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "Enable TLS"
 msgstr "Enable TLS"
 
 
-#: src/views/preference/components/TOTP.vue:119
+#: src/views/preference/components/TOTP.vue:101
 #, fuzzy
 #, fuzzy
 msgid "Enable TOTP"
 msgid "Enable TOTP"
 msgstr "Enable TLS"
 msgstr "Enable TLS"
@@ -1013,7 +1021,7 @@ msgid "Environment variables cleaned"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
-#: src/views/environment/Environment.vue:33
+#: src/views/environment/Environment.vue:43
 #, fuzzy
 #, fuzzy
 msgid "Environments"
 msgid "Environments"
 msgstr "Comments"
 msgstr "Comments"
@@ -1070,16 +1078,18 @@ msgid "Failed to enable %{msg}"
 msgstr "Failed to enable %{msg}"
 msgstr "Failed to enable %{msg}"
 
 
 #: src/language/constants.ts:5
 #: src/language/constants.ts:5
+#, fuzzy
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
-msgstr ""
+msgstr "Certificate is valid"
 
 
 #: src/constants/errors/self_check.ts:4
 #: src/constants/errors/self_check.ts:4
 msgid "Failed to parse nginx.conf"
 msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/self_check.ts:3
 #: src/constants/errors/self_check.ts:3
+#, fuzzy
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
-msgstr ""
+msgstr "Failed to enable %{msg}"
 
 
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/stream/StreamEdit.vue:122
 #: src/views/stream/StreamEdit.vue:122
@@ -1199,7 +1209,7 @@ msgid ""
 "ban threshold minutes, the ip will be banned for a period of time."
 "ban threshold minutes, the ip will be banned for a period of time."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:105
+#: src/views/preference/components/TOTP.vue:87
 msgid ""
 msgid ""
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "2FA."
 "2FA."
@@ -1237,12 +1247,12 @@ msgstr ""
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:152
+#: src/views/preference/components/TOTP.vue:134
 msgid "Input the code from the app:"
 msgid "Input the code from the app:"
 msgstr ""
 msgstr ""
 
 
 #: src/components/TwoFA/Authorization.vue:82
 #: src/components/TwoFA/Authorization.vue:82
-#: src/views/preference/components/TOTP.vue:165
+#: src/views/preference/components/TOTP.vue:148
 msgid "Input the recovery code:"
 msgid "Input the recovery code:"
 msgstr ""
 msgstr ""
 
 
@@ -1271,8 +1281,9 @@ msgid "Invalid filename"
 msgstr "Invalid E-mail!"
 msgstr "Invalid E-mail!"
 
 
 #: src/views/config/components/Mkdir.vue:57
 #: src/views/config/components/Mkdir.vue:57
+#, fuzzy
 msgid "Invalid folder name"
 msgid "Invalid folder name"
-msgstr ""
+msgstr "Invalid E-mail!"
 
 
 #: src/constants/errors/user.ts:4
 #: src/constants/errors/user.ts:4
 #, fuzzy
 #, fuzzy
@@ -1284,8 +1295,9 @@ msgid "Invalid passcode or recovery code"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/user.ts:5
 #: src/constants/errors/user.ts:5
+#, fuzzy
 msgid "Invalid recovery code"
 msgid "Invalid recovery code"
-msgstr ""
+msgstr "Invalid E-mail!"
 
 
 #: src/views/preference/AuthSettings.vue:14
 #: src/views/preference/AuthSettings.vue:14
 msgid "IP"
 msgid "IP"
@@ -1320,8 +1332,9 @@ msgid "Key Type"
 msgstr ""
 msgstr ""
 
 
 #: src/views/system/Upgrade.vue:179
 #: src/views/system/Upgrade.vue:179
+#, fuzzy
 msgid "Last checked at"
 msgid "Last checked at"
-msgstr ""
+msgstr "Created at"
 
 
 #: src/views/preference/components/Passkey.vue:96
 #: src/views/preference/components/Passkey.vue:96
 #, fuzzy
 #, fuzzy
@@ -1370,16 +1383,16 @@ msgstr ""
 msgid "List"
 msgid "List"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:187
+#: src/views/dashboard/ServerAnalytic.vue:183
 #, fuzzy
 #, fuzzy
 msgid "Load Average:"
 msgid "Load Average:"
 msgstr "Load Averages:"
 msgstr "Load Averages:"
 
 
-#: src/views/environment/Environment.vue:39
+#: src/views/environment/Environment.vue:49
 msgid "Load from settings"
 msgid "Load from settings"
 msgstr ""
 msgstr ""
 
 
-#: src/views/environment/Environment.vue:13
+#: src/views/environment/Environment.vue:17
 #, fuzzy
 #, fuzzy
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
@@ -1390,7 +1403,7 @@ msgstr "Saved successfully"
 msgid "Local"
 msgid "Local"
 msgstr "Location"
 msgstr "Location"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:69
+#: src/views/site/ngx_conf/LocationEditor.vue:68
 msgid "Location"
 msgid "Location"
 msgstr "Location"
 msgstr "Location"
 
 
@@ -1465,12 +1478,12 @@ msgstr "Certificate is valid"
 msgid "Max Attempts"
 msgid "Max Attempts"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:226
-#: src/views/dashboard/ServerAnalytic.vue:227
+#: src/views/dashboard/ServerAnalytic.vue:222
+#: src/views/dashboard/ServerAnalytic.vue:223
 msgid "Memory"
 msgid "Memory"
 msgstr "Memory"
 msgstr "Memory"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:216
+#: src/views/dashboard/ServerAnalytic.vue:212
 msgid "Memory and Storage"
 msgid "Memory and Storage"
 msgstr "Memory and Storage"
 msgstr "Memory and Storage"
 
 
@@ -1529,19 +1542,19 @@ msgstr "Single Directive"
 msgid "Name"
 msgid "Name"
 msgstr "Name"
 msgstr "Name"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:331
+#: src/views/dashboard/ServerAnalytic.vue:327
 msgid "Network"
 msgid "Network"
 msgstr "Network"
 msgstr "Network"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:273
+#: src/views/dashboard/ServerAnalytic.vue:269
 msgid "Network Statistics"
 msgid "Network Statistics"
 msgstr "Network Statistics"
 msgstr "Network Statistics"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:280
+#: src/views/dashboard/ServerAnalytic.vue:276
 msgid "Network Total Receive"
 msgid "Network Total Receive"
 msgstr "Network Total Receive"
 msgstr "Network Total Receive"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:286
+#: src/views/dashboard/ServerAnalytic.vue:282
 msgid "Network Total Send"
 msgid "Network Total Send"
 msgstr "Network Total Send"
 msgstr "Network Total Send"
 
 
@@ -1625,8 +1638,9 @@ msgid "Nginx Log"
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/NginxSettings.vue:18
 #: src/views/preference/NginxSettings.vue:18
+#, fuzzy
 msgid "Nginx Log Directory Whitelist"
 msgid "Nginx Log Directory Whitelist"
-msgstr ""
+msgstr "Configuration Name"
 
 
 #: src/views/preference/NginxSettings.vue:27
 #: src/views/preference/NginxSettings.vue:27
 msgid "Nginx PID Path"
 msgid "Nginx PID Path"
@@ -1661,7 +1675,7 @@ msgstr "Saved successfully"
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/CertSettings.vue:70
 #: src/views/preference/CertSettings.vue:70
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
-#: src/views/site/ngx_conf/LocationEditor.vue:90
+#: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/stream/StreamList.vue:163
 #: src/views/stream/StreamList.vue:163
 msgid "No"
 msgid "No"
@@ -1673,8 +1687,9 @@ msgid "Node name"
 msgstr "Username"
 msgstr "Username"
 
 
 #: src/views/preference/BasicSettings.vue:23
 #: src/views/preference/BasicSettings.vue:23
+#, fuzzy
 msgid "Node Secret"
 msgid "Node Secret"
-msgstr ""
+msgstr "Username"
 
 
 #: src/views/certificate/CertificateList/certColumns.tsx:91
 #: src/views/certificate/CertificateList/certColumns.tsx:91
 msgid "Not After"
 msgid "Not After"
@@ -1715,8 +1730,9 @@ msgid "Obtain certificate"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
 #: src/language/constants.ts:15
 #: src/language/constants.ts:15
+#, fuzzy
 msgid "Obtaining certificate"
 msgid "Obtaining certificate"
-msgstr ""
+msgstr "Certificate is valid"
 
 
 #: src/views/site/cert/components/AutoCertStepOne.vue:95
 #: src/views/site/cert/components/AutoCertStepOne.vue:95
 msgid "OCSP Must Staple"
 msgid "OCSP Must Staple"
@@ -1777,6 +1793,10 @@ msgstr ""
 msgid "Or"
 msgid "Or"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/components/TOTP.vue:127
+msgid "Or enter the secret: %{secret}"
+msgstr ""
+
 #: src/views/config/components/Rename.vue:68
 #: src/views/config/components/Rename.vue:68
 msgid "Original name"
 msgid "Original name"
 msgstr ""
 msgstr ""
@@ -1786,7 +1806,7 @@ msgstr ""
 msgid "OS"
 msgid "OS"
 msgstr "OS:"
 msgstr "OS:"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:193
+#: src/views/dashboard/ServerAnalytic.vue:189
 msgid "OS:"
 msgid "OS:"
 msgstr "OS:"
 msgstr "OS:"
 
 
@@ -1837,8 +1857,8 @@ msgid "Password length cannot exceed 20 characters"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/ConfigEditor.vue:263
 #: src/views/config/ConfigEditor.vue:263
-#: src/views/site/ngx_conf/LocationEditor.vue:111
-#: src/views/site/ngx_conf/LocationEditor.vue:139
+#: src/views/site/ngx_conf/LocationEditor.vue:109
+#: src/views/site/ngx_conf/LocationEditor.vue:137
 msgid "Path"
 msgid "Path"
 msgstr "Path"
 msgstr "Path"
 
 
@@ -1855,8 +1875,9 @@ msgid "Perform"
 msgstr ""
 msgstr ""
 
 
 #: src/language/constants.ts:28
 #: src/language/constants.ts:28
+#, fuzzy
 msgid "Perform core upgrade error"
 msgid "Perform core upgrade error"
-msgstr ""
+msgstr "Certificate has expired"
 
 
 #: src/language/constants.ts:27
 #: src/language/constants.ts:27
 msgid "Performing core upgrade"
 msgid "Performing core upgrade"
@@ -1932,7 +1953,7 @@ msgid ""
 "Please note that the unit of time configurations below are all in seconds."
 "Please note that the unit of time configurations below are all in seconds."
 msgstr ""
 msgstr ""
 
 
-#: src/views/environment/Environment.vue:48
+#: src/views/environment/Environment.vue:58
 msgid "Please select at least one node to upgrade"
 msgid "Please select at least one node to upgrade"
 msgstr ""
 msgstr ""
 
 
@@ -1991,11 +2012,11 @@ msgid "Public Security Number"
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:387
+#: src/views/dashboard/ServerAnalytic.vue:383
 msgid "Reads"
 msgid "Reads"
 msgstr "Reads"
 msgstr "Reads"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:338
+#: src/views/dashboard/ServerAnalytic.vue:334
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Receive"
 msgid "Receive"
 msgstr "Receive"
 msgstr "Receive"
@@ -2015,15 +2036,15 @@ msgid "Recovered Successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
 
 
 #: src/components/TwoFA/Authorization.vue:89
 #: src/components/TwoFA/Authorization.vue:89
-#: src/views/preference/components/TOTP.vue:172
+#: src/views/preference/components/TOTP.vue:155
 msgid "Recovery"
 msgid "Recovery"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:98
+#: src/views/preference/components/TOTP.vue:80
 msgid "Recovery Code"
 msgid "Recovery Code"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:107
+#: src/views/preference/components/TOTP.vue:89
 msgid "Recovery Code:"
 msgid "Recovery Code:"
 msgstr ""
 msgstr ""
 
 
@@ -2036,8 +2057,9 @@ msgid "Regenerate response"
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/ACMEUser.vue:137
 #: src/views/certificate/ACMEUser.vue:137
+#, fuzzy
 msgid "Register"
 msgid "Register"
-msgstr ""
+msgstr "Enable failed"
 
 
 #: src/views/certificate/ACMEUser.vue:56
 #: src/views/certificate/ACMEUser.vue:56
 msgid ""
 msgid ""
@@ -2065,8 +2087,9 @@ msgid "Register successfully"
 msgstr "Enabled successfully"
 msgstr "Enabled successfully"
 
 
 #: src/language/constants.ts:14
 #: src/language/constants.ts:14
+#, fuzzy
 msgid "Registering user"
 msgid "Registering user"
-msgstr ""
+msgstr "Enable failed"
 
 
 #: src/views/certificate/ACMEUser.vue:120
 #: src/views/certificate/ACMEUser.vue:120
 msgid "Registration Status"
 msgid "Registration Status"
@@ -2210,7 +2233,7 @@ msgstr ""
 msgid "Reset"
 msgid "Reset"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:127
+#: src/views/preference/components/TOTP.vue:109
 msgid "Reset 2FA"
 msgid "Reset 2FA"
 msgstr ""
 msgstr ""
 
 
@@ -2303,7 +2326,7 @@ msgstr "Saved successfully"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
 
 
-#: src/views/preference/components/TOTP.vue:88
+#: src/views/preference/components/TOTP.vue:72
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
 
 
@@ -2311,24 +2334,25 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:144
+#: src/views/preference/components/TOTP.vue:124
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
 
 
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:189
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:189
+#, fuzzy
 msgid "Selector"
 msgid "Selector"
-msgstr ""
+msgstr "Directive"
 
 
 #: src/routes/index.ts:283 src/views/system/SelfCheck/SelfCheck.vue:42
 #: src/routes/index.ts:283 src/views/system/SelfCheck/SelfCheck.vue:42
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:348
+#: src/views/dashboard/ServerAnalytic.vue:344
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Send"
 msgid "Send"
 msgstr "Send"
 msgstr "Send"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:179
+#: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Server Info"
 msgstr "Server Info"
 
 
@@ -2369,14 +2393,14 @@ msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
@@ -2420,12 +2444,14 @@ msgid "Sites List"
 msgstr "Sites List"
 msgstr "Sites List"
 
 
 #: src/constants/errors/self_check.ts:10
 #: src/constants/errors/self_check.ts:10
+#, fuzzy
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
-msgstr ""
+msgstr "Directive"
 
 
 #: src/constants/errors/self_check.ts:11
 #: src/constants/errors/self_check.ts:11
+#, fuzzy
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
-msgstr ""
+msgstr "Directive"
 
 
 #: src/views/certificate/CertificateEditor.vue:211
 #: src/views/certificate/CertificateEditor.vue:211
 #, fuzzy
 #, fuzzy
@@ -2470,8 +2496,8 @@ msgstr "Status"
 msgid "Stopped"
 msgid "Stopped"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:254
-#: src/views/dashboard/ServerAnalytic.vue:255
+#: src/views/dashboard/ServerAnalytic.vue:250
+#: src/views/dashboard/ServerAnalytic.vue:251
 msgid "Storage"
 msgid "Storage"
 msgstr "Storage"
 msgstr "Storage"
 
 
@@ -2481,8 +2507,9 @@ msgid "Streams Directory"
 msgstr "Directive"
 msgstr "Directive"
 
 
 #: src/constants/errors/self_check.ts:12
 #: src/constants/errors/self_check.ts:12
+#, fuzzy
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
-msgstr ""
+msgstr "Directive"
 
 
 #: src/constants/errors/self_check.ts:13
 #: src/constants/errors/self_check.ts:13
 #, fuzzy
 #, fuzzy
@@ -2501,8 +2528,8 @@ msgid ""
 "guide/nginx-proxy-example.html"
 "guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:240
-#: src/views/dashboard/ServerAnalytic.vue:241
+#: src/views/dashboard/ServerAnalytic.vue:236
+#: src/views/dashboard/ServerAnalytic.vue:237
 msgid "Swap"
 msgid "Swap"
 msgstr "Swap"
 msgstr "Swap"
 
 
@@ -2581,8 +2608,9 @@ msgid "Sync strategy"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
 #: src/views/certificate/CertificateEditor.vue:204
 #: src/views/certificate/CertificateEditor.vue:204
+#, fuzzy
 msgid "Sync to"
 msgid "Sync to"
-msgstr ""
+msgstr "Certificate is valid"
 
 
 #: src/views/site/site_edit/RightSettings.vue:110
 #: src/views/site/site_edit/RightSettings.vue:110
 msgid "Synchronization"
 msgid "Synchronization"
@@ -2634,8 +2662,9 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/CertificateEditor.vue:214
 #: src/views/certificate/CertificateEditor.vue:214
+#, fuzzy
 msgid "The input is not a SSL Certificate"
 msgid "The input is not a SSL Certificate"
-msgstr ""
+msgstr "Certificate Status"
 
 
 #: src/views/certificate/CertificateEditor.vue:227
 #: src/views/certificate/CertificateEditor.vue:227
 #, fuzzy
 #, fuzzy
@@ -2665,8 +2694,9 @@ msgid "The path exists, but the file is not a certificate"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
 
 
 #: src/views/certificate/CertificateEditor.vue:194
 #: src/views/certificate/CertificateEditor.vue:194
+#, fuzzy
 msgid "The path exists, but the file is not a private key"
 msgid "The path exists, but the file is not a private key"
-msgstr ""
+msgstr "Certificate Status"
 
 
 #: src/views/preference/BasicSettings.vue:66
 #: src/views/preference/BasicSettings.vue:66
 msgid ""
 msgid ""
@@ -2674,7 +2704,7 @@ msgid ""
 "hyphens, dashes, colons, and dots."
 "hyphens, dashes, colons, and dots."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:106
+#: src/views/preference/components/TOTP.vue:88
 msgid ""
 msgid ""
 "The recovery code is only displayed once, please save it in a safe place."
 "The recovery code is only displayed once, please save it in a safe place."
 msgstr ""
 msgstr ""
@@ -2706,8 +2736,9 @@ msgid "The url is invalid."
 msgstr ""
 msgstr ""
 
 
 #: src/language/constants.ts:2
 #: src/language/constants.ts:2
+#, fuzzy
 msgid "The username or password is incorrect"
 msgid "The username or password is incorrect"
-msgstr ""
+msgstr "Password"
 
 
 #: src/views/certificate/CertificateEditor.vue:102
 #: src/views/certificate/CertificateEditor.vue:102
 msgid "This Auto Cert item is invalid, please remove it."
 msgid "This Auto Cert item is invalid, please remove it."
@@ -2746,9 +2777,10 @@ msgid "This value is already taken"
 msgstr ""
 msgstr ""
 
 
 #: src/views/environment/BatchUpgrader.vue:182
 #: src/views/environment/BatchUpgrader.vue:182
+#, fuzzy
 msgid ""
 msgid ""
 "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
-msgstr ""
+msgstr "Saved successfully"
 
 
 #: src/views/preference/AuthSettings.vue:96
 #: src/views/preference/AuthSettings.vue:96
 msgid "Throttle"
 msgid "Throttle"
@@ -2764,7 +2796,7 @@ msgstr ""
 msgid "Title"
 msgid "Title"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:87
+#: src/views/preference/components/TOTP.vue:71
 msgid ""
 msgid ""
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "on your mobile phone."
 "on your mobile phone."
@@ -2802,11 +2834,11 @@ msgid_plural "Total %{total} items"
 msgstr[0] ""
 msgstr[0] ""
 msgstr[1] ""
 msgstr[1] ""
 
 
-#: src/views/preference/components/TOTP.vue:85
+#: src/views/preference/components/TOTP.vue:69
 msgid "TOTP"
 msgid "TOTP"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:86
+#: src/views/preference/components/TOTP.vue:70
 msgid ""
 msgid ""
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "password algorithm."
 "password algorithm."
@@ -2847,7 +2879,7 @@ msgstr "Updated at"
 msgid "Updated successfully"
 msgid "Updated successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
 
 
-#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
+#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 msgid "Upgrade"
 msgid "Upgrade"
 msgstr ""
 msgstr ""
@@ -2870,7 +2902,7 @@ msgstr ""
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:183
+#: src/views/dashboard/ServerAnalytic.vue:179
 msgid "Uptime:"
 msgid "Uptime:"
 msgstr "Uptime:"
 msgstr "Uptime:"
 
 
@@ -2911,8 +2943,9 @@ msgstr "Username (*)"
 #: src/views/certificate/ACMEUser.vue:124
 #: src/views/certificate/ACMEUser.vue:124
 #: src/views/certificate/CertificateList/certColumns.tsx:81
 #: src/views/certificate/CertificateList/certColumns.tsx:81
 #: src/views/site/cert/CertInfo.vue:24
 #: src/views/site/cert/CertInfo.vue:24
+#, fuzzy
 msgid "Valid"
 msgid "Valid"
-msgstr ""
+msgstr "Invalid E-mail!"
 
 
 #: src/views/environment/envColumns.tsx:31
 #: src/views/environment/envColumns.tsx:31
 msgid "Version"
 msgid "Version"
@@ -2920,8 +2953,9 @@ msgstr ""
 
 
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:488
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:488
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103
 #: src/views/site/ngx_conf/config_template/ConfigTemplate.vue:103
+#, fuzzy
 msgid "View"
 msgid "View"
-msgstr ""
+msgstr "Basic Mode"
 
 
 #: src/components/Notification/Notification.vue:187
 #: src/components/Notification/Notification.vue:187
 #, fuzzy
 #, fuzzy
@@ -2978,7 +3012,7 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:377
+#: src/views/dashboard/ServerAnalytic.vue:373
 msgid "Writes"
 msgid "Writes"
 msgstr "Writes"
 msgstr "Writes"
 
 
@@ -2987,13 +3021,14 @@ msgid "Writing certificate private key to disk"
 msgstr ""
 msgstr ""
 
 
 #: src/language/constants.ts:16
 #: src/language/constants.ts:16
+#, fuzzy
 msgid "Writing certificate to disk"
 msgid "Writing certificate to disk"
-msgstr ""
+msgstr "Certificate is valid"
 
 
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/CertSettings.vue:69
 #: src/views/preference/CertSettings.vue:69
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
-#: src/views/site/ngx_conf/LocationEditor.vue:89
+#: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"
 msgid "Yes"
 msgstr "Yes"
 msgstr "Yes"
 
 

+ 87 - 76
app/src/language/es/app.po

@@ -74,8 +74,8 @@ msgstr "Agregar configuración"
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "Añadir directiva a continuación"
 msgstr "Añadir directiva a continuación"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:132
-#: src/views/site/ngx_conf/LocationEditor.vue:159
+#: src/views/site/ngx_conf/LocationEditor.vue:130
+#: src/views/site/ngx_conf/LocationEditor.vue:157
 msgid "Add Location"
 msgid "Add Location"
 msgstr "Agregar Ubicación"
 msgstr "Agregar Ubicación"
 
 
@@ -192,7 +192,7 @@ msgstr "¿Está seguro de que quiere borrar esta directiva?"
 msgid "Are you sure you want to remove this item?"
 msgid "Are you sure you want to remove this item?"
 msgstr "¿Está seguro de que desea eliminar este elemento?"
 msgstr "¿Está seguro de que desea eliminar este elemento?"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:88
+#: src/views/site/ngx_conf/LocationEditor.vue:86
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "¿Está seguro de que quiere borrar esta ubicación?"
 msgstr "¿Está seguro de que quiere borrar esta ubicación?"
 
 
@@ -322,10 +322,6 @@ msgstr "Dir CA"
 msgid "CADir"
 msgid "CADir"
 msgstr "Directorio CA"
 msgstr "Directorio CA"
 
 
-#: src/views/preference/components/TOTP.vue:145
-msgid "Can't scan? Use text key binding"
-msgstr "¿No puede escanear? Utilice la vinculación con una llave de texto"
-
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
@@ -379,7 +375,7 @@ msgid "Certificate Renewal Interval"
 msgstr "Intervalo de renovación del Certificado"
 msgstr "Intervalo de renovación del Certificado"
 
 
 #: src/views/certificate/CertificateEditor.vue:128
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:32
+#: src/views/site/cert/Cert.vue:33
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgid_plural "Certificates Status"
 msgstr[0] "Estado del Certificado"
 msgstr[0] "Estado del Certificado"
@@ -403,7 +399,7 @@ msgstr "Método de desafío"
 msgid "Change Certificate"
 msgid "Change Certificate"
 msgstr "Cambiar Certificado"
 msgstr "Cambiar Certificado"
 
 
-#: src/views/site/cert/Cert.vue:51
+#: src/views/site/cert/Cert.vue:52
 msgid "Changed Certificate"
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
 msgstr[0] "Cambiar Certificado"
 msgstr[0] "Cambiar Certificado"
@@ -460,13 +456,17 @@ msgstr "Borrar"
 msgid "Cleared successfully"
 msgid "Cleared successfully"
 msgstr "Limpiado exitoso"
 msgstr "Limpiado exitoso"
 
 
+#: src/views/preference/components/TOTP.vue:125
+msgid "Click to copy"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgid "Command"
 msgstr "Comando"
 msgstr "Comando"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
-#: src/views/site/ngx_conf/LocationEditor.vue:105
-#: src/views/site/ngx_conf/LocationEditor.vue:136
+#: src/views/site/ngx_conf/LocationEditor.vue:103
+#: src/views/site/ngx_conf/LocationEditor.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 msgid "Comments"
 msgid "Comments"
 msgstr "Comentarios"
 msgstr "Comentarios"
@@ -500,8 +500,8 @@ msgid "Connection lost, please refresh the page."
 msgstr "Conexión perdida, por favor actualice la página."
 msgstr "Conexión perdida, por favor actualice la página."
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
-#: src/views/site/ngx_conf/LocationEditor.vue:117
-#: src/views/site/ngx_conf/LocationEditor.vue:145
+#: src/views/site/ngx_conf/LocationEditor.vue:115
+#: src/views/site/ngx_conf/LocationEditor.vue:143
 msgid "Content"
 msgid "Content"
 msgstr "Contenido"
 msgstr "Contenido"
 
 
@@ -518,11 +518,11 @@ msgstr "Copiar"
 msgid "Core Upgrade"
 msgid "Core Upgrade"
 msgstr "Actualización del kernel"
 msgstr "Actualización del kernel"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:305
+#: src/views/dashboard/ServerAnalytic.vue:301
 msgid "CPU Status"
 msgid "CPU Status"
 msgstr "Estado del CPU"
 msgstr "Estado del CPU"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:199
+#: src/views/dashboard/ServerAnalytic.vue:195
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU:"
 msgstr "CPU:"
 
 
@@ -564,11 +564,11 @@ msgstr "Credencial"
 msgid "Credentials"
 msgid "Credentials"
 msgstr "Credenciales"
 msgstr "Credenciales"
 
 
-#: src/views/preference/components/TOTP.vue:93
+#: src/views/preference/components/TOTP.vue:75
 msgid "Current account is enabled TOTP."
 msgid "Current account is enabled TOTP."
 msgstr "La cuenta actual tiene habilitada TOTP."
 msgstr "La cuenta actual tiene habilitada TOTP."
 
 
-#: src/views/preference/components/TOTP.vue:90
+#: src/views/preference/components/TOTP.vue:73
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "La cuenta actual no tiene habilitada TOTP."
 msgstr "La cuenta actual no tiene habilitada TOTP."
 
 
@@ -733,7 +733,7 @@ msgstr "Desactivado"
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "Desactivado con éxito"
 msgstr "Desactivado con éxito"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:370
+#: src/views/dashboard/ServerAnalytic.vue:366
 msgid "Disk IO"
 msgid "Disk IO"
 msgstr "I/O del disco"
 msgstr "I/O del disco"
 
 
@@ -903,7 +903,7 @@ msgstr "Falló el habilitado de %{conf_name} en %{node_name}"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr "Habilitado exitoso de %{conf_name} en %{node_name}"
 msgstr "Habilitado exitoso de %{conf_name} en %{node_name}"
 
 
-#: src/views/preference/components/TOTP.vue:52
+#: src/views/preference/components/TOTP.vue:38
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr "Habilitar 2FA exitoso"
 msgstr "Habilitar 2FA exitoso"
 
 
@@ -943,7 +943,7 @@ msgstr "Habilitado con Éxito"
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "Habilitar TLS"
 msgstr "Habilitar TLS"
 
 
-#: src/views/preference/components/TOTP.vue:119
+#: src/views/preference/components/TOTP.vue:101
 #, fuzzy
 #, fuzzy
 msgid "Enable TOTP"
 msgid "Enable TOTP"
 msgstr "Habilitar TLS"
 msgstr "Habilitar TLS"
@@ -978,7 +978,7 @@ msgid "Environment variables cleaned"
 msgstr "Variables de entorno limpiadas"
 msgstr "Variables de entorno limpiadas"
 
 
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
-#: src/views/environment/Environment.vue:33
+#: src/views/environment/Environment.vue:43
 msgid "Environments"
 msgid "Environments"
 msgstr "Entornos"
 msgstr "Entornos"
 
 
@@ -1040,8 +1040,9 @@ msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/self_check.ts:3
 #: src/constants/errors/self_check.ts:3
+#, fuzzy
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
-msgstr ""
+msgstr "Error al habilitar %{msg}"
 
 
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/stream/StreamEdit.vue:122
 #: src/views/stream/StreamEdit.vue:122
@@ -1163,7 +1164,7 @@ msgstr ""
 "el máximo de intentos en los minutos del umbral de prohibición, la IP será "
 "el máximo de intentos en los minutos del umbral de prohibición, la IP será "
 "bloqueada por un período de tiempo."
 "bloqueada por un período de tiempo."
 
 
-#: src/views/preference/components/TOTP.vue:105
+#: src/views/preference/components/TOTP.vue:87
 msgid ""
 msgid ""
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "2FA."
 "2FA."
@@ -1205,12 +1206,12 @@ msgstr "Error de actualización de kernel inicial"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "Inicializando la actualización del kernel"
 msgstr "Inicializando la actualización del kernel"
 
 
-#: src/views/preference/components/TOTP.vue:152
+#: src/views/preference/components/TOTP.vue:134
 msgid "Input the code from the app:"
 msgid "Input the code from the app:"
 msgstr "Ingrese el código de la aplicación:"
 msgstr "Ingrese el código de la aplicación:"
 
 
 #: src/components/TwoFA/Authorization.vue:82
 #: src/components/TwoFA/Authorization.vue:82
-#: src/views/preference/components/TOTP.vue:165
+#: src/views/preference/components/TOTP.vue:148
 msgid "Input the recovery code:"
 msgid "Input the recovery code:"
 msgstr "Ingrese el código de recuperación:"
 msgstr "Ingrese el código de recuperación:"
 
 
@@ -1330,15 +1331,15 @@ msgstr "Iniciar conexión"
 msgid "List"
 msgid "List"
 msgstr "Lista"
 msgstr "Lista"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:187
+#: src/views/dashboard/ServerAnalytic.vue:183
 msgid "Load Average:"
 msgid "Load Average:"
 msgstr "Promedios de carga:"
 msgstr "Promedios de carga:"
 
 
-#: src/views/environment/Environment.vue:39
+#: src/views/environment/Environment.vue:49
 msgid "Load from settings"
 msgid "Load from settings"
 msgstr "Cargar desde configuraciones"
 msgstr "Cargar desde configuraciones"
 
 
-#: src/views/environment/Environment.vue:13
+#: src/views/environment/Environment.vue:17
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Cargado con éxito"
 msgstr "Cargado con éxito"
 
 
@@ -1347,7 +1348,7 @@ msgstr "Cargado con éxito"
 msgid "Local"
 msgid "Local"
 msgstr "Local"
 msgstr "Local"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:69
+#: src/views/site/ngx_conf/LocationEditor.vue:68
 msgid "Location"
 msgid "Location"
 msgstr "Ubicación"
 msgstr "Ubicación"
 
 
@@ -1425,12 +1426,12 @@ msgstr "Certificado Administrado"
 msgid "Max Attempts"
 msgid "Max Attempts"
 msgstr "Intentos máximos"
 msgstr "Intentos máximos"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:226
-#: src/views/dashboard/ServerAnalytic.vue:227
+#: src/views/dashboard/ServerAnalytic.vue:222
+#: src/views/dashboard/ServerAnalytic.vue:223
 msgid "Memory"
 msgid "Memory"
 msgstr "Memoria"
 msgstr "Memoria"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:216
+#: src/views/dashboard/ServerAnalytic.vue:212
 msgid "Memory and Storage"
 msgid "Memory and Storage"
 msgstr "Memoria y almacenamiento"
 msgstr "Memoria y almacenamiento"
 
 
@@ -1484,19 +1485,19 @@ msgstr "Directiva multilínea"
 msgid "Name"
 msgid "Name"
 msgstr "Nombre"
 msgstr "Nombre"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:331
+#: src/views/dashboard/ServerAnalytic.vue:327
 msgid "Network"
 msgid "Network"
 msgstr "Red"
 msgstr "Red"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:273
+#: src/views/dashboard/ServerAnalytic.vue:269
 msgid "Network Statistics"
 msgid "Network Statistics"
 msgstr "Estadísticas de red"
 msgstr "Estadísticas de red"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:280
+#: src/views/dashboard/ServerAnalytic.vue:276
 msgid "Network Total Receive"
 msgid "Network Total Receive"
 msgstr "Total recibido por la red"
 msgstr "Total recibido por la red"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:286
+#: src/views/dashboard/ServerAnalytic.vue:282
 msgid "Network Total Send"
 msgid "Network Total Send"
 msgstr "Total enviado por la red"
 msgstr "Total enviado por la red"
 
 
@@ -1613,7 +1614,7 @@ msgstr "Nginx reiniciado con éxito"
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/CertSettings.vue:70
 #: src/views/preference/CertSettings.vue:70
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
-#: src/views/site/ngx_conf/LocationEditor.vue:90
+#: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/stream/StreamList.vue:163
 #: src/views/stream/StreamList.vue:163
 msgid "No"
 msgid "No"
@@ -1731,6 +1732,10 @@ msgstr "OpenAI"
 msgid "Or"
 msgid "Or"
 msgstr "O"
 msgstr "O"
 
 
+#: src/views/preference/components/TOTP.vue:127
+msgid "Or enter the secret: %{secret}"
+msgstr ""
+
 #: src/views/config/components/Rename.vue:68
 #: src/views/config/components/Rename.vue:68
 msgid "Original name"
 msgid "Original name"
 msgstr "Nombre original"
 msgstr "Nombre original"
@@ -1739,7 +1744,7 @@ msgstr "Nombre original"
 msgid "OS"
 msgid "OS"
 msgstr "SO"
 msgstr "SO"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:193
+#: src/views/dashboard/ServerAnalytic.vue:189
 msgid "OS:"
 msgid "OS:"
 msgstr "SO:"
 msgstr "SO:"
 
 
@@ -1795,8 +1800,8 @@ msgid "Password length cannot exceed 20 characters"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/ConfigEditor.vue:263
 #: src/views/config/ConfigEditor.vue:263
-#: src/views/site/ngx_conf/LocationEditor.vue:111
-#: src/views/site/ngx_conf/LocationEditor.vue:139
+#: src/views/site/ngx_conf/LocationEditor.vue:109
+#: src/views/site/ngx_conf/LocationEditor.vue:137
 msgid "Path"
 msgid "Path"
 msgstr "Ruta"
 msgstr "Ruta"
 
 
@@ -1902,7 +1907,7 @@ msgstr ""
 "Tenga en cuenta que las siguientes configuraciones de unidades de tiempo "
 "Tenga en cuenta que las siguientes configuraciones de unidades de tiempo "
 "están todas en segundos."
 "están todas en segundos."
 
 
-#: src/views/environment/Environment.vue:48
+#: src/views/environment/Environment.vue:58
 msgid "Please select at least one node to upgrade"
 msgid "Please select at least one node to upgrade"
 msgstr "Seleccione al menos un nodo para actualizar"
 msgstr "Seleccione al menos un nodo para actualizar"
 
 
@@ -1964,11 +1969,11 @@ msgid "Public Security Number"
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:387
+#: src/views/dashboard/ServerAnalytic.vue:383
 msgid "Reads"
 msgid "Reads"
 msgstr "Lecturas"
 msgstr "Lecturas"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:338
+#: src/views/dashboard/ServerAnalytic.vue:334
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Receive"
 msgid "Receive"
 msgstr "Recibido"
 msgstr "Recibido"
@@ -1987,15 +1992,15 @@ msgid "Recovered Successfully"
 msgstr "Recuperado con éxito"
 msgstr "Recuperado con éxito"
 
 
 #: src/components/TwoFA/Authorization.vue:89
 #: src/components/TwoFA/Authorization.vue:89
-#: src/views/preference/components/TOTP.vue:172
+#: src/views/preference/components/TOTP.vue:155
 msgid "Recovery"
 msgid "Recovery"
 msgstr "Recuperación"
 msgstr "Recuperación"
 
 
-#: src/views/preference/components/TOTP.vue:98
+#: src/views/preference/components/TOTP.vue:80
 msgid "Recovery Code"
 msgid "Recovery Code"
 msgstr "Código de Recuperación"
 msgstr "Código de Recuperación"
 
 
-#: src/views/preference/components/TOTP.vue:107
+#: src/views/preference/components/TOTP.vue:89
 msgid "Recovery Code:"
 msgid "Recovery Code:"
 msgstr "Código de Recuperación:"
 msgstr "Código de Recuperación:"
 
 
@@ -2171,7 +2176,7 @@ msgstr "Pedido con parámetros incorrectos"
 msgid "Reset"
 msgid "Reset"
 msgstr "Limpiar"
 msgstr "Limpiar"
 
 
-#: src/views/preference/components/TOTP.vue:127
+#: src/views/preference/components/TOTP.vue:109
 msgid "Reset 2FA"
 msgid "Reset 2FA"
 msgstr "Restablecer 2FA"
 msgstr "Restablecer 2FA"
 
 
@@ -2242,8 +2247,8 @@ msgstr "Renombrar Configuración Remota Exitosa"
 #, fuzzy
 #, fuzzy
 msgid "Save site %{site} to %{node} error, response: %{resp}"
 msgid "Save site %{site} to %{node} error, response: %{resp}"
 msgstr ""
 msgstr ""
-"Sincronización del Certificado %{cert_name} a %{env_name} falló, respuesta: %"
-"{resp}"
+"Sincronización del Certificado %{cert_name} a %{env_name} falló, respuesta: "
+"%{resp}"
 
 
 #: src/components/Notification/config.ts:35
 #: src/components/Notification/config.ts:35
 #, fuzzy
 #, fuzzy
@@ -2264,7 +2269,7 @@ msgstr "Guardado con éxito"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "Guardado con éxito"
 msgstr "Guardado con éxito"
 
 
-#: src/views/preference/components/TOTP.vue:88
+#: src/views/preference/components/TOTP.vue:72
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
 "Escanee el código QR con su teléfono móvil para agregar la cuenta a la "
 "Escanee el código QR con su teléfono móvil para agregar la cuenta a la "
@@ -2274,7 +2279,7 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr "SDK"
 msgstr "SDK"
 
 
-#: src/views/preference/components/TOTP.vue:144
+#: src/views/preference/components/TOTP.vue:124
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr "El secreto ha sido copiado"
 msgstr "El secreto ha sido copiado"
 
 
@@ -2286,12 +2291,12 @@ msgstr "Seleccionador"
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:348
+#: src/views/dashboard/ServerAnalytic.vue:344
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Send"
 msgid "Send"
 msgstr "Enviado"
 msgstr "Enviado"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:179
+#: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Información del servidor"
 msgstr "Información del servidor"
 
 
@@ -2334,14 +2339,14 @@ msgstr "Usando el proveedor de desafíos HTTP01"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
@@ -2384,12 +2389,14 @@ msgid "Sites List"
 msgstr "Lista de sitios"
 msgstr "Lista de sitios"
 
 
 #: src/constants/errors/self_check.ts:10
 #: src/constants/errors/self_check.ts:10
+#, fuzzy
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
-msgstr ""
+msgstr "Directorio"
 
 
 #: src/constants/errors/self_check.ts:11
 #: src/constants/errors/self_check.ts:11
+#, fuzzy
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
-msgstr ""
+msgstr "Directorio"
 
 
 #: src/views/certificate/CertificateEditor.vue:211
 #: src/views/certificate/CertificateEditor.vue:211
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
@@ -2428,8 +2435,8 @@ msgstr "Estado"
 msgid "Stopped"
 msgid "Stopped"
 msgstr "Detenido"
 msgstr "Detenido"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:254
-#: src/views/dashboard/ServerAnalytic.vue:255
+#: src/views/dashboard/ServerAnalytic.vue:250
+#: src/views/dashboard/ServerAnalytic.vue:251
 msgid "Storage"
 msgid "Storage"
 msgstr "Almacenamiento"
 msgstr "Almacenamiento"
 
 
@@ -2439,8 +2446,9 @@ msgid "Streams Directory"
 msgstr "Directorio"
 msgstr "Directorio"
 
 
 #: src/constants/errors/self_check.ts:12
 #: src/constants/errors/self_check.ts:12
+#, fuzzy
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
-msgstr ""
+msgstr "Directorio"
 
 
 #: src/constants/errors/self_check.ts:13
 #: src/constants/errors/self_check.ts:13
 #, fuzzy
 #, fuzzy
@@ -2459,8 +2467,8 @@ msgid ""
 "guide/nginx-proxy-example.html"
 "guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:240
-#: src/views/dashboard/ServerAnalytic.vue:241
+#: src/views/dashboard/ServerAnalytic.vue:236
+#: src/views/dashboard/ServerAnalytic.vue:237
 msgid "Swap"
 msgid "Swap"
 msgstr "Swap"
 msgstr "Swap"
 
 
@@ -2491,8 +2499,8 @@ msgstr ""
 #: src/components/Notification/cert.ts:14
 #: src/components/Notification/cert.ts:14
 msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
 msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
 msgstr ""
 msgstr ""
-"Sincronización del Certificado %{cert_name} a %{env_name} falló, respuesta: %"
-"{resp}"
+"Sincronización del Certificado %{cert_name} a %{env_name} falló, respuesta: "
+"%{resp}"
 
 
 #: src/components/Notification/cert.ts:4
 #: src/components/Notification/cert.ts:4
 msgid "Sync Certificate %{cert_name} to %{env_name} successfully"
 msgid "Sync Certificate %{cert_name} to %{env_name} successfully"
@@ -2640,7 +2648,7 @@ msgstr ""
 "El nombre del servidor solo debe contener letras, Unicode, números, guiones, "
 "El nombre del servidor solo debe contener letras, Unicode, números, guiones, "
 "rayas y puntos."
 "rayas y puntos."
 
 
-#: src/views/preference/components/TOTP.vue:106
+#: src/views/preference/components/TOTP.vue:88
 msgid ""
 msgid ""
 "The recovery code is only displayed once, please save it in a safe place."
 "The recovery code is only displayed once, please save it in a safe place."
 msgstr ""
 msgstr ""
@@ -2724,8 +2732,8 @@ msgstr "Este valor ya está elegido"
 msgid ""
 msgid ""
 "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 msgstr ""
 msgstr ""
-"Esto actualizará o reinstalará la interfaz de usuario de Nginx en %"
-"{nodeNames} a %{version}."
+"Esto actualizará o reinstalará la interfaz de usuario de Nginx en "
+"%{nodeNames} a %{version}."
 
 
 #: src/views/preference/AuthSettings.vue:96
 #: src/views/preference/AuthSettings.vue:96
 msgid "Throttle"
 msgid "Throttle"
@@ -2741,7 +2749,7 @@ msgstr "Consejos"
 msgid "Title"
 msgid "Title"
 msgstr "Título"
 msgstr "Título"
 
 
-#: src/views/preference/components/TOTP.vue:87
+#: src/views/preference/components/TOTP.vue:71
 msgid ""
 msgid ""
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "on your mobile phone."
 "on your mobile phone."
@@ -2792,11 +2800,11 @@ msgid_plural "Total %{total} items"
 msgstr[0] ""
 msgstr[0] ""
 msgstr[1] ""
 msgstr[1] ""
 
 
-#: src/views/preference/components/TOTP.vue:85
+#: src/views/preference/components/TOTP.vue:69
 msgid "TOTP"
 msgid "TOTP"
 msgstr "TOTP"
 msgstr "TOTP"
 
 
-#: src/views/preference/components/TOTP.vue:86
+#: src/views/preference/components/TOTP.vue:70
 msgid ""
 msgid ""
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "password algorithm."
 "password algorithm."
@@ -2838,7 +2846,7 @@ msgstr "Actualizado a"
 msgid "Updated successfully"
 msgid "Updated successfully"
 msgstr "Actualización exitosa"
 msgstr "Actualización exitosa"
 
 
-#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
+#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 msgid "Upgrade"
 msgid "Upgrade"
 msgstr "Actualizar"
 msgstr "Actualizar"
@@ -2859,7 +2867,7 @@ msgstr "Actualizando Nginx UI, por favor espere..."
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr "Nombre de la Transmisión"
 msgstr "Nombre de la Transmisión"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:183
+#: src/views/dashboard/ServerAnalytic.vue:179
 msgid "Uptime:"
 msgid "Uptime:"
 msgstr "Tiempo encendido:"
 msgstr "Tiempo encendido:"
 
 
@@ -2974,7 +2982,7 @@ msgstr ""
 "continuación se sincronizarán."
 "continuación se sincronizarán."
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:377
+#: src/views/dashboard/ServerAnalytic.vue:373
 msgid "Writes"
 msgid "Writes"
 msgstr "Escrituras"
 msgstr "Escrituras"
 
 
@@ -2989,7 +2997,7 @@ msgstr "Escribir certificado a disco"
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/CertSettings.vue:69
 #: src/views/preference/CertSettings.vue:69
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
-#: src/views/site/ngx_conf/LocationEditor.vue:89
+#: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"
 msgid "Yes"
 msgstr "Si"
 msgstr "Si"
 
 
@@ -3013,6 +3021,9 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr "Sus llaves de acceso"
 msgstr "Sus llaves de acceso"
 
 
+#~ msgid "Can't scan? Use text key binding"
+#~ msgstr "¿No puede escanear? Utilice la vinculación con una llave de texto"
+
 #~ msgid "Directory"
 #~ msgid "Directory"
 #~ msgstr "Directorio"
 #~ msgstr "Directorio"
 
 

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

@@ -71,8 +71,8 @@ msgstr "Modifier la configuration"
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "Ajouter une directive"
 msgstr "Ajouter une directive"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:132
-#: src/views/site/ngx_conf/LocationEditor.vue:159
+#: src/views/site/ngx_conf/LocationEditor.vue:130
+#: src/views/site/ngx_conf/LocationEditor.vue:157
 msgid "Add Location"
 msgid "Add Location"
 msgstr "Ajouter une localisation"
 msgstr "Ajouter une localisation"
 
 
@@ -199,7 +199,7 @@ msgstr "Voulez-vous vraiment supprimer cette directive ?"
 msgid "Are you sure you want to remove this item?"
 msgid "Are you sure you want to remove this item?"
 msgstr "Voulez-vous vraiment supprimer cette directive ?"
 msgstr "Voulez-vous vraiment supprimer cette directive ?"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:88
+#: src/views/site/ngx_conf/LocationEditor.vue:86
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Voulez-vous vraiment supprimer cette localisation ?"
 msgstr "Voulez-vous vraiment supprimer cette localisation ?"
 
 
@@ -330,10 +330,6 @@ msgstr ""
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:145
-msgid "Can't scan? Use text key binding"
-msgstr ""
-
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
@@ -388,7 +384,7 @@ msgid "Certificate Renewal Interval"
 msgstr "Le certificat est valide"
 msgstr "Le certificat est valide"
 
 
 #: src/views/certificate/CertificateEditor.vue:128
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:32
+#: src/views/site/cert/Cert.vue:33
 #, fuzzy
 #, fuzzy
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgid_plural "Certificates Status"
@@ -415,7 +411,7 @@ msgstr "Méthode de challenge"
 msgid "Change Certificate"
 msgid "Change Certificate"
 msgstr "Changer de certificat"
 msgstr "Changer de certificat"
 
 
-#: src/views/site/cert/Cert.vue:51
+#: src/views/site/cert/Cert.vue:52
 #, fuzzy
 #, fuzzy
 msgid "Changed Certificate"
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
@@ -475,14 +471,18 @@ msgstr "Effacer"
 msgid "Cleared successfully"
 msgid "Cleared successfully"
 msgstr "Désactivé avec succès"
 msgstr "Désactivé avec succès"
 
 
+#: src/views/preference/components/TOTP.vue:125
+msgid "Click to copy"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #: src/views/preference/LogrotateSettings.vue:22
 #, fuzzy
 #, fuzzy
 msgid "Command"
 msgid "Command"
 msgstr "Commentaires"
 msgstr "Commentaires"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
-#: src/views/site/ngx_conf/LocationEditor.vue:105
-#: src/views/site/ngx_conf/LocationEditor.vue:136
+#: src/views/site/ngx_conf/LocationEditor.vue:103
+#: src/views/site/ngx_conf/LocationEditor.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 msgid "Comments"
 msgid "Comments"
 msgstr "Commentaires"
 msgstr "Commentaires"
@@ -516,8 +516,8 @@ msgid "Connection lost, please refresh the page."
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
-#: src/views/site/ngx_conf/LocationEditor.vue:117
-#: src/views/site/ngx_conf/LocationEditor.vue:145
+#: src/views/site/ngx_conf/LocationEditor.vue:115
+#: src/views/site/ngx_conf/LocationEditor.vue:143
 msgid "Content"
 msgid "Content"
 msgstr "Contenu"
 msgstr "Contenu"
 
 
@@ -534,11 +534,11 @@ msgstr ""
 msgid "Core Upgrade"
 msgid "Core Upgrade"
 msgstr "Mise à jour du core"
 msgstr "Mise à jour du core"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:305
+#: src/views/dashboard/ServerAnalytic.vue:301
 msgid "CPU Status"
 msgid "CPU Status"
 msgstr "État du processeur"
 msgstr "État du processeur"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:199
+#: src/views/dashboard/ServerAnalytic.vue:195
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU :"
 msgstr "CPU :"
 
 
@@ -584,11 +584,11 @@ msgstr "Identifiant"
 msgid "Credentials"
 msgid "Credentials"
 msgstr "Identifiants"
 msgstr "Identifiants"
 
 
-#: src/views/preference/components/TOTP.vue:93
+#: src/views/preference/components/TOTP.vue:75
 msgid "Current account is enabled TOTP."
 msgid "Current account is enabled TOTP."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:90
+#: src/views/preference/components/TOTP.vue:73
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr ""
 msgstr ""
 
 
@@ -665,12 +665,14 @@ msgid "Deploy"
 msgstr ""
 msgstr ""
 
 
 #: src/views/stream/components/Deploy.vue:57
 #: src/views/stream/components/Deploy.vue:57
+#, fuzzy
 msgid "Deploy %{conf_name} to %{node_name} failed"
 msgid "Deploy %{conf_name} to %{node_name} failed"
-msgstr ""
+msgstr "Dupliqué avec succès"
 
 
 #: src/views/stream/components/Deploy.vue:36
 #: src/views/stream/components/Deploy.vue:36
+#, fuzzy
 msgid "Deploy %{conf_name} to %{node_name} successfully"
 msgid "Deploy %{conf_name} to %{node_name} successfully"
-msgstr ""
+msgstr "Dupliqué avec succès"
 
 
 #: src/views/stream/components/Deploy.vue:34
 #: src/views/stream/components/Deploy.vue:34
 #, fuzzy
 #, fuzzy
@@ -760,7 +762,7 @@ msgstr "Désactivé"
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "Désactivé avec succès"
 msgstr "Désactivé avec succès"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:370
+#: src/views/dashboard/ServerAnalytic.vue:366
 msgid "Disk IO"
 msgid "Disk IO"
 msgstr "E/S disque"
 msgstr "E/S disque"
 
 
@@ -932,14 +934,16 @@ msgid "Enable"
 msgstr "Activé"
 msgstr "Activé"
 
 
 #: src/views/stream/components/Deploy.vue:47
 #: src/views/stream/components/Deploy.vue:47
+#, fuzzy
 msgid "Enable %{conf_name} in %{node_name} failed"
 msgid "Enable %{conf_name} in %{node_name} failed"
-msgstr ""
+msgstr "Dupliqué avec succès"
 
 
 #: src/views/stream/components/Deploy.vue:43
 #: src/views/stream/components/Deploy.vue:43
+#, fuzzy
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
-msgstr ""
+msgstr "Dupliqué avec succès"
 
 
-#: src/views/preference/components/TOTP.vue:52
+#: src/views/preference/components/TOTP.vue:38
 #, fuzzy
 #, fuzzy
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr "Activé avec succès"
 msgstr "Activé avec succès"
@@ -981,7 +985,7 @@ msgstr "Activé avec succès"
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "Activer TLS"
 msgstr "Activer TLS"
 
 
-#: src/views/preference/components/TOTP.vue:119
+#: src/views/preference/components/TOTP.vue:101
 #, fuzzy
 #, fuzzy
 msgid "Enable TOTP"
 msgid "Enable TOTP"
 msgstr "Activer TLS"
 msgstr "Activer TLS"
@@ -1017,7 +1021,7 @@ msgid "Environment variables cleaned"
 msgstr "Définition des variables d'environnement"
 msgstr "Définition des variables d'environnement"
 
 
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
-#: src/views/environment/Environment.vue:33
+#: src/views/environment/Environment.vue:43
 #, fuzzy
 #, fuzzy
 msgid "Environments"
 msgid "Environments"
 msgstr "Commentaires"
 msgstr "Commentaires"
@@ -1082,8 +1086,9 @@ msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/self_check.ts:3
 #: src/constants/errors/self_check.ts:3
+#, fuzzy
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
-msgstr ""
+msgstr "Impossible d'activer %{msg}"
 
 
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/stream/StreamEdit.vue:122
 #: src/views/stream/StreamEdit.vue:122
@@ -1203,7 +1208,7 @@ msgid ""
 "ban threshold minutes, the ip will be banned for a period of time."
 "ban threshold minutes, the ip will be banned for a period of time."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:105
+#: src/views/preference/components/TOTP.vue:87
 msgid ""
 msgid ""
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "2FA."
 "2FA."
@@ -1242,12 +1247,12 @@ msgstr "Erreur du programme de mise à niveau initial du core"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "Initialisation du programme de mise à niveau du core"
 msgstr "Initialisation du programme de mise à niveau du core"
 
 
-#: src/views/preference/components/TOTP.vue:152
+#: src/views/preference/components/TOTP.vue:134
 msgid "Input the code from the app:"
 msgid "Input the code from the app:"
 msgstr ""
 msgstr ""
 
 
 #: src/components/TwoFA/Authorization.vue:82
 #: src/components/TwoFA/Authorization.vue:82
-#: src/views/preference/components/TOTP.vue:165
+#: src/views/preference/components/TOTP.vue:148
 msgid "Input the recovery code:"
 msgid "Input the recovery code:"
 msgstr ""
 msgstr ""
 
 
@@ -1273,8 +1278,9 @@ msgid "Invalid filename"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Mkdir.vue:57
 #: src/views/config/components/Mkdir.vue:57
+#, fuzzy
 msgid "Invalid folder name"
 msgid "Invalid folder name"
-msgstr ""
+msgstr "Veuillez saisir votre nom d'utilisateur !"
 
 
 #: src/constants/errors/user.ts:4
 #: src/constants/errors/user.ts:4
 msgid "Invalid otp code"
 msgid "Invalid otp code"
@@ -1371,16 +1377,16 @@ msgstr ""
 msgid "List"
 msgid "List"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:187
+#: src/views/dashboard/ServerAnalytic.vue:183
 #, fuzzy
 #, fuzzy
 msgid "Load Average:"
 msgid "Load Average:"
 msgstr "Charges moyennes :"
 msgstr "Charges moyennes :"
 
 
-#: src/views/environment/Environment.vue:39
+#: src/views/environment/Environment.vue:49
 msgid "Load from settings"
 msgid "Load from settings"
 msgstr ""
 msgstr ""
 
 
-#: src/views/environment/Environment.vue:13
+#: src/views/environment/Environment.vue:17
 #, fuzzy
 #, fuzzy
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Enregistré avec succès"
 msgstr "Enregistré avec succès"
@@ -1391,7 +1397,7 @@ msgstr "Enregistré avec succès"
 msgid "Local"
 msgid "Local"
 msgstr "Localisation"
 msgstr "Localisation"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:69
+#: src/views/site/ngx_conf/LocationEditor.vue:68
 #, fuzzy
 #, fuzzy
 msgid "Location"
 msgid "Location"
 msgstr "Localisation"
 msgstr "Localisation"
@@ -1468,12 +1474,12 @@ msgstr "Changer de certificat"
 msgid "Max Attempts"
 msgid "Max Attempts"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:226
-#: src/views/dashboard/ServerAnalytic.vue:227
+#: src/views/dashboard/ServerAnalytic.vue:222
+#: src/views/dashboard/ServerAnalytic.vue:223
 msgid "Memory"
 msgid "Memory"
 msgstr "Mémoire"
 msgstr "Mémoire"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:216
+#: src/views/dashboard/ServerAnalytic.vue:212
 msgid "Memory and Storage"
 msgid "Memory and Storage"
 msgstr "Mémoire et stockage"
 msgstr "Mémoire et stockage"
 
 
@@ -1530,19 +1536,19 @@ msgstr "Directive multiligne"
 msgid "Name"
 msgid "Name"
 msgstr "Nom"
 msgstr "Nom"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:331
+#: src/views/dashboard/ServerAnalytic.vue:327
 msgid "Network"
 msgid "Network"
 msgstr "Réseau"
 msgstr "Réseau"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:273
+#: src/views/dashboard/ServerAnalytic.vue:269
 msgid "Network Statistics"
 msgid "Network Statistics"
 msgstr "Statistiques du réseau"
 msgstr "Statistiques du réseau"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:280
+#: src/views/dashboard/ServerAnalytic.vue:276
 msgid "Network Total Receive"
 msgid "Network Total Receive"
 msgstr "Réception totale du réseau"
 msgstr "Réception totale du réseau"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:286
+#: src/views/dashboard/ServerAnalytic.vue:282
 msgid "Network Total Send"
 msgid "Network Total Send"
 msgstr "Envoi total réseau"
 msgstr "Envoi total réseau"
 
 
@@ -1626,8 +1632,9 @@ msgid "Nginx Log"
 msgstr "Journal Nginx"
 msgstr "Journal Nginx"
 
 
 #: src/views/preference/NginxSettings.vue:18
 #: src/views/preference/NginxSettings.vue:18
+#, fuzzy
 msgid "Nginx Log Directory Whitelist"
 msgid "Nginx Log Directory Whitelist"
-msgstr ""
+msgstr "Erreur d'analyse de configuration Nginx"
 
 
 #: src/views/preference/NginxSettings.vue:27
 #: src/views/preference/NginxSettings.vue:27
 #, fuzzy
 #, fuzzy
@@ -1635,8 +1642,9 @@ msgid "Nginx PID Path"
 msgstr "Chemin du journal des erreurs Nginx"
 msgstr "Chemin du journal des erreurs Nginx"
 
 
 #: src/views/preference/NginxSettings.vue:30
 #: src/views/preference/NginxSettings.vue:30
+#, fuzzy
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
-msgstr ""
+msgstr "Commande de démarrage du terminal"
 
 
 #: src/components/NginxControl/NginxControl.vue:26
 #: src/components/NginxControl/NginxControl.vue:26
 msgid "Nginx reloaded successfully"
 msgid "Nginx reloaded successfully"
@@ -1662,7 +1670,7 @@ msgstr "Nginx a redémarré avec succès"
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/CertSettings.vue:70
 #: src/views/preference/CertSettings.vue:70
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
-#: src/views/site/ngx_conf/LocationEditor.vue:90
+#: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/stream/StreamList.vue:163
 #: src/views/stream/StreamList.vue:163
 msgid "No"
 msgid "No"
@@ -1778,6 +1786,10 @@ msgstr "OpenAI"
 msgid "Or"
 msgid "Or"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/components/TOTP.vue:127
+msgid "Or enter the secret: %{secret}"
+msgstr ""
+
 #: src/views/config/components/Rename.vue:68
 #: src/views/config/components/Rename.vue:68
 msgid "Original name"
 msgid "Original name"
 msgstr ""
 msgstr ""
@@ -1786,7 +1798,7 @@ msgstr ""
 msgid "OS"
 msgid "OS"
 msgstr "OS"
 msgstr "OS"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:193
+#: src/views/dashboard/ServerAnalytic.vue:189
 msgid "OS:"
 msgid "OS:"
 msgstr "OS :"
 msgstr "OS :"
 
 
@@ -1837,8 +1849,8 @@ msgid "Password length cannot exceed 20 characters"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/ConfigEditor.vue:263
 #: src/views/config/ConfigEditor.vue:263
-#: src/views/site/ngx_conf/LocationEditor.vue:111
-#: src/views/site/ngx_conf/LocationEditor.vue:139
+#: src/views/site/ngx_conf/LocationEditor.vue:109
+#: src/views/site/ngx_conf/LocationEditor.vue:137
 msgid "Path"
 msgid "Path"
 msgstr "Chemin"
 msgstr "Chemin"
 
 
@@ -1942,7 +1954,7 @@ msgid ""
 "Please note that the unit of time configurations below are all in seconds."
 "Please note that the unit of time configurations below are all in seconds."
 msgstr ""
 msgstr ""
 
 
-#: src/views/environment/Environment.vue:48
+#: src/views/environment/Environment.vue:58
 msgid "Please select at least one node to upgrade"
 msgid "Please select at least one node to upgrade"
 msgstr ""
 msgstr ""
 
 
@@ -2002,12 +2014,12 @@ msgid "Public Security Number"
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:387
+#: src/views/dashboard/ServerAnalytic.vue:383
 #, fuzzy
 #, fuzzy
 msgid "Reads"
 msgid "Reads"
 msgstr "Lectures"
 msgstr "Lectures"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:338
+#: src/views/dashboard/ServerAnalytic.vue:334
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 #, fuzzy
 #, fuzzy
 msgid "Receive"
 msgid "Receive"
@@ -2028,15 +2040,15 @@ msgid "Recovered Successfully"
 msgstr "Enregistré avec succès"
 msgstr "Enregistré avec succès"
 
 
 #: src/components/TwoFA/Authorization.vue:89
 #: src/components/TwoFA/Authorization.vue:89
-#: src/views/preference/components/TOTP.vue:172
+#: src/views/preference/components/TOTP.vue:155
 msgid "Recovery"
 msgid "Recovery"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:98
+#: src/views/preference/components/TOTP.vue:80
 msgid "Recovery Code"
 msgid "Recovery Code"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:107
+#: src/views/preference/components/TOTP.vue:89
 msgid "Recovery Code:"
 msgid "Recovery Code:"
 msgstr ""
 msgstr ""
 
 
@@ -2225,7 +2237,7 @@ msgstr ""
 msgid "Reset"
 msgid "Reset"
 msgstr "Réinitialiser"
 msgstr "Réinitialiser"
 
 
-#: src/views/preference/components/TOTP.vue:127
+#: src/views/preference/components/TOTP.vue:109
 #, fuzzy
 #, fuzzy
 msgid "Reset 2FA"
 msgid "Reset 2FA"
 msgstr "Réinitialiser"
 msgstr "Réinitialiser"
@@ -2317,7 +2329,7 @@ msgstr "Sauvegarde réussie"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "Enregistré avec succès"
 msgstr "Enregistré avec succès"
 
 
-#: src/views/preference/components/TOTP.vue:88
+#: src/views/preference/components/TOTP.vue:72
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
 
 
@@ -2325,7 +2337,7 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:144
+#: src/views/preference/components/TOTP.vue:124
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
 
 
@@ -2337,12 +2349,12 @@ msgstr "Sélecteur"
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:348
+#: src/views/dashboard/ServerAnalytic.vue:344
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Send"
 msgid "Send"
 msgstr "Envoyer"
 msgstr "Envoyer"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:179
+#: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Informations sur le serveur"
 msgstr "Informations sur le serveur"
 
 
@@ -2385,14 +2397,14 @@ msgstr "Utilisation du fournisseur de challenge HTTP01"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
@@ -2435,12 +2447,14 @@ msgid "Sites List"
 msgstr "Liste des sites"
 msgstr "Liste des sites"
 
 
 #: src/constants/errors/self_check.ts:10
 #: src/constants/errors/self_check.ts:10
+#, fuzzy
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
-msgstr ""
+msgstr "Directive"
 
 
 #: src/constants/errors/self_check.ts:11
 #: src/constants/errors/self_check.ts:11
+#, fuzzy
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
-msgstr ""
+msgstr "Directive"
 
 
 #: src/views/certificate/CertificateEditor.vue:211
 #: src/views/certificate/CertificateEditor.vue:211
 #, fuzzy
 #, fuzzy
@@ -2483,8 +2497,8 @@ msgstr "Statut"
 msgid "Stopped"
 msgid "Stopped"
 msgstr "Arrêté"
 msgstr "Arrêté"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:254
-#: src/views/dashboard/ServerAnalytic.vue:255
+#: src/views/dashboard/ServerAnalytic.vue:250
+#: src/views/dashboard/ServerAnalytic.vue:251
 msgid "Storage"
 msgid "Storage"
 msgstr "Stockage"
 msgstr "Stockage"
 
 
@@ -2494,8 +2508,9 @@ msgid "Streams Directory"
 msgstr "Directive"
 msgstr "Directive"
 
 
 #: src/constants/errors/self_check.ts:12
 #: src/constants/errors/self_check.ts:12
+#, fuzzy
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
-msgstr ""
+msgstr "Directive"
 
 
 #: src/constants/errors/self_check.ts:13
 #: src/constants/errors/self_check.ts:13
 #, fuzzy
 #, fuzzy
@@ -2514,8 +2529,8 @@ msgid ""
 "guide/nginx-proxy-example.html"
 "guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:240
-#: src/views/dashboard/ServerAnalytic.vue:241
+#: src/views/dashboard/ServerAnalytic.vue:236
+#: src/views/dashboard/ServerAnalytic.vue:237
 #, fuzzy
 #, fuzzy
 msgid "Swap"
 msgid "Swap"
 msgstr "Échanger"
 msgstr "Échanger"
@@ -2595,8 +2610,9 @@ msgid "Sync strategy"
 msgstr "Changer de certificat"
 msgstr "Changer de certificat"
 
 
 #: src/views/certificate/CertificateEditor.vue:204
 #: src/views/certificate/CertificateEditor.vue:204
+#, fuzzy
 msgid "Sync to"
 msgid "Sync to"
-msgstr ""
+msgstr "Changer de certificat"
 
 
 #: src/views/site/site_edit/RightSettings.vue:110
 #: src/views/site/site_edit/RightSettings.vue:110
 msgid "Synchronization"
 msgid "Synchronization"
@@ -2648,8 +2664,9 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/CertificateEditor.vue:214
 #: src/views/certificate/CertificateEditor.vue:214
+#, fuzzy
 msgid "The input is not a SSL Certificate"
 msgid "The input is not a SSL Certificate"
-msgstr ""
+msgstr "Chemin de la clé du certificat SSL"
 
 
 #: src/views/certificate/CertificateEditor.vue:227
 #: src/views/certificate/CertificateEditor.vue:227
 #, fuzzy
 #, fuzzy
@@ -2679,8 +2696,9 @@ msgid "The path exists, but the file is not a certificate"
 msgstr "Chemin de la clé du certificat SSL"
 msgstr "Chemin de la clé du certificat SSL"
 
 
 #: src/views/certificate/CertificateEditor.vue:194
 #: src/views/certificate/CertificateEditor.vue:194
+#, fuzzy
 msgid "The path exists, but the file is not a private key"
 msgid "The path exists, but the file is not a private key"
-msgstr ""
+msgstr "Chemin de la clé du certificat SSL"
 
 
 #: src/views/preference/BasicSettings.vue:66
 #: src/views/preference/BasicSettings.vue:66
 msgid ""
 msgid ""
@@ -2688,7 +2706,7 @@ msgid ""
 "hyphens, dashes, colons, and dots."
 "hyphens, dashes, colons, and dots."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:106
+#: src/views/preference/components/TOTP.vue:88
 msgid ""
 msgid ""
 "The recovery code is only displayed once, please save it in a safe place."
 "The recovery code is only displayed once, please save it in a safe place."
 msgstr ""
 msgstr ""
@@ -2764,9 +2782,10 @@ msgid "This value is already taken"
 msgstr ""
 msgstr ""
 
 
 #: src/views/environment/BatchUpgrader.vue:182
 #: src/views/environment/BatchUpgrader.vue:182
+#, fuzzy
 msgid ""
 msgid ""
 "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
-msgstr ""
+msgstr "Dupliqué avec succès"
 
 
 #: src/views/preference/AuthSettings.vue:96
 #: src/views/preference/AuthSettings.vue:96
 msgid "Throttle"
 msgid "Throttle"
@@ -2782,7 +2801,7 @@ msgstr ""
 msgid "Title"
 msgid "Title"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:87
+#: src/views/preference/components/TOTP.vue:71
 msgid ""
 msgid ""
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "on your mobile phone."
 "on your mobile phone."
@@ -2824,11 +2843,11 @@ msgid_plural "Total %{total} items"
 msgstr[0] ""
 msgstr[0] ""
 msgstr[1] ""
 msgstr[1] ""
 
 
-#: src/views/preference/components/TOTP.vue:85
+#: src/views/preference/components/TOTP.vue:69
 msgid "TOTP"
 msgid "TOTP"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:86
+#: src/views/preference/components/TOTP.vue:70
 msgid ""
 msgid ""
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "password algorithm."
 "password algorithm."
@@ -2868,7 +2887,7 @@ msgstr "Mis à jour le"
 msgid "Updated successfully"
 msgid "Updated successfully"
 msgstr "Mis à jour avec succés"
 msgstr "Mis à jour avec succés"
 
 
-#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
+#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 msgid "Upgrade"
 msgid "Upgrade"
 msgstr "Mettre à niveau"
 msgstr "Mettre à niveau"
@@ -2890,7 +2909,7 @@ msgstr "Mise à jour de Nginx UI, veuillez patienter..."
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:183
+#: src/views/dashboard/ServerAnalytic.vue:179
 msgid "Uptime:"
 msgid "Uptime:"
 msgstr "Disponibilité :"
 msgstr "Disponibilité :"
 
 
@@ -3001,7 +3020,7 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:377
+#: src/views/dashboard/ServerAnalytic.vue:373
 msgid "Writes"
 msgid "Writes"
 msgstr "Écritures"
 msgstr "Écritures"
 
 
@@ -3016,7 +3035,7 @@ msgstr "Écriture du certificat sur le disque"
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/CertSettings.vue:69
 #: src/views/preference/CertSettings.vue:69
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
-#: src/views/site/ngx_conf/LocationEditor.vue:89
+#: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"
 msgid "Yes"
 msgstr "Oui"
 msgstr "Oui"
 
 

+ 92 - 77
app/src/language/ko_KR/app.po

@@ -72,8 +72,8 @@ msgstr "구성 추가"
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "아래에 지시문 추가"
 msgstr "아래에 지시문 추가"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:132
-#: src/views/site/ngx_conf/LocationEditor.vue:159
+#: src/views/site/ngx_conf/LocationEditor.vue:130
+#: src/views/site/ngx_conf/LocationEditor.vue:157
 msgid "Add Location"
 msgid "Add Location"
 msgstr "위치 추가"
 msgstr "위치 추가"
 
 
@@ -189,7 +189,7 @@ msgstr "이 지시문을 정말로 제거하시겠습니까?"
 msgid "Are you sure you want to remove this item?"
 msgid "Are you sure you want to remove this item?"
 msgstr "이 항목을 제거하시겠습니까?"
 msgstr "이 항목을 제거하시겠습니까?"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:88
+#: src/views/site/ngx_conf/LocationEditor.vue:86
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "이 위치를 제거하시겠습니까?"
 msgstr "이 위치를 제거하시겠습니까?"
 
 
@@ -317,10 +317,6 @@ msgstr "CA 디렉토리"
 msgid "CADir"
 msgid "CADir"
 msgstr "CA 디렉토리"
 msgstr "CA 디렉토리"
 
 
-#: src/views/preference/components/TOTP.vue:145
-msgid "Can't scan? Use text key binding"
-msgstr ""
-
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
@@ -374,7 +370,7 @@ msgid "Certificate Renewal Interval"
 msgstr "인증서 갱신 간격"
 msgstr "인증서 갱신 간격"
 
 
 #: src/views/certificate/CertificateEditor.vue:128
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:32
+#: src/views/site/cert/Cert.vue:33
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgid_plural "Certificates Status"
 msgstr[0] "인증서 상태"
 msgstr[0] "인증서 상태"
@@ -398,7 +394,7 @@ msgstr "인증 방법"
 msgid "Change Certificate"
 msgid "Change Certificate"
 msgstr "인증서 변경"
 msgstr "인증서 변경"
 
 
-#: src/views/site/cert/Cert.vue:51
+#: src/views/site/cert/Cert.vue:52
 #, fuzzy
 #, fuzzy
 msgid "Changed Certificate"
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
@@ -457,13 +453,17 @@ msgstr "클리어"
 msgid "Cleared successfully"
 msgid "Cleared successfully"
 msgstr "성공적으로 제거됨"
 msgstr "성공적으로 제거됨"
 
 
+#: src/views/preference/components/TOTP.vue:125
+msgid "Click to copy"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgid "Command"
 msgstr "명령어"
 msgstr "명령어"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
-#: src/views/site/ngx_conf/LocationEditor.vue:105
-#: src/views/site/ngx_conf/LocationEditor.vue:136
+#: src/views/site/ngx_conf/LocationEditor.vue:103
+#: src/views/site/ngx_conf/LocationEditor.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 msgid "Comments"
 msgid "Comments"
 msgstr "댓글"
 msgstr "댓글"
@@ -497,8 +497,8 @@ msgid "Connection lost, please refresh the page."
 msgstr "연결이 끊어졌습니다. 페이지를 새로 고침하세요."
 msgstr "연결이 끊어졌습니다. 페이지를 새로 고침하세요."
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
-#: src/views/site/ngx_conf/LocationEditor.vue:117
-#: src/views/site/ngx_conf/LocationEditor.vue:145
+#: src/views/site/ngx_conf/LocationEditor.vue:115
+#: src/views/site/ngx_conf/LocationEditor.vue:143
 msgid "Content"
 msgid "Content"
 msgstr "내용"
 msgstr "내용"
 
 
@@ -515,11 +515,11 @@ msgstr ""
 msgid "Core Upgrade"
 msgid "Core Upgrade"
 msgstr "코어 업그레이드"
 msgstr "코어 업그레이드"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:305
+#: src/views/dashboard/ServerAnalytic.vue:301
 msgid "CPU Status"
 msgid "CPU Status"
 msgstr "CPU 상태"
 msgstr "CPU 상태"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:199
+#: src/views/dashboard/ServerAnalytic.vue:195
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU:"
 msgstr "CPU:"
 
 
@@ -564,11 +564,11 @@ msgstr "인증 정보"
 msgid "Credentials"
 msgid "Credentials"
 msgstr "인증 정보들"
 msgstr "인증 정보들"
 
 
-#: src/views/preference/components/TOTP.vue:93
+#: src/views/preference/components/TOTP.vue:75
 msgid "Current account is enabled TOTP."
 msgid "Current account is enabled TOTP."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:90
+#: src/views/preference/components/TOTP.vue:73
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr ""
 msgstr ""
 
 
@@ -736,7 +736,7 @@ msgstr "비활성화됨"
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "성공적으로 비활성화됨"
 msgstr "성공적으로 비활성화됨"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:370
+#: src/views/dashboard/ServerAnalytic.vue:366
 msgid "Disk IO"
 msgid "Disk IO"
 msgstr "디스크 IO"
 msgstr "디스크 IO"
 
 
@@ -904,7 +904,7 @@ msgstr "%{node_name}에서 %{conf_name} 활성화 실패"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr "%{node_name}에서 %{conf_name} 성공적으로 활성화됨"
 msgstr "%{node_name}에서 %{conf_name} 성공적으로 활성화됨"
 
 
-#: src/views/preference/components/TOTP.vue:52
+#: src/views/preference/components/TOTP.vue:38
 #, fuzzy
 #, fuzzy
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr "성공적으로 활성화"
 msgstr "성공적으로 활성화"
@@ -945,7 +945,7 @@ msgstr "성공적으로 활성화"
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "TLS 활성화"
 msgstr "TLS 활성화"
 
 
-#: src/views/preference/components/TOTP.vue:119
+#: src/views/preference/components/TOTP.vue:101
 #, fuzzy
 #, fuzzy
 msgid "Enable TOTP"
 msgid "Enable TOTP"
 msgstr "TLS 활성화"
 msgstr "TLS 활성화"
@@ -981,7 +981,7 @@ msgid "Environment variables cleaned"
 msgstr "환경 변수 설정"
 msgstr "환경 변수 설정"
 
 
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
-#: src/views/environment/Environment.vue:33
+#: src/views/environment/Environment.vue:43
 msgid "Environments"
 msgid "Environments"
 msgstr "환경"
 msgstr "환경"
 
 
@@ -1045,8 +1045,9 @@ msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/self_check.ts:3
 #: src/constants/errors/self_check.ts:3
+#, fuzzy
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
-msgstr ""
+msgstr "%{msg} 활성화 실패"
 
 
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/stream/StreamEdit.vue:122
 #: src/views/stream/StreamEdit.vue:122
@@ -1166,7 +1167,7 @@ msgid ""
 "ban threshold minutes, the ip will be banned for a period of time."
 "ban threshold minutes, the ip will be banned for a period of time."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:105
+#: src/views/preference/components/TOTP.vue:87
 msgid ""
 msgid ""
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "2FA."
 "2FA."
@@ -1204,12 +1205,12 @@ msgstr "초기 코어 업그레이더 오류"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "코어 업그레이더 초기화"
 msgstr "코어 업그레이더 초기화"
 
 
-#: src/views/preference/components/TOTP.vue:152
+#: src/views/preference/components/TOTP.vue:134
 msgid "Input the code from the app:"
 msgid "Input the code from the app:"
 msgstr ""
 msgstr ""
 
 
 #: src/components/TwoFA/Authorization.vue:82
 #: src/components/TwoFA/Authorization.vue:82
-#: src/views/preference/components/TOTP.vue:165
+#: src/views/preference/components/TOTP.vue:148
 msgid "Input the recovery code:"
 msgid "Input the recovery code:"
 msgstr ""
 msgstr ""
 
 
@@ -1238,8 +1239,9 @@ msgid "Invalid filename"
 msgstr "Invalid E-mail!"
 msgstr "Invalid E-mail!"
 
 
 #: src/views/config/components/Mkdir.vue:57
 #: src/views/config/components/Mkdir.vue:57
+#, fuzzy
 msgid "Invalid folder name"
 msgid "Invalid folder name"
-msgstr ""
+msgstr "Invalid E-mail!"
 
 
 #: src/constants/errors/user.ts:4
 #: src/constants/errors/user.ts:4
 #, fuzzy
 #, fuzzy
@@ -1251,8 +1253,9 @@ msgid "Invalid passcode or recovery code"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/user.ts:5
 #: src/constants/errors/user.ts:5
+#, fuzzy
 msgid "Invalid recovery code"
 msgid "Invalid recovery code"
-msgstr ""
+msgstr "유효함"
 
 
 #: src/views/preference/AuthSettings.vue:14
 #: src/views/preference/AuthSettings.vue:14
 msgid "IP"
 msgid "IP"
@@ -1337,16 +1340,16 @@ msgstr "링크 시작"
 msgid "List"
 msgid "List"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:187
+#: src/views/dashboard/ServerAnalytic.vue:183
 #, fuzzy
 #, fuzzy
 msgid "Load Average:"
 msgid "Load Average:"
 msgstr "부하 평균:"
 msgstr "부하 평균:"
 
 
-#: src/views/environment/Environment.vue:39
+#: src/views/environment/Environment.vue:49
 msgid "Load from settings"
 msgid "Load from settings"
 msgstr ""
 msgstr ""
 
 
-#: src/views/environment/Environment.vue:13
+#: src/views/environment/Environment.vue:17
 #, fuzzy
 #, fuzzy
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "성공적으로 저장됨"
 msgstr "성공적으로 저장됨"
@@ -1357,7 +1360,7 @@ msgstr "성공적으로 저장됨"
 msgid "Local"
 msgid "Local"
 msgstr "지역"
 msgstr "지역"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:69
+#: src/views/site/ngx_conf/LocationEditor.vue:68
 msgid "Location"
 msgid "Location"
 msgstr "위치"
 msgstr "위치"
 
 
@@ -1434,15 +1437,16 @@ msgid "Managed Certificate"
 msgstr "인증서 유효"
 msgstr "인증서 유효"
 
 
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
+#, fuzzy
 msgid "Max Attempts"
 msgid "Max Attempts"
-msgstr ""
+msgstr "시도 횟수"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:226
-#: src/views/dashboard/ServerAnalytic.vue:227
+#: src/views/dashboard/ServerAnalytic.vue:222
+#: src/views/dashboard/ServerAnalytic.vue:223
 msgid "Memory"
 msgid "Memory"
 msgstr "메모리"
 msgstr "메모리"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:216
+#: src/views/dashboard/ServerAnalytic.vue:212
 msgid "Memory and Storage"
 msgid "Memory and Storage"
 msgstr "메모리 및 저장소"
 msgstr "메모리 및 저장소"
 
 
@@ -1501,19 +1505,19 @@ msgstr "단일 지시문"
 msgid "Name"
 msgid "Name"
 msgstr "이름"
 msgstr "이름"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:331
+#: src/views/dashboard/ServerAnalytic.vue:327
 msgid "Network"
 msgid "Network"
 msgstr "네트워크"
 msgstr "네트워크"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:273
+#: src/views/dashboard/ServerAnalytic.vue:269
 msgid "Network Statistics"
 msgid "Network Statistics"
 msgstr "네트워크 통계"
 msgstr "네트워크 통계"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:280
+#: src/views/dashboard/ServerAnalytic.vue:276
 msgid "Network Total Receive"
 msgid "Network Total Receive"
 msgstr "네트워크 총 수신"
 msgstr "네트워크 총 수신"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:286
+#: src/views/dashboard/ServerAnalytic.vue:282
 msgid "Network Total Send"
 msgid "Network Total Send"
 msgstr "네트워크 총 송신"
 msgstr "네트워크 총 송신"
 
 
@@ -1597,8 +1601,9 @@ msgid "Nginx Log"
 msgstr "Nginx 로그"
 msgstr "Nginx 로그"
 
 
 #: src/views/preference/NginxSettings.vue:18
 #: src/views/preference/NginxSettings.vue:18
+#, fuzzy
 msgid "Nginx Log Directory Whitelist"
 msgid "Nginx Log Directory Whitelist"
-msgstr ""
+msgstr "Nginx 구성 오류름"
 
 
 #: src/views/preference/NginxSettings.vue:27
 #: src/views/preference/NginxSettings.vue:27
 #, fuzzy
 #, fuzzy
@@ -1606,8 +1611,9 @@ msgid "Nginx PID Path"
 msgstr "Nginx 오류 로그 경로"
 msgstr "Nginx 오류 로그 경로"
 
 
 #: src/views/preference/NginxSettings.vue:30
 #: src/views/preference/NginxSettings.vue:30
+#, fuzzy
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
-msgstr ""
+msgstr "터미널 시작 명령"
 
 
 #: src/components/NginxControl/NginxControl.vue:26
 #: src/components/NginxControl/NginxControl.vue:26
 #, fuzzy
 #, fuzzy
@@ -1635,7 +1641,7 @@ msgstr "Nginx가 성공적으로 재시작됨"
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/CertSettings.vue:70
 #: src/views/preference/CertSettings.vue:70
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
-#: src/views/site/ngx_conf/LocationEditor.vue:90
+#: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/stream/StreamList.vue:163
 #: src/views/stream/StreamList.vue:163
 msgid "No"
 msgid "No"
@@ -1751,6 +1757,10 @@ msgstr "오픈AI"
 msgid "Or"
 msgid "Or"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/components/TOTP.vue:127
+msgid "Or enter the secret: %{secret}"
+msgstr ""
+
 #: src/views/config/components/Rename.vue:68
 #: src/views/config/components/Rename.vue:68
 msgid "Original name"
 msgid "Original name"
 msgstr ""
 msgstr ""
@@ -1760,7 +1770,7 @@ msgstr ""
 msgid "OS"
 msgid "OS"
 msgstr "OS"
 msgstr "OS"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:193
+#: src/views/dashboard/ServerAnalytic.vue:189
 msgid "OS:"
 msgid "OS:"
 msgstr "OS:"
 msgstr "OS:"
 
 
@@ -1811,8 +1821,8 @@ msgid "Password length cannot exceed 20 characters"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/ConfigEditor.vue:263
 #: src/views/config/ConfigEditor.vue:263
-#: src/views/site/ngx_conf/LocationEditor.vue:111
-#: src/views/site/ngx_conf/LocationEditor.vue:139
+#: src/views/site/ngx_conf/LocationEditor.vue:109
+#: src/views/site/ngx_conf/LocationEditor.vue:137
 msgid "Path"
 msgid "Path"
 msgstr "경로"
 msgstr "경로"
 
 
@@ -1909,7 +1919,7 @@ msgid ""
 "Please note that the unit of time configurations below are all in seconds."
 "Please note that the unit of time configurations below are all in seconds."
 msgstr "아래의 시간 설정 단위는 모두 초 단위임을 유의해주세요."
 msgstr "아래의 시간 설정 단위는 모두 초 단위임을 유의해주세요."
 
 
-#: src/views/environment/Environment.vue:48
+#: src/views/environment/Environment.vue:58
 #, fuzzy
 #, fuzzy
 msgid "Please select at least one node to upgrade"
 msgid "Please select at least one node to upgrade"
 msgstr "적어도 하나의 노드를 선택해주세요!"
 msgstr "적어도 하나의 노드를 선택해주세요!"
@@ -1970,11 +1980,11 @@ msgid "Public Security Number"
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:387
+#: src/views/dashboard/ServerAnalytic.vue:383
 msgid "Reads"
 msgid "Reads"
 msgstr "읽기"
 msgstr "읽기"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:338
+#: src/views/dashboard/ServerAnalytic.vue:334
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Receive"
 msgid "Receive"
 msgstr "수신"
 msgstr "수신"
@@ -1994,15 +2004,15 @@ msgid "Recovered Successfully"
 msgstr "성공적으로 제거됨"
 msgstr "성공적으로 제거됨"
 
 
 #: src/components/TwoFA/Authorization.vue:89
 #: src/components/TwoFA/Authorization.vue:89
-#: src/views/preference/components/TOTP.vue:172
+#: src/views/preference/components/TOTP.vue:155
 msgid "Recovery"
 msgid "Recovery"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:98
+#: src/views/preference/components/TOTP.vue:80
 msgid "Recovery Code"
 msgid "Recovery Code"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:107
+#: src/views/preference/components/TOTP.vue:89
 msgid "Recovery Code:"
 msgid "Recovery Code:"
 msgstr ""
 msgstr ""
 
 
@@ -2192,7 +2202,7 @@ msgstr "잘못된 매개변수로 요청됨"
 msgid "Reset"
 msgid "Reset"
 msgstr "재설정"
 msgstr "재설정"
 
 
-#: src/views/preference/components/TOTP.vue:127
+#: src/views/preference/components/TOTP.vue:109
 #, fuzzy
 #, fuzzy
 msgid "Reset 2FA"
 msgid "Reset 2FA"
 msgstr "재설정"
 msgstr "재설정"
@@ -2286,7 +2296,7 @@ msgstr "성공적으로 저장됨"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "성공적으로 저장됨"
 msgstr "성공적으로 저장됨"
 
 
-#: src/views/preference/components/TOTP.vue:88
+#: src/views/preference/components/TOTP.vue:72
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
 
 
@@ -2294,7 +2304,7 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:144
+#: src/views/preference/components/TOTP.vue:124
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
 
 
@@ -2306,12 +2316,12 @@ msgstr "선택"
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:348
+#: src/views/dashboard/ServerAnalytic.vue:344
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Send"
 msgid "Send"
 msgstr "보내기"
 msgstr "보내기"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:179
+#: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgid "Server Info"
 msgstr "서버 정보"
 msgstr "서버 정보"
 
 
@@ -2352,14 +2362,14 @@ msgstr "HTTP01 공급자 설정"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
@@ -2403,12 +2413,14 @@ msgid "Sites List"
 msgstr "사이트 목록"
 msgstr "사이트 목록"
 
 
 #: src/constants/errors/self_check.ts:10
 #: src/constants/errors/self_check.ts:10
+#, fuzzy
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
-msgstr ""
+msgstr "디렉토리"
 
 
 #: src/constants/errors/self_check.ts:11
 #: src/constants/errors/self_check.ts:11
+#, fuzzy
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
-msgstr ""
+msgstr "디렉토리"
 
 
 #: src/views/certificate/CertificateEditor.vue:211
 #: src/views/certificate/CertificateEditor.vue:211
 #, fuzzy
 #, fuzzy
@@ -2452,8 +2464,8 @@ msgstr "상태"
 msgid "Stopped"
 msgid "Stopped"
 msgstr "정지됨"
 msgstr "정지됨"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:254
-#: src/views/dashboard/ServerAnalytic.vue:255
+#: src/views/dashboard/ServerAnalytic.vue:250
+#: src/views/dashboard/ServerAnalytic.vue:251
 msgid "Storage"
 msgid "Storage"
 msgstr "저장소"
 msgstr "저장소"
 
 
@@ -2463,8 +2475,9 @@ msgid "Streams Directory"
 msgstr "디렉토리"
 msgstr "디렉토리"
 
 
 #: src/constants/errors/self_check.ts:12
 #: src/constants/errors/self_check.ts:12
+#, fuzzy
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
-msgstr ""
+msgstr "디렉토리"
 
 
 #: src/constants/errors/self_check.ts:13
 #: src/constants/errors/self_check.ts:13
 #, fuzzy
 #, fuzzy
@@ -2483,8 +2496,8 @@ msgid ""
 "guide/nginx-proxy-example.html"
 "guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:240
-#: src/views/dashboard/ServerAnalytic.vue:241
+#: src/views/dashboard/ServerAnalytic.vue:236
+#: src/views/dashboard/ServerAnalytic.vue:237
 msgid "Swap"
 msgid "Swap"
 msgstr "스왑"
 msgstr "스왑"
 
 
@@ -2563,8 +2576,9 @@ msgid "Sync strategy"
 msgstr "인증서 갱신"
 msgstr "인증서 갱신"
 
 
 #: src/views/certificate/CertificateEditor.vue:204
 #: src/views/certificate/CertificateEditor.vue:204
+#, fuzzy
 msgid "Sync to"
 msgid "Sync to"
-msgstr ""
+msgstr "인증서 갱신"
 
 
 #: src/views/site/site_edit/RightSettings.vue:110
 #: src/views/site/site_edit/RightSettings.vue:110
 msgid "Synchronization"
 msgid "Synchronization"
@@ -2656,7 +2670,7 @@ msgid ""
 "hyphens, dashes, colons, and dots."
 "hyphens, dashes, colons, and dots."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:106
+#: src/views/preference/components/TOTP.vue:88
 msgid ""
 msgid ""
 "The recovery code is only displayed once, please save it in a safe place."
 "The recovery code is only displayed once, please save it in a safe place."
 msgstr ""
 msgstr ""
@@ -2732,9 +2746,10 @@ msgid "This value is already taken"
 msgstr ""
 msgstr ""
 
 
 #: src/views/environment/BatchUpgrader.vue:182
 #: src/views/environment/BatchUpgrader.vue:182
+#, fuzzy
 msgid ""
 msgid ""
 "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
-msgstr ""
+msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 
 
 #: src/views/preference/AuthSettings.vue:96
 #: src/views/preference/AuthSettings.vue:96
 msgid "Throttle"
 msgid "Throttle"
@@ -2750,7 +2765,7 @@ msgstr "팁"
 msgid "Title"
 msgid "Title"
 msgstr "제목"
 msgstr "제목"
 
 
-#: src/views/preference/components/TOTP.vue:87
+#: src/views/preference/components/TOTP.vue:71
 msgid ""
 msgid ""
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "on your mobile phone."
 "on your mobile phone."
@@ -2791,11 +2806,11 @@ msgid_plural "Total %{total} items"
 msgstr[0] ""
 msgstr[0] ""
 msgstr[1] ""
 msgstr[1] ""
 
 
-#: src/views/preference/components/TOTP.vue:85
+#: src/views/preference/components/TOTP.vue:69
 msgid "TOTP"
 msgid "TOTP"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:86
+#: src/views/preference/components/TOTP.vue:70
 msgid ""
 msgid ""
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "password algorithm."
 "password algorithm."
@@ -2836,7 +2851,7 @@ msgstr "업데이트됨"
 msgid "Updated successfully"
 msgid "Updated successfully"
 msgstr "성공적으로 저장되었습니다"
 msgstr "성공적으로 저장되었습니다"
 
 
-#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
+#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 msgid "Upgrade"
 msgid "Upgrade"
 msgstr "업그레이드"
 msgstr "업그레이드"
@@ -2859,7 +2874,7 @@ msgstr "Nginx UI를 업그레이드하는 중입니다. 잠시 기다려주세
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr "업스트림 이름"
 msgstr "업스트림 이름"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:183
+#: src/views/dashboard/ServerAnalytic.vue:179
 msgid "Uptime:"
 msgid "Uptime:"
 msgstr "가동 시간:"
 msgstr "가동 시간:"
 
 
@@ -2973,7 +2988,7 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:377
+#: src/views/dashboard/ServerAnalytic.vue:373
 msgid "Writes"
 msgid "Writes"
 msgstr "쓰기"
 msgstr "쓰기"
 
 
@@ -2988,7 +3003,7 @@ msgstr "인증서를 디스크에 쓰기"
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/CertSettings.vue:69
 #: src/views/preference/CertSettings.vue:69
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
-#: src/views/site/ngx_conf/LocationEditor.vue:89
+#: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"
 msgid "Yes"
 msgstr "예"
 msgstr "예"
 
 

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

@@ -64,8 +64,8 @@ msgstr ""
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:132
-#: src/views/site/ngx_conf/LocationEditor.vue:159
+#: src/views/site/ngx_conf/LocationEditor.vue:130
+#: src/views/site/ngx_conf/LocationEditor.vue:157
 msgid "Add Location"
 msgid "Add Location"
 msgstr ""
 msgstr ""
 
 
@@ -178,7 +178,7 @@ msgstr ""
 msgid "Are you sure you want to remove this item?"
 msgid "Are you sure you want to remove this item?"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:88
+#: src/views/site/ngx_conf/LocationEditor.vue:86
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr ""
 msgstr ""
 
 
@@ -306,10 +306,6 @@ msgstr ""
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:145
-msgid "Can't scan? Use text key binding"
-msgstr ""
-
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
@@ -359,7 +355,7 @@ msgid "Certificate Renewal Interval"
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/CertificateEditor.vue:128
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:32
+#: src/views/site/cert/Cert.vue:33
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgid_plural "Certificates Status"
 msgstr[0] ""
 msgstr[0] ""
@@ -383,7 +379,7 @@ msgstr ""
 msgid "Change Certificate"
 msgid "Change Certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/cert/Cert.vue:51
+#: src/views/site/cert/Cert.vue:52
 msgid "Changed Certificate"
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
 msgstr[0] ""
 msgstr[0] ""
@@ -437,13 +433,17 @@ msgstr ""
 msgid "Cleared successfully"
 msgid "Cleared successfully"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/components/TOTP.vue:125
+msgid "Click to copy"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgid "Command"
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
-#: src/views/site/ngx_conf/LocationEditor.vue:105
-#: src/views/site/ngx_conf/LocationEditor.vue:136
+#: src/views/site/ngx_conf/LocationEditor.vue:103
+#: src/views/site/ngx_conf/LocationEditor.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 msgid "Comments"
 msgid "Comments"
 msgstr ""
 msgstr ""
@@ -477,8 +477,8 @@ msgid "Connection lost, please refresh the page."
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
-#: src/views/site/ngx_conf/LocationEditor.vue:117
-#: src/views/site/ngx_conf/LocationEditor.vue:145
+#: src/views/site/ngx_conf/LocationEditor.vue:115
+#: src/views/site/ngx_conf/LocationEditor.vue:143
 msgid "Content"
 msgid "Content"
 msgstr ""
 msgstr ""
 
 
@@ -495,11 +495,11 @@ msgstr ""
 msgid "Core Upgrade"
 msgid "Core Upgrade"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:305
+#: src/views/dashboard/ServerAnalytic.vue:301
 msgid "CPU Status"
 msgid "CPU Status"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:199
+#: src/views/dashboard/ServerAnalytic.vue:195
 msgid "CPU:"
 msgid "CPU:"
 msgstr ""
 msgstr ""
 
 
@@ -543,11 +543,11 @@ msgstr ""
 msgid "Credentials"
 msgid "Credentials"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:93
+#: src/views/preference/components/TOTP.vue:75
 msgid "Current account is enabled TOTP."
 msgid "Current account is enabled TOTP."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:90
+#: src/views/preference/components/TOTP.vue:73
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr ""
 msgstr ""
 
 
@@ -711,7 +711,7 @@ msgstr ""
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:370
+#: src/views/dashboard/ServerAnalytic.vue:366
 msgid "Disk IO"
 msgid "Disk IO"
 msgstr ""
 msgstr ""
 
 
@@ -875,7 +875,7 @@ msgstr ""
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:52
+#: src/views/preference/components/TOTP.vue:38
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr ""
 msgstr ""
 
 
@@ -911,7 +911,7 @@ msgstr ""
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:119
+#: src/views/preference/components/TOTP.vue:101
 msgid "Enable TOTP"
 msgid "Enable TOTP"
 msgstr ""
 msgstr ""
 
 
@@ -948,7 +948,7 @@ msgstr ""
 
 
 #: src/routes/index.ts:234
 #: src/routes/index.ts:234
 #: src/views/dashboard/Environments.vue:83
 #: src/views/dashboard/Environments.vue:83
-#: src/views/environment/Environment.vue:33
+#: src/views/environment/Environment.vue:43
 msgid "Environments"
 msgid "Environments"
 msgstr ""
 msgstr ""
 
 
@@ -1126,7 +1126,7 @@ msgstr ""
 msgid "If the number of login failed attempts from a ip reach the max attempts in ban threshold minutes, the ip will be banned for a period of time."
 msgid "If the number of login failed attempts from a ip reach the max attempts in ban threshold minutes, the ip will be banned for a period of time."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:105
+#: src/views/preference/components/TOTP.vue:87
 msgid "If you lose your mobile phone, you can use the recovery code to reset your 2FA."
 msgid "If you lose your mobile phone, you can use the recovery code to reset your 2FA."
 msgstr ""
 msgstr ""
 
 
@@ -1161,12 +1161,12 @@ msgstr ""
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:152
+#: src/views/preference/components/TOTP.vue:134
 msgid "Input the code from the app:"
 msgid "Input the code from the app:"
 msgstr ""
 msgstr ""
 
 
 #: src/components/TwoFA/Authorization.vue:82
 #: src/components/TwoFA/Authorization.vue:82
-#: src/views/preference/components/TOTP.vue:165
+#: src/views/preference/components/TOTP.vue:148
 msgid "Input the recovery code:"
 msgid "Input the recovery code:"
 msgstr ""
 msgstr ""
 
 
@@ -1283,15 +1283,15 @@ msgstr ""
 msgid "List"
 msgid "List"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:187
+#: src/views/dashboard/ServerAnalytic.vue:183
 msgid "Load Average:"
 msgid "Load Average:"
 msgstr ""
 msgstr ""
 
 
-#: src/views/environment/Environment.vue:39
+#: src/views/environment/Environment.vue:49
 msgid "Load from settings"
 msgid "Load from settings"
 msgstr ""
 msgstr ""
 
 
-#: src/views/environment/Environment.vue:13
+#: src/views/environment/Environment.vue:17
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr ""
 msgstr ""
 
 
@@ -1300,7 +1300,7 @@ msgstr ""
 msgid "Local"
 msgid "Local"
 msgstr ""
 msgstr ""
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:69
+#: src/views/site/ngx_conf/LocationEditor.vue:68
 msgid "Location"
 msgid "Location"
 msgstr ""
 msgstr ""
 
 
@@ -1368,12 +1368,12 @@ msgstr ""
 msgid "Max Attempts"
 msgid "Max Attempts"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:226
-#: src/views/dashboard/ServerAnalytic.vue:227
+#: src/views/dashboard/ServerAnalytic.vue:222
+#: src/views/dashboard/ServerAnalytic.vue:223
 msgid "Memory"
 msgid "Memory"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:216
+#: src/views/dashboard/ServerAnalytic.vue:212
 msgid "Memory and Storage"
 msgid "Memory and Storage"
 msgstr ""
 msgstr ""
 
 
@@ -1430,19 +1430,19 @@ msgstr ""
 msgid "Name"
 msgid "Name"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:331
+#: src/views/dashboard/ServerAnalytic.vue:327
 msgid "Network"
 msgid "Network"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:273
+#: src/views/dashboard/ServerAnalytic.vue:269
 msgid "Network Statistics"
 msgid "Network Statistics"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:280
+#: src/views/dashboard/ServerAnalytic.vue:276
 msgid "Network Total Receive"
 msgid "Network Total Receive"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:286
+#: src/views/dashboard/ServerAnalytic.vue:282
 msgid "Network Total Send"
 msgid "Network Total Send"
 msgstr ""
 msgstr ""
 
 
@@ -1557,7 +1557,7 @@ msgstr ""
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/CertSettings.vue:70
 #: src/views/preference/CertSettings.vue:70
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
-#: src/views/site/ngx_conf/LocationEditor.vue:90
+#: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/stream/StreamList.vue:163
 #: src/views/stream/StreamList.vue:163
 msgid "No"
 msgid "No"
@@ -1667,6 +1667,10 @@ msgstr ""
 msgid "Or"
 msgid "Or"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/components/TOTP.vue:127
+msgid "Or enter the secret: %{secret}"
+msgstr ""
+
 #: src/views/config/components/Rename.vue:68
 #: src/views/config/components/Rename.vue:68
 msgid "Original name"
 msgid "Original name"
 msgstr ""
 msgstr ""
@@ -1675,7 +1679,7 @@ msgstr ""
 msgid "OS"
 msgid "OS"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:193
+#: src/views/dashboard/ServerAnalytic.vue:189
 msgid "OS:"
 msgid "OS:"
 msgstr ""
 msgstr ""
 
 
@@ -1723,8 +1727,8 @@ msgid "Password length cannot exceed 20 characters"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/ConfigEditor.vue:263
 #: src/views/config/ConfigEditor.vue:263
-#: src/views/site/ngx_conf/LocationEditor.vue:111
-#: src/views/site/ngx_conf/LocationEditor.vue:139
+#: src/views/site/ngx_conf/LocationEditor.vue:109
+#: src/views/site/ngx_conf/LocationEditor.vue:137
 msgid "Path"
 msgid "Path"
 msgstr ""
 msgstr ""
 
 
@@ -1808,7 +1812,7 @@ msgstr ""
 msgid "Please note that the unit of time configurations below are all in seconds."
 msgid "Please note that the unit of time configurations below are all in seconds."
 msgstr ""
 msgstr ""
 
 
-#: src/views/environment/Environment.vue:48
+#: src/views/environment/Environment.vue:58
 msgid "Please select at least one node to upgrade"
 msgid "Please select at least one node to upgrade"
 msgstr ""
 msgstr ""
 
 
@@ -1867,11 +1871,11 @@ msgid "Public Security Number"
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:387
+#: src/views/dashboard/ServerAnalytic.vue:383
 msgid "Reads"
 msgid "Reads"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:338
+#: src/views/dashboard/ServerAnalytic.vue:334
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Receive"
 msgid "Receive"
 msgstr ""
 msgstr ""
@@ -1890,15 +1894,15 @@ msgid "Recovered Successfully"
 msgstr ""
 msgstr ""
 
 
 #: src/components/TwoFA/Authorization.vue:89
 #: src/components/TwoFA/Authorization.vue:89
-#: src/views/preference/components/TOTP.vue:172
+#: src/views/preference/components/TOTP.vue:155
 msgid "Recovery"
 msgid "Recovery"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:98
+#: src/views/preference/components/TOTP.vue:80
 msgid "Recovery Code"
 msgid "Recovery Code"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:107
+#: src/views/preference/components/TOTP.vue:89
 msgid "Recovery Code:"
 msgid "Recovery Code:"
 msgstr ""
 msgstr ""
 
 
@@ -2059,7 +2063,7 @@ msgstr ""
 msgid "Reset"
 msgid "Reset"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:127
+#: src/views/preference/components/TOTP.vue:109
 msgid "Reset 2FA"
 msgid "Reset 2FA"
 msgstr ""
 msgstr ""
 
 
@@ -2147,7 +2151,7 @@ msgstr ""
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:88
+#: src/views/preference/components/TOTP.vue:72
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
 
 
@@ -2155,7 +2159,7 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:144
+#: src/views/preference/components/TOTP.vue:124
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
 
 
@@ -2168,12 +2172,12 @@ msgstr ""
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:348
+#: src/views/dashboard/ServerAnalytic.vue:344
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Send"
 msgid "Send"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:179
+#: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgid "Server Info"
 msgstr ""
 msgstr ""
 
 
@@ -2301,8 +2305,8 @@ msgstr ""
 msgid "Stopped"
 msgid "Stopped"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:254
-#: src/views/dashboard/ServerAnalytic.vue:255
+#: src/views/dashboard/ServerAnalytic.vue:250
+#: src/views/dashboard/ServerAnalytic.vue:251
 msgid "Storage"
 msgid "Storage"
 msgstr ""
 msgstr ""
 
 
@@ -2327,8 +2331,8 @@ msgstr ""
 msgid "Support communication with the backend through the WebSocket protocol. If your Nginx UI is being used via an Nginx reverse proxy, please refer to this link to write the corresponding configuration file: https://nginxui.com/guide/nginx-proxy-example.html"
 msgid "Support communication with the backend through the WebSocket protocol. If your Nginx UI is being used via an Nginx reverse proxy, please refer to this link to write the corresponding configuration file: https://nginxui.com/guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:240
-#: src/views/dashboard/ServerAnalytic.vue:241
+#: src/views/dashboard/ServerAnalytic.vue:236
+#: src/views/dashboard/ServerAnalytic.vue:237
 msgid "Swap"
 msgid "Swap"
 msgstr ""
 msgstr ""
 
 
@@ -2470,7 +2474,7 @@ msgstr ""
 msgid "The Public Security Number should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
 msgid "The Public Security Number should only contain letters, unicode, numbers, hyphens, dashes, colons, and dots."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:106
+#: src/views/preference/components/TOTP.vue:88
 msgid "The recovery code is only displayed once, please save it in a safe place."
 msgid "The recovery code is only displayed once, please save it in a safe place."
 msgstr ""
 msgstr ""
 
 
@@ -2549,7 +2553,7 @@ msgstr ""
 msgid "Title"
 msgid "Title"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:87
+#: src/views/preference/components/TOTP.vue:71
 msgid "To enable it, you need to install the Google or Microsoft Authenticator app on your mobile phone."
 msgid "To enable it, you need to install the Google or Microsoft Authenticator app on your mobile phone."
 msgstr ""
 msgstr ""
 
 
@@ -2575,11 +2579,11 @@ msgid_plural "Total %{total} items"
 msgstr[0] ""
 msgstr[0] ""
 msgstr[1] ""
 msgstr[1] ""
 
 
-#: src/views/preference/components/TOTP.vue:85
+#: src/views/preference/components/TOTP.vue:69
 msgid "TOTP"
 msgid "TOTP"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:86
+#: src/views/preference/components/TOTP.vue:70
 msgid "TOTP is a two-factor authentication method that uses a time-based one-time password algorithm."
 msgid "TOTP is a two-factor authentication method that uses a time-based one-time password algorithm."
 msgstr ""
 msgstr ""
 
 
@@ -2619,7 +2623,7 @@ msgid "Updated successfully"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:297
 #: src/routes/index.ts:297
-#: src/views/environment/Environment.vue:56
+#: src/views/environment/Environment.vue:66
 #: src/views/system/Upgrade.vue:143
 #: src/views/system/Upgrade.vue:143
 #: src/views/system/Upgrade.vue:226
 #: src/views/system/Upgrade.vue:226
 msgid "Upgrade"
 msgid "Upgrade"
@@ -2642,7 +2646,7 @@ msgstr ""
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:183
+#: src/views/dashboard/ServerAnalytic.vue:179
 msgid "Uptime:"
 msgid "Uptime:"
 msgstr ""
 msgstr ""
 
 
@@ -2739,7 +2743,7 @@ msgid "When you enable/disable, delete, or save this site, the nodes set in the
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:377
+#: src/views/dashboard/ServerAnalytic.vue:373
 msgid "Writes"
 msgid "Writes"
 msgstr ""
 msgstr ""
 
 
@@ -2754,7 +2758,7 @@ msgstr ""
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/CertSettings.vue:69
 #: src/views/preference/CertSettings.vue:69
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
-#: src/views/site/ngx_conf/LocationEditor.vue:89
+#: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"
 msgid "Yes"
 msgstr ""
 msgstr ""
 
 

+ 100 - 86
app/src/language/ru_RU/app.po

@@ -73,8 +73,8 @@ msgstr "Добавить конфигурацию"
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "Добавить директиву ниже"
 msgstr "Добавить директиву ниже"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:132
-#: src/views/site/ngx_conf/LocationEditor.vue:159
+#: src/views/site/ngx_conf/LocationEditor.vue:130
+#: src/views/site/ngx_conf/LocationEditor.vue:157
 msgid "Add Location"
 msgid "Add Location"
 msgstr "Добавить Location"
 msgstr "Добавить Location"
 
 
@@ -191,7 +191,7 @@ msgstr "Вы уверены, что хотите удалить эту дире
 msgid "Are you sure you want to remove this item?"
 msgid "Are you sure you want to remove this item?"
 msgstr "Вы уверены, что хотите удалить этот элемент?"
 msgstr "Вы уверены, что хотите удалить этот элемент?"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:88
+#: src/views/site/ngx_conf/LocationEditor.vue:86
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Вы уверены, что хотите удалить location?"
 msgstr "Вы уверены, что хотите удалить location?"
 
 
@@ -320,10 +320,6 @@ msgstr "Директория корневого сертификата"
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:145
-msgid "Can't scan? Use text key binding"
-msgstr ""
-
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
@@ -378,7 +374,7 @@ msgid "Certificate Renewal Interval"
 msgstr "Интервал обновления сертификата"
 msgstr "Интервал обновления сертификата"
 
 
 #: src/views/certificate/CertificateEditor.vue:128
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:32
+#: src/views/site/cert/Cert.vue:33
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgid_plural "Certificates Status"
 msgstr[0] "Статус сертификата"
 msgstr[0] "Статус сертификата"
@@ -402,7 +398,7 @@ msgstr "Метод Challenge"
 msgid "Change Certificate"
 msgid "Change Certificate"
 msgstr "Изменить сертификат"
 msgstr "Изменить сертификат"
 
 
-#: src/views/site/cert/Cert.vue:51
+#: src/views/site/cert/Cert.vue:52
 msgid "Changed Certificate"
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
 msgstr[0] "Сертификат изменен"
 msgstr[0] "Сертификат изменен"
@@ -459,13 +455,17 @@ msgstr "Очистить"
 msgid "Cleared successfully"
 msgid "Cleared successfully"
 msgstr "Очищено успешно"
 msgstr "Очищено успешно"
 
 
+#: src/views/preference/components/TOTP.vue:125
+msgid "Click to copy"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgid "Command"
 msgstr "Команда"
 msgstr "Команда"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
-#: src/views/site/ngx_conf/LocationEditor.vue:105
-#: src/views/site/ngx_conf/LocationEditor.vue:136
+#: src/views/site/ngx_conf/LocationEditor.vue:103
+#: src/views/site/ngx_conf/LocationEditor.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 msgid "Comments"
 msgid "Comments"
 msgstr "Комментарии"
 msgstr "Комментарии"
@@ -499,8 +499,8 @@ msgid "Connection lost, please refresh the page."
 msgstr "Соединение потеряно, пожалуйста, обновите страницу."
 msgstr "Соединение потеряно, пожалуйста, обновите страницу."
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
-#: src/views/site/ngx_conf/LocationEditor.vue:117
-#: src/views/site/ngx_conf/LocationEditor.vue:145
+#: src/views/site/ngx_conf/LocationEditor.vue:115
+#: src/views/site/ngx_conf/LocationEditor.vue:143
 msgid "Content"
 msgid "Content"
 msgstr "Содержание"
 msgstr "Содержание"
 
 
@@ -517,11 +517,11 @@ msgstr "Копировать"
 msgid "Core Upgrade"
 msgid "Core Upgrade"
 msgstr "Обновление ядра"
 msgstr "Обновление ядра"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:305
+#: src/views/dashboard/ServerAnalytic.vue:301
 msgid "CPU Status"
 msgid "CPU Status"
 msgstr "Нагрузка CPU"
 msgstr "Нагрузка CPU"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:199
+#: src/views/dashboard/ServerAnalytic.vue:195
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU:"
 msgstr "CPU:"
 
 
@@ -563,12 +563,12 @@ msgstr "Учетные данные"
 msgid "Credentials"
 msgid "Credentials"
 msgstr "Учетные данные"
 msgstr "Учетные данные"
 
 
-#: src/views/preference/components/TOTP.vue:93
+#: src/views/preference/components/TOTP.vue:75
 #, fuzzy
 #, fuzzy
 msgid "Current account is enabled TOTP."
 msgid "Current account is enabled TOTP."
 msgstr "Текущая учетная запись имеет включенную 2ФА."
 msgstr "Текущая учетная запись имеет включенную 2ФА."
 
 
-#: src/views/preference/components/TOTP.vue:90
+#: src/views/preference/components/TOTP.vue:73
 #, fuzzy
 #, fuzzy
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr ""
 msgstr ""
@@ -739,7 +739,7 @@ msgstr "Отключено"
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "Отключено успешно"
 msgstr "Отключено успешно"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:370
+#: src/views/dashboard/ServerAnalytic.vue:366
 msgid "Disk IO"
 msgid "Disk IO"
 msgstr "Нагрузка на Диск IO"
 msgstr "Нагрузка на Диск IO"
 
 
@@ -911,7 +911,7 @@ msgstr "Включение %{conf_name} in %{node_name} нипалучилася
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr "Включение %{conf_name} in %{node_name} успешно"
 msgstr "Включение %{conf_name} in %{node_name} успешно"
 
 
-#: src/views/preference/components/TOTP.vue:52
+#: src/views/preference/components/TOTP.vue:38
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr "Двухфакторная аутентификация успешно включена"
 msgstr "Двухфакторная аутентификация успешно включена"
 
 
@@ -951,7 +951,7 @@ msgstr "Включено успешно"
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "Включить TLS"
 msgstr "Включить TLS"
 
 
-#: src/views/preference/components/TOTP.vue:119
+#: src/views/preference/components/TOTP.vue:101
 #, fuzzy
 #, fuzzy
 msgid "Enable TOTP"
 msgid "Enable TOTP"
 msgstr "Включить TLS"
 msgstr "Включить TLS"
@@ -986,7 +986,7 @@ msgid "Environment variables cleaned"
 msgstr "Переменные окружения очищены"
 msgstr "Переменные окружения очищены"
 
 
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
-#: src/views/environment/Environment.vue:33
+#: src/views/environment/Environment.vue:43
 msgid "Environments"
 msgid "Environments"
 msgstr "Окружения"
 msgstr "Окружения"
 
 
@@ -1048,8 +1048,9 @@ msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/self_check.ts:3
 #: src/constants/errors/self_check.ts:3
+#, fuzzy
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
-msgstr ""
+msgstr "Не удалось включить %{msg}"
 
 
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/stream/StreamEdit.vue:122
 #: src/views/stream/StreamEdit.vue:122
@@ -1170,7 +1171,7 @@ msgstr ""
 "количества попыток в течение пороговых минут блокировки, IP будет "
 "количества попыток в течение пороговых минут блокировки, IP будет "
 "заблокирован на определенный период времени."
 "заблокирован на определенный период времени."
 
 
-#: src/views/preference/components/TOTP.vue:105
+#: src/views/preference/components/TOTP.vue:87
 msgid ""
 msgid ""
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "2FA."
 "2FA."
@@ -1212,12 +1213,12 @@ msgstr "Ошибка первоначального обновления ядр
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "Инициализация программы обновления ядра"
 msgstr "Инициализация программы обновления ядра"
 
 
-#: src/views/preference/components/TOTP.vue:152
+#: src/views/preference/components/TOTP.vue:134
 msgid "Input the code from the app:"
 msgid "Input the code from the app:"
 msgstr "Введите код из приложения:"
 msgstr "Введите код из приложения:"
 
 
 #: src/components/TwoFA/Authorization.vue:82
 #: src/components/TwoFA/Authorization.vue:82
-#: src/views/preference/components/TOTP.vue:165
+#: src/views/preference/components/TOTP.vue:148
 msgid "Input the recovery code:"
 msgid "Input the recovery code:"
 msgstr "Введите код восстановления:"
 msgstr "Введите код восстановления:"
 
 
@@ -1337,15 +1338,15 @@ msgstr "Начало ссылки"
 msgid "List"
 msgid "List"
 msgstr "Список"
 msgstr "Список"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:187
+#: src/views/dashboard/ServerAnalytic.vue:183
 msgid "Load Average:"
 msgid "Load Average:"
 msgstr "Средняя нагрузка:"
 msgstr "Средняя нагрузка:"
 
 
-#: src/views/environment/Environment.vue:39
+#: src/views/environment/Environment.vue:49
 msgid "Load from settings"
 msgid "Load from settings"
 msgstr "Загрузить из настроек"
 msgstr "Загрузить из настроек"
 
 
-#: src/views/environment/Environment.vue:13
+#: src/views/environment/Environment.vue:17
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Загружено успешно"
 msgstr "Загружено успешно"
 
 
@@ -1354,7 +1355,7 @@ msgstr "Загружено успешно"
 msgid "Local"
 msgid "Local"
 msgstr "Локальный"
 msgstr "Локальный"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:69
+#: src/views/site/ngx_conf/LocationEditor.vue:68
 msgid "Location"
 msgid "Location"
 msgstr "Локация"
 msgstr "Локация"
 
 
@@ -1431,12 +1432,12 @@ msgstr "Управление сертификатом"
 msgid "Max Attempts"
 msgid "Max Attempts"
 msgstr "Максимальное количество попыток"
 msgstr "Максимальное количество попыток"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:226
-#: src/views/dashboard/ServerAnalytic.vue:227
+#: src/views/dashboard/ServerAnalytic.vue:222
+#: src/views/dashboard/ServerAnalytic.vue:223
 msgid "Memory"
 msgid "Memory"
 msgstr "Память"
 msgstr "Память"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:216
+#: src/views/dashboard/ServerAnalytic.vue:212
 msgid "Memory and Storage"
 msgid "Memory and Storage"
 msgstr "Память и хранилище"
 msgstr "Память и хранилище"
 
 
@@ -1490,19 +1491,19 @@ msgstr "Многострочная директива"
 msgid "Name"
 msgid "Name"
 msgstr "Имя"
 msgstr "Имя"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:331
+#: src/views/dashboard/ServerAnalytic.vue:327
 msgid "Network"
 msgid "Network"
 msgstr "Сеть"
 msgstr "Сеть"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:273
+#: src/views/dashboard/ServerAnalytic.vue:269
 msgid "Network Statistics"
 msgid "Network Statistics"
 msgstr "Статистика сети"
 msgstr "Статистика сети"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:280
+#: src/views/dashboard/ServerAnalytic.vue:276
 msgid "Network Total Receive"
 msgid "Network Total Receive"
 msgstr "Всего получено"
 msgstr "Всего получено"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:286
+#: src/views/dashboard/ServerAnalytic.vue:282
 msgid "Network Total Send"
 msgid "Network Total Send"
 msgstr "Всего отправлено"
 msgstr "Всего отправлено"
 
 
@@ -1619,7 +1620,7 @@ msgstr "Nginx успешно перезапущен"
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/CertSettings.vue:70
 #: src/views/preference/CertSettings.vue:70
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
-#: src/views/site/ngx_conf/LocationEditor.vue:90
+#: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/stream/StreamList.vue:163
 #: src/views/stream/StreamList.vue:163
 msgid "No"
 msgid "No"
@@ -1631,8 +1632,9 @@ msgid "Node name"
 msgstr "Новое имя"
 msgstr "Новое имя"
 
 
 #: src/views/preference/BasicSettings.vue:23
 #: src/views/preference/BasicSettings.vue:23
+#, fuzzy
 msgid "Node Secret"
 msgid "Node Secret"
-msgstr ""
+msgstr "Jwt секрет"
 
 
 #: src/views/certificate/CertificateList/certColumns.tsx:91
 #: src/views/certificate/CertificateList/certColumns.tsx:91
 msgid "Not After"
 msgid "Not After"
@@ -1734,6 +1736,10 @@ msgstr "OpenAI"
 msgid "Or"
 msgid "Or"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/components/TOTP.vue:127
+msgid "Or enter the secret: %{secret}"
+msgstr ""
+
 #: src/views/config/components/Rename.vue:68
 #: src/views/config/components/Rename.vue:68
 msgid "Original name"
 msgid "Original name"
 msgstr "Оригинальное имя"
 msgstr "Оригинальное имя"
@@ -1742,7 +1748,7 @@ msgstr "Оригинальное имя"
 msgid "OS"
 msgid "OS"
 msgstr "ОС"
 msgstr "ОС"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:193
+#: src/views/dashboard/ServerAnalytic.vue:189
 msgid "OS:"
 msgid "OS:"
 msgstr "OS:"
 msgstr "OS:"
 
 
@@ -1766,8 +1772,9 @@ msgid "Params"
 msgstr "Параметры"
 msgstr "Параметры"
 
 
 #: src/views/preference/components/Passkey.vue:59
 #: src/views/preference/components/Passkey.vue:59
+#, fuzzy
 msgid "Passkey"
 msgid "Passkey"
-msgstr ""
+msgstr "Добавить ключ доступа"
 
 
 #: src/views/preference/components/Passkey.vue:62
 #: src/views/preference/components/Passkey.vue:62
 msgid ""
 msgid ""
@@ -1794,8 +1801,8 @@ msgid "Password length cannot exceed 20 characters"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/ConfigEditor.vue:263
 #: src/views/config/ConfigEditor.vue:263
-#: src/views/site/ngx_conf/LocationEditor.vue:111
-#: src/views/site/ngx_conf/LocationEditor.vue:139
+#: src/views/site/ngx_conf/LocationEditor.vue:109
+#: src/views/site/ngx_conf/LocationEditor.vue:137
 msgid "Path"
 msgid "Path"
 msgstr "Путь"
 msgstr "Путь"
 
 
@@ -1899,7 +1906,7 @@ msgstr ""
 "Обратите внимание, что единица измерения времени в конфигурациях ниже "
 "Обратите внимание, что единица измерения времени в конфигурациях ниже "
 "указана в секундах."
 "указана в секундах."
 
 
-#: src/views/environment/Environment.vue:48
+#: src/views/environment/Environment.vue:58
 msgid "Please select at least one node to upgrade"
 msgid "Please select at least one node to upgrade"
 msgstr "Пожалуйста, выберите хотя бы один узел"
 msgstr "Пожалуйста, выберите хотя бы один узел"
 
 
@@ -1951,19 +1958,20 @@ msgid "Provider"
 msgstr "Провайдер"
 msgstr "Провайдер"
 
 
 #: src/views/certificate/ACMEUser.vue:51
 #: src/views/certificate/ACMEUser.vue:51
+#, fuzzy
 msgid "Proxy"
 msgid "Proxy"
-msgstr ""
+msgstr "API Прокси"
 
 
 #: src/views/preference/BasicSettings.vue:63
 #: src/views/preference/BasicSettings.vue:63
 msgid "Public Security Number"
 msgid "Public Security Number"
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:387
+#: src/views/dashboard/ServerAnalytic.vue:383
 msgid "Reads"
 msgid "Reads"
 msgstr "Чтение"
 msgstr "Чтение"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:338
+#: src/views/dashboard/ServerAnalytic.vue:334
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Receive"
 msgid "Receive"
 msgstr "Принято"
 msgstr "Принято"
@@ -1982,15 +1990,15 @@ msgid "Recovered Successfully"
 msgstr "Восстановлено успешно"
 msgstr "Восстановлено успешно"
 
 
 #: src/components/TwoFA/Authorization.vue:89
 #: src/components/TwoFA/Authorization.vue:89
-#: src/views/preference/components/TOTP.vue:172
+#: src/views/preference/components/TOTP.vue:155
 msgid "Recovery"
 msgid "Recovery"
 msgstr "Восстановление"
 msgstr "Восстановление"
 
 
-#: src/views/preference/components/TOTP.vue:98
+#: src/views/preference/components/TOTP.vue:80
 msgid "Recovery Code"
 msgid "Recovery Code"
 msgstr "Код восстановления"
 msgstr "Код восстановления"
 
 
-#: src/views/preference/components/TOTP.vue:107
+#: src/views/preference/components/TOTP.vue:89
 msgid "Recovery Code:"
 msgid "Recovery Code:"
 msgstr "Код восстановления:"
 msgstr "Код восстановления:"
 
 
@@ -2094,8 +2102,8 @@ msgstr "Переименовать"
 msgid ""
 msgid ""
 "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}"
 "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}"
 msgstr ""
 msgstr ""
-"Переименование %{orig_path} в %{new_path} на %{env_name} не удалось, ответ: %"
-"{resp}"
+"Переименование %{orig_path} в %{new_path} на %{env_name} не удалось, ответ: "
+"%{resp}"
 
 
 #: src/components/Notification/config.ts:20
 #: src/components/Notification/config.ts:20
 msgid "Rename %{orig_path} to %{new_path} on %{env_name} successfully"
 msgid "Rename %{orig_path} to %{new_path} on %{env_name} successfully"
@@ -2165,7 +2173,7 @@ msgstr "Запрос с неправильными параметрами"
 msgid "Reset"
 msgid "Reset"
 msgstr "Сброс"
 msgstr "Сброс"
 
 
-#: src/views/preference/components/TOTP.vue:127
+#: src/views/preference/components/TOTP.vue:109
 msgid "Reset 2FA"
 msgid "Reset 2FA"
 msgstr "Сброс 2FA"
 msgstr "Сброс 2FA"
 
 
@@ -2236,8 +2244,8 @@ msgstr "Переименование удаленной конфигурации
 #, fuzzy
 #, fuzzy
 msgid "Save site %{site} to %{node} error, response: %{resp}"
 msgid "Save site %{site} to %{node} error, response: %{resp}"
 msgstr ""
 msgstr ""
-"Синхронизация сертификата %{cert_name} с %{env_name} не удалась, ответ: %"
-"{resp}"
+"Синхронизация сертификата %{cert_name} с %{env_name} не удалась, ответ: "
+"%{resp}"
 
 
 #: src/components/Notification/config.ts:35
 #: src/components/Notification/config.ts:35
 #, fuzzy
 #, fuzzy
@@ -2258,7 +2266,7 @@ msgstr "Сохранено успешно"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "Успешно сохранено"
 msgstr "Успешно сохранено"
 
 
-#: src/views/preference/components/TOTP.vue:88
+#: src/views/preference/components/TOTP.vue:72
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
 "Отсканируйте QR-код с помощью мобильного телефона, чтобы добавить учетную "
 "Отсканируйте QR-код с помощью мобильного телефона, чтобы добавить учетную "
@@ -2268,7 +2276,7 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr "SDK"
 msgstr "SDK"
 
 
-#: src/views/preference/components/TOTP.vue:144
+#: src/views/preference/components/TOTP.vue:124
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
 
 
@@ -2280,12 +2288,12 @@ msgstr "Выбор"
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:348
+#: src/views/dashboard/ServerAnalytic.vue:344
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Send"
 msgid "Send"
 msgstr "Отправлено"
 msgstr "Отправлено"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:179
+#: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Информация о сервере"
 msgstr "Информация о сервере"
 
 
@@ -2328,14 +2336,14 @@ msgstr "Настройка провайдера проверки HTTP01"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
@@ -2343,16 +2351,18 @@ msgid "Show"
 msgstr "Показать"
 msgstr "Показать"
 
 
 #: src/views/other/Login.vue:240
 #: src/views/other/Login.vue:240
+#, fuzzy
 msgid "Sign in with a passkey"
 msgid "Sign in with a passkey"
-msgstr ""
+msgstr "Аутентификация с помощью ключа доступа"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:65
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:65
 msgid "Single Directive"
 msgid "Single Directive"
 msgstr "Одиночная Директива"
 msgstr "Одиночная Директива"
 
 
 #: src/routes/index.ts:71 src/views/site/site_category/SiteCategory.vue:10
 #: src/routes/index.ts:71 src/views/site/site_category/SiteCategory.vue:10
+#, fuzzy
 msgid "Site Categories"
 msgid "Site Categories"
-msgstr ""
+msgstr "Категория"
 
 
 #: src/constants/errors/site.ts:4
 #: src/constants/errors/site.ts:4
 #, fuzzy
 #, fuzzy
@@ -2378,12 +2388,14 @@ msgid "Sites List"
 msgstr "Список сайтов"
 msgstr "Список сайтов"
 
 
 #: src/constants/errors/self_check.ts:10
 #: src/constants/errors/self_check.ts:10
+#, fuzzy
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
-msgstr ""
+msgstr "Каталог"
 
 
 #: src/constants/errors/self_check.ts:11
 #: src/constants/errors/self_check.ts:11
+#, fuzzy
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
-msgstr ""
+msgstr "Каталог"
 
 
 #: src/views/certificate/CertificateEditor.vue:211
 #: src/views/certificate/CertificateEditor.vue:211
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
@@ -2422,8 +2434,8 @@ msgstr "Статус"
 msgid "Stopped"
 msgid "Stopped"
 msgstr "Остановлен"
 msgstr "Остановлен"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:254
-#: src/views/dashboard/ServerAnalytic.vue:255
+#: src/views/dashboard/ServerAnalytic.vue:250
+#: src/views/dashboard/ServerAnalytic.vue:251
 msgid "Storage"
 msgid "Storage"
 msgstr "Хранилище"
 msgstr "Хранилище"
 
 
@@ -2433,8 +2445,9 @@ msgid "Streams Directory"
 msgstr "Каталог"
 msgstr "Каталог"
 
 
 #: src/constants/errors/self_check.ts:12
 #: src/constants/errors/self_check.ts:12
+#, fuzzy
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
-msgstr ""
+msgstr "Каталог"
 
 
 #: src/constants/errors/self_check.ts:13
 #: src/constants/errors/self_check.ts:13
 #, fuzzy
 #, fuzzy
@@ -2453,8 +2466,8 @@ msgid ""
 "guide/nginx-proxy-example.html"
 "guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:240
-#: src/views/dashboard/ServerAnalytic.vue:241
+#: src/views/dashboard/ServerAnalytic.vue:236
+#: src/views/dashboard/ServerAnalytic.vue:237
 msgid "Swap"
 msgid "Swap"
 msgstr "Своп"
 msgstr "Своп"
 
 
@@ -2485,8 +2498,8 @@ msgstr ""
 #: src/components/Notification/cert.ts:14
 #: src/components/Notification/cert.ts:14
 msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
 msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
 msgstr ""
 msgstr ""
-"Синхронизация сертификата %{cert_name} с %{env_name} не удалась, ответ: %"
-"{resp}"
+"Синхронизация сертификата %{cert_name} с %{env_name} не удалась, ответ: "
+"%{resp}"
 
 
 #: src/components/Notification/cert.ts:4
 #: src/components/Notification/cert.ts:4
 msgid "Sync Certificate %{cert_name} to %{env_name} successfully"
 msgid "Sync Certificate %{cert_name} to %{env_name} successfully"
@@ -2503,8 +2516,8 @@ msgstr "Сертификат успешно синхронизирован"
 #: src/components/Notification/config.ts:14
 #: src/components/Notification/config.ts:14
 msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}"
 msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}"
 msgstr ""
 msgstr ""
-"Синхронизация конфигурации %{config_name} с %{env_name} не удалась, ответ: %"
-"{resp}"
+"Синхронизация конфигурации %{config_name} с %{env_name} не удалась, ответ: "
+"%{resp}"
 
 
 #: src/components/Notification/config.ts:4
 #: src/components/Notification/config.ts:4
 msgid "Sync Config %{config_name} to %{env_name} successfully"
 msgid "Sync Config %{config_name} to %{env_name} successfully"
@@ -2633,7 +2646,7 @@ msgstr ""
 "Имя сервера должно содержать только буквы, юникод, цифры, дефисы, тире и "
 "Имя сервера должно содержать только буквы, юникод, цифры, дефисы, тире и "
 "точки."
 "точки."
 
 
-#: src/views/preference/components/TOTP.vue:106
+#: src/views/preference/components/TOTP.vue:88
 msgid ""
 msgid ""
 "The recovery code is only displayed once, please save it in a safe place."
 "The recovery code is only displayed once, please save it in a safe place."
 msgstr ""
 msgstr ""
@@ -2717,8 +2730,8 @@ msgstr ""
 msgid ""
 msgid ""
 "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 msgstr ""
 msgstr ""
-"Это обновит или переустановит интерфейс Nginx на %{nodeNames} до версии %"
-"{version}."
+"Это обновит или переустановит интерфейс Nginx на %{nodeNames} до версии "
+"%{version}."
 
 
 #: src/views/preference/AuthSettings.vue:96
 #: src/views/preference/AuthSettings.vue:96
 msgid "Throttle"
 msgid "Throttle"
@@ -2734,7 +2747,7 @@ msgstr "Советы"
 msgid "Title"
 msgid "Title"
 msgstr "Заголовок"
 msgstr "Заголовок"
 
 
-#: src/views/preference/components/TOTP.vue:87
+#: src/views/preference/components/TOTP.vue:71
 msgid ""
 msgid ""
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "on your mobile phone."
 "on your mobile phone."
@@ -2778,11 +2791,11 @@ msgid_plural "Total %{total} items"
 msgstr[0] ""
 msgstr[0] ""
 msgstr[1] ""
 msgstr[1] ""
 
 
-#: src/views/preference/components/TOTP.vue:85
+#: src/views/preference/components/TOTP.vue:69
 msgid "TOTP"
 msgid "TOTP"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:86
+#: src/views/preference/components/TOTP.vue:70
 msgid ""
 msgid ""
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "password algorithm."
 "password algorithm."
@@ -2824,7 +2837,7 @@ msgstr "Обновлено в"
 msgid "Updated successfully"
 msgid "Updated successfully"
 msgstr "Успешно обновлено"
 msgstr "Успешно обновлено"
 
 
-#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
+#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 msgid "Upgrade"
 msgid "Upgrade"
 msgstr "Обновление"
 msgstr "Обновление"
@@ -2845,7 +2858,7 @@ msgstr "Обновление Nginx UI, подождите..."
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr "Имя Upstream"
 msgstr "Имя Upstream"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:183
+#: src/views/dashboard/ServerAnalytic.vue:179
 msgid "Uptime:"
 msgid "Uptime:"
 msgstr "Аптайм:"
 msgstr "Аптайм:"
 
 
@@ -2955,7 +2968,7 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:377
+#: src/views/dashboard/ServerAnalytic.vue:373
 msgid "Writes"
 msgid "Writes"
 msgstr "Запись"
 msgstr "Запись"
 
 
@@ -2970,7 +2983,7 @@ msgstr "Запись сертификата на диск"
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/CertSettings.vue:69
 #: src/views/preference/CertSettings.vue:69
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
-#: src/views/site/ngx_conf/LocationEditor.vue:89
+#: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"
 msgid "Yes"
 msgstr "Да"
 msgstr "Да"
 
 
@@ -2989,8 +3002,9 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/Passkey.vue:75
 #: src/views/preference/components/Passkey.vue:75
+#, fuzzy
 msgid "Your passkeys"
 msgid "Your passkeys"
-msgstr ""
+msgstr "Добавить ключ доступа"
 
 
 #~ msgid "Directory"
 #~ msgid "Directory"
 #~ msgstr "Каталог"
 #~ msgstr "Каталог"

+ 85 - 72
app/src/language/tr_TR/app.po

@@ -70,8 +70,8 @@ msgstr "Yapılandırma Ekle"
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "Direktifi Aşağıya Ekleyin"
 msgstr "Direktifi Aşağıya Ekleyin"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:132
-#: src/views/site/ngx_conf/LocationEditor.vue:159
+#: src/views/site/ngx_conf/LocationEditor.vue:130
+#: src/views/site/ngx_conf/LocationEditor.vue:157
 msgid "Add Location"
 msgid "Add Location"
 msgstr "Konum ekle"
 msgstr "Konum ekle"
 
 
@@ -187,7 +187,7 @@ msgstr "Bu yönergeyi kaldırmak istediğinizden emin misiniz?"
 msgid "Are you sure you want to remove this item?"
 msgid "Are you sure you want to remove this item?"
 msgstr "Bu öğeyi kaldırmak istediğinizden emin misiniz?"
 msgstr "Bu öğeyi kaldırmak istediğinizden emin misiniz?"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:88
+#: src/views/site/ngx_conf/LocationEditor.vue:86
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Bu konumu kaldırmak istediğinizden emin misiniz?"
 msgstr "Bu konumu kaldırmak istediğinizden emin misiniz?"
 
 
@@ -315,10 +315,6 @@ msgstr "CA Dizini"
 msgid "CADir"
 msgid "CADir"
 msgstr "CADizini"
 msgstr "CADizini"
 
 
-#: src/views/preference/components/TOTP.vue:145
-msgid "Can't scan? Use text key binding"
-msgstr "Tarayamıyor musunuz? Metin anahtar bağlamasını kullanın"
-
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
@@ -372,7 +368,7 @@ msgid "Certificate Renewal Interval"
 msgstr "Sertifika Yenileme Aralığı"
 msgstr "Sertifika Yenileme Aralığı"
 
 
 #: src/views/certificate/CertificateEditor.vue:128
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:32
+#: src/views/site/cert/Cert.vue:33
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgid_plural "Certificates Status"
 msgstr[0] "Sertifika Durumu"
 msgstr[0] "Sertifika Durumu"
@@ -396,7 +392,7 @@ msgstr "Doğrulama Yöntemi"
 msgid "Change Certificate"
 msgid "Change Certificate"
 msgstr "Sertifika Değiştir"
 msgstr "Sertifika Değiştir"
 
 
-#: src/views/site/cert/Cert.vue:51
+#: src/views/site/cert/Cert.vue:52
 msgid "Changed Certificate"
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
 msgstr[0] "Değişen Sertifika"
 msgstr[0] "Değişen Sertifika"
@@ -453,13 +449,17 @@ msgstr "Temizle"
 msgid "Cleared successfully"
 msgid "Cleared successfully"
 msgstr "Başarıyla temizlendi"
 msgstr "Başarıyla temizlendi"
 
 
+#: src/views/preference/components/TOTP.vue:125
+msgid "Click to copy"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgid "Command"
 msgstr "Komut"
 msgstr "Komut"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
-#: src/views/site/ngx_conf/LocationEditor.vue:105
-#: src/views/site/ngx_conf/LocationEditor.vue:136
+#: src/views/site/ngx_conf/LocationEditor.vue:103
+#: src/views/site/ngx_conf/LocationEditor.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 msgid "Comments"
 msgid "Comments"
 msgstr "Yorumlar"
 msgstr "Yorumlar"
@@ -493,8 +493,8 @@ msgid "Connection lost, please refresh the page."
 msgstr "Bağlantı kesildi, lütfen sayfayı yenileyin."
 msgstr "Bağlantı kesildi, lütfen sayfayı yenileyin."
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
-#: src/views/site/ngx_conf/LocationEditor.vue:117
-#: src/views/site/ngx_conf/LocationEditor.vue:145
+#: src/views/site/ngx_conf/LocationEditor.vue:115
+#: src/views/site/ngx_conf/LocationEditor.vue:143
 msgid "Content"
 msgid "Content"
 msgstr "İçerik"
 msgstr "İçerik"
 
 
@@ -511,11 +511,11 @@ msgstr "Kopya"
 msgid "Core Upgrade"
 msgid "Core Upgrade"
 msgstr "Çekirdek Yükseltme"
 msgstr "Çekirdek Yükseltme"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:305
+#: src/views/dashboard/ServerAnalytic.vue:301
 msgid "CPU Status"
 msgid "CPU Status"
 msgstr "CPU Durumu"
 msgstr "CPU Durumu"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:199
+#: src/views/dashboard/ServerAnalytic.vue:195
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU:"
 msgstr "CPU:"
 
 
@@ -557,11 +557,11 @@ msgstr "Kimlik bilgisi"
 msgid "Credentials"
 msgid "Credentials"
 msgstr "Kimlik bilgileri"
 msgstr "Kimlik bilgileri"
 
 
-#: src/views/preference/components/TOTP.vue:93
+#: src/views/preference/components/TOTP.vue:75
 msgid "Current account is enabled TOTP."
 msgid "Current account is enabled TOTP."
 msgstr "Mevcut hesap için TOTP etkinleştirildi."
 msgstr "Mevcut hesap için TOTP etkinleştirildi."
 
 
-#: src/views/preference/components/TOTP.vue:90
+#: src/views/preference/components/TOTP.vue:73
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "Mevcut hesap için TOTP etkin değil."
 msgstr "Mevcut hesap için TOTP etkin değil."
 
 
@@ -735,7 +735,7 @@ msgstr "Devre dışı"
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "Başarıyla devre dışı bırakıldı"
 msgstr "Başarıyla devre dışı bırakıldı"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:370
+#: src/views/dashboard/ServerAnalytic.vue:366
 msgid "Disk IO"
 msgid "Disk IO"
 msgstr "Disk IO"
 msgstr "Disk IO"
 
 
@@ -909,7 +909,7 @@ msgstr ""
 "%{conf_name} yapılandırmasını %{node_name} düğümünde etkinleştirme başarılı "
 "%{conf_name} yapılandırmasını %{node_name} düğümünde etkinleştirme başarılı "
 "oldu"
 "oldu"
 
 
-#: src/views/preference/components/TOTP.vue:52
+#: src/views/preference/components/TOTP.vue:38
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr "2FA'yı başarıyla etkinleştirildi"
 msgstr "2FA'yı başarıyla etkinleştirildi"
 
 
@@ -953,7 +953,7 @@ msgstr "Başarıyla etkinleştirildi"
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "TLS'yi Etkinleştir"
 msgstr "TLS'yi Etkinleştir"
 
 
-#: src/views/preference/components/TOTP.vue:119
+#: src/views/preference/components/TOTP.vue:101
 msgid "Enable TOTP"
 msgid "Enable TOTP"
 msgstr "TOTP'yi Etkinleştir"
 msgstr "TOTP'yi Etkinleştir"
 
 
@@ -987,7 +987,7 @@ msgid "Environment variables cleaned"
 msgstr "Ortam değişkenleri temizlendi"
 msgstr "Ortam değişkenleri temizlendi"
 
 
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
-#: src/views/environment/Environment.vue:33
+#: src/views/environment/Environment.vue:43
 msgid "Environments"
 msgid "Environments"
 msgstr "Ortamlar"
 msgstr "Ortamlar"
 
 
@@ -1049,8 +1049,9 @@ msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/self_check.ts:3
 #: src/constants/errors/self_check.ts:3
+#, fuzzy
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
-msgstr ""
+msgstr "Etkinleştirilemedi %{msg}"
 
 
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/stream/StreamEdit.vue:122
 #: src/views/stream/StreamEdit.vue:122
@@ -1171,7 +1172,7 @@ msgstr ""
 "yasaklama eşiği dakikaları içinde maksimum deneme sayısına ulaşırsa, IP "
 "yasaklama eşiği dakikaları içinde maksimum deneme sayısına ulaşırsa, IP "
 "adresi belirli bir süre için yasaklanacaktır."
 "adresi belirli bir süre için yasaklanacaktır."
 
 
-#: src/views/preference/components/TOTP.vue:105
+#: src/views/preference/components/TOTP.vue:87
 msgid ""
 msgid ""
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "2FA."
 "2FA."
@@ -1214,12 +1215,12 @@ msgstr "İlk çekirdek yükseltici hatası"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "Çekirdek yükseltici başlatılıyor"
 msgstr "Çekirdek yükseltici başlatılıyor"
 
 
-#: src/views/preference/components/TOTP.vue:152
+#: src/views/preference/components/TOTP.vue:134
 msgid "Input the code from the app:"
 msgid "Input the code from the app:"
 msgstr "Uygulamadan kodu girin:"
 msgstr "Uygulamadan kodu girin:"
 
 
 #: src/components/TwoFA/Authorization.vue:82
 #: src/components/TwoFA/Authorization.vue:82
-#: src/views/preference/components/TOTP.vue:165
+#: src/views/preference/components/TOTP.vue:148
 msgid "Input the recovery code:"
 msgid "Input the recovery code:"
 msgstr "Kurtarma kodunu girin:"
 msgstr "Kurtarma kodunu girin:"
 
 
@@ -1338,15 +1339,15 @@ msgstr "Bağlantı Başlat"
 msgid "List"
 msgid "List"
 msgstr "Liste"
 msgstr "Liste"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:187
+#: src/views/dashboard/ServerAnalytic.vue:183
 msgid "Load Average:"
 msgid "Load Average:"
 msgstr "Yük Ortalaması:"
 msgstr "Yük Ortalaması:"
 
 
-#: src/views/environment/Environment.vue:39
+#: src/views/environment/Environment.vue:49
 msgid "Load from settings"
 msgid "Load from settings"
 msgstr "Ayarlar'dan yükle"
 msgstr "Ayarlar'dan yükle"
 
 
-#: src/views/environment/Environment.vue:13
+#: src/views/environment/Environment.vue:17
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Başarıyla yüklendi"
 msgstr "Başarıyla yüklendi"
 
 
@@ -1355,7 +1356,7 @@ msgstr "Başarıyla yüklendi"
 msgid "Local"
 msgid "Local"
 msgstr "Yerel"
 msgstr "Yerel"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:69
+#: src/views/site/ngx_conf/LocationEditor.vue:68
 msgid "Location"
 msgid "Location"
 msgstr "Konum"
 msgstr "Konum"
 
 
@@ -1439,13 +1440,13 @@ msgstr "Yönetilen Sertifika"
 msgid "Max Attempts"
 msgid "Max Attempts"
 msgstr "Maksimum Deneme"
 msgstr "Maksimum Deneme"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:226
-#: src/views/dashboard/ServerAnalytic.vue:227
+#: src/views/dashboard/ServerAnalytic.vue:222
+#: src/views/dashboard/ServerAnalytic.vue:223
 #, fuzzy
 #, fuzzy
 msgid "Memory"
 msgid "Memory"
 msgstr "Hafıza"
 msgstr "Hafıza"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:216
+#: src/views/dashboard/ServerAnalytic.vue:212
 #, fuzzy
 #, fuzzy
 msgid "Memory and Storage"
 msgid "Memory and Storage"
 msgstr "Bellek ve Depolama"
 msgstr "Bellek ve Depolama"
@@ -1508,22 +1509,22 @@ msgstr "Çok Hatlı Direktif"
 msgid "Name"
 msgid "Name"
 msgstr "İsim"
 msgstr "İsim"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:331
+#: src/views/dashboard/ServerAnalytic.vue:327
 #, fuzzy
 #, fuzzy
 msgid "Network"
 msgid "Network"
 msgstr "Ağ"
 msgstr "Ağ"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:273
+#: src/views/dashboard/ServerAnalytic.vue:269
 #, fuzzy
 #, fuzzy
 msgid "Network Statistics"
 msgid "Network Statistics"
 msgstr "Ağ İstatistikleri"
 msgstr "Ağ İstatistikleri"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:280
+#: src/views/dashboard/ServerAnalytic.vue:276
 #, fuzzy
 #, fuzzy
 msgid "Network Total Receive"
 msgid "Network Total Receive"
 msgstr "Ağ Toplam Alım"
 msgstr "Ağ Toplam Alım"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:286
+#: src/views/dashboard/ServerAnalytic.vue:282
 #, fuzzy
 #, fuzzy
 msgid "Network Total Send"
 msgid "Network Total Send"
 msgstr "Ağ Toplam Gönderme"
 msgstr "Ağ Toplam Gönderme"
@@ -1616,8 +1617,9 @@ msgid "Nginx Log"
 msgstr "Nginx Günlüğü"
 msgstr "Nginx Günlüğü"
 
 
 #: src/views/preference/NginxSettings.vue:18
 #: src/views/preference/NginxSettings.vue:18
+#, fuzzy
 msgid "Nginx Log Directory Whitelist"
 msgid "Nginx Log Directory Whitelist"
-msgstr ""
+msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 
 
 #: src/views/preference/NginxSettings.vue:27
 #: src/views/preference/NginxSettings.vue:27
 #, fuzzy
 #, fuzzy
@@ -1625,8 +1627,9 @@ msgid "Nginx PID Path"
 msgstr "Nginx Hata Günlüğü Yolu"
 msgstr "Nginx Hata Günlüğü Yolu"
 
 
 #: src/views/preference/NginxSettings.vue:30
 #: src/views/preference/NginxSettings.vue:30
+#, fuzzy
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
-msgstr ""
+msgstr "Terminal Başlatma Komutu"
 
 
 #: src/components/NginxControl/NginxControl.vue:26
 #: src/components/NginxControl/NginxControl.vue:26
 #, fuzzy
 #, fuzzy
@@ -1654,7 +1657,7 @@ msgstr "Nginx başarıyla yeniden başlatıldı"
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/CertSettings.vue:70
 #: src/views/preference/CertSettings.vue:70
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
-#: src/views/site/ngx_conf/LocationEditor.vue:90
+#: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/stream/StreamList.vue:163
 #: src/views/stream/StreamList.vue:163
 #, fuzzy
 #, fuzzy
@@ -1788,6 +1791,10 @@ msgstr "OpenAI"
 msgid "Or"
 msgid "Or"
 msgstr "Veya"
 msgstr "Veya"
 
 
+#: src/views/preference/components/TOTP.vue:127
+msgid "Or enter the secret: %{secret}"
+msgstr ""
+
 #: src/views/config/components/Rename.vue:68
 #: src/views/config/components/Rename.vue:68
 #, fuzzy
 #, fuzzy
 msgid "Original name"
 msgid "Original name"
@@ -1798,7 +1805,7 @@ msgstr "Gerçek Adı"
 msgid "OS"
 msgid "OS"
 msgstr "OS"
 msgstr "OS"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:193
+#: src/views/dashboard/ServerAnalytic.vue:189
 #, fuzzy
 #, fuzzy
 msgid "OS:"
 msgid "OS:"
 msgstr "İŞLETIM SISTEMI:"
 msgstr "İŞLETIM SISTEMI:"
@@ -1861,8 +1868,8 @@ msgid "Password length cannot exceed 20 characters"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/ConfigEditor.vue:263
 #: src/views/config/ConfigEditor.vue:263
-#: src/views/site/ngx_conf/LocationEditor.vue:111
-#: src/views/site/ngx_conf/LocationEditor.vue:139
+#: src/views/site/ngx_conf/LocationEditor.vue:109
+#: src/views/site/ngx_conf/LocationEditor.vue:137
 #, fuzzy
 #, fuzzy
 msgid "Path"
 msgid "Path"
 msgstr "Yol"
 msgstr "Yol"
@@ -1982,7 +1989,7 @@ msgstr ""
 "Lütfen aşağıdaki zaman birimi konfigürasyonlarının tümünün saniye cinsinden "
 "Lütfen aşağıdaki zaman birimi konfigürasyonlarının tümünün saniye cinsinden "
 "olduğunu unutmayın."
 "olduğunu unutmayın."
 
 
-#: src/views/environment/Environment.vue:48
+#: src/views/environment/Environment.vue:58
 #, fuzzy
 #, fuzzy
 msgid "Please select at least one node to upgrade"
 msgid "Please select at least one node to upgrade"
 msgstr "Lütfen yükseltmek için en az bir düğüm seçin"
 msgstr "Lütfen yükseltmek için en az bir düğüm seçin"
@@ -2052,12 +2059,12 @@ msgid "Public Security Number"
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:387
+#: src/views/dashboard/ServerAnalytic.vue:383
 #, fuzzy
 #, fuzzy
 msgid "Reads"
 msgid "Reads"
 msgstr "Okumalar"
 msgstr "Okumalar"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:338
+#: src/views/dashboard/ServerAnalytic.vue:334
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 #, fuzzy
 #, fuzzy
 msgid "Receive"
 msgid "Receive"
@@ -2079,17 +2086,17 @@ msgid "Recovered Successfully"
 msgstr "Başarıyla Kurtarıldı"
 msgstr "Başarıyla Kurtarıldı"
 
 
 #: src/components/TwoFA/Authorization.vue:89
 #: src/components/TwoFA/Authorization.vue:89
-#: src/views/preference/components/TOTP.vue:172
+#: src/views/preference/components/TOTP.vue:155
 #, fuzzy
 #, fuzzy
 msgid "Recovery"
 msgid "Recovery"
 msgstr "Kurtarma"
 msgstr "Kurtarma"
 
 
-#: src/views/preference/components/TOTP.vue:98
+#: src/views/preference/components/TOTP.vue:80
 #, fuzzy
 #, fuzzy
 msgid "Recovery Code"
 msgid "Recovery Code"
 msgstr "Kurtarma Kodu"
 msgstr "Kurtarma Kodu"
 
 
-#: src/views/preference/components/TOTP.vue:107
+#: src/views/preference/components/TOTP.vue:89
 #, fuzzy
 #, fuzzy
 msgid "Recovery Code:"
 msgid "Recovery Code:"
 msgstr "Kurtarma Kodu:"
 msgstr "Kurtarma Kodu:"
@@ -2298,7 +2305,7 @@ msgstr "Yanlış parametrelerle talep edildi"
 msgid "Reset"
 msgid "Reset"
 msgstr "Sıfırla"
 msgstr "Sıfırla"
 
 
-#: src/views/preference/components/TOTP.vue:127
+#: src/views/preference/components/TOTP.vue:109
 #, fuzzy
 #, fuzzy
 msgid "Reset 2FA"
 msgid "Reset 2FA"
 msgstr "2FA'yı Sıfırla"
 msgstr "2FA'yı Sıfırla"
@@ -2401,7 +2408,7 @@ msgstr "Başarıyla kaydedin"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "Başarıyla Kaydedildi"
 msgstr "Başarıyla Kaydedildi"
 
 
-#: src/views/preference/components/TOTP.vue:88
+#: src/views/preference/components/TOTP.vue:72
 #, fuzzy
 #, fuzzy
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr "Hesabı uygulamaya eklemek için QR kodunu cep telefonunuzla tarayın."
 msgstr "Hesabı uygulamaya eklemek için QR kodunu cep telefonunuzla tarayın."
@@ -2411,7 +2418,7 @@ msgstr "Hesabı uygulamaya eklemek için QR kodunu cep telefonunuzla tarayın."
 msgid "SDK"
 msgid "SDK"
 msgstr "SDK"
 msgstr "SDK"
 
 
-#: src/views/preference/components/TOTP.vue:144
+#: src/views/preference/components/TOTP.vue:124
 #, fuzzy
 #, fuzzy
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr "Sır kopyalandı"
 msgstr "Sır kopyalandı"
@@ -2425,13 +2432,13 @@ msgstr "Selektör"
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:348
+#: src/views/dashboard/ServerAnalytic.vue:344
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 #, fuzzy
 #, fuzzy
 msgid "Send"
 msgid "Send"
 msgstr "Gönder"
 msgstr "Gönder"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:179
+#: src/views/dashboard/ServerAnalytic.vue:175
 #, fuzzy
 #, fuzzy
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Sunucu Bilgisi"
 msgstr "Sunucu Bilgisi"
@@ -2481,14 +2488,14 @@ msgstr "HTTP01 meydan okuma sağlayıcısını ayarlama"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
@@ -2536,12 +2543,14 @@ msgid "Sites List"
 msgstr "Site Listesi"
 msgstr "Site Listesi"
 
 
 #: src/constants/errors/self_check.ts:10
 #: src/constants/errors/self_check.ts:10
+#, fuzzy
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
-msgstr ""
+msgstr "Dizin"
 
 
 #: src/constants/errors/self_check.ts:11
 #: src/constants/errors/self_check.ts:11
+#, fuzzy
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
-msgstr ""
+msgstr "Dizin"
 
 
 #: src/views/certificate/CertificateEditor.vue:211
 #: src/views/certificate/CertificateEditor.vue:211
 #, fuzzy
 #, fuzzy
@@ -2588,8 +2597,8 @@ msgstr "Durum"
 msgid "Stopped"
 msgid "Stopped"
 msgstr "Durduruldu"
 msgstr "Durduruldu"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:254
-#: src/views/dashboard/ServerAnalytic.vue:255
+#: src/views/dashboard/ServerAnalytic.vue:250
+#: src/views/dashboard/ServerAnalytic.vue:251
 #, fuzzy
 #, fuzzy
 msgid "Storage"
 msgid "Storage"
 msgstr "Depolama"
 msgstr "Depolama"
@@ -2600,8 +2609,9 @@ msgid "Streams Directory"
 msgstr "Dizin"
 msgstr "Dizin"
 
 
 #: src/constants/errors/self_check.ts:12
 #: src/constants/errors/self_check.ts:12
+#, fuzzy
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
-msgstr ""
+msgstr "Dizin"
 
 
 #: src/constants/errors/self_check.ts:13
 #: src/constants/errors/self_check.ts:13
 #, fuzzy
 #, fuzzy
@@ -2621,8 +2631,8 @@ msgid ""
 "guide/nginx-proxy-example.html"
 "guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:240
-#: src/views/dashboard/ServerAnalytic.vue:241
+#: src/views/dashboard/ServerAnalytic.vue:236
+#: src/views/dashboard/ServerAnalytic.vue:237
 #, fuzzy
 #, fuzzy
 msgid "Swap"
 msgid "Swap"
 msgstr "Değiştir"
 msgstr "Değiştir"
@@ -2824,7 +2834,7 @@ msgstr ""
 "Sunucu adı yalnızca harf, unicode, sayı, kısa çizgi, tire ve nokta "
 "Sunucu adı yalnızca harf, unicode, sayı, kısa çizgi, tire ve nokta "
 "içermelidir."
 "içermelidir."
 
 
-#: src/views/preference/components/TOTP.vue:106
+#: src/views/preference/components/TOTP.vue:88
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
 "The recovery code is only displayed once, please save it in a safe place."
 "The recovery code is only displayed once, please save it in a safe place."
@@ -2937,7 +2947,7 @@ msgstr "İpuçları"
 msgid "Title"
 msgid "Title"
 msgstr "Başlık"
 msgstr "Başlık"
 
 
-#: src/views/preference/components/TOTP.vue:87
+#: src/views/preference/components/TOTP.vue:71
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "To enable it, you need to install the Google or Microsoft Authenticator app "
@@ -2992,12 +3002,12 @@ msgid_plural "Total %{total} items"
 msgstr[0] ""
 msgstr[0] ""
 msgstr[1] ""
 msgstr[1] ""
 
 
-#: src/views/preference/components/TOTP.vue:85
+#: src/views/preference/components/TOTP.vue:69
 #, fuzzy
 #, fuzzy
 msgid "TOTP"
 msgid "TOTP"
 msgstr "TOTP"
 msgstr "TOTP"
 
 
-#: src/views/preference/components/TOTP.vue:86
+#: src/views/preference/components/TOTP.vue:70
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "TOTP is a two-factor authentication method that uses a time-based one-time "
@@ -3045,7 +3055,7 @@ msgstr "Güncelleme"
 msgid "Updated successfully"
 msgid "Updated successfully"
 msgstr "Başarıyla güncellendi"
 msgstr "Başarıyla güncellendi"
 
 
-#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
+#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 #, fuzzy
 #, fuzzy
 msgid "Upgrade"
 msgid "Upgrade"
@@ -3071,7 +3081,7 @@ msgstr "Nginx kullanıcı arayüzü yükseltiliyor, lütfen bekleyin..."
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr "Yukarı Akış Adı"
 msgstr "Yukarı Akış Adı"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:183
+#: src/views/dashboard/ServerAnalytic.vue:179
 #, fuzzy
 #, fuzzy
 msgid "Uptime:"
 msgid "Uptime:"
 msgstr "Çalışma süresi:"
 msgstr "Çalışma süresi:"
@@ -3200,7 +3210,7 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:377
+#: src/views/dashboard/ServerAnalytic.vue:373
 #, fuzzy
 #, fuzzy
 msgid "Writes"
 msgid "Writes"
 msgstr "Yazıyor"
 msgstr "Yazıyor"
@@ -3218,7 +3228,7 @@ msgstr "Sertifikayı diske yazma"
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/CertSettings.vue:69
 #: src/views/preference/CertSettings.vue:69
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
-#: src/views/site/ngx_conf/LocationEditor.vue:89
+#: src/views/site/ngx_conf/LocationEditor.vue:87
 #, fuzzy
 #, fuzzy
 msgid "Yes"
 msgid "Yes"
 msgstr "Evet"
 msgstr "Evet"
@@ -3247,6 +3257,9 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr "Geçiş anahtarlarınız"
 msgstr "Geçiş anahtarlarınız"
 
 
+#~ msgid "Can't scan? Use text key binding"
+#~ msgstr "Tarayamıyor musunuz? Metin anahtar bağlamasını kullanın"
+
 #~ msgid "Directory"
 #~ msgid "Directory"
 #~ msgstr "Dizin"
 #~ msgstr "Dizin"
 
 

+ 112 - 88
app/src/language/vi_VN/app.po

@@ -69,8 +69,8 @@ msgstr "Sửa cấu hình"
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "Thêm Directive"
 msgstr "Thêm Directive"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:132
-#: src/views/site/ngx_conf/LocationEditor.vue:159
+#: src/views/site/ngx_conf/LocationEditor.vue:130
+#: src/views/site/ngx_conf/LocationEditor.vue:157
 msgid "Add Location"
 msgid "Add Location"
 msgstr "Thêm Location"
 msgstr "Thêm Location"
 
 
@@ -112,16 +112,18 @@ msgid "API Base Url"
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/DNSChallenge.vue:83
 #: src/views/certificate/DNSChallenge.vue:83
+#, fuzzy
 msgid "API Document"
 msgid "API Document"
-msgstr ""
+msgstr "Bình luận"
 
 
 #: src/views/preference/OpenAISettings.vue:57
 #: src/views/preference/OpenAISettings.vue:57
 msgid "API Proxy"
 msgid "API Proxy"
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/OpenAISettings.vue:69
 #: src/views/preference/OpenAISettings.vue:69
+#, fuzzy
 msgid "API Token"
 msgid "API Token"
-msgstr ""
+msgstr "Loại"
 
 
 #: src/views/preference/OpenAISettings.vue:78
 #: src/views/preference/OpenAISettings.vue:78
 #, fuzzy
 #, fuzzy
@@ -197,7 +199,7 @@ msgstr "Bạn chắc chắn muốn xoá directive này ?"
 msgid "Are you sure you want to remove this item?"
 msgid "Are you sure you want to remove this item?"
 msgstr "Bạn chắc chắn muốn xoá directive này ?"
 msgstr "Bạn chắc chắn muốn xoá directive này ?"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:88
+#: src/views/site/ngx_conf/LocationEditor.vue:86
 #, fuzzy
 #, fuzzy
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "Bạn chắc chắn muốn xoá location này ?"
 msgstr "Bạn chắc chắn muốn xoá location này ?"
@@ -330,10 +332,6 @@ msgstr ""
 msgid "CADir"
 msgid "CADir"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:145
-msgid "Can't scan? Use text key binding"
-msgstr ""
-
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
@@ -388,7 +386,7 @@ msgid "Certificate Renewal Interval"
 msgstr "Chứng chỉ SSL hợp lệ"
 msgstr "Chứng chỉ SSL hợp lệ"
 
 
 #: src/views/certificate/CertificateEditor.vue:128
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:32
+#: src/views/site/cert/Cert.vue:33
 #, fuzzy
 #, fuzzy
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgid_plural "Certificates Status"
@@ -416,7 +414,7 @@ msgstr "Phương pháp xác thực"
 msgid "Change Certificate"
 msgid "Change Certificate"
 msgstr "Thay đổi chứng chỉ"
 msgstr "Thay đổi chứng chỉ"
 
 
-#: src/views/site/cert/Cert.vue:51
+#: src/views/site/cert/Cert.vue:52
 #, fuzzy
 #, fuzzy
 msgid "Changed Certificate"
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
@@ -476,14 +474,18 @@ msgstr "Xoá"
 msgid "Cleared successfully"
 msgid "Cleared successfully"
 msgstr "Đã xóa thành công"
 msgstr "Đã xóa thành công"
 
 
+#: src/views/preference/components/TOTP.vue:125
+msgid "Click to copy"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #: src/views/preference/LogrotateSettings.vue:22
 #, fuzzy
 #, fuzzy
 msgid "Command"
 msgid "Command"
 msgstr "Bình luận"
 msgstr "Bình luận"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
-#: src/views/site/ngx_conf/LocationEditor.vue:105
-#: src/views/site/ngx_conf/LocationEditor.vue:136
+#: src/views/site/ngx_conf/LocationEditor.vue:103
+#: src/views/site/ngx_conf/LocationEditor.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 msgid "Comments"
 msgid "Comments"
 msgstr "Bình luận"
 msgstr "Bình luận"
@@ -518,8 +520,8 @@ msgid "Connection lost, please refresh the page."
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
-#: src/views/site/ngx_conf/LocationEditor.vue:117
-#: src/views/site/ngx_conf/LocationEditor.vue:145
+#: src/views/site/ngx_conf/LocationEditor.vue:115
+#: src/views/site/ngx_conf/LocationEditor.vue:143
 msgid "Content"
 msgid "Content"
 msgstr "Nội dung"
 msgstr "Nội dung"
 
 
@@ -536,11 +538,11 @@ msgstr ""
 msgid "Core Upgrade"
 msgid "Core Upgrade"
 msgstr "Cập nhật core"
 msgstr "Cập nhật core"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:305
+#: src/views/dashboard/ServerAnalytic.vue:301
 msgid "CPU Status"
 msgid "CPU Status"
 msgstr "Trạng thái CPU"
 msgstr "Trạng thái CPU"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:199
+#: src/views/dashboard/ServerAnalytic.vue:195
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU:"
 msgstr "CPU:"
 
 
@@ -586,11 +588,11 @@ msgstr "Chứng chỉ"
 msgid "Credentials"
 msgid "Credentials"
 msgstr "Chứng chỉ"
 msgstr "Chứng chỉ"
 
 
-#: src/views/preference/components/TOTP.vue:93
+#: src/views/preference/components/TOTP.vue:75
 msgid "Current account is enabled TOTP."
 msgid "Current account is enabled TOTP."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:90
+#: src/views/preference/components/TOTP.vue:73
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr ""
 msgstr ""
 
 
@@ -762,7 +764,7 @@ msgstr "Đã tắt"
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "Đã tắt thành công"
 msgstr "Đã tắt thành công"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:370
+#: src/views/dashboard/ServerAnalytic.vue:366
 msgid "Disk IO"
 msgid "Disk IO"
 msgstr "Disk IO"
 msgstr "Disk IO"
 
 
@@ -848,8 +850,8 @@ msgstr "Tên miền đã được tạo"
 #: src/views/certificate/CertificateEditor.vue:112
 #: src/views/certificate/CertificateEditor.vue:112
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgstr ""
 msgstr ""
-"Danh sách tên miền rỗng, hãy thử mở lại chức năng Tạo chứng chỉ tự động cho %"
-"{config}"
+"Danh sách tên miền rỗng, hãy thử mở lại chức năng Tạo chứng chỉ tự động cho "
+"%{config}"
 
 
 #: src/language/constants.ts:26
 #: src/language/constants.ts:26
 msgid "Download latest release error"
 msgid "Download latest release error"
@@ -944,7 +946,7 @@ msgstr "Không thể bật %{conf_name} trên %{node_name}"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr "Đã bật %{conf_name} trên %{node_name}"
 msgstr "Đã bật %{conf_name} trên %{node_name}"
 
 
-#: src/views/preference/components/TOTP.vue:52
+#: src/views/preference/components/TOTP.vue:38
 #, fuzzy
 #, fuzzy
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr "Đã bật"
 msgstr "Đã bật"
@@ -986,7 +988,7 @@ msgstr "Đã bật"
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "Bật TLS"
 msgstr "Bật TLS"
 
 
-#: src/views/preference/components/TOTP.vue:119
+#: src/views/preference/components/TOTP.vue:101
 #, fuzzy
 #, fuzzy
 msgid "Enable TOTP"
 msgid "Enable TOTP"
 msgstr "Bật TLS"
 msgstr "Bật TLS"
@@ -1022,7 +1024,7 @@ msgid "Environment variables cleaned"
 msgstr "Đặt biến môi trường"
 msgstr "Đặt biến môi trường"
 
 
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
-#: src/views/environment/Environment.vue:33
+#: src/views/environment/Environment.vue:43
 #, fuzzy
 #, fuzzy
 msgid "Environments"
 msgid "Environments"
 msgstr "Environments"
 msgstr "Environments"
@@ -1087,8 +1089,9 @@ msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/self_check.ts:3
 #: src/constants/errors/self_check.ts:3
+#, fuzzy
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
-msgstr ""
+msgstr "Không thể bật %{msg}"
 
 
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/site/site_edit/SiteEdit.vue:135
 #: src/views/stream/StreamEdit.vue:122
 #: src/views/stream/StreamEdit.vue:122
@@ -1180,8 +1183,9 @@ msgid "Home"
 msgstr "Trang chủ"
 msgstr "Trang chủ"
 
 
 #: src/views/preference/CertSettings.vue:12
 #: src/views/preference/CertSettings.vue:12
+#, fuzzy
 msgid "HTTP Challenge Port"
 msgid "HTTP Challenge Port"
-msgstr ""
+msgstr "Phương pháp xác thực"
 
 
 #: src/views/preference/BasicSettings.vue:11
 #: src/views/preference/BasicSettings.vue:11
 msgid "HTTP Host"
 msgid "HTTP Host"
@@ -1209,7 +1213,7 @@ msgid ""
 "ban threshold minutes, the ip will be banned for a period of time."
 "ban threshold minutes, the ip will be banned for a period of time."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:105
+#: src/views/preference/components/TOTP.vue:87
 msgid ""
 msgid ""
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "2FA."
 "2FA."
@@ -1248,12 +1252,12 @@ msgstr "Không thể khởi tạo trình nâng cấp"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "Đang khởi tạo trình nâng cấp"
 msgstr "Đang khởi tạo trình nâng cấp"
 
 
-#: src/views/preference/components/TOTP.vue:152
+#: src/views/preference/components/TOTP.vue:134
 msgid "Input the code from the app:"
 msgid "Input the code from the app:"
 msgstr ""
 msgstr ""
 
 
 #: src/components/TwoFA/Authorization.vue:82
 #: src/components/TwoFA/Authorization.vue:82
-#: src/views/preference/components/TOTP.vue:165
+#: src/views/preference/components/TOTP.vue:148
 msgid "Input the recovery code:"
 msgid "Input the recovery code:"
 msgstr ""
 msgstr ""
 
 
@@ -1282,8 +1286,9 @@ msgid "Invalid filename"
 msgstr "E-mail không chính xác!"
 msgstr "E-mail không chính xác!"
 
 
 #: src/views/config/components/Mkdir.vue:57
 #: src/views/config/components/Mkdir.vue:57
+#, fuzzy
 msgid "Invalid folder name"
 msgid "Invalid folder name"
-msgstr ""
+msgstr "E-mail không chính xác!"
 
 
 #: src/constants/errors/user.ts:4
 #: src/constants/errors/user.ts:4
 #, fuzzy
 #, fuzzy
@@ -1295,8 +1300,9 @@ msgid "Invalid passcode or recovery code"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/user.ts:5
 #: src/constants/errors/user.ts:5
+#, fuzzy
 msgid "Invalid recovery code"
 msgid "Invalid recovery code"
-msgstr ""
+msgstr "Hợp lệ"
 
 
 #: src/views/preference/AuthSettings.vue:14
 #: src/views/preference/AuthSettings.vue:14
 msgid "IP"
 msgid "IP"
@@ -1382,16 +1388,16 @@ msgstr "Liên kết bắt đầu"
 msgid "List"
 msgid "List"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:187
+#: src/views/dashboard/ServerAnalytic.vue:183
 #, fuzzy
 #, fuzzy
 msgid "Load Average:"
 msgid "Load Average:"
 msgstr "Tải trung bình:"
 msgstr "Tải trung bình:"
 
 
-#: src/views/environment/Environment.vue:39
+#: src/views/environment/Environment.vue:49
 msgid "Load from settings"
 msgid "Load from settings"
 msgstr ""
 msgstr ""
 
 
-#: src/views/environment/Environment.vue:13
+#: src/views/environment/Environment.vue:17
 #, fuzzy
 #, fuzzy
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "Lưu thành công"
 msgstr "Lưu thành công"
@@ -1402,7 +1408,7 @@ msgstr "Lưu thành công"
 msgid "Local"
 msgid "Local"
 msgstr "Location"
 msgstr "Location"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:69
+#: src/views/site/ngx_conf/LocationEditor.vue:68
 msgid "Location"
 msgid "Location"
 msgstr "Location"
 msgstr "Location"
 
 
@@ -1469,19 +1475,20 @@ msgid "Manage Users"
 msgstr "Người dùng"
 msgstr "Người dùng"
 
 
 #: src/views/certificate/CertificateList/certColumns.tsx:31
 #: src/views/certificate/CertificateList/certColumns.tsx:31
+#, fuzzy
 msgid "Managed Certificate"
 msgid "Managed Certificate"
-msgstr ""
+msgstr "Thay đổi chứng chỉ"
 
 
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "Max Attempts"
 msgid "Max Attempts"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:226
-#: src/views/dashboard/ServerAnalytic.vue:227
+#: src/views/dashboard/ServerAnalytic.vue:222
+#: src/views/dashboard/ServerAnalytic.vue:223
 msgid "Memory"
 msgid "Memory"
 msgstr "Memory"
 msgstr "Memory"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:216
+#: src/views/dashboard/ServerAnalytic.vue:212
 msgid "Memory and Storage"
 msgid "Memory and Storage"
 msgstr "Memory và Storage"
 msgstr "Memory và Storage"
 
 
@@ -1540,19 +1547,19 @@ msgstr "Single Directive"
 msgid "Name"
 msgid "Name"
 msgstr "Tên"
 msgstr "Tên"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:331
+#: src/views/dashboard/ServerAnalytic.vue:327
 msgid "Network"
 msgid "Network"
 msgstr "Mạng"
 msgstr "Mạng"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:273
+#: src/views/dashboard/ServerAnalytic.vue:269
 msgid "Network Statistics"
 msgid "Network Statistics"
 msgstr "Thống kê mạng"
 msgstr "Thống kê mạng"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:280
+#: src/views/dashboard/ServerAnalytic.vue:276
 msgid "Network Total Receive"
 msgid "Network Total Receive"
 msgstr "Tổng lưu lượng mạng đã nhận"
 msgstr "Tổng lưu lượng mạng đã nhận"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:286
+#: src/views/dashboard/ServerAnalytic.vue:282
 msgid "Network Total Send"
 msgid "Network Total Send"
 msgstr "Tổng lưu lượng mạng đã gửi"
 msgstr "Tổng lưu lượng mạng đã gửi"
 
 
@@ -1632,12 +1639,14 @@ msgid "Nginx is not running"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:202 src/views/nginx_log/NginxLog.vue:148
 #: src/routes/index.ts:202 src/views/nginx_log/NginxLog.vue:148
+#, fuzzy
 msgid "Nginx Log"
 msgid "Nginx Log"
-msgstr ""
+msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
 
 
 #: src/views/preference/NginxSettings.vue:18
 #: src/views/preference/NginxSettings.vue:18
+#, fuzzy
 msgid "Nginx Log Directory Whitelist"
 msgid "Nginx Log Directory Whitelist"
-msgstr ""
+msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
 
 #: src/views/preference/NginxSettings.vue:27
 #: src/views/preference/NginxSettings.vue:27
 #, fuzzy
 #, fuzzy
@@ -1673,7 +1682,7 @@ msgstr "Restart Nginx thành công"
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/CertSettings.vue:70
 #: src/views/preference/CertSettings.vue:70
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
-#: src/views/site/ngx_conf/LocationEditor.vue:90
+#: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/stream/StreamList.vue:163
 #: src/views/stream/StreamList.vue:163
 msgid "No"
 msgid "No"
@@ -1685,8 +1694,9 @@ msgid "Node name"
 msgstr "Username"
 msgstr "Username"
 
 
 #: src/views/preference/BasicSettings.vue:23
 #: src/views/preference/BasicSettings.vue:23
+#, fuzzy
 msgid "Node Secret"
 msgid "Node Secret"
-msgstr ""
+msgstr "Username"
 
 
 #: src/views/certificate/CertificateList/certColumns.tsx:91
 #: src/views/certificate/CertificateList/certColumns.tsx:91
 msgid "Not After"
 msgid "Not After"
@@ -1789,6 +1799,10 @@ msgstr ""
 msgid "Or"
 msgid "Or"
 msgstr ""
 msgstr ""
 
 
+#: src/views/preference/components/TOTP.vue:127
+msgid "Or enter the secret: %{secret}"
+msgstr ""
+
 #: src/views/config/components/Rename.vue:68
 #: src/views/config/components/Rename.vue:68
 msgid "Original name"
 msgid "Original name"
 msgstr ""
 msgstr ""
@@ -1798,7 +1812,7 @@ msgstr ""
 msgid "OS"
 msgid "OS"
 msgstr "Hệ điều hành"
 msgstr "Hệ điều hành"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:193
+#: src/views/dashboard/ServerAnalytic.vue:189
 msgid "OS:"
 msgid "OS:"
 msgstr "Hệ điều hành:"
 msgstr "Hệ điều hành:"
 
 
@@ -1849,8 +1863,8 @@ msgid "Password length cannot exceed 20 characters"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/ConfigEditor.vue:263
 #: src/views/config/ConfigEditor.vue:263
-#: src/views/site/ngx_conf/LocationEditor.vue:111
-#: src/views/site/ngx_conf/LocationEditor.vue:139
+#: src/views/site/ngx_conf/LocationEditor.vue:109
+#: src/views/site/ngx_conf/LocationEditor.vue:137
 msgid "Path"
 msgid "Path"
 msgstr "Đường dẫn"
 msgstr "Đường dẫn"
 
 
@@ -1950,7 +1964,7 @@ msgid ""
 "Please note that the unit of time configurations below are all in seconds."
 "Please note that the unit of time configurations below are all in seconds."
 msgstr "Lưu ý đơn vị cấu hình thời gian bên dưới được tính bằng giây."
 msgstr "Lưu ý đơn vị cấu hình thời gian bên dưới được tính bằng giây."
 
 
-#: src/views/environment/Environment.vue:48
+#: src/views/environment/Environment.vue:58
 msgid "Please select at least one node to upgrade"
 msgid "Please select at least one node to upgrade"
 msgstr ""
 msgstr ""
 
 
@@ -2009,11 +2023,11 @@ msgid "Public Security Number"
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:387
+#: src/views/dashboard/ServerAnalytic.vue:383
 msgid "Reads"
 msgid "Reads"
 msgstr "Đọc"
 msgstr "Đọc"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:338
+#: src/views/dashboard/ServerAnalytic.vue:334
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Receive"
 msgid "Receive"
 msgstr "Nhận"
 msgstr "Nhận"
@@ -2033,15 +2047,15 @@ msgid "Recovered Successfully"
 msgstr "Xoá thành công"
 msgstr "Xoá thành công"
 
 
 #: src/components/TwoFA/Authorization.vue:89
 #: src/components/TwoFA/Authorization.vue:89
-#: src/views/preference/components/TOTP.vue:172
+#: src/views/preference/components/TOTP.vue:155
 msgid "Recovery"
 msgid "Recovery"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:98
+#: src/views/preference/components/TOTP.vue:80
 msgid "Recovery Code"
 msgid "Recovery Code"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:107
+#: src/views/preference/components/TOTP.vue:89
 msgid "Recovery Code:"
 msgid "Recovery Code:"
 msgstr ""
 msgstr ""
 
 
@@ -2231,7 +2245,7 @@ msgstr "Yêu cầu có chứa tham số sai"
 msgid "Reset"
 msgid "Reset"
 msgstr "Đặt lại"
 msgstr "Đặt lại"
 
 
-#: src/views/preference/components/TOTP.vue:127
+#: src/views/preference/components/TOTP.vue:109
 #, fuzzy
 #, fuzzy
 msgid "Reset 2FA"
 msgid "Reset 2FA"
 msgstr "Đặt lại"
 msgstr "Đặt lại"
@@ -2325,7 +2339,7 @@ msgstr "Lưu thành công"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "Lưu thành công"
 msgstr "Lưu thành công"
 
 
-#: src/views/preference/components/TOTP.vue:88
+#: src/views/preference/components/TOTP.vue:72
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
 
 
@@ -2333,7 +2347,7 @@ msgstr ""
 msgid "SDK"
 msgid "SDK"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:144
+#: src/views/preference/components/TOTP.vue:124
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
 
 
@@ -2345,12 +2359,12 @@ msgstr "Bộ chọn"
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:348
+#: src/views/dashboard/ServerAnalytic.vue:344
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Send"
 msgid "Send"
 msgstr "Gửi"
 msgstr "Gửi"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:179
+#: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgid "Server Info"
 msgstr "Thông tin máy chủ"
 msgstr "Thông tin máy chủ"
 
 
@@ -2392,14 +2406,14 @@ msgstr "Sử dụng HTTP01 để xác thực SSL"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
@@ -2443,32 +2457,39 @@ msgid "Sites List"
 msgstr "Danh sách Website"
 msgstr "Danh sách Website"
 
 
 #: src/constants/errors/self_check.ts:10
 #: src/constants/errors/self_check.ts:10
+#, fuzzy
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
-msgstr ""
+msgstr "Thư mục"
 
 
 #: src/constants/errors/self_check.ts:11
 #: src/constants/errors/self_check.ts:11
+#, fuzzy
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
-msgstr ""
+msgstr "Thư mục"
 
 
 #: src/views/certificate/CertificateEditor.vue:211
 #: src/views/certificate/CertificateEditor.vue:211
+#, fuzzy
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
-msgstr ""
+msgstr "Trạng thái chứng chỉ"
 
 
 #: src/views/certificate/CertificateEditor.vue:224
 #: src/views/certificate/CertificateEditor.vue:224
+#, fuzzy
 msgid "SSL Certificate Key Content"
 msgid "SSL Certificate Key Content"
-msgstr ""
+msgstr "Trạng thái chứng chỉ"
 
 
 #: src/views/certificate/CertificateEditor.vue:190
 #: src/views/certificate/CertificateEditor.vue:190
+#, fuzzy
 msgid "SSL Certificate Key Path"
 msgid "SSL Certificate Key Path"
-msgstr ""
+msgstr "Trạng thái chứng chỉ"
 
 
 #: src/views/certificate/CertificateEditor.vue:175
 #: src/views/certificate/CertificateEditor.vue:175
+#, fuzzy
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
-msgstr ""
+msgstr "Trạng thái chứng chỉ"
 
 
 #: src/views/other/Login.vue:198
 #: src/views/other/Login.vue:198
+#, fuzzy
 msgid "SSO Login"
 msgid "SSO Login"
-msgstr ""
+msgstr "Đăng nhập"
 
 
 #: src/views/environment/BatchUpgrader.vue:164
 #: src/views/environment/BatchUpgrader.vue:164
 #: src/views/environment/BatchUpgrader.vue:214 src/views/system/Upgrade.vue:191
 #: src/views/environment/BatchUpgrader.vue:214 src/views/system/Upgrade.vue:191
@@ -2488,8 +2509,8 @@ msgstr "Trạng thái"
 msgid "Stopped"
 msgid "Stopped"
 msgstr "Đã dừng"
 msgstr "Đã dừng"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:254
-#: src/views/dashboard/ServerAnalytic.vue:255
+#: src/views/dashboard/ServerAnalytic.vue:250
+#: src/views/dashboard/ServerAnalytic.vue:251
 msgid "Storage"
 msgid "Storage"
 msgstr "Storage"
 msgstr "Storage"
 
 
@@ -2499,8 +2520,9 @@ msgid "Streams Directory"
 msgstr "Thư mục"
 msgstr "Thư mục"
 
 
 #: src/constants/errors/self_check.ts:12
 #: src/constants/errors/self_check.ts:12
+#, fuzzy
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
-msgstr ""
+msgstr "Thư mục"
 
 
 #: src/constants/errors/self_check.ts:13
 #: src/constants/errors/self_check.ts:13
 #, fuzzy
 #, fuzzy
@@ -2519,8 +2541,8 @@ msgid ""
 "guide/nginx-proxy-example.html"
 "guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:240
-#: src/views/dashboard/ServerAnalytic.vue:241
+#: src/views/dashboard/ServerAnalytic.vue:236
+#: src/views/dashboard/ServerAnalytic.vue:237
 msgid "Swap"
 msgid "Swap"
 msgstr "Swap"
 msgstr "Swap"
 
 
@@ -2599,8 +2621,9 @@ msgid "Sync strategy"
 msgstr "Gia hạn chứng chỉ SSL"
 msgstr "Gia hạn chứng chỉ SSL"
 
 
 #: src/views/certificate/CertificateEditor.vue:204
 #: src/views/certificate/CertificateEditor.vue:204
+#, fuzzy
 msgid "Sync to"
 msgid "Sync to"
-msgstr ""
+msgstr "Gia hạn chứng chỉ SSL"
 
 
 #: src/views/site/site_edit/RightSettings.vue:110
 #: src/views/site/site_edit/RightSettings.vue:110
 msgid "Synchronization"
 msgid "Synchronization"
@@ -2690,7 +2713,7 @@ msgid ""
 "hyphens, dashes, colons, and dots."
 "hyphens, dashes, colons, and dots."
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:106
+#: src/views/preference/components/TOTP.vue:88
 msgid ""
 msgid ""
 "The recovery code is only displayed once, please save it in a safe place."
 "The recovery code is only displayed once, please save it in a safe place."
 msgstr ""
 msgstr ""
@@ -2763,9 +2786,10 @@ msgid "This value is already taken"
 msgstr ""
 msgstr ""
 
 
 #: src/views/environment/BatchUpgrader.vue:182
 #: src/views/environment/BatchUpgrader.vue:182
+#, fuzzy
 msgid ""
 msgid ""
 "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
-msgstr ""
+msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 
 
 #: src/views/preference/AuthSettings.vue:96
 #: src/views/preference/AuthSettings.vue:96
 msgid "Throttle"
 msgid "Throttle"
@@ -2781,7 +2805,7 @@ msgstr ""
 msgid "Title"
 msgid "Title"
 msgstr "Tiêu đề"
 msgstr "Tiêu đề"
 
 
-#: src/views/preference/components/TOTP.vue:87
+#: src/views/preference/components/TOTP.vue:71
 msgid ""
 msgid ""
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "on your mobile phone."
 "on your mobile phone."
@@ -2823,11 +2847,11 @@ msgid_plural "Total %{total} items"
 msgstr[0] ""
 msgstr[0] ""
 msgstr[1] ""
 msgstr[1] ""
 
 
-#: src/views/preference/components/TOTP.vue:85
+#: src/views/preference/components/TOTP.vue:69
 msgid "TOTP"
 msgid "TOTP"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:86
+#: src/views/preference/components/TOTP.vue:70
 msgid ""
 msgid ""
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "password algorithm."
 "password algorithm."
@@ -2868,7 +2892,7 @@ msgstr "Ngày cập nhật"
 msgid "Updated successfully"
 msgid "Updated successfully"
 msgstr "Cập nhật thành công"
 msgstr "Cập nhật thành công"
 
 
-#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
+#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 msgid "Upgrade"
 msgid "Upgrade"
 msgstr "Cập nhật"
 msgstr "Cập nhật"
@@ -2891,7 +2915,7 @@ msgstr "Đang cập nhật Nginx UI, vui lòng đợi..."
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:183
+#: src/views/dashboard/ServerAnalytic.vue:179
 msgid "Uptime:"
 msgid "Uptime:"
 msgstr "Thời gian hoạt động:"
 msgstr "Thời gian hoạt động:"
 
 
@@ -3005,7 +3029,7 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:377
+#: src/views/dashboard/ServerAnalytic.vue:373
 msgid "Writes"
 msgid "Writes"
 msgstr "Ghi"
 msgstr "Ghi"
 
 
@@ -3020,7 +3044,7 @@ msgstr "Ghi chứng chỉ vào disk"
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/CertSettings.vue:69
 #: src/views/preference/CertSettings.vue:69
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
-#: src/views/site/ngx_conf/LocationEditor.vue:89
+#: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"
 msgid "Yes"
 msgstr "Có"
 msgstr "Có"
 
 

+ 70 - 63
app/src/language/zh_CN/app.po

@@ -11,7 +11,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "Generated-By: easygettext\n"
 "Generated-By: easygettext\n"
-"X-Generator: Poedit 3.5\n"
+"X-Generator: Poedit 3.4.1\n"
 
 
 #: src/views/user/userColumns.tsx:32
 #: src/views/user/userColumns.tsx:32
 msgid "2FA"
 msgid "2FA"
@@ -71,8 +71,8 @@ msgstr "添加配置"
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "在下面添加指令"
 msgstr "在下面添加指令"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:132
-#: src/views/site/ngx_conf/LocationEditor.vue:159
+#: src/views/site/ngx_conf/LocationEditor.vue:130
+#: src/views/site/ngx_conf/LocationEditor.vue:157
 msgid "Add Location"
 msgid "Add Location"
 msgstr "添加 Location"
 msgstr "添加 Location"
 
 
@@ -184,7 +184,7 @@ msgstr "您确定要删除这条指令?"
 msgid "Are you sure you want to remove this item?"
 msgid "Are you sure you want to remove this item?"
 msgstr "您确定要删除这个项目吗?"
 msgstr "您确定要删除这个项目吗?"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:88
+#: src/views/site/ngx_conf/LocationEditor.vue:86
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "您确定要删除这个 Location?"
 msgstr "您确定要删除这个 Location?"
 
 
@@ -310,10 +310,6 @@ msgstr "CA Dir"
 msgid "CADir"
 msgid "CADir"
 msgstr "CADir"
 msgstr "CADir"
 
 
-#: src/views/preference/components/TOTP.vue:145
-msgid "Can't scan? Use text key binding"
-msgstr "无法扫描?使用文本密钥绑定"
-
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
@@ -363,7 +359,7 @@ msgid "Certificate Renewal Interval"
 msgstr "证书续期间隔"
 msgstr "证书续期间隔"
 
 
 #: src/views/certificate/CertificateEditor.vue:128
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:32
+#: src/views/site/cert/Cert.vue:33
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgid_plural "Certificates Status"
 msgstr[0] "证书状态"
 msgstr[0] "证书状态"
@@ -386,7 +382,7 @@ msgstr "挑战方法"
 msgid "Change Certificate"
 msgid "Change Certificate"
 msgstr "更改证书"
 msgstr "更改证书"
 
 
-#: src/views/site/cert/Cert.vue:51
+#: src/views/site/cert/Cert.vue:52
 msgid "Changed Certificate"
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
 msgstr[0] "变更证书"
 msgstr[0] "变更证书"
@@ -443,13 +439,17 @@ msgstr "清空"
 msgid "Cleared successfully"
 msgid "Cleared successfully"
 msgstr "清除成功"
 msgstr "清除成功"
 
 
+#: src/views/preference/components/TOTP.vue:125
+msgid "Click to copy"
+msgstr "点击复制"
+
 #: src/views/preference/LogrotateSettings.vue:22
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgid "Command"
 msgstr "命令"
 msgstr "命令"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
-#: src/views/site/ngx_conf/LocationEditor.vue:105
-#: src/views/site/ngx_conf/LocationEditor.vue:136
+#: src/views/site/ngx_conf/LocationEditor.vue:103
+#: src/views/site/ngx_conf/LocationEditor.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 msgid "Comments"
 msgid "Comments"
 msgstr "注释"
 msgstr "注释"
@@ -483,8 +483,8 @@ msgid "Connection lost, please refresh the page."
 msgstr "连接中断,请刷新页面。"
 msgstr "连接中断,请刷新页面。"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
-#: src/views/site/ngx_conf/LocationEditor.vue:117
-#: src/views/site/ngx_conf/LocationEditor.vue:145
+#: src/views/site/ngx_conf/LocationEditor.vue:115
+#: src/views/site/ngx_conf/LocationEditor.vue:143
 msgid "Content"
 msgid "Content"
 msgstr "内容"
 msgstr "内容"
 
 
@@ -501,11 +501,11 @@ msgstr "拷贝"
 msgid "Core Upgrade"
 msgid "Core Upgrade"
 msgstr "核心升级"
 msgstr "核心升级"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:305
+#: src/views/dashboard/ServerAnalytic.vue:301
 msgid "CPU Status"
 msgid "CPU Status"
 msgstr "CPU 状态"
 msgstr "CPU 状态"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:199
+#: src/views/dashboard/ServerAnalytic.vue:195
 msgid "CPU:"
 msgid "CPU:"
 msgstr "CPU:"
 msgstr "CPU:"
 
 
@@ -547,11 +547,11 @@ msgstr "DNS 凭证"
 msgid "Credentials"
 msgid "Credentials"
 msgstr "凭证"
 msgstr "凭证"
 
 
-#: src/views/preference/components/TOTP.vue:93
+#: src/views/preference/components/TOTP.vue:75
 msgid "Current account is enabled TOTP."
 msgid "Current account is enabled TOTP."
 msgstr "当前账户已启用 TOTP 验证。"
 msgstr "当前账户已启用 TOTP 验证。"
 
 
-#: src/views/preference/components/TOTP.vue:90
+#: src/views/preference/components/TOTP.vue:73
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "当前用户未启用 TOTP 验证。"
 msgstr "当前用户未启用 TOTP 验证。"
 
 
@@ -713,7 +713,7 @@ msgstr "禁用"
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "禁用成功"
 msgstr "禁用成功"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:370
+#: src/views/dashboard/ServerAnalytic.vue:366
 msgid "Disk IO"
 msgid "Disk IO"
 msgstr "磁盘 IO"
 msgstr "磁盘 IO"
 
 
@@ -876,7 +876,7 @@ msgstr "在%{node_name}中启用%{conf_name}失败"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr "成功启用%{node_name}中的%{conf_name}"
 msgstr "成功启用%{node_name}中的%{conf_name}"
 
 
-#: src/views/preference/components/TOTP.vue:52
+#: src/views/preference/components/TOTP.vue:38
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr "二步验证启用成功"
 msgstr "二步验证启用成功"
 
 
@@ -912,7 +912,7 @@ msgstr "启用成功"
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "启用 TLS"
 msgstr "启用 TLS"
 
 
-#: src/views/preference/components/TOTP.vue:119
+#: src/views/preference/components/TOTP.vue:101
 msgid "Enable TOTP"
 msgid "Enable TOTP"
 msgstr "启用 TOTP"
 msgstr "启用 TOTP"
 
 
@@ -946,7 +946,7 @@ msgid "Environment variables cleaned"
 msgstr "环境变量已清理"
 msgstr "环境变量已清理"
 
 
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
-#: src/views/environment/Environment.vue:33
+#: src/views/environment/Environment.vue:43
 msgid "Environments"
 msgid "Environments"
 msgstr "环境"
 msgstr "环境"
 
 
@@ -1126,7 +1126,7 @@ msgstr ""
 "如果某个 IP 的登录失败次数达到禁用阈值分钟内的最大尝试次数,该 IP 将被禁止登"
 "如果某个 IP 的登录失败次数达到禁用阈值分钟内的最大尝试次数,该 IP 将被禁止登"
 "录一段时间。"
 "录一段时间。"
 
 
-#: src/views/preference/components/TOTP.vue:105
+#: src/views/preference/components/TOTP.vue:87
 msgid ""
 msgid ""
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "2FA."
 "2FA."
@@ -1163,12 +1163,12 @@ msgstr "初始化核心升级程序错误"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "初始化核心升级器"
 msgstr "初始化核心升级器"
 
 
-#: src/views/preference/components/TOTP.vue:152
+#: src/views/preference/components/TOTP.vue:134
 msgid "Input the code from the app:"
 msgid "Input the code from the app:"
 msgstr "输入应用程序中的代码:"
 msgstr "输入应用程序中的代码:"
 
 
 #: src/components/TwoFA/Authorization.vue:82
 #: src/components/TwoFA/Authorization.vue:82
-#: src/views/preference/components/TOTP.vue:165
+#: src/views/preference/components/TOTP.vue:148
 msgid "Input the recovery code:"
 msgid "Input the recovery code:"
 msgstr "输入恢复代码:"
 msgstr "输入恢复代码:"
 
 
@@ -1284,15 +1284,15 @@ msgstr "链接"
 msgid "List"
 msgid "List"
 msgstr "列表"
 msgstr "列表"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:187
+#: src/views/dashboard/ServerAnalytic.vue:183
 msgid "Load Average:"
 msgid "Load Average:"
 msgstr "系统负载:"
 msgstr "系统负载:"
 
 
-#: src/views/environment/Environment.vue:39
+#: src/views/environment/Environment.vue:49
 msgid "Load from settings"
 msgid "Load from settings"
 msgstr "从设置中加载"
 msgstr "从设置中加载"
 
 
-#: src/views/environment/Environment.vue:13
+#: src/views/environment/Environment.vue:17
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "加载成功"
 msgstr "加载成功"
 
 
@@ -1301,7 +1301,7 @@ msgstr "加载成功"
 msgid "Local"
 msgid "Local"
 msgstr "本地"
 msgstr "本地"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:69
+#: src/views/site/ngx_conf/LocationEditor.vue:68
 msgid "Location"
 msgid "Location"
 msgstr "Location"
 msgstr "Location"
 
 
@@ -1376,12 +1376,12 @@ msgstr "托管证书"
 msgid "Max Attempts"
 msgid "Max Attempts"
 msgstr "最大尝试次数"
 msgstr "最大尝试次数"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:226
-#: src/views/dashboard/ServerAnalytic.vue:227
+#: src/views/dashboard/ServerAnalytic.vue:222
+#: src/views/dashboard/ServerAnalytic.vue:223
 msgid "Memory"
 msgid "Memory"
 msgstr "内存"
 msgstr "内存"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:216
+#: src/views/dashboard/ServerAnalytic.vue:212
 msgid "Memory and Storage"
 msgid "Memory and Storage"
 msgstr "内存与存储"
 msgstr "内存与存储"
 
 
@@ -1435,19 +1435,19 @@ msgstr "多行指令"
 msgid "Name"
 msgid "Name"
 msgstr "名称"
 msgstr "名称"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:331
+#: src/views/dashboard/ServerAnalytic.vue:327
 msgid "Network"
 msgid "Network"
 msgstr "网络"
 msgstr "网络"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:273
+#: src/views/dashboard/ServerAnalytic.vue:269
 msgid "Network Statistics"
 msgid "Network Statistics"
 msgstr "流量统计"
 msgstr "流量统计"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:280
+#: src/views/dashboard/ServerAnalytic.vue:276
 msgid "Network Total Receive"
 msgid "Network Total Receive"
 msgstr "下载流量"
 msgstr "下载流量"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:286
+#: src/views/dashboard/ServerAnalytic.vue:282
 msgid "Network Total Send"
 msgid "Network Total Send"
 msgstr "上传流量"
 msgstr "上传流量"
 
 
@@ -1561,7 +1561,7 @@ msgstr "Nginx 重启成功"
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/CertSettings.vue:70
 #: src/views/preference/CertSettings.vue:70
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
-#: src/views/site/ngx_conf/LocationEditor.vue:90
+#: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/stream/StreamList.vue:163
 #: src/views/stream/StreamList.vue:163
 msgid "No"
 msgid "No"
@@ -1673,6 +1673,10 @@ msgstr "OpenAI"
 msgid "Or"
 msgid "Or"
 msgstr "或"
 msgstr "或"
 
 
+#: src/views/preference/components/TOTP.vue:127
+msgid "Or enter the secret: %{secret}"
+msgstr "或输入密钥:%{secret}"
+
 #: src/views/config/components/Rename.vue:68
 #: src/views/config/components/Rename.vue:68
 msgid "Original name"
 msgid "Original name"
 msgstr "原名"
 msgstr "原名"
@@ -1681,7 +1685,7 @@ msgstr "原名"
 msgid "OS"
 msgid "OS"
 msgstr "OS"
 msgstr "OS"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:193
+#: src/views/dashboard/ServerAnalytic.vue:189
 msgid "OS:"
 msgid "OS:"
 msgstr "OS:"
 msgstr "OS:"
 
 
@@ -1733,8 +1737,8 @@ msgid "Password length cannot exceed 20 characters"
 msgstr "密码长度不能超过 20 个字符"
 msgstr "密码长度不能超过 20 个字符"
 
 
 #: src/views/config/ConfigEditor.vue:263
 #: src/views/config/ConfigEditor.vue:263
-#: src/views/site/ngx_conf/LocationEditor.vue:111
-#: src/views/site/ngx_conf/LocationEditor.vue:139
+#: src/views/site/ngx_conf/LocationEditor.vue:109
+#: src/views/site/ngx_conf/LocationEditor.vue:137
 msgid "Path"
 msgid "Path"
 msgstr "路径"
 msgstr "路径"
 
 
@@ -1828,7 +1832,7 @@ msgid ""
 "Please note that the unit of time configurations below are all in seconds."
 "Please note that the unit of time configurations below are all in seconds."
 msgstr "请注意,下面的时间单位配置均以秒为单位。"
 msgstr "请注意,下面的时间单位配置均以秒为单位。"
 
 
-#: src/views/environment/Environment.vue:48
+#: src/views/environment/Environment.vue:58
 msgid "Please select at least one node to upgrade"
 msgid "Please select at least one node to upgrade"
 msgstr "请至少选择一个节点进行升级"
 msgstr "请至少选择一个节点进行升级"
 
 
@@ -1885,11 +1889,11 @@ msgid "Public Security Number"
 msgstr "公安备案号"
 msgstr "公安备案号"
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:387
+#: src/views/dashboard/ServerAnalytic.vue:383
 msgid "Reads"
 msgid "Reads"
 msgstr "读"
 msgstr "读"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:338
+#: src/views/dashboard/ServerAnalytic.vue:334
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Receive"
 msgid "Receive"
 msgstr "下载"
 msgstr "下载"
@@ -1908,15 +1912,15 @@ msgid "Recovered Successfully"
 msgstr "恢复成功"
 msgstr "恢复成功"
 
 
 #: src/components/TwoFA/Authorization.vue:89
 #: src/components/TwoFA/Authorization.vue:89
-#: src/views/preference/components/TOTP.vue:172
+#: src/views/preference/components/TOTP.vue:155
 msgid "Recovery"
 msgid "Recovery"
 msgstr "恢复"
 msgstr "恢复"
 
 
-#: src/views/preference/components/TOTP.vue:98
+#: src/views/preference/components/TOTP.vue:80
 msgid "Recovery Code"
 msgid "Recovery Code"
 msgstr "恢复代码"
 msgstr "恢复代码"
 
 
-#: src/views/preference/components/TOTP.vue:107
+#: src/views/preference/components/TOTP.vue:89
 msgid "Recovery Code:"
 msgid "Recovery Code:"
 msgstr "恢复代码:"
 msgstr "恢复代码:"
 
 
@@ -2081,7 +2085,7 @@ msgstr "请求参数错误"
 msgid "Reset"
 msgid "Reset"
 msgstr "重置"
 msgstr "重置"
 
 
-#: src/views/preference/components/TOTP.vue:127
+#: src/views/preference/components/TOTP.vue:109
 msgid "Reset 2FA"
 msgid "Reset 2FA"
 msgstr "重置二步验证"
 msgstr "重置二步验证"
 
 
@@ -2168,7 +2172,7 @@ msgstr "保存成功"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "保存成功"
 msgstr "保存成功"
 
 
-#: src/views/preference/components/TOTP.vue:88
+#: src/views/preference/components/TOTP.vue:72
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr "用手机扫描二维码,将账户添加到应用程序中。"
 msgstr "用手机扫描二维码,将账户添加到应用程序中。"
 
 
@@ -2176,7 +2180,7 @@ msgstr "用手机扫描二维码,将账户添加到应用程序中。"
 msgid "SDK"
 msgid "SDK"
 msgstr "SDK"
 msgstr "SDK"
 
 
-#: src/views/preference/components/TOTP.vue:144
+#: src/views/preference/components/TOTP.vue:124
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr "密钥已复制"
 msgstr "密钥已复制"
 
 
@@ -2188,12 +2192,12 @@ msgstr "选择器"
 msgid "Self Check"
 msgid "Self Check"
 msgstr "自我检查"
 msgstr "自我检查"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:348
+#: src/views/dashboard/ServerAnalytic.vue:344
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Send"
 msgid "Send"
 msgstr "上传"
 msgstr "上传"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:179
+#: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgid "Server Info"
 msgstr "服务器信息"
 msgstr "服务器信息"
 
 
@@ -2328,8 +2332,8 @@ msgstr "状态"
 msgid "Stopped"
 msgid "Stopped"
 msgstr "已停止"
 msgstr "已停止"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:254
-#: src/views/dashboard/ServerAnalytic.vue:255
+#: src/views/dashboard/ServerAnalytic.vue:250
+#: src/views/dashboard/ServerAnalytic.vue:251
 msgid "Storage"
 msgid "Storage"
 msgstr "存储"
 msgstr "存储"
 
 
@@ -2359,8 +2363,8 @@ msgstr ""
 "支持通过 WebSocket 协议与后端通信,如果您正在使用 Nginx 反向代理了 Nginx UI "
 "支持通过 WebSocket 协议与后端通信,如果您正在使用 Nginx 反向代理了 Nginx UI "
 "请参考:https://nginxui.com/guide/nginx-proxy-example.html 编写配置文件"
 "请参考:https://nginxui.com/guide/nginx-proxy-example.html 编写配置文件"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:240
-#: src/views/dashboard/ServerAnalytic.vue:241
+#: src/views/dashboard/ServerAnalytic.vue:236
+#: src/views/dashboard/ServerAnalytic.vue:237
 msgid "Swap"
 msgid "Swap"
 msgstr "Swap"
 msgstr "Swap"
 
 
@@ -2519,7 +2523,7 @@ msgid ""
 "hyphens, dashes, colons, and dots."
 "hyphens, dashes, colons, and dots."
 msgstr "公安备案号只能包含字母、单码、数字、连字符、破折号、冒号和点。"
 msgstr "公安备案号只能包含字母、单码、数字、连字符、破折号、冒号和点。"
 
 
-#: src/views/preference/components/TOTP.vue:106
+#: src/views/preference/components/TOTP.vue:88
 msgid ""
 msgid ""
 "The recovery code is only displayed once, please save it in a safe place."
 "The recovery code is only displayed once, please save it in a safe place."
 msgstr "恢复密码只会显示一次,请妥善保存。"
 msgstr "恢复密码只会显示一次,请妥善保存。"
@@ -2608,7 +2612,7 @@ msgstr "提示"
 msgid "Title"
 msgid "Title"
 msgstr "标题"
 msgstr "标题"
 
 
-#: src/views/preference/components/TOTP.vue:87
+#: src/views/preference/components/TOTP.vue:71
 msgid ""
 msgid ""
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "on your mobile phone."
 "on your mobile phone."
@@ -2652,11 +2656,11 @@ msgid "Total %{total} item"
 msgid_plural "Total %{total} items"
 msgid_plural "Total %{total} items"
 msgstr[0] "共 %{total} 个项目"
 msgstr[0] "共 %{total} 个项目"
 
 
-#: src/views/preference/components/TOTP.vue:85
+#: src/views/preference/components/TOTP.vue:69
 msgid "TOTP"
 msgid "TOTP"
 msgstr "TOTP"
 msgstr "TOTP"
 
 
-#: src/views/preference/components/TOTP.vue:86
+#: src/views/preference/components/TOTP.vue:70
 msgid ""
 msgid ""
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "password algorithm."
 "password algorithm."
@@ -2695,7 +2699,7 @@ msgstr "修改时间"
 msgid "Updated successfully"
 msgid "Updated successfully"
 msgstr "更新成功"
 msgstr "更新成功"
 
 
-#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
+#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 msgid "Upgrade"
 msgid "Upgrade"
 msgstr "升级"
 msgstr "升级"
@@ -2716,7 +2720,7 @@ msgstr "正在升级 Nginx UI,请等待..."
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr "Upstream 名称"
 msgstr "Upstream 名称"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:183
+#: src/views/dashboard/ServerAnalytic.vue:179
 msgid "Uptime:"
 msgid "Uptime:"
 msgstr "运行时间:"
 msgstr "运行时间:"
 
 
@@ -2825,7 +2829,7 @@ msgstr ""
 "操作。"
 "操作。"
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:377
+#: src/views/dashboard/ServerAnalytic.vue:373
 msgid "Writes"
 msgid "Writes"
 msgstr "写"
 msgstr "写"
 
 
@@ -2840,7 +2844,7 @@ msgstr "正在将证书写入磁盘"
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/CertSettings.vue:69
 #: src/views/preference/CertSettings.vue:69
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
-#: src/views/site/ngx_conf/LocationEditor.vue:89
+#: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"
 msgid "Yes"
 msgstr "是的"
 msgstr "是的"
 
 
@@ -2862,6 +2866,9 @@ msgstr "您尚未配置 Webauthn 的设置,因此无法添加 Passkey。"
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr "你的 Passkeys"
 msgstr "你的 Passkeys"
 
 
+#~ msgid "Can't scan? Use text key binding"
+#~ msgstr "无法扫描?使用文本密钥绑定"
+
 #~ msgid "Directory"
 #~ msgid "Directory"
 #~ msgstr "目录"
 #~ msgstr "目录"
 
 

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

@@ -76,8 +76,8 @@ msgstr "添加配置"
 msgid "Add Directive Below"
 msgid "Add Directive Below"
 msgstr "在下方新增指令"
 msgstr "在下方新增指令"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:132
-#: src/views/site/ngx_conf/LocationEditor.vue:159
+#: src/views/site/ngx_conf/LocationEditor.vue:130
+#: src/views/site/ngx_conf/LocationEditor.vue:157
 msgid "Add Location"
 msgid "Add Location"
 msgstr "新增 Location"
 msgstr "新增 Location"
 
 
@@ -192,7 +192,7 @@ msgstr "您確定要刪除這條指令嗎?"
 msgid "Are you sure you want to remove this item?"
 msgid "Are you sure you want to remove this item?"
 msgstr "您確定要刪除此項目嗎?"
 msgstr "您確定要刪除此項目嗎?"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:88
+#: src/views/site/ngx_conf/LocationEditor.vue:86
 msgid "Are you sure you want to remove this location?"
 msgid "Are you sure you want to remove this location?"
 msgstr "您確定要刪除此 Location 嗎?"
 msgstr "您確定要刪除此 Location 嗎?"
 
 
@@ -319,10 +319,6 @@ msgstr "CA Dir"
 msgid "CADir"
 msgid "CADir"
 msgstr "CADir"
 msgstr "CADir"
 
 
-#: src/views/preference/components/TOTP.vue:145
-msgid "Can't scan? Use text key binding"
-msgstr ""
-
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:246
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:187
@@ -377,7 +373,7 @@ msgid "Certificate Renewal Interval"
 msgstr "憑證更新間隔"
 msgstr "憑證更新間隔"
 
 
 #: src/views/certificate/CertificateEditor.vue:128
 #: src/views/certificate/CertificateEditor.vue:128
-#: src/views/site/cert/Cert.vue:32
+#: src/views/site/cert/Cert.vue:33
 msgid "Certificate Status"
 msgid "Certificate Status"
 msgid_plural "Certificates Status"
 msgid_plural "Certificates Status"
 msgstr[0] "憑證狀態"
 msgstr[0] "憑證狀態"
@@ -400,7 +396,7 @@ msgstr "驗證方式"
 msgid "Change Certificate"
 msgid "Change Certificate"
 msgstr "更換憑證"
 msgstr "更換憑證"
 
 
-#: src/views/site/cert/Cert.vue:51
+#: src/views/site/cert/Cert.vue:52
 msgid "Changed Certificate"
 msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
 msgstr[0] "變更後憑證"
 msgstr[0] "變更後憑證"
@@ -456,13 +452,17 @@ msgstr "清除"
 msgid "Cleared successfully"
 msgid "Cleared successfully"
 msgstr "清除成功"
 msgstr "清除成功"
 
 
+#: src/views/preference/components/TOTP.vue:125
+msgid "Click to copy"
+msgstr ""
+
 #: src/views/preference/LogrotateSettings.vue:22
 #: src/views/preference/LogrotateSettings.vue:22
 msgid "Command"
 msgid "Command"
 msgstr "命令"
 msgstr "命令"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:113
-#: src/views/site/ngx_conf/LocationEditor.vue:105
-#: src/views/site/ngx_conf/LocationEditor.vue:136
+#: src/views/site/ngx_conf/LocationEditor.vue:103
+#: src/views/site/ngx_conf/LocationEditor.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 #: src/views/site/ngx_conf/NgxServer.vue:134
 msgid "Comments"
 msgid "Comments"
 msgstr "備註"
 msgstr "備註"
@@ -496,8 +496,8 @@ msgid "Connection lost, please refresh the page."
 msgstr "連接丟失,請重新整理。"
 msgstr "連接丟失,請重新整理。"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:118
-#: src/views/site/ngx_conf/LocationEditor.vue:117
-#: src/views/site/ngx_conf/LocationEditor.vue:145
+#: src/views/site/ngx_conf/LocationEditor.vue:115
+#: src/views/site/ngx_conf/LocationEditor.vue:143
 msgid "Content"
 msgid "Content"
 msgstr "內容"
 msgstr "內容"
 
 
@@ -514,11 +514,11 @@ msgstr "複製"
 msgid "Core Upgrade"
 msgid "Core Upgrade"
 msgstr "核心升級"
 msgstr "核心升級"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:305
+#: src/views/dashboard/ServerAnalytic.vue:301
 msgid "CPU Status"
 msgid "CPU Status"
 msgstr "中央處理器狀態"
 msgstr "中央處理器狀態"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:199
+#: src/views/dashboard/ServerAnalytic.vue:195
 msgid "CPU:"
 msgid "CPU:"
 msgstr "中央處理器:"
 msgstr "中央處理器:"
 
 
@@ -560,12 +560,12 @@ msgstr "認證"
 msgid "Credentials"
 msgid "Credentials"
 msgstr "認證資訊"
 msgstr "認證資訊"
 
 
-#: src/views/preference/components/TOTP.vue:93
+#: src/views/preference/components/TOTP.vue:75
 #, fuzzy
 #, fuzzy
 msgid "Current account is enabled TOTP."
 msgid "Current account is enabled TOTP."
 msgstr "當前帳戶已啟用多因素身份驗證。"
 msgstr "當前帳戶已啟用多因素身份驗證。"
 
 
-#: src/views/preference/components/TOTP.vue:90
+#: src/views/preference/components/TOTP.vue:73
 #, fuzzy
 #, fuzzy
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "當前帳戶未啟用多因素身份驗證。"
 msgstr "當前帳戶未啟用多因素身份驗證。"
@@ -675,8 +675,9 @@ msgid "Directive"
 msgstr "指令"
 msgstr "指令"
 
 
 #: src/constants/errors/nginx_log.ts:6
 #: src/constants/errors/nginx_log.ts:6
+#, fuzzy
 msgid "Directive params is empty"
 msgid "Directive params is empty"
-msgstr ""
+msgstr "檔名空白"
 
 
 #: src/constants/errors/nginx_log.ts:5
 #: src/constants/errors/nginx_log.ts:5
 msgid "Directive.Params neither access_log nor error_log"
 msgid "Directive.Params neither access_log nor error_log"
@@ -735,7 +736,7 @@ msgstr "停用"
 msgid "Disabled successfully"
 msgid "Disabled successfully"
 msgstr "成功停用"
 msgstr "成功停用"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:370
+#: src/views/dashboard/ServerAnalytic.vue:366
 msgid "Disk IO"
 msgid "Disk IO"
 msgstr "磁碟 IO"
 msgstr "磁碟 IO"
 
 
@@ -828,8 +829,9 @@ msgstr "試運轉模式已啟用"
 msgid ""
 msgid ""
 "Due to the security policies of some browsers, you cannot use passkeys on "
 "Due to the security policies of some browsers, you cannot use passkeys on "
 "non-HTTPS websites, except when running on localhost."
 "non-HTTPS websites, except when running on localhost."
-msgstr "基於部分瀏覽器的安全政策,您無法在未啟用 HTTPS 網站,特別是 localhost "
-"上使用通行密鑰。"
+msgstr ""
+"基於部分瀏覽器的安全政策,您無法在未啟用 HTTPS 網站,特別是 localhost 上使用"
+"通行密鑰。"
 
 
 #: src/views/site/site_list/SiteDuplicate.vue:72
 #: src/views/site/site_list/SiteDuplicate.vue:72
 #: src/views/site/site_list/SiteList.vue:140
 #: src/views/site/site_list/SiteList.vue:140
@@ -898,7 +900,7 @@ msgstr "在 %{node_name} 啟用 %{conf_name} 失敗"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgid "Enable %{conf_name} in %{node_name} successfully"
 msgstr "成功在 %{node_name} 啟用 %{conf_name}"
 msgstr "成功在 %{node_name} 啟用 %{conf_name}"
 
 
-#: src/views/preference/components/TOTP.vue:52
+#: src/views/preference/components/TOTP.vue:38
 msgid "Enable 2FA successfully"
 msgid "Enable 2FA successfully"
 msgstr "啟用多因素身份驗證成功"
 msgstr "啟用多因素身份驗證成功"
 
 
@@ -938,7 +940,7 @@ msgstr "啟用成功"
 msgid "Enable TLS"
 msgid "Enable TLS"
 msgstr "啟用 TLS"
 msgstr "啟用 TLS"
 
 
-#: src/views/preference/components/TOTP.vue:119
+#: src/views/preference/components/TOTP.vue:101
 #, fuzzy
 #, fuzzy
 msgid "Enable TOTP"
 msgid "Enable TOTP"
 msgstr "啟用 TLS"
 msgstr "啟用 TLS"
@@ -973,7 +975,7 @@ msgid "Environment variables cleaned"
 msgstr "環境變數已清理"
 msgstr "環境變數已清理"
 
 
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
 #: src/routes/index.ts:234 src/views/dashboard/Environments.vue:83
-#: src/views/environment/Environment.vue:33
+#: src/views/environment/Environment.vue:43
 msgid "Environments"
 msgid "Environments"
 msgstr "環境"
 msgstr "環境"
 
 
@@ -1031,8 +1033,9 @@ msgid "Failed to get certificate information"
 msgstr "取得憑證資訊失敗"
 msgstr "取得憑證資訊失敗"
 
 
 #: src/constants/errors/self_check.ts:4
 #: src/constants/errors/self_check.ts:4
+#, fuzzy
 msgid "Failed to parse nginx.conf"
 msgid "Failed to parse nginx.conf"
-msgstr ""
+msgstr "讀取 nginx.conf 失敗"
 
 
 #: src/constants/errors/self_check.ts:3
 #: src/constants/errors/self_check.ts:3
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
@@ -1154,7 +1157,7 @@ msgstr ""
 "如果來自某個 IP 的登錄失敗次數在禁止閾值分鐘內達到最大嘗試次數,該 IP 將被禁"
 "如果來自某個 IP 的登錄失敗次數在禁止閾值分鐘內達到最大嘗試次數,該 IP 將被禁"
 "止一段時間。"
 "止一段時間。"
 
 
-#: src/views/preference/components/TOTP.vue:105
+#: src/views/preference/components/TOTP.vue:87
 msgid ""
 msgid ""
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "If you lose your mobile phone, you can use the recovery code to reset your "
 "2FA."
 "2FA."
@@ -1191,12 +1194,12 @@ msgstr "初始化核心升級程式錯誤"
 msgid "Initialing core upgrader"
 msgid "Initialing core upgrader"
 msgstr "正在初始化核心升級程式"
 msgstr "正在初始化核心升級程式"
 
 
-#: src/views/preference/components/TOTP.vue:152
+#: src/views/preference/components/TOTP.vue:134
 msgid "Input the code from the app:"
 msgid "Input the code from the app:"
 msgstr "請輸入應用程式中的代碼:"
 msgstr "請輸入應用程式中的代碼:"
 
 
 #: src/components/TwoFA/Authorization.vue:82
 #: src/components/TwoFA/Authorization.vue:82
-#: src/views/preference/components/TOTP.vue:165
+#: src/views/preference/components/TOTP.vue:148
 msgid "Input the recovery code:"
 msgid "Input the recovery code:"
 msgstr "輸入恢復碼:"
 msgstr "輸入恢復碼:"
 
 
@@ -1317,15 +1320,15 @@ msgstr "連結開始"
 msgid "List"
 msgid "List"
 msgstr "列表"
 msgstr "列表"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:187
+#: src/views/dashboard/ServerAnalytic.vue:183
 msgid "Load Average:"
 msgid "Load Average:"
 msgstr "負載平均值:"
 msgstr "負載平均值:"
 
 
-#: src/views/environment/Environment.vue:39
+#: src/views/environment/Environment.vue:49
 msgid "Load from settings"
 msgid "Load from settings"
 msgstr "從設置加載"
 msgstr "從設置加載"
 
 
-#: src/views/environment/Environment.vue:13
+#: src/views/environment/Environment.vue:17
 msgid "Load successfully"
 msgid "Load successfully"
 msgstr "加載成功"
 msgstr "加載成功"
 
 
@@ -1334,7 +1337,7 @@ msgstr "加載成功"
 msgid "Local"
 msgid "Local"
 msgstr "本機"
 msgstr "本機"
 
 
-#: src/views/site/ngx_conf/LocationEditor.vue:69
+#: src/views/site/ngx_conf/LocationEditor.vue:68
 msgid "Location"
 msgid "Location"
 msgstr "Location"
 msgstr "Location"
 
 
@@ -1408,12 +1411,12 @@ msgstr "受管理的憑證"
 msgid "Max Attempts"
 msgid "Max Attempts"
 msgstr "最大嘗試次數"
 msgstr "最大嘗試次數"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:226
-#: src/views/dashboard/ServerAnalytic.vue:227
+#: src/views/dashboard/ServerAnalytic.vue:222
+#: src/views/dashboard/ServerAnalytic.vue:223
 msgid "Memory"
 msgid "Memory"
 msgstr "記憶體"
 msgstr "記憶體"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:216
+#: src/views/dashboard/ServerAnalytic.vue:212
 msgid "Memory and Storage"
 msgid "Memory and Storage"
 msgstr "記憶體與儲存"
 msgstr "記憶體與儲存"
 
 
@@ -1467,19 +1470,19 @@ msgstr "多行指令"
 msgid "Name"
 msgid "Name"
 msgstr "名稱"
 msgstr "名稱"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:331
+#: src/views/dashboard/ServerAnalytic.vue:327
 msgid "Network"
 msgid "Network"
 msgstr "網路"
 msgstr "網路"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:273
+#: src/views/dashboard/ServerAnalytic.vue:269
 msgid "Network Statistics"
 msgid "Network Statistics"
 msgstr "網路統計"
 msgstr "網路統計"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:280
+#: src/views/dashboard/ServerAnalytic.vue:276
 msgid "Network Total Receive"
 msgid "Network Total Receive"
 msgstr "下載流量"
 msgstr "下載流量"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:286
+#: src/views/dashboard/ServerAnalytic.vue:282
 msgid "Network Total Send"
 msgid "Network Total Send"
 msgstr "上傳流量"
 msgstr "上傳流量"
 
 
@@ -1560,8 +1563,9 @@ msgid "Nginx Log"
 msgstr "Nginx 日誌"
 msgstr "Nginx 日誌"
 
 
 #: src/views/preference/NginxSettings.vue:18
 #: src/views/preference/NginxSettings.vue:18
+#, fuzzy
 msgid "Nginx Log Directory Whitelist"
 msgid "Nginx Log Directory Whitelist"
-msgstr ""
+msgstr "Nginx 設定解析錯誤"
 
 
 #: src/views/preference/NginxSettings.vue:27
 #: src/views/preference/NginxSettings.vue:27
 #, fuzzy
 #, fuzzy
@@ -1569,8 +1573,9 @@ msgid "Nginx PID Path"
 msgstr "Nginx 錯誤日誌路徑"
 msgstr "Nginx 錯誤日誌路徑"
 
 
 #: src/views/preference/NginxSettings.vue:30
 #: src/views/preference/NginxSettings.vue:30
+#, fuzzy
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
-msgstr ""
+msgstr "終端機啟動指令"
 
 
 #: src/components/NginxControl/NginxControl.vue:26
 #: src/components/NginxControl/NginxControl.vue:26
 msgid "Nginx reloaded successfully"
 msgid "Nginx reloaded successfully"
@@ -1596,7 +1601,7 @@ msgstr "Nginx 重啟成功"
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/AuthSettings.vue:136
 #: src/views/preference/CertSettings.vue:70
 #: src/views/preference/CertSettings.vue:70
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:97
-#: src/views/site/ngx_conf/LocationEditor.vue:90
+#: src/views/site/ngx_conf/LocationEditor.vue:88
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/site/site_list/SiteList.vue:143
 #: src/views/stream/StreamList.vue:163
 #: src/views/stream/StreamList.vue:163
 msgid "No"
 msgid "No"
@@ -1709,6 +1714,10 @@ msgstr "OpenAI"
 msgid "Or"
 msgid "Or"
 msgstr "或"
 msgstr "或"
 
 
+#: src/views/preference/components/TOTP.vue:127
+msgid "Or enter the secret: %{secret}"
+msgstr ""
+
 #: src/views/config/components/Rename.vue:68
 #: src/views/config/components/Rename.vue:68
 msgid "Original name"
 msgid "Original name"
 msgstr "原始名稱"
 msgstr "原始名稱"
@@ -1717,7 +1726,7 @@ msgstr "原始名稱"
 msgid "OS"
 msgid "OS"
 msgstr "作業系統"
 msgstr "作業系統"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:193
+#: src/views/dashboard/ServerAnalytic.vue:189
 msgid "OS:"
 msgid "OS:"
 msgstr "作業系統:"
 msgstr "作業系統:"
 
 
@@ -1769,14 +1778,15 @@ msgid "Password length cannot exceed 20 characters"
 msgstr "密碼長度不能超過 20 個字元"
 msgstr "密碼長度不能超過 20 個字元"
 
 
 #: src/views/config/ConfigEditor.vue:263
 #: src/views/config/ConfigEditor.vue:263
-#: src/views/site/ngx_conf/LocationEditor.vue:111
-#: src/views/site/ngx_conf/LocationEditor.vue:139
+#: src/views/site/ngx_conf/LocationEditor.vue:109
+#: src/views/site/ngx_conf/LocationEditor.vue:137
 msgid "Path"
 msgid "Path"
 msgstr "路徑"
 msgstr "路徑"
 
 
 #: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2
 #: src/constants/errors/cert.ts:7 src/constants/errors/config.ts:2
+#, fuzzy
 msgid "Path: {0} is not under the nginx conf dir: {1}"
 msgid "Path: {0} is not under the nginx conf dir: {1}"
-msgstr ""
+msgstr "簽章路徑不在 Nginx 設定檔資料夾下"
 
 
 #: src/constants/errors/cert.ts:6
 #: src/constants/errors/cert.ts:6
 msgid "Payload resource is nil"
 msgid "Payload resource is nil"
@@ -1795,8 +1805,9 @@ msgid "Performing core upgrade"
 msgstr "正在執行核心升級"
 msgstr "正在執行核心升級"
 
 
 #: src/constants/errors/crypto.ts:2
 #: src/constants/errors/crypto.ts:2
+#, fuzzy
 msgid "Plain text is empty"
 msgid "Plain text is empty"
-msgstr ""
+msgstr "檔名空白"
 
 
 #: src/views/preference/components/AddPasskey.vue:69
 #: src/views/preference/components/AddPasskey.vue:69
 msgid ""
 msgid ""
@@ -1866,7 +1877,7 @@ msgid ""
 "Please note that the unit of time configurations below are all in seconds."
 "Please note that the unit of time configurations below are all in seconds."
 msgstr "請注意,以下時間配置單位均為秒。"
 msgstr "請注意,以下時間配置單位均為秒。"
 
 
-#: src/views/environment/Environment.vue:48
+#: src/views/environment/Environment.vue:58
 #, fuzzy
 #, fuzzy
 msgid "Please select at least one node to upgrade"
 msgid "Please select at least one node to upgrade"
 msgstr "請至少選擇一個節點!"
 msgstr "請至少選擇一個節點!"
@@ -1927,11 +1938,11 @@ msgid "Public Security Number"
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:387
+#: src/views/dashboard/ServerAnalytic.vue:383
 msgid "Reads"
 msgid "Reads"
 msgstr "讀取"
 msgstr "讀取"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:338
+#: src/views/dashboard/ServerAnalytic.vue:334
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Receive"
 msgid "Receive"
 msgstr "接收"
 msgstr "接收"
@@ -1950,15 +1961,15 @@ msgid "Recovered Successfully"
 msgstr "恢復成功"
 msgstr "恢復成功"
 
 
 #: src/components/TwoFA/Authorization.vue:89
 #: src/components/TwoFA/Authorization.vue:89
-#: src/views/preference/components/TOTP.vue:172
+#: src/views/preference/components/TOTP.vue:155
 msgid "Recovery"
 msgid "Recovery"
 msgstr "恢復"
 msgstr "恢復"
 
 
-#: src/views/preference/components/TOTP.vue:98
+#: src/views/preference/components/TOTP.vue:80
 msgid "Recovery Code"
 msgid "Recovery Code"
 msgstr "恢復碼"
 msgstr "恢復碼"
 
 
-#: src/views/preference/components/TOTP.vue:107
+#: src/views/preference/components/TOTP.vue:89
 msgid "Recovery Code:"
 msgid "Recovery Code:"
 msgstr "恢復碼:"
 msgstr "恢復碼:"
 
 
@@ -2132,7 +2143,7 @@ msgstr "請求參數錯誤"
 msgid "Reset"
 msgid "Reset"
 msgstr "重設"
 msgstr "重設"
 
 
-#: src/views/preference/components/TOTP.vue:127
+#: src/views/preference/components/TOTP.vue:109
 msgid "Reset 2FA"
 msgid "Reset 2FA"
 msgstr "重置多重因素驗證"
 msgstr "重置多重因素驗證"
 
 
@@ -2223,7 +2234,7 @@ msgstr "儲存成功"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "儲存成功"
 msgstr "儲存成功"
 
 
-#: src/views/preference/components/TOTP.vue:88
+#: src/views/preference/components/TOTP.vue:72
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr "用手機掃描二維碼將賬戶添加到應用程序中。"
 msgstr "用手機掃描二維碼將賬戶添加到應用程序中。"
 
 
@@ -2231,7 +2242,7 @@ msgstr "用手機掃描二維碼將賬戶添加到應用程序中。"
 msgid "SDK"
 msgid "SDK"
 msgstr "SDK"
 msgstr "SDK"
 
 
-#: src/views/preference/components/TOTP.vue:144
+#: src/views/preference/components/TOTP.vue:124
 msgid "Secret has been copied"
 msgid "Secret has been copied"
 msgstr ""
 msgstr ""
 
 
@@ -2243,12 +2254,12 @@ msgstr "選擇器"
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:348
+#: src/views/dashboard/ServerAnalytic.vue:344
 #: src/views/dashboard/ServerAnalytic.vue:35
 #: src/views/dashboard/ServerAnalytic.vue:35
 msgid "Send"
 msgid "Send"
 msgstr "傳送"
 msgstr "傳送"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:179
+#: src/views/dashboard/ServerAnalytic.vue:175
 msgid "Server Info"
 msgid "Server Info"
 msgstr "伺服器資訊"
 msgstr "伺服器資訊"
 
 
@@ -2289,14 +2300,14 @@ msgstr "使用 HTTP01 挑戰提供者"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://"
-"nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SensitiveString/SensitiveString.vue:40
 #: src/components/SensitiveString/SensitiveString.vue:40
@@ -2304,16 +2315,18 @@ msgid "Show"
 msgstr "顯示"
 msgstr "顯示"
 
 
 #: src/views/other/Login.vue:240
 #: src/views/other/Login.vue:240
+#, fuzzy
 msgid "Sign in with a passkey"
 msgid "Sign in with a passkey"
-msgstr ""
+msgstr "使用通行密鑰認證"
 
 
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:65
 #: src/views/site/ngx_conf/directive/DirectiveAdd.vue:65
 msgid "Single Directive"
 msgid "Single Directive"
 msgstr "單一指令"
 msgstr "單一指令"
 
 
 #: src/routes/index.ts:71 src/views/site/site_category/SiteCategory.vue:10
 #: src/routes/index.ts:71 src/views/site/site_category/SiteCategory.vue:10
+#, fuzzy
 msgid "Site Categories"
 msgid "Site Categories"
-msgstr ""
+msgstr "類別"
 
 
 #: src/constants/errors/site.ts:4
 #: src/constants/errors/site.ts:4
 #, fuzzy
 #, fuzzy
@@ -2339,12 +2352,14 @@ msgid "Sites List"
 msgstr "網站列表"
 msgstr "網站列表"
 
 
 #: src/constants/errors/self_check.ts:10
 #: src/constants/errors/self_check.ts:10
+#, fuzzy
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
-msgstr ""
+msgstr "目錄"
 
 
 #: src/constants/errors/self_check.ts:11
 #: src/constants/errors/self_check.ts:11
+#, fuzzy
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
-msgstr ""
+msgstr "目錄"
 
 
 #: src/views/certificate/CertificateEditor.vue:211
 #: src/views/certificate/CertificateEditor.vue:211
 msgid "SSL Certificate Content"
 msgid "SSL Certificate Content"
@@ -2383,8 +2398,8 @@ msgstr "狀態"
 msgid "Stopped"
 msgid "Stopped"
 msgstr "已停止"
 msgstr "已停止"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:254
-#: src/views/dashboard/ServerAnalytic.vue:255
+#: src/views/dashboard/ServerAnalytic.vue:250
+#: src/views/dashboard/ServerAnalytic.vue:251
 msgid "Storage"
 msgid "Storage"
 msgstr "儲存空間"
 msgstr "儲存空間"
 
 
@@ -2394,8 +2409,9 @@ msgid "Streams Directory"
 msgstr "目錄"
 msgstr "目錄"
 
 
 #: src/constants/errors/self_check.ts:12
 #: src/constants/errors/self_check.ts:12
+#, fuzzy
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
-msgstr ""
+msgstr "目錄"
 
 
 #: src/constants/errors/self_check.ts:13
 #: src/constants/errors/self_check.ts:13
 #, fuzzy
 #, fuzzy
@@ -2414,8 +2430,8 @@ msgid ""
 "guide/nginx-proxy-example.html"
 "guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
-#: src/views/dashboard/ServerAnalytic.vue:240
-#: src/views/dashboard/ServerAnalytic.vue:241
+#: src/views/dashboard/ServerAnalytic.vue:236
+#: src/views/dashboard/ServerAnalytic.vue:237
 msgid "Swap"
 msgid "Swap"
 msgstr "交換空間"
 msgstr "交換空間"
 
 
@@ -2580,7 +2596,7 @@ msgid ""
 "hyphens, dashes, colons, and dots."
 "hyphens, dashes, colons, and dots."
 msgstr "伺服器名稱應僅包含字母、Unicode、數字、連字符、破折號和點。"
 msgstr "伺服器名稱應僅包含字母、Unicode、數字、連字符、破折號和點。"
 
 
-#: src/views/preference/components/TOTP.vue:106
+#: src/views/preference/components/TOTP.vue:88
 msgid ""
 msgid ""
 "The recovery code is only displayed once, please save it in a safe place."
 "The recovery code is only displayed once, please save it in a safe place."
 msgstr "恢復碼僅顯示一次,請將其保存在安全的地方。"
 msgstr "恢復碼僅顯示一次,請將其保存在安全的地方。"
@@ -2672,7 +2688,7 @@ msgstr "提示"
 msgid "Title"
 msgid "Title"
 msgstr "標題"
 msgstr "標題"
 
 
-#: src/views/preference/components/TOTP.vue:87
+#: src/views/preference/components/TOTP.vue:71
 msgid ""
 msgid ""
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "on your mobile phone."
 "on your mobile phone."
@@ -2712,11 +2728,11 @@ msgid "Total %{total} item"
 msgid_plural "Total %{total} items"
 msgid_plural "Total %{total} items"
 msgstr[0] ""
 msgstr[0] ""
 
 
-#: src/views/preference/components/TOTP.vue:85
+#: src/views/preference/components/TOTP.vue:69
 msgid "TOTP"
 msgid "TOTP"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/components/TOTP.vue:86
+#: src/views/preference/components/TOTP.vue:70
 msgid ""
 msgid ""
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "TOTP is a two-factor authentication method that uses a time-based one-time "
 "password algorithm."
 "password algorithm."
@@ -2756,7 +2772,7 @@ msgstr "更新時間"
 msgid "Updated successfully"
 msgid "Updated successfully"
 msgstr "更新成功"
 msgstr "更新成功"
 
 
-#: src/routes/index.ts:297 src/views/environment/Environment.vue:56
+#: src/routes/index.ts:297 src/views/environment/Environment.vue:66
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 #: src/views/system/Upgrade.vue:143 src/views/system/Upgrade.vue:226
 msgid "Upgrade"
 msgid "Upgrade"
 msgstr "升級"
 msgstr "升級"
@@ -2777,7 +2793,7 @@ msgstr "正在升級 Nginx UI,請稍候..."
 msgid "Upstream Name"
 msgid "Upstream Name"
 msgstr "Upstream 名稱"
 msgstr "Upstream 名稱"
 
 
-#: src/views/dashboard/ServerAnalytic.vue:183
+#: src/views/dashboard/ServerAnalytic.vue:179
 msgid "Uptime:"
 msgid "Uptime:"
 msgstr "運作時間:"
 msgstr "運作時間:"
 
 
@@ -2884,7 +2900,7 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/ServerAnalytic.vue:37
 #: src/views/dashboard/ServerAnalytic.vue:37
-#: src/views/dashboard/ServerAnalytic.vue:377
+#: src/views/dashboard/ServerAnalytic.vue:373
 msgid "Writes"
 msgid "Writes"
 msgstr "寫"
 msgstr "寫"
 
 
@@ -2899,7 +2915,7 @@ msgstr "將憑證寫入磁碟"
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/AuthSettings.vue:135
 #: src/views/preference/CertSettings.vue:69
 #: src/views/preference/CertSettings.vue:69
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
 #: src/views/site/ngx_conf/directive/DirectiveEditorItem.vue:96
-#: src/views/site/ngx_conf/LocationEditor.vue:89
+#: src/views/site/ngx_conf/LocationEditor.vue:87
 msgid "Yes"
 msgid "Yes"
 msgstr "是的"
 msgstr "是的"
 
 
@@ -2918,8 +2934,9 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/Passkey.vue:75
 #: src/views/preference/components/Passkey.vue:75
+#, fuzzy
 msgid "Your passkeys"
 msgid "Your passkeys"
-msgstr ""
+msgstr "新增通行密鑰"
 
 
 #~ msgid "Directory"
 #~ msgid "Directory"
 #~ msgstr "目錄"
 #~ msgstr "目錄"

+ 9 - 9
app/src/views/preference/components/TOTP.vue

@@ -70,7 +70,7 @@ function reset2FA() {
     <p>{{ $gettext('TOTP is a two-factor authentication method that uses a time-based one-time password algorithm.') }}</p>
     <p>{{ $gettext('TOTP is a two-factor authentication method that uses a time-based one-time password algorithm.') }}</p>
     <p>{{ $gettext('To enable it, you need to install the Google or Microsoft Authenticator app on your mobile phone.') }}</p>
     <p>{{ $gettext('To enable it, you need to install the Google or Microsoft Authenticator app on your mobile phone.') }}</p>
     <p>{{ $gettext('Scan the QR code with your mobile phone to add the account to the app.') }}</p>
     <p>{{ $gettext('Scan the QR code with your mobile phone to add the account to the app.') }}</p>
-    <AAlert v-if="!status" type="warning" :message="$gettext('Current account is not enabled TOTP.')" show-icon />
+    <AAlert v-if="!status" type="warning" :message="$gettext('Current account is not enabled TOTP.')" class="mb-2" show-icon />
     <div v-else>
     <div v-else>
       <p><CheckCircleOutlined class="mr-2 text-green-600" />{{ $gettext('Current account is enabled TOTP.') }}</p>
       <p><CheckCircleOutlined class="mr-2 text-green-600" />{{ $gettext('Current account is enabled TOTP.') }}</p>
     </div>
     </div>
@@ -117,15 +117,15 @@ function reset2FA() {
             :value="generatedUrl"
             :value="generatedUrl"
             :size="256"
             :size="256"
           />
           />
-          <div class="w-64 flex justify-center">
+          <div class="w-64 flex justify-center mt-2">
             <UseClipboard v-slot="{ copy, copied }">
             <UseClipboard v-slot="{ copy, copied }">
-              <a
-                class="mr-2"
-                @click="() => copy(secret)"
-              >
-                {{ copied ? $gettext('Secret has been copied')
-                  : $gettext('Can\'t scan? Use text key binding') }}
-              </a>
+              <ATooltip @click="() => copy(secret)">
+                <template #title>
+                  {{ copied ? $gettext('Secret has been copied')
+                    : $gettext('Click to copy') }}
+                </template>
+                {{ $gettext('Or enter the secret: %{secret}', { secret }) }}
+              </ATooltip>
             </UseClipboard>
             </UseClipboard>
           </div>
           </div>
         </div>
         </div>