diff --git a/easytier-gui/src/styles.css b/easytier-gui/src/styles.css
index e10cdc8..a59a885 100644
--- a/easytier-gui/src/styles.css
+++ b/easytier-gui/src/styles.css
@@ -15,8 +15,6 @@
line-height: 24px;
font-weight: 400;
- color: #0f0f0f;
-
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
diff --git a/easytier-web/frontend-lib/src/components/Config.vue b/easytier-web/frontend-lib/src/components/Config.vue
index 3805d3e..73ac0fb 100644
--- a/easytier-web/frontend-lib/src/components/Config.vue
+++ b/easytier-web/frontend-lib/src/components/Config.vue
@@ -218,7 +218,7 @@ const bool_flags: BoolFlag[] = [
diff --git a/easytier-web/frontend-lib/src/locales/cn.yaml b/easytier-web/frontend-lib/src/locales/cn.yaml
index bb19881..a2731be 100644
--- a/easytier-web/frontend-lib/src/locales/cn.yaml
+++ b/easytier-web/frontend-lib/src/locales/cn.yaml
@@ -203,3 +203,115 @@ event:
DhcpIpv4Changed: DHCP IPv4地址更改
DhcpIpv4Conflicted: DHCP IPv4地址冲突
PortForwardAdded: 端口转发添加
+
+web:
+ login:
+ title: 登录
+ username: 用户名
+ password: 密码
+ submit: 登录
+ register: 注册
+ remember_me: 记住我
+ api_host: API主机
+ captcha: 验证码
+ back_to_login: 返回登录
+ login: 登录
+
+ register:
+ title: 注册
+ username: 用户名
+ password: 密码
+ confirm_password: 确认密码
+ submit: 注册
+ login: 返回登录
+
+ main:
+ dashboard: 仪表盘
+ device_list: 设备列表
+ device_management: 设备管理
+ login_page: 登录页面
+ settings: 设置
+ logout: 退出登录
+ language: 语言
+ change_password: 修改密码
+
+ device:
+ list: 设备列表
+ management: 设备管理
+ add: 添加设备
+ delete: 删除设备
+ refresh: 刷新
+ status: 状态
+ online: 在线
+ offline: 离线
+ last_seen: 最后在线
+ no_devices: 未找到设备
+ sort_by: 排序依据
+ sort_direction: 排序方向
+ show_detailed_view: 显示详情
+ hide_detailed_view: 隐藏详情
+ sort_by_hostname: 主机名
+ sort_by_public_ip: 公网IP
+ sort_by_version: 版本
+ sort_by_networks: 网络数量
+ sort_direction_asc: 当前升序,点击切换为降序
+ sort_direction_desc: 当前降序,点击切换为升序
+ hostname: 主机名
+ public_ip: 公网IP
+ networks: 网络数量
+ last_report: 最后在线
+ version: 版本
+ machine_id: 机器ID
+
+ device_management:
+ edit_network: 编辑网络
+ export_config: 导出配置
+ delete_network: 删除网络
+ network: 网络
+ select_network: 选择网络
+ create_network: 创建网络
+ cancel_creation: 取消创建
+ more_actions: 更多操作
+ edit_as_file: 编辑为文件
+ import_config: 导入配置
+ create_new: 创建新网络
+ network_status: 网络状态
+ network_configuration: 网络配置
+ loading_network_configuration: 加载网络配置
+ no_network_selected: 未选择网络
+ select_existing_network_or_create_new: 选择现有网络实例或创建新网络以管理网络设置
+ disable_network: 禁用网络
+
+ network:
+ title: 网络
+ create: 创建网络
+ delete: 删除网络
+ start: 启动网络
+ stop: 停止网络
+ config: 网络配置
+ status: 网络状态
+ import: 导入配置
+ export: 导出配置
+
+ common:
+ confirm: 确认
+ cancel: 取消
+ save: 保存
+ delete: 删除
+ edit: 编辑
+ refresh: 刷新
+ loading: 加载中...
+ error: 错误
+ success: 成功
+ warning: 警告
+ info: 提示
+
+ settings:
+ title: 设置
+ change_password: 修改密码
+ old_password: 旧密码
+ new_password: 新密码
+ confirm_password: 确认新密码
+ language: 语言
+ theme: 主题
+ logout: 退出登录
\ No newline at end of file
diff --git a/easytier-web/frontend-lib/src/locales/en.yaml b/easytier-web/frontend-lib/src/locales/en.yaml
index e89efb7..a567a50 100644
--- a/easytier-web/frontend-lib/src/locales/en.yaml
+++ b/easytier-web/frontend-lib/src/locales/en.yaml
@@ -203,3 +203,115 @@ event:
DhcpIpv4Changed: DhcpIpv4Changed
DhcpIpv4Conflicted: DhcpIpv4Conflicted
PortForwardAdded: PortForwardAdded
+
+web:
+ login:
+ title: Login
+ username: Username
+ password: Password
+ submit: Login
+ register: Register
+ remember_me: Remember Me
+ api_host: API Host
+ captcha: Captcha
+ back_to_login: Back to Login
+ login: Login
+
+ register:
+ title: Register
+ username: Username
+ password: Password
+ confirm_password: Confirm Password
+ submit: Register
+ login: Back to Login
+
+ main:
+ dashboard: Dashboard
+ device_list: Device List
+ device_management: Device Management
+ login_page: Login Page
+ settings: Settings
+ logout: Logout
+ language: Language
+ change_password: Change Password
+
+ device:
+ list: Device List
+ management: Device Management
+ add: Add Device
+ delete: Delete Device
+ refresh: Refresh
+ status: Status
+ online: Online
+ offline: Offline
+ last_seen: Last Seen
+ no_devices: No Devices Found
+ sort_by: Sort By
+ sort_direction: Sort Direction
+ show_detailed_view: Show Details
+ hide_detailed_view: Hide Details
+ sort_by_hostname: Hostname
+ sort_by_public_ip: Public IP
+ sort_by_version: Version
+ sort_by_networks: Network Count
+ sort_direction_asc: Currently ascending, click to switch to descending
+ sort_direction_desc: Currently descending, click to switch to ascending
+ hostname: Hostname
+ public_ip: Public IP
+ networks: Network Count
+ last_report: Last Seen
+ version: Version
+ machine_id: Machine ID
+
+ device_management:
+ edit_network: Edit Network
+ export_config: Export Config
+ delete_network: Delete Network
+ network: Network
+ select_network: Select Network
+ create_network: Create Network
+ cancel_creation: Cancel Creation
+ more_actions: More Actions
+ edit_as_file: Edit as File
+ import_config: Import Config
+ create_new: Create New Network
+ network_status: Network Status
+ network_configuration: Network Configuration
+ loading_network_configuration: Loading Network Configuration
+ no_network_selected: No Network Selected
+ select_existing_network_or_create_new: Select an existing network instance or create a new one to manage network settings
+ disable_network: Disable Network
+
+ network:
+ title: Network
+ create: Create Network
+ delete: Delete Network
+ start: Start Network
+ stop: Stop Network
+ config: Network Config
+ status: Network Status
+ import: Import Config
+ export: Export Config
+
+ common:
+ confirm: Confirm
+ cancel: Cancel
+ save: Save
+ delete: Delete
+ edit: Edit
+ refresh: Refresh
+ loading: Loading...
+ error: Error
+ success: Success
+ warning: Warning
+ info: Info
+
+ settings:
+ title: Settings
+ change_password: Change Password
+ old_password: Old Password
+ new_password: New Password
+ confirm_password: Confirm New Password
+ language: Language
+ theme: Theme
+ logout: Logout
\ No newline at end of file
diff --git a/easytier-web/frontend-lib/src/modules/i18n.ts b/easytier-web/frontend-lib/src/modules/i18n.ts
index 257127f..623e859 100644
--- a/easytier-web/frontend-lib/src/modules/i18n.ts
+++ b/easytier-web/frontend-lib/src/modules/i18n.ts
@@ -22,6 +22,16 @@ export const availableLocales = Object.keys(localesMap)
const loadedLanguages: string[] = []
+export function toggleLanguage() {
+ const currentLang = localStorage.getItem('lang') || 'en'
+ const newLang = currentLang === 'en' ? 'cn' : 'en'
+ loadLanguageAsync(newLang)
+}
+
+export function getCurrentLanguage() {
+ return localStorage.getItem('lang') || 'en'
+}
+
function setI18nLanguage(lang: Locale) {
i18n.global.locale.value = lang as any
localStorage.setItem('lang', lang)
@@ -56,4 +66,6 @@ export default {
i18n,
localesMap,
loadLanguageAsync,
+ toggleLanguage,
+ getCurrentLanguage,
}
diff --git a/easytier-web/frontend-lib/src/style.css b/easytier-web/frontend-lib/src/style.css
index 1c62335..72d7d24 100644
--- a/easytier-web/frontend-lib/src/style.css
+++ b/easytier-web/frontend-lib/src/style.css
@@ -18,8 +18,6 @@
line-height: 24px;
font-weight: 400;
- color: #0f0f0f;
-
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
diff --git a/easytier-web/frontend/index.html b/easytier-web/frontend/index.html
index 74fa074..ed7220a 100644
--- a/easytier-web/frontend/index.html
+++ b/easytier-web/frontend/index.html
@@ -1,14 +1,18 @@
-
-
-
-
- EasyTier Dashboard
-
-
-
-
-
-
-
+
+
+
+
+
+ EasyTier Dashboard
+
+
+
+
+
+
+
+
+