@@ -53,6 +59,29 @@ {{ .title }}
{{ i18n "login" }}
+
+
+
+
+ Language :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -73,6 +102,10 @@ {{ .title }}
data: {
loading: false,
user: new User(),
+ lang : ""
+ },
+ created(){
+ this.lang = getLang();
},
methods: {
async login() {
diff --git a/web/html/xui/common_sider.html b/web/html/xui/common_sider.html
index fd9423126..d0b1bf091 100644
--- a/web/html/xui/common_sider.html
+++ b/web/html/xui/common_sider.html
@@ -1,15 +1,15 @@
{{define "menuItems"}}
- 系统状态
+ {{ i18n "menu.dashboard"}}
- 入站列表
+ {{ i18n "menu.inbounds"}}
- 面板设置
+ {{ i18n "menu.setting"}}
@@ -18,16 +18,16 @@
- 其他
+ {{ i18n "menu.link"}}
-
+
Github
- 退出登录
+ {{ i18n "menu.logout"}}
{{end}}
@@ -66,4 +66,4 @@
};
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/xui/component/inbound_info.html b/web/html/xui/component/inbound_info.html
index a844fba77..cbf156d1a 100644
--- a/web/html/xui/component/inbound_info.html
+++ b/web/html/xui/component/inbound_info.html
@@ -1,23 +1,23 @@
{{define "inboundInfoStream"}}
-传输: [[ inbound.network ]]
+{{ i18n "transmission" }}: [[ inbound.network ]]
host: [[ inbound.host ]]
- host: 无
+ {{ i18n "host" }}: {{ i18n "none" }}
path: [[ inbound.path ]]
- path: 无
+ {{ i18n "path" }}: {{ i18n "none" }}
- quic 加密: [[ inbound.quicSecurity ]]
- quic 密码: [[ inbound.quicKey ]]
- quic 伪装: [[ inbound.quicType ]]
+ quic {{ i18n "encryption" }}: [[ inbound.quicSecurity ]]
+ quic {{ i18n "password" }}: [[ inbound.quicKey ]]
+ quic {{ i18n "camouflage" }}: [[ inbound.quicType ]]
- kcp 加密: [[ inbound.kcpType ]]
- kcp 密码: [[ inbound.kcpSeed ]]
+ kcp {{ i18n "encryption" }}: [[ inbound.kcpType ]]
+ kcp {{ i18n "password" }}: [[ inbound.kcpSeed ]]
@@ -25,54 +25,56 @@
- tls: 开启
- xtls: 开启
+ tls: {{ i18n "turnOn" }}
+ xtls: {{ i18n "turnOn" }}
- tls: 关闭
+ tls: {{ i18n "closure" }}
- tls域名: [[ inbound.serverName ? inbound.serverName : "无" ]]
+ tls {{ i18n "domainName" }}: [[ inbound.serverName ? inbound.serverName : '' ]]
- xtls域名: [[ inbound.serverName ? inbound.serverName : "无" ]]
+ xtls {{ i18n "domainName" }}: [[ inbound.serverName ? inbound.serverName : '' ]]
{{end}}
{{define "component/inboundInfoComponent"}}
-
协议: [[ dbInbound.protocol ]]
-
地址: [[ dbInbound.address ]]
-
端口: [[ dbInbound.port ]]
-
-
- uuid: [[ inbound.uuid ]]
- alterId: [[ inbound.alterId ]]
+ {{ i18n "protocol"}}: [[ dbInbound.protocol ]]
+ {{ i18n "pages.inbounds.address"}}: [[ dbInbound.address ]]
+ {{ i18n "pages.inbounds.port"}}: [[ dbInbound.port ]]
+
+
+ uuid: [[ vmess.id ]]
+ alterId: [[ vmess.alterId ]]
+
-
- uuid: [[ inbound.uuid ]]
- flow: [[ inbound.flow ]]
+
+ uuid: [[ vless.id ]]
+ flow: [[ vless.flow ]]
+
- 密码: [[ inbound.password ]]
+ {{ i18n "password"}}: [[ inbound.password ]]
- 加密: [[ inbound.method ]]
- 密码: [[ inbound.password ]]
+ {{ i18n "encryption"}}: [[ inbound.method ]]
+ {{ i18n "password"}}: [[ inbound.password ]]
- 用户名: [[ inbound.username ]]
- 密码: [[ inbound.password ]]
+ {{ i18n "username"}}: [[ inbound.username ]]
+ {{ i18n "password"}}: [[ inbound.password ]]
- 用户名: [[ inbound.username ]]
- 密码: [[ inbound.password ]]
+ {{ i18n "username"}}: [[ inbound.username ]]
+ {{ i18n "password"}}: [[ inbound.password ]]
diff --git a/web/html/xui/form/inbound.html b/web/html/xui/form/inbound.html
index 30872e488..1a2e7ca1a 100644
--- a/web/html/xui/form/inbound.html
+++ b/web/html/xui/form/inbound.html
@@ -14,25 +14,25 @@
- 监听 IP
+ {{ i18n "monitor" }}
- 默认留空即可
+ {{ i18n "pages.inbounds.monitorDesc" }}
-
+
- 总流量(GB)
+ {{ i18n "pages.inbounds.totalFlow" }}(GB)
- 0 表示不限制
+ 0 {{ i18n "pages.inbounds.meansNoLimit" }}
@@ -41,10 +41,10 @@
- 到期时间
+ {{ i18n "pages.inbounds.expireDate" }}
- 留空则永不到期
+ {{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}
diff --git a/web/html/xui/form/protocol/dokodemo.html b/web/html/xui/form/protocol/dokodemo.html
index e11bded06..a4dde06dc 100644
--- a/web/html/xui/form/protocol/dokodemo.html
+++ b/web/html/xui/form/protocol/dokodemo.html
@@ -1,12 +1,12 @@
{{define "form/dokodemo"}}
-
+
-
+
-
+
tcp+udp
tcp
diff --git a/web/html/xui/form/protocol/http.html b/web/html/xui/form/protocol/http.html
index d359b5dac..b4ba59b7c 100644
--- a/web/html/xui/form/protocol/http.html
+++ b/web/html/xui/form/protocol/http.html
@@ -1,9 +1,9 @@
{{define "form/http"}}
-
+
-
+
diff --git a/web/html/xui/form/protocol/shadowsocks.html b/web/html/xui/form/protocol/shadowsocks.html
index 5895e7f3b..18bcf727f 100644
--- a/web/html/xui/form/protocol/shadowsocks.html
+++ b/web/html/xui/form/protocol/shadowsocks.html
@@ -1,14 +1,14 @@
{{define "form/shadowsocks"}}
-
+
[[ method ]]
-
+
-
+
tcp+udp
tcp
diff --git a/web/html/xui/form/protocol/socks.html b/web/html/xui/form/protocol/socks.html
index b0267b3fe..35c1c0b54 100644
--- a/web/html/xui/form/protocol/socks.html
+++ b/web/html/xui/form/protocol/socks.html
@@ -1,18 +1,19 @@
{{define "form/socks"}}
-
+
+
inbound.settings.auth = checked ? 'password' : 'noauth'">
-
+
-
+
-
+
-
+
- 无
+ {{ i18n "none" }}
[[ key ]]
diff --git a/web/html/xui/form/protocol/vless.html b/web/html/xui/form/protocol/vless.html
index 3e5a3a38d..409efeeb9 100644
--- a/web/html/xui/form/protocol/vless.html
+++ b/web/html/xui/form/protocol/vless.html
@@ -1,15 +1,147 @@
{{define "form/vless"}}
-
-
-
-
-
- 无
- [[ key ]]
-
-
-
+
+
+
+ Account is (Expired|Traffic Ended) And Disabled
+
+
+
+
+ Email
+
+
+ The email must be completely unique
+
+
+
+
+
+
+
+
+
+ IP Count Limit
+
+
+ disable inbound if more than entered count (0 for disable limit ip)
+
+
+
+
+
+
+
+
+
+ IP log
+
+
+ IPs history Log (before enabling inbound after it has been disabled by IP limit, you should clear the log)
+
+
+
+
+
+ clear the log
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ i18n "none" }}
+ [[ key ]]
+
+
+
+
+ {{ i18n "pages.inbounds.totalFlow" }}(GB)
+
+
+ 0 {{ i18n "pages.inbounds.meansNoLimit" }}
+
+
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.expireDate" }}
+
+
+ {{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}
+
+
+
+
+
+
+
+
+
+ reset traffic
+
+
+
+
+
+ [[ sizeFormat(getUpStats(vless.email)) ]] / [[ sizeFormat(getDownStats(vless.email)) ]]
+ used : [[ sizeFormat(getUpStats(vless.email) + getDownStats(vless.email)) ]]
+
+
+
+
+
+
+
+
+
+
@@ -46,4 +178,4 @@
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/xui/form/protocol/vmess.html b/web/html/xui/form/protocol/vmess.html
index 280e6a6a7..5bffe9031 100644
--- a/web/html/xui/form/protocol/vmess.html
+++ b/web/html/xui/form/protocol/vmess.html
@@ -1,13 +1,155 @@
{{define "form/vmess"}}
-
-
-
-
-
-
-
+
+
+ Account is (Expired|Traffic Ended) And Disabled
+
+
+
+
+ Email
+
+
+ The email must be completely unique
+
+
+
+
+
+
+
+
+
+ IP Count Limit
+
+
+ disable inbound if more than entered count (0 for disable limit ip)
+
+
+
+
+
+
+
+
+
+ IP Log
+
+
+ IPs history Log (before enabling inbound after it has been disabled by IP limit, you should clear the log)
+
+
+
+
+
+ clear the log
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.totalFlow" }}(GB)
+
+
+ 0 {{ i18n "pages.inbounds.meansNoLimit" }}
+
+
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.expireDate" }}
+
+
+ {{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}
+
+
+
+
+
+
+
+
+
+ reset traffic
+
+
+
+
+
+ [[ sizeFormat(getUpStats(vmess.email)) ]] / [[ sizeFormat(getDownStats(vmess.email)) ]]
+ used : [[ sizeFormat(getUpStats(vmess.email) + getDownStats(vmess.email)) ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-{{end}}
\ No newline at end of file
+
+{{end}}
diff --git a/web/html/xui/form/sniffing.html b/web/html/xui/form/sniffing.html
index 1d25cb217..838c92fcb 100644
--- a/web/html/xui/form/sniffing.html
+++ b/web/html/xui/form/sniffing.html
@@ -5,7 +5,7 @@
sniffing
- 没有特殊需求保持默认即可
+ {{ i18n "pages.inbounds.noRecommendKeepDefault" }}
diff --git a/web/html/xui/form/stream/stream_http.html b/web/html/xui/form/stream/stream_http.html
index d2a4bf958..ad30c45a3 100644
--- a/web/html/xui/form/stream/stream_http.html
+++ b/web/html/xui/form/stream/stream_http.html
@@ -1,6 +1,6 @@
{{define "form/streamHTTP"}}
-
+
diff --git a/web/html/xui/form/stream/stream_kcp.html b/web/html/xui/form/stream/stream_kcp.html
index 18f89435a..ff14d5b79 100644
--- a/web/html/xui/form/stream/stream_kcp.html
+++ b/web/html/xui/form/stream/stream_kcp.html
@@ -1,6 +1,6 @@
{{define "form/streamKCP"}}
-
+
none(not camouflage)
srtp(camouflage video call)
@@ -10,7 +10,7 @@
wireguard(camouflage wireguard packages)
-
+
diff --git a/web/html/xui/form/stream/stream_quic.html b/web/html/xui/form/stream/stream_quic.html
index 8d57d662c..942461ad3 100644
--- a/web/html/xui/form/stream/stream_quic.html
+++ b/web/html/xui/form/stream/stream_quic.html
@@ -1,16 +1,16 @@
{{define "form/streamQUIC"}}
-
+
none
aes-128-gcm
chacha20-poly1305
-
+
-
+
none(not camouflage)
srtp(camouflage video call)
diff --git a/web/html/xui/form/stream/stream_settings.html b/web/html/xui/form/stream/stream_settings.html
index 021c587ef..7fc9ad2ce 100644
--- a/web/html/xui/form/stream/stream_settings.html
+++ b/web/html/xui/form/stream/stream_settings.html
@@ -1,7 +1,7 @@
{{define "form/streamSettings"}}
-
+
tcp
kcp
diff --git a/web/html/xui/form/stream/stream_tcp.html b/web/html/xui/form/stream/stream_tcp.html
index 30931fb04..a473ff581 100644
--- a/web/html/xui/form/stream/stream_tcp.html
+++ b/web/html/xui/form/stream/stream_tcp.html
@@ -15,18 +15,18 @@
-
+
-
+
-
+
-
+
@@ -35,9 +35,9 @@
+ addon-before='{{ i18n "pages.inbounds.stream.general.name" }}'>
+ addon-before='{{ i18n "pages.inbounds.stream.general.value" }}'>
@@ -52,16 +52,16 @@
-
+
-
+
-
+
-
+
@@ -70,9 +70,9 @@
+ addon-before='{{ i18n "pages.inbounds.stream.general.name" }}'>
+ addon-before='{{ i18n "pages.inbounds.stream.general.value" }}'>
diff --git a/web/html/xui/form/stream/stream_ws.html b/web/html/xui/form/stream/stream_ws.html
index 8f0a7e608..46d6f7a37 100644
--- a/web/html/xui/form/stream/stream_ws.html
+++ b/web/html/xui/form/stream/stream_ws.html
@@ -5,10 +5,10 @@
-
+
-
+
@@ -17,9 +17,9 @@
+ addon-before='{{ i18n "pages.inbounds.stream.general.name"}}'>
+ addon-before='{{ i18n "pages.inbounds.stream.general.value" }}'>
diff --git a/web/html/xui/form/tls_settings.html b/web/html/xui/form/tls_settings.html
index f6794b69d..082a5583f 100644
--- a/web/html/xui/form/tls_settings.html
+++ b/web/html/xui/form/tls_settings.html
@@ -13,33 +13,33 @@
-
+
-
+
- certificate file path
- certificate file content
+ {{ i18n "pages.inbounds.certificatePath" }}
+ {{ i18n "pages.inbounds.certificateContent" }}
-
+
-
+
-
+
-
+
diff --git a/web/html/xui/inbound_info_modal.html b/web/html/xui/inbound_info_modal.html
index 3a837ff0d..bcd2b25f1 100644
--- a/web/html/xui/inbound_info_modal.html
+++ b/web/html/xui/inbound_info_modal.html
@@ -1,8 +1,8 @@
{{define "inboundInfoModal"}}
{{template "component/inboundInfo"}}
-
+ ok-text='{{ i18n "pages.inbounds.copyLink"}}' cancel-text='{{ i18n "close" }}' :ok-button-props="infoModal.okBtnPros">
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/xui/inbounds.html b/web/html/xui/inbounds.html
index 85321eded..3844d49c1 100644
--- a/web/html/xui/inbounds.html
+++ b/web/html/xui/inbounds.html
@@ -27,15 +27,15 @@
- 总上传 / 下载:
+ {{ i18n "pages.inbounds.totalDownUp" }}:
[[ sizeFormat(total.up) ]] / [[ sizeFormat(total.down) ]]
- 总用量:
+ {{ i18n "pages.inbounds.totalUsage" }}:
[[ sizeFormat(total.up + total.down) ]]
- 入站数量:
+ {{ i18n "pages.inbounds.inboundCount" }}:
[[ dbInbounds.length ]]
@@ -55,20 +55,22 @@
@change="() => getDBInbounds()">
- e.preventDefault()">操作
+ e.preventDefault()">{{ i18n "pages.inbounds.operate" }}
clickAction(a, dbInbound)">
- 二维码
+
+ {{ i18n "qrCode" }}
- 编辑
+
+ {{ i18n "edit" }}
- 重置流量
+ {{ i18n "pages.inbounds.resetTraffic" }}
- 删除
+ {{ i18n "delete"}}
@@ -83,10 +85,10 @@
[[ sizeFormat(dbInbound.total) ]]
[[ sizeFormat(dbInbound.total) ]]
- 无限制
+ {{ i18n "unlimited" }}
- 查看
+ {{ i18n "check" }}
@@ -94,7 +96,7 @@
tls
xtls
- 无
+ {{ i18n "none" }}
@@ -108,7 +110,7 @@
[[ DateUtil.formatMillis(dbInbound.expiryTime) ]]
- 无限期
+ {{ i18n "indefinitely" }}
@@ -121,52 +123,52 @@