瀏覽代碼

chore: toasts translation refactoring

Shishkevich D. 13 小時之前
父節點
當前提交
1ddfe4aba3

+ 33 - 33
web/controller/inbound.go

@@ -71,7 +71,7 @@ func (a *InboundController) getClientTraffics(c *gin.Context) {
 	email := c.Param("email")
 	clientTraffics, err := a.inboundService.GetClientTrafficByEmail(email)
 	if err != nil {
-		jsonMsg(c, "Error getting traffics", err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.trafficGetError"), err)
 		return
 	}
 	jsonObj(c, clientTraffics, nil)
@@ -81,7 +81,7 @@ func (a *InboundController) getClientTrafficsById(c *gin.Context) {
 	id := c.Param("id")
 	clientTraffics, err := a.inboundService.GetClientTrafficByID(id)
 	if err != nil {
-		jsonMsg(c, "Error getting traffics", err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.trafficGetError"), err)
 		return
 	}
 	jsonObj(c, clientTraffics, nil)
@@ -91,7 +91,7 @@ func (a *InboundController) addInbound(c *gin.Context) {
 	inbound := &model.Inbound{}
 	err := c.ShouldBind(inbound)
 	if err != nil {
-		jsonMsg(c, I18nWeb(c, "pages.inbounds.create"), err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundCreateSuccess"), err)
 		return
 	}
 	user := session.GetLoginUser(c)
@@ -104,7 +104,7 @@ func (a *InboundController) addInbound(c *gin.Context) {
 
 	needRestart := false
 	inbound, needRestart, err = a.inboundService.AddInbound(inbound)
-	jsonMsgObj(c, I18nWeb(c, "pages.inbounds.create"), inbound, err)
+	jsonMsgObj(c, I18nWeb(c, "pages.inbounds.toasts.inboundCreateSuccess"), inbound, err)
 	if err == nil && needRestart {
 		a.xrayService.SetToNeedRestart()
 	}
@@ -113,12 +113,12 @@ func (a *InboundController) addInbound(c *gin.Context) {
 func (a *InboundController) delInbound(c *gin.Context) {
 	id, err := strconv.Atoi(c.Param("id"))
 	if err != nil {
-		jsonMsg(c, I18nWeb(c, "delete"), err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundDeleteSuccess"), err)
 		return
 	}
 	needRestart := true
 	needRestart, err = a.inboundService.DelInbound(id)
-	jsonMsgObj(c, I18nWeb(c, "delete"), id, err)
+	jsonMsgObj(c, I18nWeb(c, "pages.inbounds.toasts.inboundDeleteSuccess"), id, err)
 	if err == nil && needRestart {
 		a.xrayService.SetToNeedRestart()
 	}
@@ -127,7 +127,7 @@ func (a *InboundController) delInbound(c *gin.Context) {
 func (a *InboundController) updateInbound(c *gin.Context) {
 	id, err := strconv.Atoi(c.Param("id"))
 	if err != nil {
-		jsonMsg(c, I18nWeb(c, "pages.inbounds.update"), err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundUpdateSuccess"), err)
 		return
 	}
 	inbound := &model.Inbound{
@@ -135,12 +135,12 @@ func (a *InboundController) updateInbound(c *gin.Context) {
 	}
 	err = c.ShouldBind(inbound)
 	if err != nil {
-		jsonMsg(c, I18nWeb(c, "pages.inbounds.update"), err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundUpdateSuccess"), err)
 		return
 	}
 	needRestart := true
 	inbound, needRestart, err = a.inboundService.UpdateInbound(inbound)
-	jsonMsgObj(c, I18nWeb(c, "pages.inbounds.update"), inbound, err)
+	jsonMsgObj(c, I18nWeb(c, "pages.inbounds.toasts.inboundUpdateSuccess"), inbound, err)
 	if err == nil && needRestart {
 		a.xrayService.SetToNeedRestart()
 	}
@@ -163,17 +163,17 @@ func (a *InboundController) clearClientIps(c *gin.Context) {
 
 	err := a.inboundService.ClearClientIps(email)
 	if err != nil {
-		jsonMsg(c, "Update", err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.updateSuccess"), err)
 		return
 	}
-	jsonMsg(c, "Log Cleared", nil)
+	jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.logCleanSuccess"), nil)
 }
 
 func (a *InboundController) addInboundClient(c *gin.Context) {
 	data := &model.Inbound{}
 	err := c.ShouldBind(data)
 	if err != nil {
-		jsonMsg(c, I18nWeb(c, "pages.inbounds.update"), err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundUpdateSuccess"), err)
 		return
 	}
 
@@ -181,10 +181,10 @@ func (a *InboundController) addInboundClient(c *gin.Context) {
 
 	needRestart, err = a.inboundService.AddInboundClient(data)
 	if err != nil {
-		jsonMsg(c, "Something went wrong!", err)
+		jsonMsg(c, I18nWeb(c, "somethingWentWrong"), err)
 		return
 	}
-	jsonMsg(c, "Client(s) added", nil)
+	jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundClientAddSuccess"), nil)
 	if needRestart {
 		a.xrayService.SetToNeedRestart()
 	}
@@ -193,7 +193,7 @@ func (a *InboundController) addInboundClient(c *gin.Context) {
 func (a *InboundController) delInboundClient(c *gin.Context) {
 	id, err := strconv.Atoi(c.Param("id"))
 	if err != nil {
-		jsonMsg(c, I18nWeb(c, "pages.inbounds.update"), err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundUpdateSuccess"), err)
 		return
 	}
 	clientId := c.Param("clientId")
@@ -202,10 +202,10 @@ func (a *InboundController) delInboundClient(c *gin.Context) {
 
 	needRestart, err = a.inboundService.DelInboundClient(id, clientId)
 	if err != nil {
-		jsonMsg(c, "Something went wrong!", err)
+		jsonMsg(c, I18nWeb(c, "somethingWentWrong"), err)
 		return
 	}
-	jsonMsg(c, "Client deleted", nil)
+	jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundClientDeleteSuccess"), nil)
 	if needRestart {
 		a.xrayService.SetToNeedRestart()
 	}
@@ -217,7 +217,7 @@ func (a *InboundController) updateInboundClient(c *gin.Context) {
 	inbound := &model.Inbound{}
 	err := c.ShouldBind(inbound)
 	if err != nil {
-		jsonMsg(c, I18nWeb(c, "pages.inbounds.update"), err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundUpdateSuccess"), err)
 		return
 	}
 
@@ -225,10 +225,10 @@ func (a *InboundController) updateInboundClient(c *gin.Context) {
 
 	needRestart, err = a.inboundService.UpdateInboundClient(inbound, clientId)
 	if err != nil {
-		jsonMsg(c, "Something went wrong!", err)
+		jsonMsg(c, I18nWeb(c, "somethingWentWrong"), err)
 		return
 	}
-	jsonMsg(c, "Client updated", nil)
+	jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundClientUpdateSuccess"), nil)
 	if needRestart {
 		a.xrayService.SetToNeedRestart()
 	}
@@ -237,17 +237,17 @@ func (a *InboundController) updateInboundClient(c *gin.Context) {
 func (a *InboundController) resetClientTraffic(c *gin.Context) {
 	id, err := strconv.Atoi(c.Param("id"))
 	if err != nil {
-		jsonMsg(c, I18nWeb(c, "pages.inbounds.update"), err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundUpdateSuccess"), err)
 		return
 	}
 	email := c.Param("email")
 
 	needRestart, err := a.inboundService.ResetClientTraffic(id, email)
 	if err != nil {
-		jsonMsg(c, "Something went wrong!", err)
+		jsonMsg(c, I18nWeb(c, "somethingWentWrong"), err)
 		return
 	}
-	jsonMsg(c, "Traffic has been reset", nil)
+	jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.resetInboundClientTrafficSuccess"), nil)
 	if needRestart {
 		a.xrayService.SetToNeedRestart()
 	}
@@ -256,36 +256,36 @@ func (a *InboundController) resetClientTraffic(c *gin.Context) {
 func (a *InboundController) resetAllTraffics(c *gin.Context) {
 	err := a.inboundService.ResetAllTraffics()
 	if err != nil {
-		jsonMsg(c, "Something went wrong!", err)
+		jsonMsg(c, I18nWeb(c, "somethingWentWrong"), err)
 		return
 	} else {
 		a.xrayService.SetToNeedRestart()
 	}
-	jsonMsg(c, "all traffic has been reset", nil)
+	jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.resetAllTrafficSuccess"), nil)
 }
 
 func (a *InboundController) resetAllClientTraffics(c *gin.Context) {
 	id, err := strconv.Atoi(c.Param("id"))
 	if err != nil {
-		jsonMsg(c, I18nWeb(c, "pages.inbounds.update"), err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundUpdateSuccess"), err)
 		return
 	}
 
 	err = a.inboundService.ResetAllClientTraffics(id)
 	if err != nil {
-		jsonMsg(c, "Something went wrong!", err)
+		jsonMsg(c, I18nWeb(c, "somethingWentWrong"), err)
 		return
 	} else {
 		a.xrayService.SetToNeedRestart()
 	}
-	jsonMsg(c, "All traffic from the client has been reset.", nil)
+	jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.resetAllClientTrafficSuccess"), nil)
 }
 
 func (a *InboundController) importInbound(c *gin.Context) {
 	inbound := &model.Inbound{}
 	err := json.Unmarshal([]byte(c.PostForm("data")), inbound)
 	if err != nil {
-		jsonMsg(c, "Something went wrong!", err)
+		jsonMsg(c, I18nWeb(c, "somethingWentWrong"), err)
 		return
 	}
 	user := session.GetLoginUser(c)
@@ -304,7 +304,7 @@ func (a *InboundController) importInbound(c *gin.Context) {
 
 	needRestart := false
 	inbound, needRestart, err = a.inboundService.AddInbound(inbound)
-	jsonMsgObj(c, I18nWeb(c, "pages.inbounds.create"), inbound, err)
+	jsonMsgObj(c, I18nWeb(c, "pages.inbounds.toasts.inboundCreateSuccess"), inbound, err)
 	if err == nil && needRestart {
 		a.xrayService.SetToNeedRestart()
 	}
@@ -313,15 +313,15 @@ func (a *InboundController) importInbound(c *gin.Context) {
 func (a *InboundController) delDepletedClients(c *gin.Context) {
 	id, err := strconv.Atoi(c.Param("id"))
 	if err != nil {
-		jsonMsg(c, I18nWeb(c, "pages.inbounds.update"), err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundUpdateSuccess"), err)
 		return
 	}
 	err = a.inboundService.DelDepletedClients(id)
 	if err != nil {
-		jsonMsg(c, "Something went wrong!", err)
+		jsonMsg(c, I18nWeb(c, "somethingWentWrong"), err)
 		return
 	}
-	jsonMsg(c, "All depleted clients are deleted", nil)
+	jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.delDepletedClientsSuccess"), nil)
 }
 
 func (a *InboundController) onlines(c *gin.Context) {

+ 10 - 10
web/controller/server.go

@@ -109,19 +109,19 @@ func (a *ServerController) stopXrayService(c *gin.Context) {
 	a.lastGetStatusTime = time.Now()
 	err := a.serverService.StopXrayService()
 	if err != nil {
-		jsonMsg(c, "", err)
+		jsonMsg(c, I18nWeb(c, "pages.xray.stopError"), err)
 		return
 	}
-	jsonMsg(c, "Xray stopped", err)
+	jsonMsg(c, I18nWeb(c, "pages.xray.stopSuccess"), err)
 }
 
 func (a *ServerController) restartXrayService(c *gin.Context) {
 	err := a.serverService.RestartXrayService()
 	if err != nil {
-		jsonMsg(c, "", err)
+		jsonMsg(c, I18nWeb(c, "pages.xray.restartError"), err)
 		return
 	}
-	jsonMsg(c, "Xray restarted", err)
+	jsonMsg(c, I18nWeb(c, "pages.xray.restartSuccess"), err)
 }
 
 func (a *ServerController) getLogs(c *gin.Context) {
@@ -135,7 +135,7 @@ func (a *ServerController) getLogs(c *gin.Context) {
 func (a *ServerController) getConfigJson(c *gin.Context) {
 	configJson, err := a.serverService.GetConfigJson()
 	if err != nil {
-		jsonMsg(c, "get config.json", err)
+		jsonMsg(c, I18nWeb(c, "pages.index.getConfigError"), err)
 		return
 	}
 	jsonObj(c, configJson, nil)
@@ -144,7 +144,7 @@ func (a *ServerController) getConfigJson(c *gin.Context) {
 func (a *ServerController) getDb(c *gin.Context) {
 	db, err := a.serverService.GetDb()
 	if err != nil {
-		jsonMsg(c, "get Database", err)
+		jsonMsg(c, I18nWeb(c, "pages.index.getDatabaseError"), err)
 		return
 	}
 
@@ -172,7 +172,7 @@ func (a *ServerController) importDB(c *gin.Context) {
 	// Get the file from the request body
 	file, _, err := c.Request.FormFile("db")
 	if err != nil {
-		jsonMsg(c, "Error reading db file", err)
+		jsonMsg(c, I18nWeb(c, "pages.index.readDatabaseError"), err)
 		return
 	}
 	defer file.Close()
@@ -184,16 +184,16 @@ func (a *ServerController) importDB(c *gin.Context) {
 	// Import it
 	err = a.serverService.ImportDB(file)
 	if err != nil {
-		jsonMsg(c, "", err)
+		jsonMsg(c, I18nWeb(c, "pages.index.importDatabaseError"), err)
 		return
 	}
-	jsonObj(c, "Import DB", nil)
+	jsonObj(c, I18nWeb(c, "pages.index.importDatabaseSuccess"), nil)
 }
 
 func (a *ServerController) getNewX25519Cert(c *gin.Context) {
 	cert, err := a.serverService.GetNewX25519Cert()
 	if err != nil {
-		jsonMsg(c, "get x25519 certificate", err)
+		jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.getNewX25519CertError"), err)
 		return
 	}
 	jsonObj(c, cert, nil)

+ 3 - 3
web/controller/setting.go

@@ -80,11 +80,11 @@ func (a *SettingController) updateUser(c *gin.Context) {
 	}
 	user := session.GetLoginUser(c)
 	if user.Username != form.OldUsername || !crypto.CheckPasswordHash(user.Password, form.OldPassword) {
-		jsonMsg(c, I18nWeb(c, "pages.settings.toasts.modifyUser"), errors.New(I18nWeb(c, "pages.settings.toasts.originalUserPassIncorrect")))
+		jsonMsg(c, I18nWeb(c, "pages.settings.toasts.modifyUserError"), errors.New(I18nWeb(c, "pages.settings.toasts.originalUserPassIncorrect")))
 		return
 	}
 	if form.NewUsername == "" || form.NewPassword == "" {
-		jsonMsg(c, I18nWeb(c, "pages.settings.toasts.modifyUser"), errors.New(I18nWeb(c, "pages.settings.toasts.userPassMustBeNotEmpty")))
+		jsonMsg(c, I18nWeb(c, "pages.settings.toasts.modifyUserError"), errors.New(I18nWeb(c, "pages.settings.toasts.userPassMustBeNotEmpty")))
 		return
 	}
 	err = a.userService.UpdateUser(user.Id, form.NewUsername, form.NewPassword)
@@ -98,7 +98,7 @@ func (a *SettingController) updateUser(c *gin.Context) {
 
 func (a *SettingController) restartPanel(c *gin.Context) {
 	err := a.panelService.RestartPanel(time.Second * 3)
-	jsonMsg(c, I18nWeb(c, "pages.settings.restartPanel"), err)
+	jsonMsg(c, I18nWeb(c, "pages.settings.restartPanelSuccess"), err)
 }
 
 func (a *SettingController) getDefaultXrayConfig(c *gin.Context) {

+ 2 - 2
web/controller/util.go

@@ -42,11 +42,11 @@ func jsonMsgObj(c *gin.Context, msg string, obj any, err error) {
 	if err == nil {
 		m.Success = true
 		if msg != "" {
-			m.Msg = msg + " " + I18nWeb(c, "success")
+			m.Msg = msg
 		}
 	} else {
 		m.Success = false
-		m.Msg = msg + " " + I18nWeb(c, "fail") + ": " + err.Error()
+		m.Msg = msg + " (" + err.Error() + ")"
 		logger.Warning(msg+" "+I18nWeb(c, "fail")+": ", err)
 	}
 	c.JSON(http.StatusOK, m)

+ 2 - 2
web/controller/xray_setting.go

@@ -93,7 +93,7 @@ func (a *XraySettingController) warp(c *gin.Context) {
 func (a *XraySettingController) getOutboundsTraffic(c *gin.Context) {
 	outboundsTraffic, err := a.OutboundService.GetOutboundsTraffic()
 	if err != nil {
-		jsonMsg(c, "Error getting traffics", err)
+		jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getOutboundTrafficError"), err)
 		return
 	}
 	jsonObj(c, outboundsTraffic, nil)
@@ -103,7 +103,7 @@ func (a *XraySettingController) resetOutboundsTraffic(c *gin.Context) {
 	tag := c.PostForm("tag")
 	err := a.OutboundService.ResetOutboundTraffic(tag)
 	if err != nil {
-		jsonMsg(c, "Error in reset outbound traffics", err)
+		jsonMsg(c, I18nWeb(c, "pages.settings.toasts.resetOutboundTrafficError"), err)
 		return
 	}
 	jsonObj(c, "", nil)

+ 2 - 2
web/html/inbounds.html

@@ -978,7 +978,7 @@
             openAddInbound() {
                 inModal.show({
                     title: '{{ i18n "pages.inbounds.addInbound"}}',
-                    okText: '{{ i18n "pages.inbounds.create"}}',
+                    okText: '{{ i18n "create"}}',
                     cancelText: '{{ i18n "close" }}',
                     confirm: async (inbound, dbInbound) => {
                         await this.addInbound(inbound, dbInbound, inModal);
@@ -991,7 +991,7 @@
                 const inbound = dbInbound.toInbound();
                 inModal.show({
                     title: '{{ i18n "pages.inbounds.modifyInbound"}}',
-                    okText: '{{ i18n "pages.inbounds.update"}}',
+                    okText: '{{ i18n "update"}}',
                     cancelText: '{{ i18n "close" }}',
                     inbound: inbound,
                     dbInbound: dbInbound,

+ 2 - 2
web/html/modals/warp_modal.html

@@ -3,7 +3,7 @@
          :confirm-loading="warpModal.confirmLoading" :closable="true" :mask-closable="true"
          :footer="null" :class="themeSwitcher.currentTheme">
     <template v-if="ObjectUtil.isEmpty(warpModal.warpData)">
-        <a-button icon="api" @click="register" :loading="warpModal.confirmLoading">{{ i18n "pages.inbounds.create" }}</a-button>
+        <a-button icon="api" @click="register" :loading="warpModal.confirmLoading">{{ i18n "create" }}</a-button>
     </template>
     <template v-else>
         <table :style="{ margin: '5px 0', width: '100%' }">
@@ -32,7 +32,7 @@
                     <a-form-item label="Key">
                         <a-input v-model="warpPlus"></a-input>
                         <a-button @click="updateLicense(warpPlus)" :disabled="warpPlus.length<26"
-                            :loading="warpModal.confirmLoading">{{ i18n "pages.inbounds.update" }}</a-button>
+                            :loading="warpModal.confirmLoading">{{ i18n "update" }}</a-button>
                     </a-form-item>
                 </a-form>
             </a-collapse-panel>

+ 37 - 6
web/translation/translate.ar_EG.toml

@@ -4,6 +4,8 @@
 "confirm" = "تأكيد"
 "cancel" = "إلغاء"
 "close" = "إغلاق"
+"create" = "إنشاء"
+"update" = "تحديث"
 "copy" = "نسخ"
 "copied" = "اتنسخ"
 "download" = "تحميل"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "مفيش سيرفر Fake DNS مضاف."
 "emptyBalancersDesc" = "مفيش موازن تحميل مضاف."
 "emptyReverseDesc" = "مفيش بروكسي عكسي مضاف."
+"somethingWentWrong" = "حدث خطأ ما"
 
 [menu]
 "theme" = "الثيم"
@@ -88,7 +91,7 @@
 "emptyUsername" = "اسم المستخدم مطلوب"
 "emptyPassword" = "الباسورد مطلوب"
 "wrongUsernameOrPassword" = "اسم المستخدم أو كلمة المرور أو كود المصادقة الثنائية غير صحيح."  
-"successLogin" = "تسجيل دخول ناجح"
+"successLogin" = "لقد تم تسجيل الدخول إلى حسابك بنجاح."
 
 [pages.index]
 "title" = "نظرة عامة"
@@ -137,6 +140,11 @@
 "exportDatabaseDesc" = "اضغط عشان تحمل ملف .db يحتوي على نسخة احتياطية لقاعدة البيانات الحالية على جهازك."
 "importDatabase" = "استرجاع"
 "importDatabaseDesc" = "اضغط عشان تختار وتحمل ملف .db من جهازك لاسترجاع قاعدة البيانات من نسخة احتياطية."
+"importDatabaseSuccess" = "تم استيراد قاعدة البيانات بنجاح"
+"importDatabaseError" = "حدث خطأ أثناء استيراد قاعدة البيانات"
+"readDatabaseError" = "حدث خطأ أثناء قراءة قاعدة البيانات"
+"getDatabaseError" = "حدث خطأ أثناء استرجاع قاعدة البيانات"
+"getConfigError" = "حدث خطأ أثناء استرجاع ملف الإعدادات"
 
 [pages.inbounds]
 "title" = "الإدخالات"
@@ -157,14 +165,14 @@
 "generalActions" = "إجراءات عامة"
 "autoRefresh" = "تحديث تلقائي"
 "autoRefreshInterval" = "الفاصل"
-"create" = "إنشاء"
-"update" = "تحديث"
 "modifyInbound" = "تعديل الإدخال"
 "deleteInbound" = "حذف الإدخال"
 "deleteInboundContent" = "متأكد إنك عايز تحذف الإدخال؟"
 "deleteClient" = "حذف العميل"
 "deleteClientContent" = "متأكد إنك عايز تحذف العميل؟"
 "resetTrafficContent" = "متأكد إنك عايز تعيد ضبط الترافيك؟"
+"inboundUpdateSuccess" = "تم تحديث الوارد بنجاح."
+"inboundCreateSuccess" = "تم إنشاء الوارد بنجاح."
 "copyLink" = "انسخ الرابط"
 "address" = "العنوان"
 "network" = "الشبكة"
@@ -235,6 +243,21 @@
 
 [pages.inbounds.toasts]
 "obtain" = "تم الحصول عليه"
+"updateSuccess" = "تم التحديث بنجاح"
+"logCleanSuccess" = "تم مسح السجل"
+"inboundsUpdateSuccess" = "تم تحديث الواردات بنجاح"
+"inboundUpdateSuccess" = "تم تحديث الوارد بنجاح"
+"inboundCreateSuccess" = "تم إنشاء الوارد بنجاح"
+"inboundDeleteSuccess" = "تم حذف الوارد بنجاح"
+"inboundClientAddSuccess" = "تمت إضافة عميل(عملاء) وارد"
+"inboundClientDeleteSuccess" = "تم حذف عميل وارد"
+"inboundClientUpdateSuccess" = "تم تحديث عميل وارد"
+"delDepletedClientsSuccess" = "تم حذف جميع العملاء المستنفذين"
+"resetAllClientTrafficSuccess" = "تم إعادة تعيين كل حركة المرور من العميل"
+"resetAllTrafficSuccess" = "تم إعادة تعيين كل حركة المرور"
+"resetInboundClientTrafficSuccess" = "تم إعادة تعيين حركة المرور"
+"trafficGetError" = "خطأ في الحصول على حركات المرور"
+"getNewX25519CertError" = "حدث خطأ أثناء الحصول على شهادة X25519."
 
 [pages.inbounds.stream.general]
 "request" = "طلب"
@@ -257,6 +280,7 @@
 "infoDesc" = "كل تغيير هتعمله هنا لازم يتخزن. ياريت تعيد تشغيل البانل عشان التعديلات تتفعل."
 "restartPanel" = "إعادة تشغيل البانل"
 "restartPanelDesc" = "متأكد إنك عايز تعيد تشغيل البانل؟ لو ماقدرتش تدخل بعد إعادة التشغيل، شوف سجل البانل على السيرفر."
+"restartPanelSuccess" = "تم إعادة تشغيل اللوحة بنجاح"
 "actions" = "إجراءات"
 "resetDefaultConfig" = "استرجاع الافتراضي"
 "panelSettings" = "عام"
@@ -364,6 +388,10 @@
 "title" = "إعدادات Xray"
 "save" = "احفظ"
 "restart" = "أعد تشغيل Xray"
+"restartSuccess" = "تم إعادة تشغيل Xray بنجاح"
+"stopSuccess" = "تم إيقاف Xray بنجاح"
+"restartError" = "حدث خطأ أثناء إعادة تشغيل Xray."
+"stopError" = "حدث خطأ أثناء إيقاف Xray."
 "basicTemplate" = "أساسي"
 "advancedTemplate" = "متقدم"
 "generalConfigs" = "إعدادات عامة"
@@ -515,11 +543,14 @@
 "twoFactorModalError" = "رمز خاطئ"
 
 [pages.settings.toasts]
-"modifySettings" = "تعديل الإعدادات"
-"getSettings" = "جلب الإعدادات"
-"modifyUser" = "تعديل الأدمن"
+"modifySettings" = "تم تغيير المعلمات."
+"getSettings" = "حدث خطأ أثناء استرداد المعلمات."
+"modifyUserError" = "حدث خطأ أثناء تغيير بيانات اعتماد المسؤول."
+"modifyUser" = "لقد قمت بتغيير بيانات اعتماد المسؤول بنجاح."
 "originalUserPassIncorrect" = "اسم المستخدم أو الباسورد الحالي غير صحيح"
 "userPassMustBeNotEmpty" = "اسم المستخدم والباسورد الجديدين فاضيين"
+"getOutboundTrafficError" = "خطأ في الحصول على حركات المرور الصادرة"
+"resetOutboundTrafficError" = "خطأ في إعادة تعيين حركات المرور الصادرة"
 
 [tgbot]
 "keyboardClosed" = "❌ الكيبورد المخصص اتقفلت!"

+ 37 - 7
web/translation/translate.en_US.toml

@@ -4,6 +4,8 @@
 "confirm" = "Confirm"
 "cancel" = "Cancel"
 "close" = "Close"
+"create" = "Create"
+"update" = "Update"
 "copy" = "Copy"
 "copied" = "Copied"
 "download" = "Download"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "No added Fake DNS servers."
 "emptyBalancersDesc" = "No added balancers."
 "emptyReverseDesc" = "No added reverse proxies."
+"somethingWentWrong" = "Something went wrong"
 
 [menu]
 "theme" = "Theme"
@@ -88,7 +91,7 @@
 "emptyUsername" = "Username is required"
 "emptyPassword" = "Password is required"
 "wrongUsernameOrPassword" = "Invalid username or password or two-factor code."
-"successLogin" = "Login"
+"successLogin" = " You have successfully logged into your account."
 
 [pages.index]
 "title" = "Overview"
@@ -137,6 +140,11 @@
 "exportDatabaseDesc" = "Click to download a .db file containing a backup of your current database to your device."
 "importDatabase" = "Restore"
 "importDatabaseDesc" = "Click to select and upload a .db file from your device to restore your database from a backup."
+"importDatabaseSuccess" = "The database has been successfully imported."
+"importDatabaseError" = "An error occurred while importing the database."
+"readDatabaseError" = "An error occurred while reading the database."
+"getDatabaseError" = "An error occurred while retrieving the database."
+"getConfigError" = "An error occurred while retrieving the config file."
 
 [pages.inbounds]
 "title" = "Inbounds"
@@ -157,8 +165,6 @@
 "generalActions" = "General Actions"
 "autoRefresh" = "Auto-refresh"
 "autoRefreshInterval" = "Interval"
-"create" = "Create"
-"update" = "Update"
 "modifyInbound" = "Modify Inbound"
 "deleteInbound" = "Delete Inbound"
 "deleteInboundContent" = "Are you sure you want to delete inbound?"
@@ -235,6 +241,22 @@
 
 [pages.inbounds.toasts]
 "obtain" = "Obtain"
+"updateSuccess" = "The update was successful."
+"logCleanSuccess" = "The log has been cleared."
+"inboundsUpdateSuccess" = "Inbounds have been successfully updated."
+"inboundUpdateSuccess" = "Inbound has been successfully updated."
+"inboundCreateSuccess" = "Inbound has been successfully created."
+"inboundDeleteSuccess" = "Inbound has been successfully deleted."
+"inboundClientAddSuccess" = "Inbound client(s) have been added."
+"inboundClientDeleteSuccess" = "Inbound client has been deleted."
+"inboundClientUpdateSuccess" = "Inbound client has been updated."
+"delDepletedClientsSuccess" = "All depleted clients are deleted."
+"resetAllClientTrafficSuccess" = "All traffic from the client has been reset."
+"resetAllTrafficSuccess" = "All traffic has been reset."
+"resetInboundClientTrafficSuccess" = "Traffic has been reset."
+"trafficGetError" = "Error getting traffics."
+"getNewX25519CertError" = "Error while obtaining the X25519 certificate."
+
 
 [pages.inbounds.stream.general]
 "request" = "Request"
@@ -257,6 +279,7 @@
 "infoDesc" = "Every change made here needs to be saved. Please restart the panel to apply changes."
 "restartPanel" = "Restart Panel"
 "restartPanelDesc" = "Are you sure you want to restart the panel? If you cannot access the panel after restarting, please view the panel log info on the server."
+"restartPanelSuccess" = "The panel was successfully restarted."
 "actions" = "Actions"
 "resetDefaultConfig" = "Reset to Default"
 "panelSettings" = "General"
@@ -364,6 +387,10 @@
 "title" = "Xray Configs"
 "save" = "Save"
 "restart" = "Restart Xray"
+"restartSuccess" = "Xray has been successfully relaunched."
+"stopSuccess" = "Xray has been successfully stopped."
+"restartError" = "There was an error when rebooting the Xray."
+"stopError" = "There was an error when stopping the Xray."
 "basicTemplate" = "Basics"
 "advancedTemplate" = "Advanced"
 "generalConfigs" = "General"
@@ -515,11 +542,14 @@
 "twoFactorModalError" = "Wrong code"
 
 [pages.settings.toasts]
-"modifySettings" = "Modify Settings"
-"getSettings" = "Get Settings"
-"modifyUser" = "Modify Admin"
-"originalUserPassIncorrect" = "The Current username or password is invalid"
+"modifySettings" = "The parameters have been changed."
+"getSettings" = "An error occurred while retrieving parameters."
+"modifyUserError" = "An error occurred while changing administrator credentials."
+"modifyUser" = "You have successfully changed the credentials of the administrator."
+"originalUserPassIncorrect" = "The сurrent username or password is invalid"
 "userPassMustBeNotEmpty" = "The new username and password is empty"
+"getOutboundTrafficError" = "Error getting traffics"
+"resetOutboundTrafficError" = "Error in reset outbound traffics"
 
 [tgbot]
 "keyboardClosed" = "❌ Custom keyboard closed!"

+ 37 - 6
web/translation/translate.es_ES.toml

@@ -4,6 +4,8 @@
 "confirm" = "Confirmar"
 "cancel" = "Cancelar"
 "close" = "Cerrar"
+"create" = "Crear"
+"update" = "Actualizar"
 "copy" = "Copiar"
 "copied" = "Copiado"
 "download" = "Descargar"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "No hay servidores Fake DNS añadidos."
 "emptyBalancersDesc" = "No hay balanceadores añadidos."
 "emptyReverseDesc" = "No hay proxies inversos añadidos."
+"somethingWentWrong" = "Algo salió mal"
 
 [menu]
 "theme" = "Tema"
@@ -88,7 +91,7 @@
 "emptyUsername" = "Por favor ingresa el nombre de usuario."
 "emptyPassword" = "Por favor ingresa la contraseña."
 "wrongUsernameOrPassword" = "Nombre de usuario, contraseña o código de dos factores incorrecto."  
-"successLogin" = "Inicio de Sesión Exitoso"
+"successLogin" = "Has iniciado sesión en tu cuenta correctamente."
 
 [pages.index]
 "title" = "Estado del Sistema"
@@ -139,6 +142,11 @@
 "exportDatabaseDesc" = "Haz clic para descargar un archivo .db que contiene una copia de seguridad de tu base de datos actual en tu dispositivo."
 "importDatabase" = "Restaurar"
 "importDatabaseDesc" = "Haz clic para seleccionar y cargar un archivo .db desde tu dispositivo para restaurar tu base de datos desde una copia de seguridad."
+"importDatabaseSuccess" = "La base de datos se ha importado correctamente"
+"importDatabaseError" = "Ocurrió un error al importar la base de datos"
+"readDatabaseError" = "Ocurrió un error al leer la base de datos"
+"getDatabaseError" = "Ocurrió un error al obtener la base de datos"
+"getConfigError" = "Ocurrió un error al obtener el archivo de configuración"
 
 [pages.inbounds]
 "title" = "Entradas"
@@ -159,14 +167,14 @@
 "generalActions" = "Acciones Generales"
 "autoRefresh" = "Auto-actualizar"
 "autoRefreshInterval" = "Intervalo"
-"create" = "Crear"
-"update" = "Actualizar"
 "modifyInbound" = "Modificar Entrada"
 "deleteInbound" = "Eliminar Entrada"
 "deleteInboundContent" = "¿Confirmar eliminación de entrada?"
 "deleteClient" = "Eliminar cliente"
 "deleteClientContent" = "¿Está seguro de que desea eliminar el cliente?"
 "resetTrafficContent" = "¿Confirmar restablecimiento de tráfico?"
+"inboundUpdateSuccess" = "La entrada se ha actualizado correctamente."
+"inboundCreateSuccess" = "La entrada se ha creado correctamente."
 "copyLink" = "Copiar Enlace"
 "address" = "Dirección"
 "network" = "Red"
@@ -237,6 +245,21 @@
 
 [pages.inbounds.toasts]
 "obtain" = "Recibir"
+"updateSuccess" = "La actualización fue exitosa"
+"logCleanSuccess" = "El registro ha sido limpiado"
+"inboundsUpdateSuccess" = "Entradas actualizadas correctamente"
+"inboundUpdateSuccess" = "Entrada actualizada correctamente"
+"inboundCreateSuccess" = "Entrada creada correctamente"
+"inboundDeleteSuccess" = "Entrada eliminada correctamente"
+"inboundClientAddSuccess" = "Cliente(s) de entrada añadido(s)"
+"inboundClientDeleteSuccess" = "Cliente de entrada eliminado"
+"inboundClientUpdateSuccess" = "Cliente de entrada actualizado"
+"delDepletedClientsSuccess" = "Todos los clientes agotados fueron eliminados"
+"resetAllClientTrafficSuccess" = "Todo el tráfico del cliente ha sido reiniciado"
+"resetAllTrafficSuccess" = "Todo el tráfico ha sido reiniciado"
+"resetInboundClientTrafficSuccess" = "El tráfico ha sido reiniciado"
+"trafficGetError" = "Error al obtener los tráficos"
+"getNewX25519CertError" = "Error al obtener el certificado X25519."
 
 [pages.inbounds.stream.general]
 "request" = "Pedido"
@@ -259,6 +282,7 @@
 "infoDesc" = "Cada cambio realizado aquí debe ser guardado. Por favor, reinicie el panel para aplicar los cambios."
 "restartPanel" = "Reiniciar Panel"
 "restartPanelDesc" = "¿Está seguro de que desea reiniciar el panel? Haga clic en Aceptar para reiniciar después de 3 segundos. Si no puede acceder al panel después de reiniciar, por favor, consulte la información de registro del panel en el servidor."
+"restartPanelSuccess" = "El panel se reinició correctamente"
 "actions" = "Acciones"
 "resetDefaultConfig" = "Restablecer a Configuración Predeterminada"
 "panelSettings" = "Configuraciones del Panel"
@@ -366,6 +390,10 @@
 "title" = "Xray Configuración"
 "save" = "Guardar configuración"
 "restart" = "Reiniciar Xray"
+"restartSuccess" = "Xray se ha reiniciado correctamente"
+"stopSuccess" = "Xray se ha detenido correctamente"
+"restartError" = "Ocurrió un error al reiniciar Xray."
+"stopError" = "Ocurrió un error al detener Xray."
 "basicTemplate" = "Plantilla Básica"
 "advancedTemplate" = "Plantilla Avanzada"
 "generalConfigs" = "Configuraciones Generales"
@@ -517,11 +545,14 @@
 "twoFactorModalError" = "Código incorrecto"
 
 [pages.settings.toasts]
-"modifySettings" = "Modificar Configuraciones "
-"getSettings" = "Obtener Configuraciones "
-"modifyUser" = "Modificar Usuario "
+"modifySettings" = "Los parámetros han sido modificados."
+"getSettings" = "Ocurrió un error al obtener los parámetros."
+"modifyUserError" = "Ocurrió un error al cambiar las credenciales del administrador."
+"modifyUser" = "Has cambiado exitosamente las credenciales del administrador."
 "originalUserPassIncorrect" = "Nombre de usuario o contraseña original incorrectos"
 "userPassMustBeNotEmpty" = "El nuevo nombre de usuario y la nueva contraseña no pueden estar vacíos"
+"getOutboundTrafficError" = "Error al obtener el tráfico saliente"
+"resetOutboundTrafficError" = "Error al reiniciar el tráfico saliente"
 
 [tgbot]
 "keyboardClosed" = "❌ ¡Teclado personalizado cerrado!"

+ 37 - 6
web/translation/translate.fa_IR.toml

@@ -4,6 +4,8 @@
 "confirm" = "تایید"
 "cancel" = "انصراف"
 "close" = "بستن"
+"create" = "ایجاد"
+"update" = "به‌روزرسانی"
 "copy" = "کپی"
 "copied" = "کپی شد"
 "download" = "دانلود"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "هیچ سرور Fake DNS اضافه نشده است."
 "emptyBalancersDesc" = "هیچ بالانسر اضافه نشده است."
 "emptyReverseDesc" = "هیچ پروکسی معکوس اضافه نشده است."
+"somethingWentWrong" = "مشکلی پیش آمد"
 
 [menu]
 "theme" = "تم"
@@ -88,7 +91,7 @@
 "emptyUsername" = "لطفا یک نام‌کاربری وارد کنید‌"
 "emptyPassword" = "لطفا یک رمزعبور وارد کنید"
 "wrongUsernameOrPassword" = "نام کاربری، رمز عبور یا کد دو مرحله‌ای نامعتبر است."  
-"successLogin" = "ورود"
+"successLogin" = "شما با موفقیت به حساب کاربری خود وارد شدید."
 
 [pages.index]
 "title" = "نمای کلی"
@@ -139,6 +142,11 @@
 "exportDatabaseDesc" = "برای دانلود یک فایل .db حاوی پشتیبان از پایگاه داده فعلی خود به دستگاهتان کلیک کنید."
 "importDatabase" = "بازیابی"
 "importDatabaseDesc" = "برای انتخاب و آپلود یک فایل .db از دستگاهتان و بازیابی پایگاه داده از یک پشتیبان کلیک کنید."
+"importDatabaseSuccess" = "پایگاه داده با موفقیت وارد شد"
+"importDatabaseError" = "خطا در وارد کردن پایگاه داده"
+"readDatabaseError" = "خطا در خواندن پایگاه داده"
+"getDatabaseError" = "خطا در دریافت پایگاه داده"
+"getConfigError" = "خطا در دریافت فایل پیکربندی"
 
 [pages.inbounds]
 "title" = "کاربران"
@@ -159,14 +167,14 @@
 "generalActions" = "عملیات کلی"
 "autoRefresh" = "تازه‌سازی خودکار"
 "autoRefreshInterval" = "فاصله"
-"create" = "افزودن"
-"update" = "ویرایش"
 "modifyInbound" = "ویرایش ورودی"
 "deleteInbound" = "حذف ورودی"
 "deleteInboundContent" = "آیا مطمئن به حذف ورودی هستید؟"
 "deleteClient" = "حذف کاربر"
 "deleteClientContent" = "آیا مطمئن به حذف کاربر هستید؟"
 "resetTrafficContent" = "آیا مطمئن به ریست ترافیک هستید؟"
+"inboundUpdateSuccess" = "ورودی با موفقیت به‌روزرسانی شد."
+"inboundCreateSuccess" = "ورودی با موفقیت ایجاد شد."
 "copyLink" = "کپی لینک"
 "address" = "آدرس"
 "network" = "شبکه"
@@ -237,6 +245,21 @@
 
 [pages.inbounds.toasts]
 "obtain" = "فراهم‌سازی"
+"updateSuccess" = "بروزرسانی با موفقیت انجام شد"
+"logCleanSuccess" = "لاگ پاکسازی شد"
+"inboundsUpdateSuccess" = "ورودی‌ها با موفقیت به‌روزرسانی شدند"
+"inboundUpdateSuccess" = "ورودی با موفقیت به‌روزرسانی شد"
+"inboundCreateSuccess" = "ورودی با موفقیت ایجاد شد"
+"inboundDeleteSuccess" = "ورودی با موفقیت حذف شد"
+"inboundClientAddSuccess" = "کلاینت(های) ورودی اضافه شدند"
+"inboundClientDeleteSuccess" = "کلاینت ورودی حذف شد"
+"inboundClientUpdateSuccess" = "کلاینت ورودی به‌روزرسانی شد"
+"delDepletedClientsSuccess" = "تمام کلاینت‌های مصرف شده حذف شدند"
+"resetAllClientTrafficSuccess" = "تمام ترافیک کلاینت بازنشانی شد"
+"resetAllTrafficSuccess" = "تمام ترافیک‌ها بازنشانی شدند"
+"resetInboundClientTrafficSuccess" = "ترافیک بازنشانی شد"
+"trafficGetError" = "خطا در دریافت ترافیک‌ها"
+"getNewX25519CertError" = "خطا در دریافت گواهی X25519."
 
 [pages.inbounds.stream.general]
 "request" = "درخواست"
@@ -259,6 +282,7 @@
 "infoDesc" = "برای اعمال تغییرات در این بخش باید پس از ذخیره کردن، پنل را ریستارت کنید"
 "restartPanel" = "ریستارت پنل"
 "restartPanelDesc" = "آیا مطمئن به ریستارت پنل هستید؟ اگر پس‌از ریستارت نمی‌توانید به پنل دسترسی پیدا کنید، لطفاً گزارش‌های موجود در اسکریپت پنل را بررسی کنید"
+"restartPanelSuccess" = "پنل با موفقیت راه‌اندازی مجدد شد"
 "actions" = "عملیات ها"
 "resetDefaultConfig" = "برگشت به پیش‌فرض"
 "panelSettings" = "پیکربندی"
@@ -366,6 +390,10 @@
 "title" = "پیکربندی ایکس‌ری"
 "save" = "ذخیره"
 "restart" = "ریستارت ایکس‌ری"
+"restartSuccess" = "Xray با موفقیت راه‌اندازی مجدد شد"
+"stopSuccess" = "Xray با موفقیت متوقف شد"
+"restartError" = "خطا در راه‌اندازی مجدد Xray."
+"stopError" = "خطا در توقف Xray."
 "basicTemplate" = "پایه"
 "advancedTemplate" = "پیشرفته"
 "generalConfigs" = "استراتژی‌ کلی"
@@ -517,11 +545,14 @@
 "twoFactorModalError" = "کد نادرست"
 
 [pages.settings.toasts]
-"modifySettings" = "ویرایش تنظیمات"
-"getSettings" = "دریافت تنظیمات"
-"modifyUser" = "ویرایش مدیر"
+"modifySettings" = "پارامترها تغییر کرده‌اند."
+"getSettings" = "خطا در دریافت پارامترها"
+"modifyUserError" = "خطا در تغییر اعتبارنامه‌های مدیر سیستم."
+"modifyUser" = "شما با موفقیت اعتبارنامه‌های مدیر سیستم را تغییر دادید."
 "originalUserPassIncorrect" = "نام‌کاربری یا رمزعبور فعلی اشتباه‌است"
 "userPassMustBeNotEmpty" = "نام‌کاربری یا رمزعبور جدید خالی‌است"
+"getOutboundTrafficError" = "خطا در دریافت ترافیک خروجی"
+"resetOutboundTrafficError" = "خطا در بازنشانی ترافیک خروجی"
 
 [tgbot]
 "keyboardClosed" = "❌ کیبورد سفارشی بسته شد!"

+ 37 - 6
web/translation/translate.id_ID.toml

@@ -4,6 +4,8 @@
 "confirm" = "Konfirmasi"
 "cancel" = "Batal"
 "close" = "Tutup"
+"create" = "Buat"
+"update" = "Perbarui"
 "copy" = "Salin"
 "copied" = "Tersalin"
 "download" = "Unduh"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "Tidak ada server Fake DNS yang ditambahkan."
 "emptyBalancersDesc" = "Tidak ada penyeimbang yang ditambahkan."
 "emptyReverseDesc" = "Tidak ada proxy terbalik yang ditambahkan."
+"somethingWentWrong" = "Terjadi kesalahan"
 
 [menu]
 "theme" = "Tema"
@@ -88,7 +91,7 @@
 "emptyUsername" = "Nama Pengguna diperlukan"
 "emptyPassword" = "Kata Sandi diperlukan"
 "wrongUsernameOrPassword" = "Username, kata sandi, atau kode dua faktor tidak valid."  
-"successLogin" = "Login berhasil"
+"successLogin" = "Anda telah berhasil masuk ke akun Anda."
 
 [pages.index]
 "title" = "Ikhtisar"
@@ -139,6 +142,11 @@
 "exportDatabaseDesc" = "Klik untuk mengunduh file .db yang berisi cadangan dari database Anda saat ini ke perangkat Anda."
 "importDatabase" = "Pulihkan"
 "importDatabaseDesc" = "Klik untuk memilih dan mengunggah file .db dari perangkat Anda untuk memulihkan database dari cadangan."
+"importDatabaseSuccess" = "Database berhasil diimpor"
+"importDatabaseError" = "Terjadi kesalahan saat mengimpor database"
+"readDatabaseError" = "Terjadi kesalahan saat membaca database"
+"getDatabaseError" = "Terjadi kesalahan saat mengambil database"
+"getConfigError" = "Terjadi kesalahan saat mengambil file konfigurasi"
 
 [pages.inbounds]
 "title" = "Masuk"
@@ -159,14 +167,14 @@
 "generalActions" = "Tindakan Umum"
 "autoRefresh" = "Pembaruan otomatis"
 "autoRefreshInterval" = "Interval"
-"create" = "Buat"
-"update" = "Perbarui"
 "modifyInbound" = "Ubah Masuk"
 "deleteInbound" = "Hapus Masuk"
 "deleteInboundContent" = "Apakah Anda yakin ingin menghapus masuk?"
 "deleteClient" = "Hapus Klien"
 "deleteClientContent" = "Apakah Anda yakin ingin menghapus klien?"
 "resetTrafficContent" = "Apakah Anda yakin ingin mereset traffic?"
+"inboundUpdateSuccess" = "Inbound berhasil diperbarui."
+"inboundCreateSuccess" = "Inbound berhasil dibuat."
 "copyLink" = "Salin URL"
 "address" = "Alamat"
 "network" = "Jaringan"
@@ -237,6 +245,21 @@
 
 [pages.inbounds.toasts]
 "obtain" = "Dapatkan"
+"updateSuccess" = "Pembaruan berhasil"
+"logCleanSuccess" = "Log telah dibersihkan"
+"inboundsUpdateSuccess" = "Inbound berhasil diperbarui"
+"inboundUpdateSuccess" = "Inbound berhasil diperbarui"
+"inboundCreateSuccess" = "Inbound berhasil dibuat"
+"inboundDeleteSuccess" = "Inbound berhasil dihapus"
+"inboundClientAddSuccess" = "Klien inbound telah ditambahkan"
+"inboundClientDeleteSuccess" = "Klien inbound telah dihapus"
+"inboundClientUpdateSuccess" = "Klien inbound telah diperbarui"
+"delDepletedClientsSuccess" = "Semua klien yang habis telah dihapus"
+"resetAllClientTrafficSuccess" = "Semua lalu lintas klien telah direset"
+"resetAllTrafficSuccess" = "Semua lalu lintas telah direset"
+"resetInboundClientTrafficSuccess" = "Lalu lintas telah direset"
+"trafficGetError" = "Gagal mendapatkan data lalu lintas"
+"getNewX25519CertError" = "Terjadi kesalahan saat mendapatkan sertifikat X25519."
 
 [pages.inbounds.stream.general]
 "request" = "Permintaan"
@@ -259,6 +282,7 @@
 "infoDesc" = "Setiap perubahan yang dibuat di sini perlu disimpan. Harap restart panel untuk menerapkan perubahan."
 "restartPanel" = "Restart Panel"
 "restartPanelDesc" = "Apakah Anda yakin ingin merestart panel? Jika Anda tidak dapat mengakses panel setelah merestart, lihat info log panel di server."
+"restartPanelSuccess" = "Panel berhasil dimulai ulang"
 "actions" = "Tindakan"
 "resetDefaultConfig" = "Reset ke Default"
 "panelSettings" = "Umum"
@@ -366,6 +390,10 @@
 "title" = "Konfigurasi Xray"
 "save" = "Simpan"
 "restart" = "Restart Xray"
+"restartSuccess" = "Xray berhasil diluncurkan ulang"
+"stopSuccess" = "Xray telah berhasil dihentikan"
+"restartError" = "Terjadi kesalahan saat memulai ulang Xray."
+"stopError" = "Terjadi kesalahan saat menghentikan Xray."
 "basicTemplate" = "Dasar"
 "advancedTemplate" = "Lanjutan"
 "generalConfigs" = "Strategi Umum"
@@ -517,11 +545,14 @@
 "twoFactorModalError" = "Kode salah"
 
 [pages.settings.toasts]
-"modifySettings" = "Ubah Pengaturan"
-"getSettings" = "Dapatkan Pengaturan"
-"modifyUser" = "Ubah Admin"
+"modifySettings" = "Parameter telah diubah."
+"getSettings" = "Terjadi kesalahan saat mengambil parameter."
+"modifyUserError" = "Terjadi kesalahan saat mengubah kredensial administrator."
+"modifyUser" = "Anda telah berhasil mengubah kredensial administrator."
 "originalUserPassIncorrect" = "Username atau password saat ini tidak valid"
 "userPassMustBeNotEmpty" = "Username dan password baru tidak boleh kosong"
+"getOutboundTrafficError" = "Gagal mendapatkan lalu lintas keluar"
+"resetOutboundTrafficError" = "Gagal mereset lalu lintas keluar"
 
 [tgbot]
 "keyboardClosed" = "❌ Papan ketik kustom ditutup!"

+ 37 - 6
web/translation/translate.ja_JP.toml

@@ -4,6 +4,8 @@
 "confirm" = "確認"
 "cancel" = "キャンセル"
 "close" = "閉じる"
+"create" = "作成"
+"update" = "更新"
 "copy" = "コピー"
 "copied" = "コピー済み"
 "download" = "ダウンロード"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "追加されたFake DNSサーバーはありません。"
 "emptyBalancersDesc" = "追加されたバランサーはありません。"
 "emptyReverseDesc" = "追加されたリバースプロキシはありません。"
+"somethingWentWrong" = "エラーが発生しました"
 
 [menu]
 "theme" = "テーマ"
@@ -88,7 +91,7 @@
 "emptyUsername" = "ユーザー名を入力してください"
 "emptyPassword" = "パスワードを入力してください"
 "wrongUsernameOrPassword" = "ユーザー名、パスワード、または二段階認証コードが無効です。"  
-"successLogin" = "ログイン成功"
+"successLogin" = "アカウントに正常にログインしました。"
 
 [pages.index]
 "title" = "システムステータス"
@@ -139,6 +142,11 @@
 "exportDatabaseDesc" = "クリックして、現在のデータベースのバックアップを含む .db ファイルをデバイスにダウンロードします。"
 "importDatabase" = "復元"
 "importDatabaseDesc" = "クリックして、デバイスから .db ファイルを選択し、アップロードしてバックアップからデータベースを復元します。"
+"importDatabaseSuccess" = "データベースのインポートに成功しました"
+"importDatabaseError" = "データベースのインポート中にエラーが発生しました"
+"readDatabaseError" = "データベースの読み取り中にエラーが発生しました"
+"getDatabaseError" = "データベースの取得中にエラーが発生しました"
+"getConfigError" = "設定ファイルの取得中にエラーが発生しました"
 
 [pages.inbounds]
 "title" = "インバウンド一覧"
@@ -159,14 +167,14 @@
 "generalActions" = "一般操作"
 "autoRefresh" = "自動更新"
 "autoRefreshInterval" = "間隔"
-"create" = "追加"
-"update" = "更新"
 "modifyInbound" = "インバウンド修正"
 "deleteInbound" = "インバウンド削除"
 "deleteInboundContent" = "インバウンドを削除してもよろしいですか?"
 "deleteClient" = "クライアント削除"
 "deleteClientContent" = "クライアントを削除してもよろしいですか?"
 "resetTrafficContent" = "トラフィックをリセットしてもよろしいですか?"
+"inboundUpdateSuccess" = "インバウンドが正常に更新されました。"
+"inboundCreateSuccess" = "インバウンドが正常に作成されました。"
 "copyLink" = "リンクをコピー"
 "address" = "アドレス"
 "network" = "ネットワーク"
@@ -237,6 +245,21 @@
 
 [pages.inbounds.toasts]
 "obtain" = "取得"
+"updateSuccess" = "更新が成功しました"
+"logCleanSuccess" = "ログがクリアされました"
+"inboundsUpdateSuccess" = "インバウンドが正常に更新されました"
+"inboundUpdateSuccess" = "インバウンドが正常に更新されました"
+"inboundCreateSuccess" = "インバウンドが正常に作成されました"
+"inboundDeleteSuccess" = "インバウンドが正常に削除されました"
+"inboundClientAddSuccess" = "インバウンドクライアントが追加されました"
+"inboundClientDeleteSuccess" = "インバウンドクライアントが削除されました"
+"inboundClientUpdateSuccess" = "インバウンドクライアントが更新されました"
+"delDepletedClientsSuccess" = "すべての枯渇したクライアントが削除されました"
+"resetAllClientTrafficSuccess" = "クライアントのすべてのトラフィックがリセットされました"
+"resetAllTrafficSuccess" = "すべてのトラフィックがリセットされました"
+"resetInboundClientTrafficSuccess" = "トラフィックがリセットされました"
+"trafficGetError" = "トラフィックの取得中にエラーが発生しました"
+"getNewX25519CertError" = "X25519証明書の取得中にエラーが発生しました。"
 
 [pages.inbounds.stream.general]
 "request" = "リクエスト"
@@ -259,6 +282,7 @@
 "infoDesc" = "ここでのすべての変更は、保存してパネルを再起動する必要があります"
 "restartPanel" = "パネル再起動"
 "restartPanelDesc" = "パネルを再起動してもよろしいですか?再起動後にパネルにアクセスできない場合は、サーバーでパネルログを確認してください"
+"restartPanelSuccess" = "パネルの再起動に成功しました"
 "actions" = "操作"
 "resetDefaultConfig" = "デフォルト設定にリセット"
 "panelSettings" = "一般"
@@ -366,6 +390,10 @@
 "title" = "Xray 設定"
 "save" = "保存"
 "restart" = "Xray 再起動"
+"restartSuccess" = "Xrayの再起動に成功しました"
+"stopSuccess" = "Xrayが正常に停止しました"
+"restartError" = "Xrayの再起動中にエラーが発生しました。"
+"stopError" = "Xrayの停止中にエラーが発生しました。"
 "basicTemplate" = "基本設定"
 "advancedTemplate" = "高度な設定"
 "generalConfigs" = "一般設定"
@@ -517,11 +545,14 @@
 "twoFactorModalError" = "コードが間違っています"
 
 [pages.settings.toasts]
-"modifySettings" = "設定を変更"
-"getSettings" = "設定を取得"
-"modifyUser" = "管理者を変更"
+"modifySettings" = "パラメーターが変更されました。"
+"getSettings" = "パラメーターの取得中にエラーが発生しました"
+"modifyUserError" = "管理者認証情報の変更中にエラーが発生しました。"
+"modifyUser" = "管理者の認証情報を正常に変更しました。"
 "originalUserPassIncorrect" = "旧ユーザー名または旧パスワードが間違っています"
 "userPassMustBeNotEmpty" = "新しいユーザー名と新しいパスワードは空にできません"
+"getOutboundTrafficError" = "送信トラフィックの取得エラー"
+"resetOutboundTrafficError" = "送信トラフィックのリセットエラー"
 
 [tgbot]
 "keyboardClosed" = "❌ カスタムキーボードが閉じられました!"

+ 37 - 6
web/translation/translate.pt_BR.toml

@@ -4,6 +4,8 @@
 "confirm" = "Confirmar"
 "cancel" = "Cancelar"
 "close" = "Fechar"
+"create" = "Criar"
+"update" = "Atualizar"
 "copy" = "Copiar"
 "copied" = "Copiado"
 "download" = "Baixar"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "Nenhum servidor Fake DNS adicionado."
 "emptyBalancersDesc" = "Nenhum balanceador adicionado."
 "emptyReverseDesc" = "Nenhum proxy reverso adicionado."
+"somethingWentWrong" = "Algo deu errado"
 
 [menu]
 "theme" = "Tema"
@@ -88,7 +91,7 @@
 "emptyUsername" = "Nome de usuário é obrigatório"
 "emptyPassword" = "Senha é obrigatória"
 "wrongUsernameOrPassword" = "Nome de usuário, senha ou código de dois fatores inválido."  
-"successLogin" = "Login realizado com sucesso"
+"successLogin" = "Você entrou na sua conta com sucesso."
 
 [pages.index]
 "title" = "Visão Geral"
@@ -139,6 +142,11 @@
 "exportDatabaseDesc" = "Clique para baixar um arquivo .db contendo um backup do seu banco de dados atual para o seu dispositivo."
 "importDatabase" = "Restaurar"
 "importDatabaseDesc" = "Clique para selecionar e enviar um arquivo .db do seu dispositivo para restaurar seu banco de dados a partir de um backup."
+"importDatabaseSuccess" = "O banco de dados foi importado com sucesso"
+"importDatabaseError" = "Ocorreu um erro ao importar o banco de dados"
+"readDatabaseError" = "Ocorreu um erro ao ler o banco de dados"
+"getDatabaseError" = "Ocorreu um erro ao recuperar o banco de dados"
+"getConfigError" = "Ocorreu um erro ao recuperar o arquivo de configuração"
 
 [pages.inbounds]
 "title" = "Inbounds"
@@ -159,14 +167,14 @@
 "generalActions" = "Ações Gerais"
 "autoRefresh" = "Atualização automática"
 "autoRefreshInterval" = "Intervalo"
-"create" = "Criar"
-"update" = "Atualizar"
 "modifyInbound" = "Modificar Inbound"
 "deleteInbound" = "Excluir Inbound"
 "deleteInboundContent" = "Tem certeza de que deseja excluir o inbound?"
 "deleteClient" = "Excluir Cliente"
 "deleteClientContent" = "Tem certeza de que deseja excluir o cliente?"
 "resetTrafficContent" = "Tem certeza de que deseja redefinir o tráfego?"
+"inboundUpdateSuccess" = "A entrada foi atualizada com sucesso."
+"inboundCreateSuccess" = "A entrada foi criada com sucesso."
 "copyLink" = "Copiar URL"
 "address" = "Endereço"
 "network" = "Rede"
@@ -237,6 +245,21 @@
 
 [pages.inbounds.toasts]
 "obtain" = "Obter"
+"updateSuccess" = "A atualização foi bem-sucedida"
+"logCleanSuccess" = "O log foi limpo"
+"inboundsUpdateSuccess" = "Entradas atualizadas com sucesso"
+"inboundUpdateSuccess" = "Entrada atualizada com sucesso"
+"inboundCreateSuccess" = "Entrada criada com sucesso"
+"inboundDeleteSuccess" = "Entrada excluída com sucesso"
+"inboundClientAddSuccess" = "Cliente(s) de entrada adicionado(s)"
+"inboundClientDeleteSuccess" = "Cliente de entrada excluído"
+"inboundClientUpdateSuccess" = "Cliente de entrada atualizado"
+"delDepletedClientsSuccess" = "Todos os clientes esgotados foram excluídos"
+"resetAllClientTrafficSuccess" = "Todo o tráfego do cliente foi reiniciado"
+"resetAllTrafficSuccess" = "Todo o tráfego foi reiniciado"
+"resetInboundClientTrafficSuccess" = "O tráfego foi reiniciado"
+"trafficGetError" = "Erro ao obter tráfegos"
+"getNewX25519CertError" = "Erro ao obter o certificado X25519."
 
 [pages.inbounds.stream.general]
 "request" = "Requisição"
@@ -259,6 +282,7 @@
 "infoDesc" = "Toda alteração feita aqui precisa ser salva. Reinicie o painel para aplicar as alterações."
 "restartPanel" = "Reiniciar Painel"
 "restartPanelDesc" = "Tem certeza de que deseja reiniciar o painel? Se não conseguir acessar o painel após reiniciar, consulte os logs do painel no servidor."
+"restartPanelSuccess" = "O painel foi reiniciado com sucesso"
 "actions" = "Ações"
 "resetDefaultConfig" = "Redefinir para Padrão"
 "panelSettings" = "Geral"
@@ -366,6 +390,10 @@
 "title" = "Configurações Xray"
 "save" = "Salvar"
 "restart" = "Reiniciar Xray"
+"restartSuccess" = "Xray foi reiniciado com sucesso"
+"stopSuccess" = "Xray foi interrompido com sucesso"
+"restartError" = "Ocorreu um erro ao reiniciar o Xray."
+"stopError" = "Ocorreu um erro ao parar o Xray."
 "basicTemplate" = "Básico"
 "advancedTemplate" = "Avançado"
 "generalConfigs" = "Geral"
@@ -517,11 +545,14 @@
 "twoFactorModalError" = "Código incorreto"
 
 [pages.settings.toasts]
-"modifySettings" = "Modificar Configurações"
-"getSettings" = "Obter Configurações"
-"modifyUser" = "Modificar Admin"
+"modifySettings" = "Os parâmetros foram alterados."
+"getSettings" = "Ocorreu um erro ao recuperar os parâmetros."
+"modifyUserError" = "Ocorreu um erro ao alterar as credenciais do administrador."
+"modifyUser" = "Você alterou com sucesso as credenciais do administrador."
 "originalUserPassIncorrect" = "O nome de usuário ou senha atual é inválido"
 "userPassMustBeNotEmpty" = "O novo nome de usuário e senha não podem estar vazios"
+"getOutboundTrafficError" = "Erro ao obter tráfego de saída"
+"resetOutboundTrafficError" = "Erro ao redefinir tráfego de saída"
 
 [tgbot]
 "keyboardClosed" = "❌ Teclado personalizado fechado!"

+ 38 - 7
web/translation/translate.ru_RU.toml

@@ -4,6 +4,8 @@
 "confirm" = "Подтвердить"
 "cancel" = "Отмена"
 "close" = "Закрыть"
+"create" = "Создать"
+"update" = "Обновить"
 "copy" = "Копировать"
 "copied" = "Скопировано"
 "download" = "Скачать"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "Нет добавленных Fake DNS-серверов."
 "emptyBalancersDesc" = "Нет добавленных балансировщиков."
 "emptyReverseDesc" = "Нет добавленных обратных прокси."
+"somethingWentWrong" = "Что-то пошло не так"
 
 [menu]
 "theme" = "Тема оформления"
@@ -88,7 +91,7 @@
 "emptyUsername" = "Введите имя пользователя"
 "emptyPassword" = "Введите пароль"
 "wrongUsernameOrPassword" = "Неверное имя пользователя, пароль или код двухфакторной аутентификации."  
-"successLogin" = "Успешный вход"
+"successLogin" = "Вы успешно вошли в свой аккаунт."
 
 [pages.index]
 "title" = "Статус системы"
@@ -134,11 +137,16 @@
 "logs" = "Журнал"
 "config" = "Конфигурация"
 "backup" = "Резервная копия"
-"backupTitle" = "База данных резервных копий"
+"backupTitle" = "Резервная копия"
 "exportDatabase" = "Экспорт базы данных"
 "exportDatabaseDesc" = "Нажмите, чтобы скачать файл .db, содержащий резервную копию вашей текущей базы данных на ваше устройство."
 "importDatabase" = "Импорт базы данных"
 "importDatabaseDesc" = "Нажмите, чтобы выбрать и загрузить файл .db с вашего устройства для восстановления базы данных из резервной копии."
+"importDatabaseSuccess" = "База данных успешно импортирована"
+"importDatabaseError" = "Произошла ошибка при импорте базы данных"
+"readDatabaseError" = "Произошла ошибка при чтении базы данных"
+"getDatabaseError" = "Произошла ошибка при получении базы данных"
+"getConfigError" = "Произошла ошибка при получении конфигурационного файла"
 
 [pages.inbounds]
 "title" = "Входящие подключения"
@@ -159,14 +167,14 @@
 "generalActions" = "Общие действия"
 "autoRefresh" = "Автообновление"
 "autoRefreshInterval" = "Интервал"
-"create" = "Создать"
-"update" = "Обновить"
 "modifyInbound" = "Изменить входящее подключение"
 "deleteInbound" = "Удалить входящее подключение"
 "deleteInboundContent" = "Вы уверены, что хотите удалить входящее подключение?"
 "deleteClient" = "Удалить клиента"
 "deleteClientContent" = "Вы уверены, что хотите удалить клиента?"
 "resetTrafficContent" = "Вы уверены, что хотите сбросить трафик?"
+"inboundUpdateSuccess" = "Входящее подключение успешно обновлено."
+"inboundCreateSuccess" = "Входящее подключение успешно создано."
 "copyLink" = "Копировать ссылку"
 "address" = "Адрес"
 "network" = "Сеть"
@@ -237,6 +245,21 @@
 
 [pages.inbounds.toasts]
 "obtain" = "Получить"
+"updateSuccess" = "Обновление прошло успешно"
+"logCleanSuccess" = "Лог был очищен"
+"inboundsUpdateSuccess" = "Входящие подключения успешно обновлены"
+"inboundUpdateSuccess" = "Входящее подключение успешно обновлено"
+"inboundCreateSuccess" = "Входящее подключение успешно создано"
+"inboundDeleteSuccess" = "Входящее подключение успешно удалено"
+"inboundClientAddSuccess" = "Клиент(ы) входящего подключения добавлен(ы)"
+"inboundClientDeleteSuccess" = "Клиент входящего подключения удалён"
+"inboundClientUpdateSuccess" = "Клиент входящего подключения обновлён"
+"delDepletedClientsSuccess" = "Все исчерпанные клиенты удалены"
+"resetAllClientTrafficSuccess" = "Весь трафик клиента сброшен"
+"resetAllTrafficSuccess" = "Весь трафик сброшен"
+"resetInboundClientTrafficSuccess" = "Трафик сброшен"
+"trafficGetError" = "Ошибка получения данных о трафике"
+"getNewX25519CertError" = "Ошибка при получении сертификата X25519."
 
 [pages.inbounds.stream.general]
 "request" = "Запрос"
@@ -259,6 +282,7 @@
 "infoDesc" = "Каждое выполненное изменение необходимо сохранить. Пожалуйста, перезапустите панель, чтобы изменения вступили в силу"
 "restartPanel" = "Перезапуск панели"
 "restartPanelDesc" = "Вы уверены, что хотите перезапустить панель? Подтвердите, и перезапуск произойдёт через 3 секунды. Если панель станет недоступной, проверьте лог сервера"
+"restartPanelSuccess" = "Панель успешно перезапущена"
 "actions" = "Действия"
 "resetDefaultConfig" = "Восстановить настройки по умолчанию"
 "panelSettings" = "Настройки панели"
@@ -366,6 +390,10 @@
 "title" = "Настройки Xray"
 "save" = "Сохранить"
 "restart" = "Перезапустить Xray"
+"restartSuccess" = "Xray успешно перезапущен"
+"stopSuccess" = "Xray успешно остановлен"
+"restartError" = "Произошла ошибка при перезапуске Xray."
+"stopError" = "Произошла ошибка при остановке Xray."
 "basicTemplate" = "Базовый шаблон"
 "advancedTemplate" = "Расширенный шаблон"
 "generalConfigs" = "Основные настройки"
@@ -517,11 +545,14 @@
 "twoFactorModalError" = "Неверный код"
 
 [pages.settings.toasts]
-"modifySettings" = "Настройки изменены"
-"getSettings" = "Просмотр настроек"
-"modifyUser" = "Изменение пользователя"
+"modifySettings" = "Параметры были изменены."
+"getSettings" = "Произошла ошибка при получении параметров."
+"modifyUserError" = "Произошла ошибка при изменении учетных данных администратора."
+"modifyUser" = "Вы успешно изменили учетные данные администратора."
 "originalUserPassIncorrect" = "Неверное имя пользователя или пароль"
 "userPassMustBeNotEmpty" = "Новое имя пользователя и новый пароль должны быть заполнены"
+"getOutboundTrafficError" = "Ошибка получения исходящего трафика"
+"resetOutboundTrafficError" = "Ошибка сброса исходящего трафика"
 
 [tgbot]
 "keyboardClosed" = "❌ Закрыта настраиваемая клавиатура!"

+ 37 - 6
web/translation/translate.tr_TR.toml

@@ -4,6 +4,8 @@
 "confirm" = "Onayla"
 "cancel" = "İptal"
 "close" = "Kapat"
+"create" = "Oluştur"
+"update" = "Güncelle"
 "copy" = "Kopyala"
 "copied" = "Kopyalandı"
 "download" = "İndir"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "Eklenmiş Fake DNS sunucusu yok."
 "emptyBalancersDesc" = "Eklenmiş dengeleyici yok."
 "emptyReverseDesc" = "Eklenmiş ters proxy yok."
+"somethingWentWrong" = "Bir şeyler yanlış gitti"
 
 [menu]
 "theme" = "Tema"
@@ -88,7 +91,7 @@
 "emptyUsername" = "Kullanıcı adı gerekli"
 "emptyPassword" = "Şifre gerekli"
 "wrongUsernameOrPassword" = "Geçersiz kullanıcı adı, şifre veya iki adımlı doğrulama kodu."  
-"successLogin" = "Giriş Başarılı"
+"successLogin" = "Hesabınıza başarıyla giriş yaptınız."
 
 [pages.index]
 "title" = "Genel Bakış"
@@ -139,6 +142,11 @@
 "exportDatabaseDesc" = "Mevcut veritabanınızın yedeğini içeren bir .db dosyasını cihazınıza indirmek için tıklayın."
 "importDatabase" = "Geri Yükle"
 "importDatabaseDesc" = "Cihazınızdan bir .db dosyası seçip yükleyerek veritabanınızı yedekten geri yüklemek için tıklayın."
+"importDatabaseSuccess" = "Veritabanı başarıyla içe aktarıldı"
+"importDatabaseError" = "Veritabanı içe aktarılırken bir hata oluştu"
+"readDatabaseError" = "Veritabanı okunurken bir hata oluştu"
+"getDatabaseError" = "Veritabanı alınırken bir hata oluştu"
+"getConfigError" = "Yapılandırma dosyası alınırken bir hata oluştu"
 
 [pages.inbounds]
 "title" = "Gelenler"
@@ -159,14 +167,14 @@
 "generalActions" = "Genel Eylemler"
 "autoRefresh" = "Otomatik yenileme"
 "autoRefreshInterval" = "Aralık"
-"create" = "Oluştur"
-"update" = "Güncelle"
 "modifyInbound" = "Geleni Düzenle"
 "deleteInbound" = "Geleni Sil"
 "deleteInboundContent" = "Geleni silmek istediğinizden emin misiniz?"
 "deleteClient" = "Müşteriyi Sil"
 "deleteClientContent" = "Müşteriyi silmek istediğinizden emin misiniz?"
 "resetTrafficContent" = "Trafiği sıfırlamak istediğinizden emin misiniz?"
+"inboundUpdateSuccess" = "Gelen bağlantı başarıyla güncellendi."
+"inboundCreateSuccess" = "Gelen bağlantı başarıyla oluşturuldu."
 "copyLink" = "URL'yi Kopyala"
 "address" = "Adres"
 "network" = "Ağ"
@@ -237,6 +245,21 @@
 
 [pages.inbounds.toasts]
 "obtain" = "Elde Et"
+"updateSuccess" = "Güncelleme başarılı oldu"
+"logCleanSuccess" = "Günlük temizlendi"
+"inboundsUpdateSuccess" = "Gelen bağlantılar başarıyla güncellendi"
+"inboundUpdateSuccess" = "Gelen bağlantı başarıyla güncellendi"
+"inboundCreateSuccess" = "Gelen bağlantı başarıyla oluşturuldu"
+"inboundDeleteSuccess" = "Gelen bağlantı başarıyla silindi"
+"inboundClientAddSuccess" = "Gelen bağlantı istemci(leri) eklendi"
+"inboundClientDeleteSuccess" = "Gelen bağlantı istemcisi silindi"
+"inboundClientUpdateSuccess" = "Gelen bağlantı istemcisi güncellendi"
+"delDepletedClientsSuccess" = "Tüm tükenmiş istemciler silindi"
+"resetAllClientTrafficSuccess" = "İstemcinin tüm trafiği sıfırlandı"
+"resetAllTrafficSuccess" = "Tüm trafik sıfırlandı"
+"resetInboundClientTrafficSuccess" = "Trafik sıfırlandı"
+"trafficGetError" = "Trafik bilgisi alınırken hata oluştu"
+"getNewX25519CertError" = "X25519 sertifikası alınırken hata oluştu."
 
 [pages.inbounds.stream.general]
 "request" = "İstek"
@@ -259,6 +282,7 @@
 "infoDesc" = "Burada yapılan her değişikliğin kaydedilmesi gerekir. Değişikliklerin uygulanması için paneli yeniden başlatın."
 "restartPanel" = "Paneli Yeniden Başlat"
 "restartPanelDesc" = "Paneli yeniden başlatmak istediğinizden emin misiniz? Yeniden başlattıktan sonra panele erişemezseniz, sunucudaki panel günlük bilgilerini görüntüleyin."
+"restartPanelSuccess" = "Panel başarıyla yeniden başlatıldı"
 "actions" = "Eylemler"
 "resetDefaultConfig" = "Varsayılana Sıfırla"
 "panelSettings" = "Genel"
@@ -366,6 +390,10 @@
 "title" = "Xray Yapılandırmaları"
 "save" = "Kaydet"
 "restart" = "Xray'i Yeniden Başlat"
+"restartSuccess" = "Xray başarıyla yeniden başlatıldı"
+"stopSuccess" = "Xray başarıyla durduruldu"
+"restartError" = "Xray yeniden başlatılırken bir hata oluştu."
+"stopError" = "Xray durdurulurken bir hata oluştu."
 "basicTemplate" = "Temeller"
 "advancedTemplate" = "Gelişmiş"
 "generalConfigs" = "Genel"
@@ -517,11 +545,14 @@
 "twoFactorModalError" = "Yanlış kod"
 
 [pages.settings.toasts]
-"modifySettings" = "Ayarları Değiştir"
-"getSettings" = "Ayarları Al"
-"modifyUser" = "Yönetici Değiştir"
+"modifySettings" = "Parametreler değiştirildi."
+"getSettings" = "Parametreler alınırken bir hata oluştu."
+"modifyUserError" = "Yönetici kimlik bilgileri değiştirilirken bir hata oluştu."
+"modifyUser" = "Yönetici kimlik bilgilerini başarıyla değiştirdiniz."
 "originalUserPassIncorrect" = "Mevcut kullanıcı adı veya şifre geçersiz"
 "userPassMustBeNotEmpty" = "Yeni kullanıcı adı ve şifre boş olamaz"
+"getOutboundTrafficError" = "Giden trafik alınırken hata"
+"resetOutboundTrafficError" = "Giden trafik sıfırlanırken hata"
 
 [tgbot]
 "keyboardClosed" = "❌ Özel klavye kapalı!"

+ 37 - 6
web/translation/translate.uk_UA.toml

@@ -4,6 +4,8 @@
 "confirm" = "Підтвердити"
 "cancel" = "Скасувати"
 "close" = "Закрити"
+"create" = "Створити"
+"update" = "Оновити"
 "copy" = "Копіювати"
 "copied" = "Скопійовано"
 "download" = "Завантажити"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "Немає доданих Fake DNS-серверів."
 "emptyBalancersDesc" = "Немає доданих балансувальників."
 "emptyReverseDesc" = "Немає доданих зворотних проксі."
+"somethingWentWrong" = "Щось пішло не так"
 
 [menu]
 "theme" = "Тема"
@@ -88,7 +91,7 @@
 "emptyUsername" = "Потрібне ім'я користувача"
 "emptyPassword" = "Потрібен пароль"
 "wrongUsernameOrPassword" = "Невірне ім’я користувача, пароль або код двофакторної аутентифікації."  
-"successLogin" = "Вхід"
+"successLogin" = "Ви успішно увійшли до свого облікового запису."
 
 [pages.index]
 "title" = "Огляд"
@@ -139,6 +142,11 @@
 "exportDatabaseDesc" = "Натисніть, щоб завантажити файл .db, що містить резервну копію вашої поточної бази даних на ваш пристрій."
 "importDatabase" = "Відновити"
 "importDatabaseDesc" = "Натисніть, щоб вибрати та завантажити файл .db з вашого пристрою для відновлення бази даних з резервної копії."
+"importDatabaseSuccess" = "Базу даних успішно імпортовано"
+"importDatabaseError" = "Виникла помилка під час імпорту бази даних"
+"readDatabaseError" = "Виникла помилка під час читання бази даних"
+"getDatabaseError" = "Виникла помилка під час отримання бази даних"
+"getConfigError" = "Виникла помилка під час отримання файлу конфігурації"
 
 [pages.inbounds]
 "title" = "Вхідні"
@@ -159,14 +167,14 @@
 "generalActions" = "Загальні дії"
 "autoRefresh" = "Автооновлення"
 "autoRefreshInterval" = "Інтервал"
-"create" = "Створити"
-"update" = "Оновити"
 "modifyInbound" = "Змінити вхідний"
 "deleteInbound" = "Видалити вхідні"
 "deleteInboundContent" = "Ви впевнені, що хочете видалити вхідні?"
 "deleteClient" = "Видалити клієнта"
 "deleteClientContent" = "Ви впевнені, що хочете видалити клієнт?"
 "resetTrafficContent" = "Ви впевнені, що хочете скинути трафік?"
+"inboundUpdateSuccess" = "Вхідне підключення успішно оновлено."
+"inboundCreateSuccess" = "Вхідне підключення успішно створено."
 "copyLink" = "Копіювати URL"
 "address" = "Адреса"
 "network" = "Мережа"
@@ -237,6 +245,21 @@
 
 [pages.inbounds.toasts]
 "obtain" = "Отримати"
+"updateSuccess" = "Оновлення пройшло успішно"
+"logCleanSuccess" = "Журнал очищено"
+"inboundsUpdateSuccess" = "Вхідні підключення успішно оновлено"
+"inboundUpdateSuccess" = "Вхідне підключення успішно оновлено"
+"inboundCreateSuccess" = "Вхідне підключення успішно створено"
+"inboundDeleteSuccess" = "Вхідне підключення успішно видалено"
+"inboundClientAddSuccess" = "Клієнт(и) вхідного підключення додано"
+"inboundClientDeleteSuccess" = "Клієнта вхідного підключення видалено"
+"inboundClientUpdateSuccess" = "Клієнта вхідного підключення оновлено"
+"delDepletedClientsSuccess" = "Усі вичерпані клієнти видалені"
+"resetAllClientTrafficSuccess" = "Весь трафік клієнта скинуто"
+"resetAllTrafficSuccess" = "Весь трафік скинуто"
+"resetInboundClientTrafficSuccess" = "Трафік скинуто"
+"trafficGetError" = "Помилка отримання даних про трафік"
+"getNewX25519CertError" = "Помилка при отриманні сертифіката X25519."
 
 [pages.inbounds.stream.general]
 "request" = "Запит"
@@ -259,6 +282,7 @@
 "infoDesc" = "Кожна внесена тут зміна повинна бути збережена. Перезапустіть панель, щоб застосувати зміни."
 "restartPanel" = "Перезапустити панель"
 "restartPanelDesc" = "Ви впевнені, що бажаєте перезапустити панель? Якщо ви не можете отримати доступ до панелі після перезапуску, будь ласка, перегляньте інформацію журналу панелі на сервері."
+"restartPanelSuccess" = "Панель успішно перезапущено"
 "actions" = "Дії"
 "resetDefaultConfig" = "Відновити значення за замовчуванням"
 "panelSettings" = "Загальні"
@@ -366,6 +390,10 @@
 "title" = "Xray конфігурації"
 "save" = "Зберегти"
 "restart" = "Перезапустити Xray"
+"restartSuccess" = "Xray успішно перезапущено"
+"stopSuccess" = "Xray успішно зупинено"
+"restartError" = "Виникла помилка під час перезапуску Xray."
+"stopError" = "Виникла помилка під час зупинки Xray."
 "basicTemplate" = "Базовий шаблон"
 "advancedTemplate" = "Додатково"
 "generalConfigs" = "Загальні конфігурації"
@@ -517,11 +545,14 @@
 "twoFactorModalError" = "Невірний код"
 
 [pages.settings.toasts]
-"modifySettings" = "Змінити налаштування"
-"getSettings" = "Отримати налаштування"
-"modifyUser" = "Змінити адміністратора"
+"modifySettings" = "Параметри було змінено."
+"getSettings" = "Виникла помилка під час отримання параметрів."
+"modifyUserError" = "Виникла помилка під час зміни облікових даних адміністратора."
+"modifyUser" = "Ви успішно змінили облікові дані адміністратора."
 "originalUserPassIncorrect" = "Поточне ім'я користувача або пароль недійсні"
 "userPassMustBeNotEmpty" = "Нове ім'я користувача та пароль порожні"
+"getOutboundTrafficError" = "Помилка отримання вихідного трафіку"
+"resetOutboundTrafficError" = "Помилка скидання вихідного трафіку"
 
 [tgbot]
 "keyboardClosed" = "❌ Спеціальна клавіатура закрита!"

+ 37 - 6
web/translation/translate.vi_VN.toml

@@ -4,6 +4,8 @@
 "confirm" = "Xác nhận"
 "cancel" = "Hủy bỏ"
 "close" = "Đóng"
+"create" = "Tạo"
+"update" = "Cập nhật"
 "copy" = "Sao chép"
 "copied" = "Đã sao chép"
 "download" = "Tải xuống"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "Không có máy chủ Fake DNS nào được thêm."
 "emptyBalancersDesc" = "Không có bộ cân bằng tải nào được thêm."
 "emptyReverseDesc" = "Không có proxy ngược nào được thêm."
+"somethingWentWrong" = "Đã xảy ra lỗi"
 
 [menu]
 "theme" = "Chủ đề"
@@ -88,7 +91,7 @@
 "emptyUsername" = "Vui lòng nhập tên người dùng."
 "emptyPassword" = "Vui lòng nhập mật khẩu."
 "wrongUsernameOrPassword" = "Tên người dùng, mật khẩu hoặc mã xác thực hai yếu tố không hợp lệ."  
-"successLogin" = "Đăng nhập thành công."
+"successLogin" = "Bạn đã đăng nhập vào tài khoản thành công."
 
 [pages.index]
 "title" = "Trạng thái hệ thống"
@@ -139,6 +142,11 @@
 "exportDatabaseDesc" = "Nhấp để tải xuống tệp .db chứa bản sao lưu cơ sở dữ liệu hiện tại của bạn vào thiết bị."
 "importDatabase" = "Khôi phục"
 "importDatabaseDesc" = "Nhấp để chọn và tải lên tệp .db từ thiết bị của bạn để khôi phục cơ sở dữ liệu từ bản sao lưu."
+"importDatabaseSuccess" = "Đã nhập cơ sở dữ liệu thành công"
+"importDatabaseError" = "Lỗi xảy ra khi nhập cơ sở dữ liệu"
+"readDatabaseError" = "Lỗi xảy ra khi đọc cơ sở dữ liệu"
+"getDatabaseError" = "Lỗi xảy ra khi truy xuất cơ sở dữ liệu"
+"getConfigError" = "Lỗi xảy ra khi truy xuất tệp cấu hình"
 
 [pages.inbounds]
 "title" = "Điểm vào (Inbounds)"
@@ -159,14 +167,14 @@
 "generalActions" = "Hành động chung"
 "autoRefresh" = "Tự động làm mới"
 "autoRefreshInterval" = "Khoảng thời gian"
-"create" = "Tạo mới"
-"update" = "Cập nhật"
 "modifyInbound" = "Chỉnh sửa điểm vào (Inbound)"
 "deleteInbound" = "Xóa điểm vào (Inbound)"
 "deleteInboundContent" = "Xác nhận xóa điểm vào? (Inbound)"
 "deleteClient" = "Xóa người dùng"
 "deleteClientContent" = "Bạn có chắc chắn muốn xóa người dùng không?"
 "resetTrafficContent" = "Xác nhận đặt lại lưu lượng?"
+"inboundUpdateSuccess" = "Đã cập nhật kết nối inbound thành công."
+"inboundCreateSuccess" = "Đã tạo kết nối inbound thành công."
 "copyLink" = "Sao chép liên kết"
 "address" = "Địa chỉ"
 "network" = "Mạng"
@@ -237,6 +245,21 @@
 
 [pages.inbounds.toasts]
 "obtain" = "Nhận"
+"updateSuccess" = "Cập nhật thành công"
+"logCleanSuccess" = "Đã xóa nhật ký"
+"inboundsUpdateSuccess" = "Đã cập nhật thành công các kết nối inbound"
+"inboundUpdateSuccess" = "Đã cập nhật thành công kết nối inbound"
+"inboundCreateSuccess" = "Đã tạo thành công kết nối inbound"
+"inboundDeleteSuccess" = "Đã xóa thành công kết nối inbound"
+"inboundClientAddSuccess" = "Đã thêm client inbound"
+"inboundClientDeleteSuccess" = "Đã xóa client inbound"
+"inboundClientUpdateSuccess" = "Đã cập nhật client inbound"
+"delDepletedClientsSuccess" = "Đã xóa tất cả client hết hạn"
+"resetAllClientTrafficSuccess" = "Đã đặt lại toàn bộ lưu lượng client"
+"resetAllTrafficSuccess" = "Đã đặt lại toàn bộ lưu lượng"
+"resetInboundClientTrafficSuccess" = "Đã đặt lại lưu lượng"
+"trafficGetError" = "Lỗi khi lấy thông tin lưu lượng"
+"getNewX25519CertError" = "Lỗi khi lấy chứng chỉ X25519."
 
 [pages.inbounds.stream.general]
 "request" = "Lời yêu cầu"
@@ -259,6 +282,7 @@
 "infoDesc" = "Mọi thay đổi được thực hiện ở đây cần phải được lưu. Vui lòng khởi động lại bảng điều khiển để áp dụng các thay đổi."
 "restartPanel" = "Khởi động lại bảng điều khiển"
 "restartPanelDesc" = "Bạn có chắc chắn muốn khởi động lại bảng điều khiển? Nhấn OK để khởi động lại sau 3 giây. Nếu bạn không thể truy cập bảng điều khiển sau khi khởi động lại, vui lòng xem thông tin nhật ký của bảng điều khiển trên máy chủ."
+"restartPanelSuccess" = "Đã khởi động lại bảng điều khiển thành công"
 "actions" = "Hành động"
 "resetDefaultConfig" = "Đặt lại cấu hình mặc định"
 "panelSettings" = "Bảng điều khiển"
@@ -366,6 +390,10 @@
 "title" = "Cài đặt Xray"
 "save" = "Lưu cài đặt"
 "restart" = "Khởi động lại Xray"
+"restartSuccess" = "Đã khởi động lại Xray thành công"
+"stopSuccess" = "Xray đã được dừng thành công"
+"restartError" = "Đã xảy ra lỗi khi khởi động lại Xray."
+"stopError" = "Đã xảy ra lỗi khi dừng Xray."
 "basicTemplate" = "Mẫu Cơ bản"
 "advancedTemplate" = "Mẫu Nâng cao"
 "generalConfigs" = "Cấu hình Chung"
@@ -517,11 +545,14 @@
 "twoFactorModalError" = "Mã sai"
 
 [pages.settings.toasts]
-"modifySettings" = "Chỉnh sửa cài đặt "
-"getSettings" = "Lấy cài đặt "
-"modifyUser" = "Chỉnh sửa người dùng "
+"modifySettings" = "Các tham số đã được thay đổi."
+"getSettings" = "Lỗi xảy ra khi truy xuất tham số."
+"modifyUserError" = "Đã xảy ra lỗi khi thay đổi thông tin đăng nhập quản trị viên."
+"modifyUser" = "Bạn đã thay đổi thông tin đăng nhập quản trị viên thành công."
 "originalUserPassIncorrect" = "Tên người dùng hoặc mật khẩu gốc không đúng"
 "userPassMustBeNotEmpty" = "Tên người dùng mới và mật khẩu mới không thể để trống"
+"getOutboundTrafficError" = "Lỗi khi lấy lưu lượng truy cập đi"
+"resetOutboundTrafficError" = "Lỗi khi đặt lại lưu lượng truy cập đi"
 
 [tgbot]
 "keyboardClosed" = "❌ Bàn phím tùy chỉnh đã đóng!"

+ 37 - 6
web/translation/translate.zh_CN.toml

@@ -4,6 +4,8 @@
 "confirm" = "确定"
 "cancel" = "取消"
 "close" = "关闭"
+"create" = "创建"
+"update" = "更新"
 "copy" = "复制"
 "copied" = "已复制"
 "download" = "下载"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "未添加Fake DNS服务器。"
 "emptyBalancersDesc" = "未添加负载均衡器。"
 "emptyReverseDesc" = "未添加反向代理。"
+"somethingWentWrong" = "出了点问题"
 
 [menu]
 "theme" = "主题"
@@ -88,7 +91,7 @@
 "emptyUsername" = "请输入用户名"
 "emptyPassword" = "请输入密码"
 "wrongUsernameOrPassword" = "用户名、密码或双重验证码无效。"  
-"successLogin" = "登录"
+"successLogin" = "您已成功登录您的账户。"
 
 [pages.index]
 "title" = "系统状态"
@@ -139,6 +142,11 @@
 "exportDatabaseDesc" = "点击下载包含当前数据库备份的 .db 文件到您的设备。"
 "importDatabase" = "恢复"
 "importDatabaseDesc" = "点击选择并上传设备中的 .db 文件以从备份恢复数据库。"
+"importDatabaseSuccess" = "数据库导入成功"
+"importDatabaseError" = "导入数据库时出错"
+"readDatabaseError" = "读取数据库时出错"
+"getDatabaseError" = "检索数据库时出错"
+"getConfigError" = "检索配置文件时出错"
 
 [pages.inbounds]
 "title" = "入站列表"
@@ -159,14 +167,14 @@
 "generalActions" = "通用操作"
 "autoRefresh" = "自动刷新"
 "autoRefreshInterval" = "间隔"
-"create" = "添加"
-"update" = "修改"
 "modifyInbound" = "修改入站"
 "deleteInbound" = "删除入站"
 "deleteInboundContent" = "确定要删除入站吗?"
 "deleteClient" = "删除客户端"
 "deleteClientContent" = "确定要删除客户端吗?"
 "resetTrafficContent" = "确定要重置流量吗?"
+"inboundUpdateSuccess" = "入站连接已成功更新。"
+"inboundCreateSuccess" = "入站连接已成功创建。"
 "copyLink" = "复制链接"
 "address" = "地址"
 "network" = "网络"
@@ -237,6 +245,21 @@
 
 [pages.inbounds.toasts]
 "obtain" = "获取"
+"updateSuccess" = "更新成功"
+"logCleanSuccess" = "日志已清除"
+"inboundsUpdateSuccess" = "入站连接已成功更新"
+"inboundUpdateSuccess" = "入站连接已成功更新"
+"inboundCreateSuccess" = "入站连接已成功创建"
+"inboundDeleteSuccess" = "入站连接已成功删除"
+"inboundClientAddSuccess" = "已添加入站客户端"
+"inboundClientDeleteSuccess" = "入站客户端已删除"
+"inboundClientUpdateSuccess" = "入站客户端已更新"
+"delDepletedClientsSuccess" = "所有耗尽客户端已删除"
+"resetAllClientTrafficSuccess" = "客户端所有流量已重置"
+"resetAllTrafficSuccess" = "所有流量已重置"
+"resetInboundClientTrafficSuccess" = "流量已重置"
+"trafficGetError" = "获取流量数据时出错"
+"getNewX25519CertError" = "获取X25519证书时出错。"
 
 [pages.inbounds.stream.general]
 "request" = "请求"
@@ -259,6 +282,7 @@
 "infoDesc" = "此处的所有更改都需要保存并重启面板才能生效"
 "restartPanel" = "重启面板"
 "restartPanelDesc" = "确定要重启面板吗?若重启后无法访问面板,请前往服务器查看面板日志信息"
+"restartPanelSuccess" = "面板已成功重启"
 "actions" = "操作"
 "resetDefaultConfig" = "重置为默认配置"
 "panelSettings" = "常规"
@@ -366,6 +390,10 @@
 "title" = "Xray 配置"
 "save" = "保存"
 "restart" = "重新启动 Xray"
+"restartSuccess" = "Xray 已成功重新启动"
+"stopSuccess" = "Xray 已成功停止"
+"restartError" = "重启Xray时发生错误。"
+"stopError" = "停止Xray时发生错误。"
 "basicTemplate" = "基础配置"
 "advancedTemplate" = "高级配置"
 "generalConfigs" = "常规配置"
@@ -517,11 +545,14 @@
 "twoFactorModalError" = "驗證碼錯誤"
 
 [pages.settings.toasts]
-"modifySettings" = "修改设置"
-"getSettings" = "获取设置"
-"modifyUser" = "修改管理员"
+"modifySettings" = "参数已更改。"
+"getSettings" = "获取参数时发生错误"
+"modifyUserError" = "更改管理员凭据时发生错误。"
+"modifyUser" = "您已成功更改管理员凭据。"
 "originalUserPassIncorrect" = "原用户名或原密码错误"
 "userPassMustBeNotEmpty" = "新用户名和新密码不能为空"
+"getOutboundTrafficError" = "获取出站流量错误"
+"resetOutboundTrafficError" = "重置出站流量错误"
 
 [tgbot]
 "keyboardClosed" = "❌ 自定义键盘已关闭!"

+ 37 - 4
web/translation/translate.zh_TW.toml

@@ -4,6 +4,8 @@
 "confirm" = "確定"
 "cancel" = "取消"
 "close" = "關閉"
+"create" = "建立"
+"update" = "更新"
 "copy" = "複製"
 "copied" = "已複製"
 "download" = "下載"
@@ -66,6 +68,7 @@
 "emptyFakeDnsDesc" = "未添加Fake DNS伺服器。"
 "emptyBalancersDesc" = "未添加負載平衡器。"
 "emptyReverseDesc" = "未添加反向代理。"
+"somethingWentWrong" = "發生錯誤"
 
 [menu]
 "theme" = "主題"
@@ -88,7 +91,7 @@
 "emptyUsername" = "請輸入使用者名稱"
 "emptyPassword" = "請輸入密碼"
 "wrongUsernameOrPassword" = "用戶名、密碼或雙重驗證碼無效。"  
-"successLogin" = "登入"
+"successLogin" = "您已成功登入您的帳戶。"
 
 [pages.index]
 "title" = "系統狀態"
@@ -139,6 +142,11 @@
 "exportDatabaseDesc" = "點擊下載包含當前資料庫備份的 .db 文件到您的設備。"
 "importDatabase" = "恢復"
 "importDatabaseDesc" = "點擊選擇並上傳設備中的 .db 文件以從備份恢復資料庫。"
+"importDatabaseSuccess" = "資料庫匯入成功"
+"importDatabaseError" = "匯入資料庫時發生錯誤"
+"readDatabaseError" = "讀取資料庫時發生錯誤"
+"getDatabaseError" = "檢索資料庫時發生錯誤"
+"getConfigError" = "檢索設定檔時發生錯誤"
 
 [pages.inbounds]
 "title" = "入站列表"
@@ -167,6 +175,8 @@
 "deleteClient" = "刪除客戶端"
 "deleteClientContent" = "確定要刪除客戶端嗎?"
 "resetTrafficContent" = "確定要重置流量嗎?"
+"inboundUpdateSuccess" = "入站連接已成功更新。"
+"inboundCreateSuccess" = "入站連接已成功建立。"
 "copyLink" = "複製連結"
 "address" = "地址"
 "network" = "網路"
@@ -237,6 +247,21 @@
 
 [pages.inbounds.toasts]
 "obtain" = "獲取"
+"updateSuccess" = "更新成功"
+"logCleanSuccess" = "日誌已清除"
+"inboundsUpdateSuccess" = "入站連接已成功更新"
+"inboundUpdateSuccess" = "入站連接已成功更新"
+"inboundCreateSuccess" = "入站連接已成功建立"
+"inboundDeleteSuccess" = "入站連接已成功刪除"
+"inboundClientAddSuccess" = "已新增入站客戶端"
+"inboundClientDeleteSuccess" = "入站客戶端已刪除"
+"inboundClientUpdateSuccess" = "入站客戶端已更新"
+"delDepletedClientsSuccess" = "所有耗盡客戶端已刪除"
+"resetAllClientTrafficSuccess" = "客戶端所有流量已重置"
+"resetAllTrafficSuccess" = "所有流量已重置"
+"resetInboundClientTrafficSuccess" = "流量已重置"
+"trafficGetError" = "取得流量資料時發生錯誤"
+"getNewX25519CertError" = "取得X25519憑證時發生錯誤。"
 
 [pages.inbounds.stream.general]
 "request" = "請求"
@@ -259,6 +284,7 @@
 "infoDesc" = "此處的所有更改都需要儲存並重啟面板才能生效"
 "restartPanel" = "重啟面板"
 "restartPanelDesc" = "確定要重啟面板嗎?若重啟後無法訪問面板,請前往伺服器檢視面板日誌資訊"
+"restartPanelSuccess" = "面板已成功重新啟動"
 "actions" = "操作"
 "resetDefaultConfig" = "重置為預設配置"
 "panelSettings" = "常規"
@@ -366,6 +392,10 @@
 "title" = "Xray 配置"
 "save" = "儲存"
 "restart" = "重新啟動 Xray"
+"restartSuccess" = "Xray 已成功重新啟動"
+"stopSuccess" = "Xray 已成功停止"
+"restartError" = "重新啟動Xray時發生錯誤。"
+"stopError" = "停止Xray時發生錯誤。"
 "basicTemplate" = "基礎配置"
 "advancedTemplate" = "高階配置"
 "generalConfigs" = "常規配置"
@@ -517,11 +547,14 @@
 "twoFactorModalError" = "驗證碼錯誤"
 
 [pages.settings.toasts]
-"modifySettings" = "修改設定"
-"getSettings" = "獲取設定"
-"modifyUser" = "修改管理員"
+"modifySettings" = "參數已更改。"
+"getSettings" = "取得參數時發生錯誤"
+"modifyUserError" = "變更管理員憑證時發生錯誤。"
+"modifyUser" = "您已成功變更管理員憑證。"
 "originalUserPassIncorrect" = "原使用者名稱或原密碼錯誤"
 "userPassMustBeNotEmpty" = "新使用者名稱和新密碼不能為空"
+"getOutboundTrafficError" = "取得出站流量錯誤"
+"resetOutboundTrafficError" = "重設出站流量錯誤"
 
 [tgbot]
 "keyboardClosed" = "❌ 自定義鍵盤已關閉!"