diff --git a/internal/web/actions/default/settings/lang/init.go b/internal/web/actions/default/settings/lang/init.go
new file mode 100644
index 00000000..b92b10e2
--- /dev/null
+++ b/internal/web/actions/default/settings/lang/init.go
@@ -0,0 +1,17 @@
+package lang
+
+import (
+ "github.com/TeaOSLab/EdgeAdmin/internal/configloaders"
+ "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
+ "github.com/iwind/TeaGo"
+)
+
+func init() {
+ TeaGo.BeforeStart(func(server *TeaGo.Server) {
+ server.
+ Helper(helpers.NewUserMustAuth(configloaders.AdminModuleCodeServer)).
+ Prefix("/settings/lang").
+ Post("/switch", new(SwitchAction)).
+ EndAll()
+ })
+}
diff --git a/internal/web/actions/default/settings/lang/switch.go b/internal/web/actions/default/settings/lang/switch.go
new file mode 100644
index 00000000..7ed7f033
--- /dev/null
+++ b/internal/web/actions/default/settings/lang/switch.go
@@ -0,0 +1,33 @@
+// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
+
+package lang
+
+import (
+ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
+ "net/http"
+)
+
+type SwitchAction struct {
+ actionutils.ParentAction
+}
+
+func (this *SwitchAction) Init() {
+ this.Nav("", "", "")
+}
+
+func (this *SwitchAction) RunPost(params struct{}) {
+ var langCode = this.LangCode()
+ if len(langCode) == 0 || langCode == "zh-cn" {
+ langCode = "en-us"
+ } else {
+ langCode = "zh-cn"
+ }
+
+ this.AddCookie(&http.Cookie{
+ Name: "edgelang",
+ Value: langCode,
+ Path: "/",
+ })
+
+ this.Success()
+}
diff --git a/internal/web/import.go b/internal/web/import.go
index ba4b66ed..461ac764 100644
--- a/internal/web/import.go
+++ b/internal/web/import.go
@@ -117,6 +117,7 @@ import (
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/backup"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/database"
+ _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/lang"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/login"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/profile"
_ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/security"
diff --git a/web/public/js/langs/base.js b/web/public/js/langs/base.js
new file mode 100644
index 00000000..c8423738
--- /dev/null
+++ b/web/public/js/langs/base.js
@@ -0,0 +1,2 @@
+// generated by 'langs generate'
+window.LANG_MESSAGES_BASE = {"admin_dashboard@ui_dns":"DNS","admin_dashboard@ui_events":"事件","admin_dashboard@ui_overview":"概况","admin_dashboard@ui_user":"用户","admin_dashboard@ui_waf":"WAF"};
diff --git a/web/public/js/langs/en-us.css b/web/public/js/langs/en-us.css
new file mode 100644
index 00000000..3aff017b
--- /dev/null
+++ b/web/public/js/langs/en-us.css
@@ -0,0 +1,5 @@
+.main-menu .menu .item {
+ font-size: 0.9em;
+ line-height: 1.3;
+}
+/*# sourceMappingURL=en-us.css.map */
\ No newline at end of file
diff --git a/web/public/js/langs/en-us.css.map b/web/public/js/langs/en-us.css.map
new file mode 100644
index 00000000..d63b209a
--- /dev/null
+++ b/web/public/js/langs/en-us.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["en-us.less"],"names":[],"mappings":"AAAA,UACC,MACC;EACC,gBAAA;EACA,gBAAA","file":"en-us.css"}
\ No newline at end of file
diff --git a/web/public/js/langs/en-us.js b/web/public/js/langs/en-us.js
new file mode 100644
index 00000000..f0b8f1ff
--- /dev/null
+++ b/web/public/js/langs/en-us.js
@@ -0,0 +1,2 @@
+// generated by 'langs generate'
+window.LANG_MESSAGES = {};
diff --git a/web/public/js/langs/en-us.less b/web/public/js/langs/en-us.less
new file mode 100644
index 00000000..f43dabec
--- /dev/null
+++ b/web/public/js/langs/en-us.less
@@ -0,0 +1,8 @@
+.main-menu {
+ .menu {
+ .item {
+ font-size: 0.9em;
+ line-height: 1.3;
+ }
+ }
+}
\ No newline at end of file
diff --git a/web/public/js/langs/zh-cn.css b/web/public/js/langs/zh-cn.css
new file mode 100644
index 00000000..e69de29b
diff --git a/web/views/@default/@layout.html b/web/views/@default/@layout.html
index 3cfaed98..15fae28a 100644
--- a/web/views/@default/@layout.html
+++ b/web/views/@default/@layout.html
@@ -19,7 +19,9 @@
-
+
+
+
@@ -60,6 +62,8 @@
{{teaUsername}}
+
+
diff --git a/web/views/@default/@layout.js b/web/views/@default/@layout.js
index beb33ff6..747f5f59 100644
--- a/web/views/@default/@layout.js
+++ b/web/views/@default/@layout.js
@@ -205,8 +205,21 @@ Tea.context(function () {
return message
}
}
+ if (window.LANG_MESSAGES_BASE != null) {
+ let message = window.LANG_MESSAGES_BASE[code]
+ if (typeof message == "string") {
+ return message
+ }
+ }
return "{{ LANG('" + code + "') }}"
}
+
+ this.switchLang = function () {
+ this.$post("/settings/lang/switch")
+ .success(function () {
+ window.location.reload()
+ })
+ }
});
window.NotifySuccess = function (message, url, params) {
diff --git a/web/views/@default/settings/server/index.html b/web/views/@default/settings/server/index.html
index 148a5307..c7562ed3 100644
--- a/web/views/@default/settings/server/index.html
+++ b/web/views/@default/settings/server/index.html
@@ -1,8 +1,11 @@
{$layout}
-
| 状态 |