feat(webui): optimize frontend terminology and i18n keys

This commit is contained in:
Wha1eChai
2026-01-09 19:55:34 +08:00
parent 07a9586aee
commit 8e221e3fc7
6 changed files with 65 additions and 61 deletions

View File

@@ -36,7 +36,7 @@ document.addEventListener('alpine:init', () => {
systemConfig: "System Configuration",
language: "Language",
pollingInterval: "Polling Interval",
logBufferSize: "Log Buffer Size",
maxDisplayLogs: "Max Displayed Logs",
showExhausted: "Show Exhausted Models",
showExhaustedDesc: "Display models even if they have 0% remaining quota.",
compactMode: "Compact Mode",
@@ -44,13 +44,13 @@ document.addEventListener('alpine:init', () => {
saveChanges: "Save Changes",
autoScroll: "Auto-scroll",
clearLogs: "Clear Logs",
accessCredentials: "Access Credentials",
manageTokens: "Manage OAuth tokens and session states",
addNode: "Add Node",
accountManagement: "Account Management",
manageTokens: "Manage Google Account tokens and authorization states",
addAccount: "Add Account",
status: "STATUS",
enabled: "ENABLED",
health: "HEALTH",
identity: "IDENTITY (EMAIL)",
health: "STATUS",
accountEmail: "ACCOUNT (EMAIL)",
source: "SOURCE",
projectId: "PROJECT ID",
sessionState: "SESSION STATE",
@@ -62,6 +62,8 @@ document.addEventListener('alpine:init', () => {
reauthenticated: "re-authenticated",
added: "added",
successfully: "successfully",
accountAddedSuccess: "Account added successfully",
accountReauthSuccess: "Account re-authenticated successfully",
failedToGetAuthUrl: "Failed to get auth URL",
failedToStartOAuth: "Failed to start OAuth flow",
oauthInProgress: "OAuth in progress. Please complete authentication in the popup window...",
@@ -72,13 +74,13 @@ document.addEventListener('alpine:init', () => {
tabInterface: "Interface",
tabClaude: "Claude CLI",
tabModels: "Models",
tabServer: "Server Info",
tabServer: "Server Settings",
// Dashboard
registeredNodes: "Registered Nodes",
linkedAccounts: "Linked Accounts",
noSignal: "NO SIGNAL DETECTED",
establishingUplink: "ESTABLISHING UPLINK...",
// Settings - Models
modelsDesc: "Configure model visibility, pinning, and request redirection.",
modelsDesc: "Configure model visibility, pinning, and request routing.",
modelsPageDesc: "Real-time quota and status for all available models.",
showHidden: "Show Hidden Models",
modelId: "Model ID",
@@ -86,24 +88,24 @@ document.addEventListener('alpine:init', () => {
pinToTop: "Pin to top",
toggleVisibility: "Toggle Visibility",
noModels: "NO MODELS DETECTED",
modelMappingHint: "Server-side model redirection. Claude Code users: see 'Claude CLI' tab for easier setup.",
modelMapping: "Mapping (Target Model)",
modelMappingHint: "Server-side model routing. Claude Code users: see 'Claude CLI' tab for client-side setup.",
modelMapping: "Mapping (Target Model ID)",
// Settings - Claude
proxyConnection: "Proxy Connection",
modelSelection: "Model Selection",
aliasOverrides: "ALIAS OVERRIDES",
defaultModelAliases: "DEFAULT MODEL ALIASES",
opusAlias: "Opus Alias",
sonnetAlias: "Sonnet Alias",
haikuAlias: "Haiku Alias",
claudeSettingsAlert: "Settings below directly modify ~/.claude/settings.json. Restart Claude CLI to apply.",
writeToConfig: "Write to Config",
applyToClaude: "Apply to Claude CLI",
// Settings - Server
port: "Port",
uiVersion: "UI Version",
debugMode: "Debug Mode",
environment: "Environment",
serverReadOnly: "Server settings are read-only. Modify config.json or .env and restart the server to change.",
dangerZone: "Danger Zone / Advanced",
serverReadOnly: "Settings managed via config.json. Restart server to apply changes.",
advancedSettings: "Advanced Settings",
reloadConfigTitle: "Reload Account Config",
reloadConfigDesc: "Force reload accounts.json from disk",
reload: "Reload",
@@ -185,8 +187,8 @@ document.addEventListener('alpine:init', () => {
totalColon: "Total:",
todayColon: "Today:",
hour1Colon: "1H:",
smart: "Smart",
smartTitle: "Select Top 5 most used models (24h)",
frequentModels: "Frequent",
smartTitle: "Auto-select top 5 most used models (24h)",
activeCount: "{count} Active",
allCaps: "ALL",
claudeCaps: "CLAUDE",
@@ -200,14 +202,14 @@ document.addEventListener('alpine:init', () => {
maxRetries: "Max Retries",
retryBaseDelay: "Retry Base Delay (ms)",
retryMaxDelay: "Retry Max Delay (ms)",
persistTokenCache: "Persist Token Cache",
persistTokenDesc: "Save OAuth tokens to disk for faster restarts",
persistentSessions: "Persistent Sessions",
persistTokenDesc: "Save OAuth sessions to disk for faster restarts",
rateLimiting: "Account Rate Limiting & Timeouts",
defaultCooldown: "Default Cooldown Time",
maxWaitThreshold: "Max Wait Threshold (Sticky)",
maxWaitDesc: "Maximum time to wait for a sticky account to reset before failing or switching.",
maxWaitDesc: "Maximum time to wait for a sticky account to reset before switching.",
saveConfigServer: "Save Configuration",
serverRestartAlert: "Some changes may require server restart. Config is saved to {path}",
serverRestartAlert: "Changes saved to {path}. Restart server to apply some settings.",
changePassword: "Change WebUI Password",
changePasswordDesc: "Update the password for accessing this dashboard",
currentPassword: "Current Password",
@@ -249,6 +251,7 @@ document.addEventListener('alpine:init', () => {
gemini1mMode: "Gemini 1M Context Mode",
gemini1mDesc: "Appends [1m] suffix to Gemini models for 1M context window support.",
gemini1mWarning: "⚠ Large context may reduce Gemini-3-Pro performance.",
clickToSet: "Click to configure...",
},
zh: {
dashboard: "仪表盘",
@@ -273,7 +276,7 @@ document.addEventListener('alpine:init', () => {
systemConfig: "系统配置",
language: "语言设置",
pollingInterval: "数据轮询间隔",
logBufferSize: "日志缓冲大小",
maxDisplayLogs: "最大日志显示行数",
showExhausted: "显示耗尽模型",
showExhaustedDesc: "即使配额为 0% 也显示模型。",
compactMode: "紧凑模式",
@@ -281,13 +284,13 @@ document.addEventListener('alpine:init', () => {
saveChanges: "保存更改",
autoScroll: "自动滚动",
clearLogs: "清除日志",
accessCredentials: "访问凭证",
manageTokens: "管理 OAuth 令牌和会话状态",
addNode: "添加节点",
accountManagement: "账号管理",
manageTokens: "管理已授权的 Google 账号及其状态",
addAccount: "添加账号",
status: "状态",
enabled: "启用",
health: "健康度",
identity: "身份 (邮箱)",
health: "状态",
accountEmail: "账号 (邮箱)",
source: "来源",
projectId: "项目 ID",
sessionState: "会话状态",
@@ -299,6 +302,8 @@ document.addEventListener('alpine:init', () => {
reauthenticated: "已重新认证",
added: "已添加",
successfully: "成功",
accountAddedSuccess: "账号添加成功",
accountReauthSuccess: "账号重新认证成功",
failedToGetAuthUrl: "获取认证链接失败",
failedToStartOAuth: "启动 OAuth 流程失败",
oauthInProgress: "OAuth 授权进行中,请在弹出窗口中完成认证...",
@@ -310,13 +315,13 @@ document.addEventListener('alpine:init', () => {
tabInterface: "界面设置",
tabClaude: "Claude CLI",
tabModels: "模型管理",
tabServer: "服务器信息",
tabServer: "服务器设置",
// Dashboard
registeredNodes: "已注册节点",
linkedAccounts: "已关联账号",
noSignal: "无信号连接",
establishingUplink: "正在建立上行链路...",
// Settings - Models
modelsDesc: "配置模型的可见性、置顶和请求重定向。",
modelsDesc: "配置模型的可见性、置顶和请求路由。",
modelsPageDesc: "所有可用模型的实时配额和状态。",
showHidden: "显示隐藏模型",
modelId: "模型 ID",
@@ -324,24 +329,24 @@ document.addEventListener('alpine:init', () => {
pinToTop: "置顶",
toggleVisibility: "切换可见性",
noModels: "未检测到模型",
modelMappingHint: "服务端模型重定向功能。Claude Code 用户请使用 'Claude CLI' 标签页以便捷配置。",
modelMapping: "映射 (目标模型)",
modelMappingHint: "服务端模型路由功能。Claude Code 用户请使用 'Claude CLI' 标签页以便捷配置。",
modelMapping: "映射 (目标模型 ID)",
// Settings - Claude
proxyConnection: "代理连接",
modelSelection: "模型选择",
aliasOverrides: "别名覆盖",
defaultModelAliases: "默认模型映射 (别名)",
opusAlias: "Opus 别名",
sonnetAlias: "Sonnet 别名",
haikuAlias: "Haiku 别名",
claudeSettingsAlert: "以下设置直接修改 ~/.claude/settings.json。重启 Claude CLI 生效。",
writeToConfig: "写入配置",
applyToClaude: "应用到 Claude CLI",
// Settings - Server
port: "端口",
uiVersion: "UI 版本",
debugMode: "调试模式",
environment: "运行环境",
serverReadOnly: "服务器设置只读。修改 config.json 或 .env 并重启服务器以生效。",
dangerZone: "危险区域 / 高级",
serverReadOnly: "配置由 config.json 管理。重启服务器以应用更改。",
advancedSettings: "高级设置",
reloadConfigTitle: "重载账号配置",
reloadConfigDesc: "强制从磁盘重新读取 accounts.json",
reload: "重载",
@@ -423,8 +428,8 @@ document.addEventListener('alpine:init', () => {
totalColon: "总计:",
todayColon: "今日:",
hour1Colon: "1小时:",
smart: "智能选择",
smartTitle: "自动选过去 24 小时最常用的 5 个模型",
frequentModels: "常用推荐",
smartTitle: "自动选过去 24 小时最常用的 5 个模型",
activeCount: "{count} 活跃",
allCaps: "全部",
claudeCaps: "CLAUDE",
@@ -438,14 +443,14 @@ document.addEventListener('alpine:init', () => {
maxRetries: "最大重试次数",
retryBaseDelay: "重试基础延迟 (毫秒)",
retryMaxDelay: "重试最大延迟 (毫秒)",
persistTokenCache: "持久化令牌缓存",
persistTokenDesc: "将 OAuth 令牌保存到磁盘以实现快速重启",
persistentSessions: "持久化登录会话",
persistTokenDesc: "将登录会话保存到磁盘以实现快速重启",
rateLimiting: "账号限流与超时",
defaultCooldown: "默认冷却时间",
maxWaitThreshold: "最大等待阈值 (粘性会话)",
maxWaitDesc: "粘性账号在失败或切换前等待重置的最长时间。",
saveConfigServer: "保存配置",
serverRestartAlert: "部分更改可能需要重启服务器。配置已保存至 {path}",
serverRestartAlert: "配置已保存至 {path}。部分更改可能需要重启服务器。",
changePassword: "修改 WebUI 密码",
changePasswordDesc: "更新访问此仪表盘的密码",
currentPassword: "当前密码",
@@ -466,7 +471,7 @@ document.addEventListener('alpine:init', () => {
// 账号页面
searchAccounts: "搜索账号...",
noAccountsYet: "还没有添加任何账号",
noAccountsDesc: "点击上方的 \"添加节点\" 按钮通过 OAuth 添加 Google 账号,或者使用 CLI 命令导入凭证。",
noAccountsDesc: "点击上方的 \"添加账号\" 按钮通过 OAuth 添加 Google 账号,或者使用 CLI 命令导入凭证。",
addFirstAccount: "添加第一个账号",
noSearchResults: "没有找到匹配的账号",
clearSearch: "清除搜索",
@@ -487,6 +492,7 @@ document.addEventListener('alpine:init', () => {
gemini1mMode: "Gemini 1M 上下文模式",
gemini1mDesc: "为 Gemini 模型添加 [1m] 后缀以支持 1M 上下文窗口。",
gemini1mWarning: "⚠ 大上下文可能降低 Gemini-3-Pro 性能。",
clickToSet: "点击进行配置...",
}
},