diff --git a/web/controller/inbound.go b/web/controller/inbound.go
index 99b472e5..f84a5721 100644
--- a/web/controller/inbound.go
+++ b/web/controller/inbound.go
@@ -90,7 +90,7 @@ func (a *InboundController) addInbound(c *gin.Context) {
inbound := &model.Inbound{}
err := c.ShouldBind(inbound)
if err != nil {
- jsonMsg(c, I18n(c, "pages.inbounds.addTo"), err)
+ jsonMsg(c, I18n(c, "pages.inbounds.create"), err)
return
}
user := session.GetLoginUser(c)
@@ -98,7 +98,7 @@ func (a *InboundController) addInbound(c *gin.Context) {
inbound.Enable = true
inbound.Tag = fmt.Sprintf("inbound-%v", inbound.Port)
inbound, err = a.inboundService.AddInbound(inbound)
- jsonMsgObj(c, I18n(c, "pages.inbounds.addTo"), inbound, err)
+ jsonMsgObj(c, I18n(c, "pages.inbounds.create"), inbound, err)
if err == nil {
a.xrayService.SetToNeedRestart()
}
@@ -120,7 +120,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, I18n(c, "pages.inbounds.revise"), err)
+ jsonMsg(c, I18n(c, "pages.inbounds.update"), err)
return
}
inbound := &model.Inbound{
@@ -128,11 +128,11 @@ func (a *InboundController) updateInbound(c *gin.Context) {
}
err = c.ShouldBind(inbound)
if err != nil {
- jsonMsg(c, I18n(c, "pages.inbounds.revise"), err)
+ jsonMsg(c, I18n(c, "pages.inbounds.update"), err)
return
}
inbound, err = a.inboundService.UpdateInbound(inbound)
- jsonMsgObj(c, I18n(c, "pages.inbounds.revise"), inbound, err)
+ jsonMsgObj(c, I18n(c, "pages.inbounds.update"), inbound, err)
if err == nil {
a.xrayService.SetToNeedRestart()
}
@@ -142,7 +142,7 @@ func (a *InboundController) addInboundClient(c *gin.Context) {
data := &model.Inbound{}
err := c.ShouldBind(data)
if err != nil {
- jsonMsg(c, I18n(c, "pages.inbounds.revise"), err)
+ jsonMsg(c, I18n(c, "pages.inbounds.update"), err)
return
}
@@ -160,7 +160,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, I18n(c, "pages.inbounds.revise"), err)
+ jsonMsg(c, I18n(c, "pages.inbounds.update"), err)
return
}
clientId := c.Param("clientId")
@@ -182,7 +182,7 @@ func (a *InboundController) updateInboundClient(c *gin.Context) {
inbound := &model.Inbound{}
err := c.ShouldBind(inbound)
if err != nil {
- jsonMsg(c, I18n(c, "pages.inbounds.revise"), err)
+ jsonMsg(c, I18n(c, "pages.inbounds.update"), err)
return
}
@@ -200,7 +200,7 @@ 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, I18n(c, "pages.inbounds.revise"), err)
+ jsonMsg(c, I18n(c, "pages.inbounds.update"), err)
return
}
email := c.Param("email")
@@ -228,7 +228,7 @@ func (a *InboundController) resetAllTraffics(c *gin.Context) {
func (a *InboundController) resetAllClientTraffics(c *gin.Context) {
id, err := strconv.Atoi(c.Param("id"))
if err != nil {
- jsonMsg(c, I18n(c, "pages.inbounds.revise"), err)
+ jsonMsg(c, I18n(c, "pages.inbounds.update"), err)
return
}
@@ -243,7 +243,7 @@ func (a *InboundController) resetAllClientTraffics(c *gin.Context) {
func (a *InboundController) delDepletedClients(c *gin.Context) {
id, err := strconv.Atoi(c.Param("id"))
if err != nil {
- jsonMsg(c, I18n(c, "pages.inbounds.revise"), err)
+ jsonMsg(c, I18n(c, "pages.inbounds.update"), err)
return
}
err = a.inboundService.DelDepletedClients(id)
diff --git a/web/controller/setting.go b/web/controller/setting.go
index 3f1e49df..10129d17 100644
--- a/web/controller/setting.go
+++ b/web/controller/setting.go
@@ -43,7 +43,7 @@ func (a *SettingController) initRouter(g *gin.RouterGroup) {
func (a *SettingController) getAllSetting(c *gin.Context) {
allSetting, err := a.settingService.GetAllSetting()
if err != nil {
- jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
+ jsonMsg(c, I18n(c, "pages.settings.toasts.getSetting"), err)
return
}
jsonObj(c, allSetting, nil)
@@ -52,22 +52,22 @@ func (a *SettingController) getAllSetting(c *gin.Context) {
func (a *SettingController) getDefaultSettings(c *gin.Context) {
expireDiff, err := a.settingService.GetExpireDiff()
if err != nil {
- jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
+ jsonMsg(c, I18n(c, "pages.settings.toasts.getSetting"), err)
return
}
trafficDiff, err := a.settingService.GetTrafficDiff()
if err != nil {
- jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
+ jsonMsg(c, I18n(c, "pages.settings.toasts.getSetting"), err)
return
}
defaultCert, err := a.settingService.GetCertFile()
if err != nil {
- jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
+ jsonMsg(c, I18n(c, "pages.settings.toasts.getSetting"), err)
return
}
defaultKey, err := a.settingService.GetKeyFile()
if err != nil {
- jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
+ jsonMsg(c, I18n(c, "pages.settings.toasts.getSetting"), err)
return
}
result := map[string]interface{}{
@@ -83,27 +83,27 @@ func (a *SettingController) updateSetting(c *gin.Context) {
allSetting := &entity.AllSetting{}
err := c.ShouldBind(allSetting)
if err != nil {
- jsonMsg(c, I18n(c, "pages.setting.toasts.modifySetting"), err)
+ jsonMsg(c, I18n(c, "pages.settings.toasts.modifySetting"), err)
return
}
err = a.settingService.UpdateAllSetting(allSetting)
- jsonMsg(c, I18n(c, "pages.setting.toasts.modifySetting"), err)
+ jsonMsg(c, I18n(c, "pages.settings.toasts.modifySetting"), err)
}
func (a *SettingController) updateUser(c *gin.Context) {
form := &updateUserForm{}
err := c.ShouldBind(form)
if err != nil {
- jsonMsg(c, I18n(c, "pages.setting.toasts.modifySetting"), err)
+ jsonMsg(c, I18n(c, "pages.settings.toasts.modifySetting"), err)
return
}
user := session.GetLoginUser(c)
if user.Username != form.OldUsername || user.Password != form.OldPassword {
- jsonMsg(c, I18n(c, "pages.setting.toasts.modifyUser"), errors.New(I18n(c, "pages.setting.toasts.originalUserPassIncorrect")))
+ jsonMsg(c, I18n(c, "pages.settings.toasts.modifyUser"), errors.New(I18n(c, "pages.settings.toasts.originalUserPassIncorrect")))
return
}
if form.NewUsername == "" || form.NewPassword == "" {
- jsonMsg(c, I18n(c, "pages.setting.toasts.modifyUser"), errors.New(I18n(c, "pages.setting.toasts.userPassMustBeNotEmpty")))
+ jsonMsg(c, I18n(c, "pages.settings.toasts.modifyUser"), errors.New(I18n(c, "pages.settings.toasts.userPassMustBeNotEmpty")))
return
}
err = a.userService.UpdateUser(user.Id, form.NewUsername, form.NewPassword)
@@ -112,18 +112,18 @@ func (a *SettingController) updateUser(c *gin.Context) {
user.Password = form.NewPassword
session.SetLoginUser(c, user)
}
- jsonMsg(c, I18n(c, "pages.setting.toasts.modifyUser"), err)
+ jsonMsg(c, I18n(c, "pages.settings.toasts.modifyUser"), err)
}
func (a *SettingController) restartPanel(c *gin.Context) {
err := a.panelService.RestartPanel(time.Second * 3)
- jsonMsg(c, I18n(c, "pages.setting.restartPanel"), err)
+ jsonMsg(c, I18n(c, "pages.settings.restartPanel"), err)
}
func (a *SettingController) getDefaultXrayConfig(c *gin.Context) {
defaultJsonConfig, err := a.settingService.GetDefaultXrayConfig()
if err != nil {
- jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
+ jsonMsg(c, I18n(c, "pages.settings.toasts.getSetting"), err)
return
}
jsonObj(c, defaultJsonConfig, nil)
diff --git a/web/controller/xui.go b/web/controller/xui.go
index 5832be84..fc3ca5f8 100644
--- a/web/controller/xui.go
+++ b/web/controller/xui.go
@@ -38,5 +38,5 @@ func (a *XUIController) inbounds(c *gin.Context) {
}
func (a *XUIController) setting(c *gin.Context) {
- html(c, "setting.html", "pages.setting.title", nil)
+ html(c, "setting.html", "pages.settings.title", nil)
}
diff --git a/web/html/xui/form/client.html b/web/html/xui/form/client.html
index 85b2a6fc..83aab2be 100644
--- a/web/html/xui/form/client.html
+++ b/web/html/xui/form/client.html
@@ -14,10 +14,10 @@
|
- {{ i18n "pages.inbounds.Email" }}
+ {{ i18n "pages.inbounds.email" }}
- {{ i18n "pages.inbounds.EmailDesc" }}
+ {{ i18n "pages.inbounds.emailDesc" }}
@@ -39,7 +39,7 @@
|
- | ID |
+ ID |
@@ -55,7 +55,7 @@
|
- | Subscription |
+ Subscription |
@@ -83,7 +83,7 @@
|
|
- {{ i18n "pages.inbounds.totalFlow" }}(GB)
+ {{ i18n "pages.inbounds.totalFlow" }}(GB)
0 {{ i18n "pages.inbounds.meansNoLimit" }}
@@ -129,7 +129,7 @@
|
- {{ i18n "pages.inbounds.expireDate" }}
+ {{ i18n "pages.inbounds.expireDate" }}
{{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}
diff --git a/web/html/xui/form/protocol/shadowsocks.html b/web/html/xui/form/protocol/shadowsocks.html
index 1affb1ee..3e325cbb 100644
--- a/web/html/xui/form/protocol/shadowsocks.html
+++ b/web/html/xui/form/protocol/shadowsocks.html
@@ -5,10 +5,10 @@
- {{ i18n "pages.inbounds.Email" }}
+ {{ i18n "pages.inbounds.email" }}
- {{ i18n "pages.inbounds.EmailDesc" }}
+ {{ i18n "pages.inbounds.emailDesc" }}
diff --git a/web/html/xui/form/protocol/trojan.html b/web/html/xui/form/protocol/trojan.html
index 46e625e1..bb0e9c37 100644
--- a/web/html/xui/form/protocol/trojan.html
+++ b/web/html/xui/form/protocol/trojan.html
@@ -5,10 +5,10 @@
- {{ i18n "pages.inbounds.Email" }}
+ {{ i18n "pages.inbounds.email" }}
- {{ i18n "pages.inbounds.EmailDesc" }}
+ {{ i18n "pages.inbounds.emailDesc" }}
diff --git a/web/html/xui/form/protocol/vless.html b/web/html/xui/form/protocol/vless.html
index 1629cc25..d39bc061 100644
--- a/web/html/xui/form/protocol/vless.html
+++ b/web/html/xui/form/protocol/vless.html
@@ -5,10 +5,10 @@
- {{ i18n "pages.inbounds.Email" }}
+ {{ i18n "pages.inbounds.email" }}
- {{ i18n "pages.inbounds.EmailDesc" }}
+ {{ i18n "pages.inbounds.emailDesc" }}
diff --git a/web/html/xui/form/protocol/vmess.html b/web/html/xui/form/protocol/vmess.html
index bf40db11..da20caec 100644
--- a/web/html/xui/form/protocol/vmess.html
+++ b/web/html/xui/form/protocol/vmess.html
@@ -5,10 +5,10 @@
|
- {{ i18n "pages.inbounds.Email" }}
+ {{ i18n "pages.inbounds.email" }}
- {{ i18n "pages.inbounds.EmailDesc" }}
+ {{ i18n "pages.inbounds.emailDesc" }}
diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml
index 7e0a869c..913e6f46 100644
--- a/web/translation/translate.en_US.toml
+++ b/web/translation/translate.en_US.toml
@@ -93,7 +93,7 @@
"config" = "Config"
"backup" = "Backup"
"backupTitle" = "Backup Database"
-"backupDescription" = "Remember to backup before importing a new database."
+"backupDescription" = "Remember to backup before importing a new database"
"exportDatabase" = "Download Database"
"importDatabase" = "Upload Database"
@@ -114,8 +114,8 @@
"resetTraffic" = "Reset traffic"
"addInbound" = "Add Inbound"
"generalActions" = "General Actions"
-"addTo" = "Create"
-"revise" = "Update"
+"create" = "Create"
+"update" = "Update"
"modifyInbound" = "Modify InBound"
"deleteInbound" = "Delete Inbound"
"deleteInboundContent" = "Are you sure you want to delete inbound?"
@@ -155,9 +155,11 @@
"delDepletedClients" = "Delete depleted clients"
"delDepletedClientsTitle" = "Delete depleted clients"
"delDepletedClientsContent" = "Are you sure to delete all depleted clients ?"
-"Email" = "Email"
-"EmailDesc" = "The Email Must Be Completely Unique"
+"email" = "Email"
+"emailDesc" = "The Email Must Be Completely Unique"
"setDefaultCert" = "Set cert from panel"
+"telegramDesc" = "use Telegram ID without @ or chat IDs ( you can get it here @userinfobot )"
+"subscriptionDesc" = "you can find your sub link on Details, also ou can use the same name for several configurations"
[pages.client]
"add" = "Add client"
@@ -195,9 +197,10 @@
[pages.inbounds.stream.quic]
"encryption" = "Encryption"
-[pages.setting]
+[pages.settings]
"title" = "Setting"
"save" = "Save"
+"infoDesc" = "Every change here needs to be saved and restart panel to take effect"
"restartPanel" = "Restart Panel"
"restartPanelDesc" = "Are you sure you want to restart the panel? Click OK to restart after 3 seconds. If you cannot access the panel after restarting, please go to the server to view the panel log information"
"resetDefaultConfig" = "Reset to default config"
@@ -205,45 +208,30 @@
"userSetting" = "User Setting"
"xrayConfiguration" = "xray Configuration"
"TGReminder" = "TG Reminder Related Settings"
-"otherSetting" = "Other Setting"
"panelListeningIP" = "Panel listening IP"
-"panelListeningIPDesc" = "Leave blank by default to monitor all IPs, restart the panel to take effect"
+"panelListeningIPDesc" = "Leave blank by default to monitor all IPs"
"panelPort" = "Panel Port"
-"panelPortDesc" = "Restart the panel to take effect"
+"panelPortDesc" = "Port number for serving this panel"
"publicKeyPath" = "Panel certificate public key file path"
-"publicKeyPathDesc" = "Fill in an absolute path starting with '/', restart the panel to take effect"
+"publicKeyPathDesc" = "Fill in an absolute path starting with '/'"
"privateKeyPath" = "Panel certificate private key file path"
-"privateKeyPathDesc" = "Fill in an absolute path starting with '/', restart the panel to take effect"
+"privateKeyPathDesc" = "Fill in an absolute path starting with '/'"
"panelUrlPath" = "Panel url root path"
-"panelUrlPathDesc" = "Must start with '/' and end with '/', restart the panel to take effect"
+"panelUrlPathDesc" = "Must start with '/' and end with '/'"
"oldUsername" = "Current Username"
"currentPassword" = "Current Password"
"newUsername" = "New Username"
"newPassword" = "New Password"
-"advancedTemplate" = "Advanced template parts"
-"completeTemplate" = "Complete template of Xray configuration"
-"xrayConfigTemplate" = "Xray Configuration Template"
-"xrayConfigTemplateDesc" = "Generate the final xray configuration file based on this template, restart the panel to take effect."
-"xrayConfigTorrent" = "Ban bittorrent usage"
-"xrayConfigTorrentDesc" = "Change the configuration template to avoid using bittorrent by users, restart the panel to take effect"
-"xrayConfigPrivateIp" = "Ban private ip range to connect"
-"xrayConfigPrivateIpDesc" = "Change the configuration template to avoid connecting with private IP ranges, restart the panel to take effect"
-"xrayConfigInbounds" = "Configuration of Inbounds"
-"xrayConfigInboundsDesc" = "Change the configuration template to accept special clients, restart the panel to take effect"
-"xrayConfigOutbounds" = "Configuration of Outbounds"
-"xrayConfigOutboundsDesc" = "Change the configuration template to define outgoing ways for this server, restart the panel to take effect"
-"xrayConfigRoutings" = "Configuration of Routing rules"
-"xrayConfigRoutingsDesc" = "Change the configuration template to define Routing rules for this server, restart the panel to take effect"
"telegramBotEnable" = "Enable telegram bot"
-"telegramBotEnableDesc" = "Restart the panel to take effect"
+"telegramBotEnableDesc" = "Your telegram bot will interact with panel"
"telegramToken" = "Telegram Token"
-"telegramTokenDesc" = "Restart the panel to take effect"
+"telegramTokenDesc" = "The Token you have got from BotFather"
"telegramChatId" = "Telegram Admin ChatIds"
-"telegramChatIdDesc" = "Multi chatIDs separated by comma. Restart the panel to take effect"
+"telegramChatIdDesc" = "Multi chatIDs separated by comma"
"telegramNotifyTime" = "Telegram bot notification time"
-"telegramNotifyTimeDesc" = "Using Crontab timing format. Restart the panel to take effect"
+"telegramNotifyTimeDesc" = "Using Crontab timing format"
"tgNotifyBackup" = "Database backup"
-"tgNotifyBackupDesc" = "Sending database backup file with report notification. Restart the panel to take effect"
+"tgNotifyBackupDesc" = "Sending database backup file with report notification"
"sessionMaxAge" = "Session maximum age"
"sessionMaxAgeDesc" = "The time that you can stay login (unit: minute)"
"expireTimeDiff" = "Exhaustion time threshold"
@@ -252,10 +240,78 @@
"trafficDiffDesc" = "Detect exhaustion before finishing traffic (unit:GB)"
"tgNotifyCpu" = "CPU percentage alert threshold"
"tgNotifyCpuDesc" = "This telegram bot will send you a notification if CPU usage is more than this percentage (unit:%)"
-"timeZonee" = "Time Zone"
-"timeZoneDesc" = "The scheduled task runs according to the time in the time zone, and restarts the panel to take effect"
+"timeZone" = "Time Zone"
+"timeZoneDesc" = "The scheduled task runs according to the time in the time zone"
-[pages.setting.toasts]
+[pages.settings.templates]
+"title" = "Templates"
+"basicTemplate" = "Basic Template"
+"advancedTemplate" = "Advanced Template"
+"completeTemplate" = "Complete Template"
+"generalConfigs" = "General Configs"
+"generalConfigsDesc" = "These options will provide general adjustmets"
+"blockConfigs" = "Blocking Configs"
+"blockConfigsDesc" = "These options will prevent users from connecting to specific protocols and websites"
+"countryConfigs" = "Country Configs"
+"countryConfigsDesc" = "These options will configure connecting to specific country domains"
+"ipv4Configs" = "IPv4 Configs"
+"ipv4ConfigsDesc" = "These options will route to target domains only via IPv4"
+"xrayConfigTemplate" = "Xray Configuration Template"
+"xrayConfigTemplateDesc" = "Generate the final Xray configuration file based on this template"
+"xrayConfigFreedomStrategy" = "Configure Freedom protocol's strategy"
+"xrayConfigFreedomStrategyDesc" = "Set output strategy of network in freedom protocol"
+"xrayConfigRoutingStrategy" = "Configure domain strategy of Routing"
+"xrayConfigRoutingStrategyDesc" = "Set overall Routing strategy of DNS resolving"
+"xrayConfigTorrent" = "Ban BitTorrent Usage"
+"xrayConfigTorrentDesc" = "Change the configuration template to avoid using BitTorrent by users"
+"xrayConfigPrivateIp" = "Ban Private IP Ranges to Connect"
+"xrayConfigPrivateIpDesc" = "Change the configuration template to avoid connecting to private IP ranges"
+"xrayConfigAds" = "Block Ads"
+"xrayConfigAdsDesc" = "Change the configuration template to block ads"
+"xrayConfigFamily" = "Enable Family friendly config"
+"xrayConfigFamilyDesc" = "Avoid connecting to unsafe websites for family"
+"xrayConfigIRIp" = "Disable connection to Iran IP ranges"
+"xrayConfigIRIpDesc" = "Change the configuration template to avoid connecting to Iran IP ranges"
+"xrayConfigIRDomain" = "Disable connection to Iran domains"
+"xrayConfigIRDomainDesc" = "Change the configuration template to avoid connecting to Iran domains"
+"xrayConfigChinaIp" = "Disable connection to China IP ranges"
+"xrayConfigChinaIpDesc" = "Change the configuration template to avoid connecting to China IP ranges"
+"xrayConfigChinaDomain" = "Disable connection to China domains"
+"xrayConfigChinaDomainDesc" = "Change the configuration template to avoid connecting to China domains"
+"xrayConfigRussiaIp" = "Disable connection to Russia IP ranges"
+"xrayConfigRussiaIpDesc" = "Change the configuration template to avoid connecting to Russia IP ranges"
+"xrayConfigRussiaDomain" = "Disable connection to Russia domains"
+"xrayConfigRussiaDomainDesc" = "Change the configuration template to avoid connecting to Russia domains"
+"xrayConfigDirectIRIp" = "Direct connection to Iran IP ranges"
+"xrayConfigDirectIRIpDesc" = "Change the configuration template for direct connecting to Iran IP ranges"
+"xrayConfigDirectIRDomain" = "Direct connection to Iran domains"
+"xrayConfigDirectIRDomainDesc" = "Change the configuration template for direct connecting to Iran domains"
+"xrayConfigDirectChinaIp" = "Direct connection to China IP ranges"
+"xrayConfigDirectChinaIpDesc" = "Change the configuration template for direct connecting to China IP ranges"
+"xrayConfigDirectChinaDomain" = "Direct connection to China domains"
+"xrayConfigDirectChinaDomainDesc" = "Change the configuration template for direct connecting to China domains"
+"xrayConfigDirectRussiaIp" = "Direct connection to Russia IP ranges"
+"xrayConfigDirectRussiaIpDesc" = "Change the configuration template for direct connecting to Russia IP ranges"
+"xrayConfigDirectRussiaDomain" = "Direct connection to Russia domains"
+"xrayConfigDirectRussiaDomainDesc" = "Change the configuration template for direct connecting to Russia domains"
+"xrayConfigGoogleIPv4" = "Use IPv4 for Google"
+"xrayConfigGoogleIPv4Desc" = "Add routing for Google to connect with IPv4"
+"xrayConfigNetflixIPv4" = "Use IPv4 for Netflix"
+"xrayConfigNetflixIPv4Desc" = "Add routing for Netflix to connect with IPv4"
+"xrayConfigInbounds" = "Configuration of Inbounds"
+"xrayConfigInboundsDesc" = "Change the configuration template to accept specific clients"
+"xrayConfigOutbounds" = "Configuration of Outbounds"
+"xrayConfigOutboundsDesc" = "Change the configuration template to define outgoing ways for this server"
+"xrayConfigRoutings" = "Configuration of routing rules"
+"xrayConfigRoutingsDesc" = "Change the configuration template to define routing rules for this server"
+"manualLists" = "Manual lists"
+"manualListsDesc" = "PLease use JSON array format"
+"manualBlockedIPs" = "List of blocked IPs"
+"manualBlockedDomains" = "List of blocked domains"
+"manualDirectIPs" = "List of direct IPs"
+"manualDirectDomains" = "List of direct domains"
+
+[pages.settings.toasts]
"modifySetting" = "Modify setting"
"getSetting" = "Get setting"
"modifyUser" = "Modify user"
diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml
index ce48f647..efce12e3 100644
--- a/web/translation/translate.fa_IR.toml
+++ b/web/translation/translate.fa_IR.toml
@@ -12,7 +12,7 @@
"protocol" = "پروتکل"
"search" = "جستجو"
-"loading" = "در حال بروزرسانی..."
+"loading" = "در حال بروزرسانی.."
"second" = "ثانیه"
"minute" = "دقیقه"
"hour" = "ساعت"
@@ -76,7 +76,7 @@
"restartXray" = "شروع مجدد"
"xraySwitch" = "تغییر ورژن"
"xraySwitchClick" = "ورژن مورد نظر را انتخاب کنید"
-"xraySwitchClickDesk" = "لطفا با دقت انتخاب کنید ، در صورت انتخاب اشتباه امکان قطعی سیستم وجود دارد ."
+"xraySwitchClickDesk" = "لطفا با دقت انتخاب کنید ، در صورت انتخاب اشتباه امکان قطعی سیستم وجود دارد "
"operationHours" = "مدت فعالیت"
"operationHoursDesc" = "مدت فعالیت سیستم بعد از روشن شدن"
"systemLoad" = "بار روی سیستم"
@@ -93,7 +93,7 @@
"config" = "تنظیمات"
"backup" = "پشتیبان گیری"
"backupTitle" = "پشتیبان گیری دیتابیس"
-"backupDescription" = "به یاد داشته باشید که قبل از وارد کردن یک دیتابیس جدید، نسخه پشتیبان تهیه کنید."
+"backupDescription" = "به یاد داشته باشید که قبل از وارد کردن یک دیتابیس جدید، نسخه پشتیبان تهیه کنید"
"exportDatabase" = "دانلود دیتابیس"
"importDatabase" = "آپلود دیتابیس"
@@ -114,8 +114,8 @@
"resetTraffic" = "ریست ترافیک"
"addInbound" = "اضافه کردن سرویس"
"generalActions" = "عملیات کلی"
-"addTo" = "اضافه کردن"
-"revise" = "ویرایش"
+"create" = "اضافه کردن"
+"update" = "ویرایش"
"modifyInbound" = "ویرایش سرویس"
"deleteInbound" = "حذف سرویس"
"deleteInboundContent" = "آیا مطمئن به حذف سرویس هستید ؟"
@@ -155,9 +155,11 @@
"delDepletedClients" = "حذف کاربران منقضی"
"delDepletedClientsTitle" = "حذف کاربران منقضی"
"delDepletedClientsContent" = "آیا مطمئن هستید مه میخواهید تمامی کاربران منقضی شده را حذف کنید؟"
-"Email" = "ایمیل"
-"EmailDesc" = "ایمیل باید کاملا منحصر به فرد باشد"
+"email" = "ایمیل"
+"emailDesc" = "ایمیل باید کاملا منحصر به فرد باشد"
"setDefaultCert" = "استفاده از گواهی پنل"
+"telegramDesc" = "از آیدی تلگرام بدون @ یا آیدی چت استفاده کنید (می توانید آن را از اینجا دریافت کنید @userinfobot)"
+"subscriptionDesc" = "می توانید ساب لینک خود را در جزئیات پیدا کنید، همچنین می توانید از همین نام برای چندین کانفیگ استفاده کنید"
[pages.client]
"add" = "کاربر جدید"
@@ -195,9 +197,10 @@
[pages.inbounds.stream.quic]
"encryption" = "رمزنگاری"
-[pages.setting]
+[pages.settings]
"title" = "تنظیمات"
"save" = "ذخیره"
+"infoDesc" = "برای اعمال تغییرات در این بخش باید پس از ذخیره کردن، پنل را ریستارت کنید"
"restartPanel" = "ریستارت پنل"
"restartPanelDesc" = "آیا مطمئن هستید که می خواهید پنل را دوباره راه اندازی کنید؟ برای راه اندازی مجدد روی OK کلیک کنید. اگر بعد از 3 ثانیه نمی توانید به پنل دسترسی پیدا کنید، لطفاً برای مشاهده اطلاعات گزارش پانل به سرور برگردید"
"resetDefaultConfig" = "برگشت به تنظیمات پیشفرض"
@@ -205,43 +208,28 @@
"userSetting" = "تنظیمات مدیر"
"xrayConfiguration" = "تنظیمات Xray"
"TGReminder" = "تنظیمات ربات تلگرام"
-"otherSetting" = "دیگر تنظیمات"
"panelListeningIP" = "محدودیت آی پی پنل"
-"panelListeningIPDesc" = "برای استفاده از تمام IP ها به طور پیش فرض خالی بگذارید. پنل را مجدداً راه اندازی کنید تا اعمال شود"
+"panelListeningIPDesc" = "برای استفاده از تمام آیپیها به طور پیش فرض خالی بگذارید"
"panelPort" = "پورت پنل"
-"panelPortDesc" = "پنل را مجدداً راه اندازی کنید تا اعمال شود"
+"panelPortDesc" = "پورت مورد استفاده برای نمایش این پنل"
"publicKeyPath" = "مسیر فایل گواهی کلید عمومی پنل"
-"publicKeyPathDesc" = "باید یک مسیر مطلق باشد که با / شروع می شود . پنل را مجدداً راه اندازی کنید تا اعمال شود"
+"publicKeyPathDesc" = "باید یک مسیر مطلق باشد که با / شروع می شود "
"privateKeyPath" = "مسیر فایل گواهی کلید خصوصی پنل"
-"privateKeyPathDesc" = "باید یک مسیر مطلق باشد که با / شروع می شود . پنل را مجدداً راه اندازی کنید تا اعمال شود"
+"privateKeyPathDesc" = "باید یک مسیر مطلق باشد که با / شروع می شود "
"panelUrlPath" = "آدرس روت پنل"
-"panelUrlPathDesc" = "باید با '/' شروع شود و با '/' تمام شود. پنل را مجدداً راه اندازی کنید تا اعمال شود"
+"panelUrlPathDesc" = "باید با '/' شروع شود و با '/' تمام شود"
"oldUsername" = "نام کاربری فعلی"
"currentPassword" = "رمز عبور فعلی"
"newUsername" = "نام کاربری جدید"
"newPassword" = "رمز عبور جدید"
-"advancedTemplate" = "بخش های پیشرفته الگو"
-"completeTemplate" = "الگوی کامل تنظیمات ایکس ری"
-"xrayConfigTemplate" = "تنظیمات الگو ایکس ری"
-"xrayConfigTemplateDesc" = "فایل پیکربندی ایکس ری نهایی بر اساس این الگو ایجاد میشود. لطفاً این را تغییر ندهید مگر اینکه دقیقاً بدانید که چه کاری انجام می دهید! پنل را مجدداً راه اندازی کنید تا اعمال شود"
-"xrayConfigTorrent" = "فیلتر کردن بیت تورنت"
-"xrayConfigTorrentDesc" = "الگوی تنظیمات را برای فیلتر کردن پروتکل بیت تورنت برای کاربران تغییر میدهد. پنل را مجدداً راه اندازی کنید تا اعمال شود"
-"xrayConfigPrivateIp" = "جلوگیری از اتصال آی پی های نامعتبر"
-"xrayConfigPrivateIpDesc" = "الگوی تنظیمات را برای فیلتر کردن اتصال آی پی های نامعتبر و بسته های سرگردان تغییر میدهد. پنل را مجدداً راه اندازی کنید تا اعمال شود"
-"xrayConfigInbounds" = "تنظیمات ورودی"
-"xrayConfigInboundsDesc" = "میتوانید الگوی تنظیمات را برای ورودی های خاص تنظیم نمایید. پنل را مجدداً راه اندازی کنید تا اعمال شود"
-"xrayConfigOutbounds" = "تنظیمات خروجی"
-"xrayConfigOutboundsDesc" = "میتوانید الگوی تنظیمات را برای خروجی اینترنت تنظیم نمایید. پنل را مجدداً راه اندازی کنید تا اعمال شود"
-"xrayConfigRoutings" = "تنظیمات قوانین مسیریابی"
-"xrayConfigRoutingsDesc" = "میتوانید الگوی تنظیمات را برای مسیریابی تنظیم نمایید. پنل را مجدداً راه اندازی کنید تا اعمال شود"
"telegramBotEnable" = "فعالسازی ربات تلگرام"
-"telegramBotEnableDesc" = "پنل را مجدداً راه اندازی کنید تا اعمال شود"
+"telegramBotEnableDesc" = "از طریق بات تلگرام به امکانات ابن پنل متصل شوید"
"telegramToken" = "توکن تلگرام"
-"telegramTokenDesc" = "پنل را مجدداً راه اندازی کنید تا اعمال شود"
+"telegramTokenDesc" = "توکن را باید از مدیر بات های تلگرام دریافت کنید @botfather"
"telegramChatId" = "آی دی تلگرام مدیریت"
-"telegramChatIdDesc" = "با استفاده از کاما میتونید چند آی دی را از هم جدا کنید. پنل را مجدداً راه اندازی کنید تا اعمال شود"
+"telegramChatIdDesc" = "با استفاده از کاما میتونید چند آی دی را از هم جدا کنید"
"telegramNotifyTime" = "مدت زمان نوتیفیکیشن ربات تلگرام"
-"telegramNotifyTimeDesc" = "از فرمت زمان بندی لینوکس استفاده کنید . پنل را مجدداً راه اندازی کنید تا اعمال شود"
+"telegramNotifyTimeDesc" = "از فرمت زمان بندی لینوکس استفاده کنید "
"tgNotifyBackup" = "پشتیبان گیری از پایگاه داده"
"tgNotifyBackupDesc" = "ارسال کپی فایل پایگاه داده به همراه گزارش دوره ای"
"sessionMaxAge" = "بیشینه زمان جلسه وب"
@@ -252,12 +240,80 @@
"trafficDiffDesc" = "فاصله زمانی هشدار تا رسیدن به اتمام ترافیک (واحد: گیگابایت)"
"tgNotifyCpu" = "آستانه هشدار درصد پردازنده"
"tgNotifyCpuDesc" = "این ربات تلگرام در صورت استفاده پردازنده بیشتر از این درصد برای شما پیام ارسال می کند.(واحد: درصد)"
-"timeZonee" = "منظقه زمانی"
+"timeZone" = "منظقه زمانی"
"timeZoneDesc" = "وظایف برنامه ریزی شده بر اساس این منطقه زمانی اجرا می شوند. پنل را مجدداً راه اندازی می کند تا اعمال شود"
-[pages.setting.toasts]
+[pages.settings.templates]
+"title" = "الگوها"
+"basicTemplate" = "بخش الگو پایه"
+"advancedTemplate" = "بخش الگو پیشرفته"
+"completeTemplate" = "بخش الگو کامل"
+"generalConfigs" = "تنظیمات عمومی"
+"generalConfigsDesc" = "این تنظیمات میتواند ترافیک کلی سرویس را متاثر کند"
+"blockConfigs" = "مسدود سازی"
+"blockConfigsDesc" = "این گزینه ها از اتصال کاربران به پروتکل ها و وب سایت های خاص جلوگیری می کند"
+"countryConfigs" = "تنظیمات برای کشورها"
+"countryConfigsDesc" = "این گزینه اتصال کاربران به دامنه های کشوری خاص را تنظیم می کند"
+"ipv4Configs" = "تنظیمات برای IPv4"
+"ipv4ConfigsDesc" = "این گزینه فقط از طریق آیپی ورژن ۴ به دامنه های هدف هدایت می شود"
+"xrayConfigTemplate" = "تنظیمات الگو ایکس ری"
+"xrayConfigTemplateDesc" = "فایل پیکربندی ایکس ری نهایی بر اساس این الگو ایجاد میشود. لطفاً این را تغییر ندهید مگر اینکه دقیقاً بدانید که چه کاری انجام می دهید!"
+"xrayConfigFreedomStrategy" = "روش استفاده از شبکه خروجی مستقیم"
+"xrayConfigFreedomStrategyDesc" = "تعیین روش استفاده از خروجی برای پرتکل مستقیم"
+"xrayConfigRoutingStrategy" = "پیکربندی استراتژی حل دامنه در مسیریابی"
+"xrayConfigRoutingStrategyDesc" = "تعیین استراتژی مسیریابی کلی برای پیدا کردن دامنه"
+"xrayConfigTorrent" = "فیلتر کردن بیت تورنت"
+"xrayConfigTorrentDesc" = "الگوی تنظیمات را برای فیلتر کردن پروتکل بیت تورنت برای کاربران تغییر میدهد"
+"xrayConfigPrivateIp" = "جلوگیری از اتصال آیپی های خصوصی یا محلی"
+"xrayConfigPrivateIpDesc" = "الگوی تنظیمات را برای فیلتر کردن اتصال آیپی های خصوصی یا محلی و بسته های سرگردان تغییر میدهد"
+"xrayConfigAds" = "مسدود کردن تبلیغات"
+"xrayConfigAdsDesc" = "الگوی تنظیمات را برای مسدود کردن تبلیغات تغییر میدهد"
+"xrayConfigFamily" = "فعال کردن حالت خانواده"
+"xrayConfigFamilyDesc" = "برای جلوگیری از ارتباط با وبسایت های ناامن"
+"xrayConfigIRIp" = "جلوگیری از اتصال آیپی های ایران"
+"xrayConfigIRIpDesc" = "الگوی تنظیمات را برای فیلتر کردن اتصال آیپی های ایران تغییر میدهد"
+"xrayConfigIRDomain" = "جلوگیری از اتصال دامنه های ایران"
+"xrayConfigIRDomainDesc" = "الگوی تنظیمات را برای فیلتر کردن اتصال دامنه های ایران تغییر میدهد"
+"xrayConfigChinaIp" = "جلوگیری از اتصال آیپی های چین"
+"xrayConfigChinaIpDesc" = "الگوی تنظیمات را برای فیلتر کردن اتصال آیپی های چین تغییر میدهد"
+"xrayConfigChinaDomain" = "جلوگیری از اتصال دامنه های چین"
+"xrayConfigChinaDomainDesc" = "الگوی تنظیمات را برای فیلتر کردن اتصال دامنه های چین تغییر میدهد"
+"xrayConfigRussiaIp" = "جلوگیری از اتصال آیپی های روسیه"
+"xrayConfigRussiaIpDesc" = "الگوی تنظیمات را برای فیلتر کردن اتصال آیپی های روسیه تغییر میدهد"
+"xrayConfigRussiaDomain" = "جلوگیری از اتصال دامنه های روسیه"
+"xrayConfigRussiaDomainDesc" = "الگوی تنظیمات را برای فیلتر کردن اتصال دامنه های روسیه تغییر میدهد"
+"xrayConfigDirectIRIp" = "ارتباط مستقیم به آیپی های ایران"
+"xrayConfigDirectIRIpDesc" = "الگوی تنظیمات را برای ارتباط مستقیم به آیپی های ایران تغییر میدهد"
+"xrayConfigDirectIRDomain" = "ارتباط مستقیم به دامنه های ایران"
+"xrayConfigDirectIRDomainDesc" = "الگوی تنظیمات را برای ارتباط مستقیم به دامنه های ایران تغییر میدهد"
+"xrayConfigDirectChinaIp" = "ارتباط مستقیم به آیپی های چین"
+"xrayConfigDirectChinaIpDesc" = "الگوی تنظیمات را برای ارتباط مستقیم به آیپی های چین تغییر میدهد"
+"xrayConfigDirectChinaDomain" = "ارتباط مستقیم به دامنه های چین"
+"xrayConfigDirectChinaDomainDesc" = "الگوی تنظیمات را برای ارتباط مستقیم به دامنه های چین تغییر میدهد"
+"xrayConfigDirectRussiaIp" = "ارتباط مستقیم به آیپی های روسیه"
+"xrayConfigDirectRussiaIpDesc" = "الگوی تنظیمات را برای ارتباط مستقیم به آیپی های روسیه تغییر میدهد"
+"xrayConfigDirectRussiaDomain" = "ارتباط مستقیم به دامنه های روسیه"
+"xrayConfigDirectRussiaDomainDesc" = "الگوی تنظیمات را برای ارتباط مستقیم به دامنه های روسیه تغییر میدهد"
+"xrayConfigGoogleIPv4" = "استفاده از آیپی ورژن 4 برای اتصال به گوگل"
+"xrayConfigGoogleIPv4Desc" = "مسیردهی جدید برای اتصال به گوگل با آیپی ورژن 4 اضافه میکند"
+"xrayConfigNetflixIPv4" = "استفاده از آیپی ورژن 4 برای اتصال به نتفلیکس"
+"xrayConfigNetflixIPv4Desc" = "مسیردهی جدید برای اتصال به نتفلیکس با آیپی ورژن 4 اضافه میکند"
+"xrayConfigInbounds" = "تنظیمات ورودی"
+"xrayConfigInboundsDesc" = "میتوانید الگوی تنظیمات را برای ورودی های خاص تنظیم نمایید"
+"xrayConfigOutbounds" = "تنظیمات خروجی"
+"xrayConfigOutboundsDesc" = "میتوانید الگوی تنظیمات را برای خروجی اینترنت تنظیم نمایید"
+"xrayConfigRoutings" = "تنظیمات قوانین مسیریابی"
+"xrayConfigRoutingsDesc" = "میتوانید الگوی تنظیمات را برای مسیریابی تنظیم نمایید"
+"manualLists" = "لیست های دستی"
+"manualListsDesc" = "فرمت: JSON Array"
+"manualBlockedIPs" = "لیست آیپی های مسدود شده"
+"manualBlockedDomains" = "لیست دامنه های مسدود شده"
+"manualDirectIPs" = "لیست آیپی های مستقیم"
+"manualDirectDomains" = "لیست دامنه های مستقیم"
+
+[pages.settings.toasts]
"modifySetting" = "ویرایش تنظیمات"
"getSetting" = "دریافت تنظیمات"
"modifyUser" = "ویرایش کاربر"
-"originalUserPassIncorrect" = "نام کاربری و رمز عبور فعلی اشتباه می باشد ."
-"userPassMustBeNotEmpty" = "نام کاربری و رمز عبور جدید نمیتواند خالی باشد ."
\ No newline at end of file
+"originalUserPassIncorrect" = "نام کاربری و رمز عبور فعلی اشتباه می باشد "
+"userPassMustBeNotEmpty" = "نام کاربری و رمز عبور جدید نمیتواند خالی باشد "
\ No newline at end of file
diff --git a/web/translation/translate.zh_Hans.toml b/web/translation/translate.zh_Hans.toml
index e678fc23..7c146403 100644
--- a/web/translation/translate.zh_Hans.toml
+++ b/web/translation/translate.zh_Hans.toml
@@ -93,7 +93,7 @@
"config" = "配置"
"backup" = "备份"
"backupTitle" = "备份数据库"
-"backupDescription" = "请记住在导入新数据库之前进行备份。"
+"backupDescription" = "请记住在导入新数据库之前进行备份"
"exportDatabase" = "下载数据库"
"importDatabase" = "上传数据库"
@@ -114,8 +114,8 @@
"resetTraffic" = "重置流量"
"addInbound" = "添加入"
"generalActions" = "通用操作"
-"addTo" = "添加"
-"revise" = "修改"
+"create" = "添加"
+"update" = "修改"
"modifyInbound" = "修改入站"
"deleteInbound" = "删除入站"
"deleteInboundContent" = "确定要删除入站吗?"
@@ -155,9 +155,11 @@
"delDepletedClients" = "删除耗尽的客户端"
"delDepletedClientsTitle" = "删除耗尽的客户"
"delDepletedClientsContent" = "你确定要删除所有耗尽的客户端吗?"
-"Email" = "电子邮件"
-"EmailDesc" = "电子邮件必须完全唯"
+"email" = "电子邮件"
+"emailDesc" = "电子邮件必须完全唯"
"setDefaultCert" = "从面板设置证书"
+"telegramDesc" = "使用不带@的电报 ID 或聊天 ID(您可以在此处获取 @userinfobot)"
+"subscriptionDesc" = "您可以在详细信息上找到您的子链接,也可以对多个配置使用相同的名称"
[pages.client]
"add" = "添加客户端"
@@ -195,9 +197,10 @@
[pages.inbounds.stream.quic]
"encryption" = "加密"
-[pages.setting]
+[pages.settings]
"title" = "设置"
"save" = "保存配置"
+"infoDesc" = "此处的所有更改都需要保存并重启面板才能生效"
"restartPanel" = "重启面板"
"restartPanelDesc" = "确定要重启面板吗?点击确定将于 3 秒后重启,若重启后无法访问面板,请前往服务器查看面板日志信息"
"resetDefaultConfig" = "重置为默认配置"
@@ -205,45 +208,30 @@
"userSetting" = "用户设置"
"xrayConfiguration" = "xray 相关设置"
"TGReminder" = "TG提醒相关设置"
-"otherSetting" = "其他设置"
"panelListeningIP" = "面板监听 IP"
-"panelListeningIPDesc" = "默认留空监听所有 IP,重启面板生效"
+"panelListeningIPDesc" = "默认留空监听所有 IP"
"panelPort" = "面板监听端口"
"panelPortDesc" = "重启面板生效"
"publicKeyPath" = "面板证书公钥文件路径"
-"publicKeyPathDesc" = "填写一个 '/' 开头的绝对路径,重启面板生效"
+"publicKeyPathDesc" = "填写一个 '/' 开头的绝对路径"
"privateKeyPath" = "面板证书密钥文件路径"
-"privateKeyPathDesc" = "填写一个 '/' 开头的绝对路径,重启面板生效"
+"privateKeyPathDesc" = "填写一个 '/' 开头的绝对路径"
"panelUrlPath" = "面板 url 根路径"
-"panelUrlPathDesc" = "必须以 '/' 开头,以 '/' 结尾,重启面板生效"
+"panelUrlPathDesc" = "必须以 '/' 开头,以 '/' 结尾"
"oldUsername" = "原用户名"
"currentPassword" = "原密码"
"newUsername" = "新用户名"
"newPassword" = "新密码"
-"advancedTemplate" = "高级模板部件"
-"completeTemplate" = "Xray 配置的完整模板"
-"xrayConfigTemplate" = "xray 配置模板"
-"xrayConfigTemplateDesc" = "以该模型为基础生成最终的xray配置文件,重新启动面板生成效率"
-"xrayConfigTorrent" = "禁止使用 bittorrent"
-"xrayConfigTorrentDesc" = "更改配置模板避免用户使用bittorrent,重启面板生效"
-"xrayConfigPrivateIp" = "禁止私人 ip 范围连接"
-"xrayConfigPrivateIpDesc" = "更改配置模板以避免连接私有 IP 范围,重启面板生效"
-"xrayConfigInbounds" = "入站配置"
-"xrayConfigInboundsDesc" = "更改配置模板接受特殊客户端,重启面板生效"
-"xrayConfigOutbounds" = "出站配置"
-"xrayConfigOutboundsDesc" = "更改配置模板定义此服务器的传出方式,重启面板生效"
-"xrayConfigRoutings" = "路由规则配置"
-"xrayConfigRoutingsDesc" = "更改配置模板为该服务器定义路由规则,重启面板生效"
"telegramBotEnable" = "启用电报机器人"
"telegramBotEnableDesc" = "重启面板生效"
"telegramToken" = "电报机器人TOKEN"
"telegramTokenDesc" = "重启面板生效"
-"telegramChatId" = "以逗号分隔的多个 chatID 重启面板生效"
+"telegramChatId" = "以逗号分隔的多个 chatID"
"telegramChatIdDesc" = "重启面板生效"
"telegramNotifyTime" = "电报机器人通知时间"
-"telegramNotifyTimeDesc" = "采用Crontab定时格式,重启面板生效"
+"telegramNotifyTimeDesc" = "采用Crontab定时格式"
"tgNotifyBackup" = "数据库备份"
-"tgNotifyBackupDesc" = "正在发送数据库备份文件和报告通知。重启面板生效"
+"tgNotifyBackupDesc" = "正在发送数据库备份文件和报告通知"
"sessionMaxAge" = "会话最大年龄"
"sessionMaxAgeDesc" = "您可以保持登录状态的时间(单位:分钟)"
"expireTimeDiff" = "耗尽时间阈值"
@@ -252,10 +240,80 @@
"trafficDiffDesc" = "完成流量前检测耗尽(单位:GB)"
"tgNotifyCpu" = "CPU 百分比警报阈值"
"tgNotifyCpuDesc" = "如果 CPU 使用率超过此百分比(单位:%),此 talegram bot 将向您发送通知"
-"timeZonee" = "时区"
-"timeZoneDesc" = "定时任务按照该时区的时间运行,重启面板生效"
+"timeZone" = "时区"
+"timeZoneDesc" = "定时任务按照该时区的时间运行"
-[pages.setting.toasts]
+[pages.settings.templates]
+"title" = "模板"
+"basicTemplate" = "基本模板"
+"advancedTemplate" = "高级模板部件"
+"completeTemplate" = "Xray 配置的完整模板"
+"generalConfigs" = "通用配置"
+"generalConfigsDesc" = "这些选项将提供一般调整"
+"blockConfigs" = "阻塞配置"
+"blockConfigsDesc" = "这些选项将阻止用户连接到特定协议和网站"
+"directConfigs" = "直接配置"
+"directConfigsDesc" = "这些选项将使用直接输出到特定的协议和网站"
+"countryConfigs" = "国家配置"
+"countryConfigsDesc" = "此选项将阻止用户连接到特定国家/地区的域"
+"ipv4Configs" = "IPv4 配置"
+"ipv4ConfigsDesc" = "此选项将仅通过 IPv4 路由到目标域"
+"xrayConfigTemplate" = "xray 配置模板"
+"xrayConfigTemplateDesc" = "以该模型为基础生成最终的xray配置文件,重新启动面板生成效率"
+"xrayConfigFreedomStrategy" = "配置自由协议的策略"
+"xrayConfigFreedomStrategyDesc" = "在自由协议中设置网络输出策略"
+"xrayConfigRoutingStrategy" = "配置路由域策略"
+"xrayConfigRoutingStrategyDesc" = "设置DNS解析的整体路由策略"
+"xrayConfigTorrent" = "禁止使用 bittorrent"
+"xrayConfigTorrentDesc" = "更改配置模板避免用户使用bittorrent"
+"xrayConfigPrivateIp" = "禁止私人 IP 范围连接"
+"xrayConfigPrivateIpDesc" = "更改配置模板以避免连接私有 IP 范围"
+"xrayConfigAds" = "屏蔽广告"
+"xrayConfigAdsDesc" = "修改配置模板屏蔽广告"
+"xrayConfigFamily" = "启用家庭友好配置"
+"xrayConfigFamilyDesc" = "避免为家人连接到不安全的网站"
+"xrayConfigIRIp" = "禁止伊朗 IP 范围连接"
+"xrayConfigIRIpDesc" = "修改配置模板避免连接伊朗IP段"
+"xrayConfigIRDomain" = "禁止伊朗域连接"
+"xrayConfigIRDomainDesc" = "更改配置模板避免连接伊朗域名"
+"xrayConfigChinaIp" = "禁止中国 IP 范围连接"
+"xrayConfigChinaIpDesc" = "修改配置模板避免连接中国IP段"
+"xrayConfigChinaDomain" = "禁止中国域名连接"
+"xrayConfigChinaDomainDesc" = "更改配置模板避免连接中国域"
+"xrayConfigRussiaIp" = "禁止俄罗斯 IP 范围连接"
+"xrayConfigRussiaIpDesc" = "修改配置模板避免连接俄罗斯IP范围"
+"xrayConfigRussiaDomain" = "禁止俄罗斯域连接"
+"xrayConfigRussiaDomainDesc" = "更改配置模板避免连接俄罗斯域"
+"xrayConfigDirectIRIP" = "直接连接到伊朗 IP 范围"
+"xrayConfigDirectIRIPDesc" = "更改直接连接到伊朗 IP 范围的配置模板"
+"xrayConfigDirectIRDomain" = "直接连接到伊朗域"
+"xrayConfigDirectIRDomainDesc" = "更改直接连接到伊朗域的配置模板"
+"xrayConfigDirectChinaIp" = "直连中国IP范围"
+"xrayConfigDirectChinaIpDesc" = "更改直连中国 IP 范围的配置模板"
+"xrayConfigDirectChinaDomain" = "直连中国域名"
+"xrayConfigDirectChinaDomainDesc" = "修改中国域名直连配置模板"
+"xrayConfigDirectRussiaIp" = "直接连接到俄罗斯 IP 范围"
+"xrayConfigDirectRussiaIpDesc" = "更改直接连接到俄罗斯 IP 范围的配置模板"
+"xrayConfigDirectRussiaDomain" = "直接连接到俄罗斯域"
+"xrayConfigDirectRussiaDomainDesc" = "更改直接连接到俄罗斯域的配置模板"
+"xrayConfigGoogleIPv4" = "为谷歌使用 IPv4"
+"xrayConfigGoogleIPv4Desc" = "添加谷歌连接IPv4的路由"
+"xrayConfigNetflixIPv4" = "为 Netflix 使用 IPv4"
+"xrayConfigNetflixIPv4Desc" = "添加Netflix连接IPv4的路由"
+"xrayConfigInbounds" = "入站配置"
+"xrayConfigInboundsDesc" = "更改配置模板接受特殊客户端"
+"xrayConfigOutbounds" = "出站配置"
+"xrayConfigOutboundsDesc" = "更改配置模板定义此服务器的传出方式"
+"xrayConfigRoutings" = "路由规则配置"
+"xrayConfigRoutingsDesc" = "更改配置模板为该服务器定义路由规则"
+"manualLists" = "手动列表"
+"manualListsDesc" = "请使用 JSON 数组格式"
+"manualBlockedIPs" = "被阻止的 IP 列表"
+"manualBlockedDomains" = "被阻止的域列表"
+"manualDirectIPs" = "直接 IP 列表"
+"manualDirectDomains" = "直接域列表"
+
+[pages.settings.toasts]
"modifySetting" = "修改设置"
"getSetting" = "获取设置"
"modifyUser" = "修改用户"
| | | | |