Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/controller/inbound.go66
-rw-r--r--web/controller/server.go20
-rw-r--r--web/controller/setting.go6
-rw-r--r--web/controller/util.go4
-rw-r--r--web/controller/xray_setting.go4
-rw-r--r--web/html/inbounds.html4
-rw-r--r--web/html/modals/warp_modal.html4
-rw-r--r--web/translation/translate.ar_EG.toml43
-rw-r--r--web/translation/translate.en_US.toml44
-rw-r--r--web/translation/translate.es_ES.toml43
-rw-r--r--web/translation/translate.fa_IR.toml43
-rw-r--r--web/translation/translate.id_ID.toml43
-rw-r--r--web/translation/translate.ja_JP.toml43
-rw-r--r--web/translation/translate.pt_BR.toml43
-rw-r--r--web/translation/translate.ru_RU.toml45
-rw-r--r--web/translation/translate.tr_TR.toml43
-rw-r--r--web/translation/translate.uk_UA.toml43
-rw-r--r--web/translation/translate.vi_VN.toml43
-rw-r--r--web/translation/translate.zh_CN.toml43
-rw-r--r--web/translation/translate.zh_TW.toml41
20 files changed, 536 insertions, 132 deletions
diff --git a/web/controller/inbound.go b/web/controller/inbound.go
index c22ce192..6c38b4ac 100644
--- a/web/controller/inbound.go
+++ b/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) {
diff --git a/web/controller/server.go b/web/controller/server.go
index 5d89e356..e00a1206 100644
--- a/web/controller/server.go
+++ b/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)
diff --git a/web/controller/setting.go b/web/controller/setting.go
index dd99e0f5..ddd9f55a 100644
--- a/web/controller/setting.go
+++ b/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) {
diff --git a/web/controller/util.go b/web/controller/util.go
index 40c7a8e9..a77d0e35 100644
--- a/web/controller/util.go
+++ b/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)
diff --git a/web/controller/xray_setting.go b/web/controller/xray_setting.go
index 3391ad3b..5b2d1036 100644
--- a/web/controller/xray_setting.go
+++ b/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)
diff --git a/web/html/inbounds.html b/web/html/inbounds.html
index cadcb95a..f632a5cc 100644
--- a/web/html/inbounds.html
+++ b/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,
diff --git a/web/html/modals/warp_modal.html b/web/html/modals/warp_modal.html
index 14426472..4bfb7ca1 100644
--- a/web/html/modals/warp_modal.html
+++ b/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>
diff --git a/web/translation/translate.ar_EG.toml b/web/translation/translate.ar_EG.toml
index 2bfe2216..f1ff5ac9 100644
--- a/web/translation/translate.ar_EG.toml
+++ b/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" = "❌ الكيبورد المخصص اتقفلت!"
diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml
index 0f93c9ed..ae2648b1 100644
--- a/web/translation/translate.en_US.toml
+++ b/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!"
diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml
index 29c166a3..797eeaf9 100644
--- a/web/translation/translate.es_ES.toml
+++ b/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" = "Reinicia