finish i18n for now
This commit is contained in:
parent
79e3db6078
commit
d4e7f83131
5 changed files with 75 additions and 21 deletions
|
|
@ -69,7 +69,7 @@
|
||||||
<legend data-i18n="form.legend_basic">基础配置</legend>
|
<legend data-i18n="form.legend_basic">基础配置</legend>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="domain" data-i18n="form.domain_label">主域名 (将用作文件名)</label>
|
<label for="domain" data-i18n="form.domain_label">主域名 (将用作文件名)</label>
|
||||||
<input type="text" id="domain" name="domain" required>
|
<input type="text" id="domain" name="domain">
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="language-switcher-corner">
|
<div class="language-switcher-corner">
|
||||||
<button id="lang-switcher-btn" class="btn-icon" data-i18n-title="common.switch_language" title="切换语言">
|
<button id="lang-switcher-btn" class="btn-icon" data-i18n-title="common.switch_language">
|
||||||
<i class="fa-solid fa-language"></i>
|
<i class="fa-solid fa-language"></i>
|
||||||
</button>
|
</button>
|
||||||
<ul id="lang-options-list" class="hidden"></ul>
|
<ul id="lang-options-list" class="hidden"></ul>
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,8 @@
|
||||||
"new_password_label": "New Password (min. 8 characters)",
|
"new_password_label": "New Password (min. 8 characters)",
|
||||||
"confirm_new_password_label": "Confirm New Password",
|
"confirm_new_password_label": "Confirm New Password",
|
||||||
"reset_password_btn": "Reset Password",
|
"reset_password_btn": "Reset Password",
|
||||||
"resetting_password_btn": "Resetting..."
|
"resetting_password_btn": "Resetting...",
|
||||||
|
"interface_settings_title": "Interface Settings"
|
||||||
},
|
},
|
||||||
"login": {
|
"login": {
|
||||||
"page_title": "Login - CaddyDash",
|
"page_title": "Login - CaddyDash",
|
||||||
|
|
@ -98,7 +99,31 @@
|
||||||
"legend_features": "Additional Features",
|
"legend_features": "Additional Features",
|
||||||
"feature_log": "Enable Logging",
|
"feature_log": "Enable Logging",
|
||||||
"feature_error_page": "Enable Custom Error Pages",
|
"feature_error_page": "Enable Custom Error Pages",
|
||||||
"feature_encode": "Enable Compression"
|
"feature_encode": "Enable Compression",
|
||||||
|
"legend_general_options": "General Options",
|
||||||
|
"admin_api_port_label": "Admin API Port (Read-only)",
|
||||||
|
"http_port_label": "HTTP Port",
|
||||||
|
"https_port_label": "HTTPS Port",
|
||||||
|
"enable_debug_mode": "Enable Debug Mode",
|
||||||
|
"enable_prometheus_metrics": "Enable Prometheus Metrics",
|
||||||
|
"legend_main_log_config": "Main Log Configuration",
|
||||||
|
"log_level_label": "Log Level",
|
||||||
|
"log_rotate_size_label": "Rotate Size",
|
||||||
|
"log_rotate_size_placeholder": "e.g., 10MB",
|
||||||
|
"log_rotate_keep_label": "Retain Files",
|
||||||
|
"log_rotate_keep_placeholder": "e.g., 10",
|
||||||
|
"log_rotate_keep_for_time_label": "Retain Time",
|
||||||
|
"log_rotate_keep_for_time_placeholder": "e.g., 24h",
|
||||||
|
"legend_global_tls_config": "Global TLS Configuration (ACME)",
|
||||||
|
"enable_global_dns_challenge": "Enable Global DNS Challenge",
|
||||||
|
"dns_provider_label": "DNS Provider",
|
||||||
|
"acme_email_label": "ACME Email",
|
||||||
|
"acme_email_placeholder": "For certificate application and renewal notifications",
|
||||||
|
"api_token_label": "API Token (or equivalent credentials)",
|
||||||
|
"legend_ech_config": "Encrypted Client Hello (ECH)",
|
||||||
|
"enable_ech_experimental": "Enable ECH (Experimental)",
|
||||||
|
"ech_outer_sni_label": "ECH Outer SNI",
|
||||||
|
"ech_outer_sni_placeholder": "e.g., ech.example.com"
|
||||||
},
|
},
|
||||||
"dialogs": {
|
"dialogs": {
|
||||||
"unsaved_changes_title": "Unsaved Changes",
|
"unsaved_changes_title": "Unsaved Changes",
|
||||||
|
|
@ -135,6 +160,8 @@
|
||||||
"init_error_mismatch": "Passwords do not match.",
|
"init_error_mismatch": "Passwords do not match.",
|
||||||
"init_error_short": "Password must be at least {minLength} characters long.",
|
"init_error_short": "Password must be at least {minLength} characters long.",
|
||||||
"init_success": "Setup complete! Redirecting to login...",
|
"init_success": "Setup complete! Redirecting to login...",
|
||||||
"init_error_generic": "Initialization failed. Please try again."
|
"init_error_generic": "Initialization failed. Please try again.",
|
||||||
|
"error_all_fields_required": "All fields are required.",
|
||||||
|
"pwd_reset_success": "Password reset successfully. Please log in with your new password."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -51,7 +51,8 @@
|
||||||
"new_password_label": "新密码 (至少8位)",
|
"new_password_label": "新密码 (至少8位)",
|
||||||
"confirm_new_password_label": "确认新密码",
|
"confirm_new_password_label": "确认新密码",
|
||||||
"reset_password_btn": "重置密码",
|
"reset_password_btn": "重置密码",
|
||||||
"resetting_password_btn": "重置中..."
|
"resetting_password_btn": "重置中...",
|
||||||
|
"interface_settings_title": "界面设置"
|
||||||
},
|
},
|
||||||
"login": {
|
"login": {
|
||||||
"page_title": "登录 - CaddyDash",
|
"page_title": "登录 - CaddyDash",
|
||||||
|
|
@ -98,7 +99,31 @@
|
||||||
"legend_features": "附加功能",
|
"legend_features": "附加功能",
|
||||||
"feature_log": "启用日志",
|
"feature_log": "启用日志",
|
||||||
"feature_error_page": "启用错误页",
|
"feature_error_page": "启用错误页",
|
||||||
"feature_encode": "启用压缩"
|
"feature_encode": "启用压缩",
|
||||||
|
"legend_general_options": "通用选项",
|
||||||
|
"admin_api_port_label": "管理API端口 (只读)",
|
||||||
|
"http_port_label": "HTTP 端口",
|
||||||
|
"https_port_label": "HTTPS 端口",
|
||||||
|
"enable_debug_mode": "启用Debug模式",
|
||||||
|
"enable_prometheus_metrics": "启用Prometheus指标",
|
||||||
|
"legend_main_log_config": "主日志配置",
|
||||||
|
"log_level_label": "日志级别",
|
||||||
|
"log_rotate_size_label": "滚动大小",
|
||||||
|
"log_rotate_size_placeholder": "例如: 10MB",
|
||||||
|
"log_rotate_keep_label": "保留文件数",
|
||||||
|
"log_rotate_keep_placeholder": "例如: 10",
|
||||||
|
"log_rotate_keep_for_time_label": "保留时间",
|
||||||
|
"log_rotate_keep_for_time_placeholder": "例如: 24h",
|
||||||
|
"legend_global_tls_config": "全局TLS配置 (ACME)",
|
||||||
|
"enable_global_dns_challenge": "启用全局 DNS Challenge",
|
||||||
|
"dns_provider_label": "DNS 提供商",
|
||||||
|
"acme_email_label": "ACME 邮箱",
|
||||||
|
"acme_email_placeholder": "用于证书申请和续订通知",
|
||||||
|
"api_token_label": "API Token (或等效凭证)",
|
||||||
|
"legend_ech_config": "加密客户端问候 (ECH)",
|
||||||
|
"enable_ech_experimental": "启用 ECH (实验性功能)",
|
||||||
|
"ech_outer_sni_label": "ECH Outer SNI",
|
||||||
|
"ech_outer_sni_placeholder": "例如: ech.example.com"
|
||||||
},
|
},
|
||||||
"dialogs": {
|
"dialogs": {
|
||||||
"unsaved_changes_title": "未保存的更改",
|
"unsaved_changes_title": "未保存的更改",
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>面板设置 - CaddyDash</title>
|
<title data-i18n="pages.settings.page_title">面板设置 - CaddyDash</title>
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||||
|
|
@ -21,11 +21,12 @@
|
||||||
</header>
|
</header>
|
||||||
<nav class="sidebar-nav">
|
<nav class="sidebar-nav">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="/" data-nav-id="configs"><i class="fa-solid fa-sitemap"></i> <span>配置管理</span></a></li>
|
<li><a href="/" data-nav-id="configs"><i class="fa-solid fa-sitemap"></i> <span
|
||||||
|
data-i18n="nav.configs">配置管理</span></a></li>
|
||||||
<li><a href="/global.html" data-nav-id="global"><i class="fa-solid fa-globe"></i>
|
<li><a href="/global.html" data-nav-id="global"><i class="fa-solid fa-globe"></i>
|
||||||
<span>全局配置</span></a></li>
|
<span data-i18n="nav.global">全局配置</span></a></li>
|
||||||
<li><a href="/settings.html" data-nav-id="settings"><i class="fa-solid fa-gears"></i>
|
<li><a href="/settings.html" data-nav-id="settings"><i class="fa-solid fa-gears"></i>
|
||||||
<span>面板设置</span></a></li>
|
<span data-i18n="nav.settings">面板设置</span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="sidebar-bottom">
|
<div class="sidebar-bottom">
|
||||||
|
|
@ -34,52 +35,52 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="caddy-control-panel">
|
<div class="caddy-control-panel">
|
||||||
<div id="caddy-status-indicator" class="caddy-status"><span class="status-dot checking"></span><span
|
<div id="caddy-status-indicator" class="caddy-status"><span class="status-dot checking"></span><span
|
||||||
class="status-text">检查中...</span></div>
|
class="status-text" data-i18n="status.checking">检查中...</span></div>
|
||||||
<div id="caddy-action-button-container"></div>
|
<div id="caddy-action-button-container"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="logout-section"><button id="logout-btn" class="btn btn-secondary"><i
|
<div class="logout-section"><button id="logout-btn" class="btn btn-secondary"><i
|
||||||
class="fa-solid fa-right-from-bracket"></i><span>退出登录</span></button></div>
|
class="fa-solid fa-right-from-bracket"></i><span data-i18n="nav.logout">退出登录</span></button></div>
|
||||||
</div>
|
</div>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
<main class="main-content">
|
<main class="main-content">
|
||||||
<header class="main-header">
|
<header class="main-header">
|
||||||
<button class="btn-icon" id="menu-toggle-btn"><i class="fa-solid fa-bars"></i></button>
|
<button class="btn-icon" id="menu-toggle-btn"><i class="fa-solid fa-bars"></i></button>
|
||||||
<h2>面板设置</h2>
|
<h2 data-i18n="pages.settings.title">面板设置</h2>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div id="view-container">
|
<div id="view-container">
|
||||||
<section class="card-panel">
|
<section class="card-panel">
|
||||||
<h3 data-i18n="settings_language_title">界面设置</h3>
|
<h3 data-i18n="pages.settings.interface_settings_title">界面设置</h3>
|
||||||
<div class="form-group" style="margin-top: 16px;">
|
<div class="form-group" style="margin-top: 16px;">
|
||||||
<label for="select-language" data-i18n="pages.settings.language_label">语言</label>
|
<label for="select-language" data-i18n="pages.settings.language_label">语言</label>
|
||||||
<div id="select-language" class="custom-select"></div>
|
<div id="select-language" class="custom-select"></div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section class="card-panel">
|
<section class="card-panel">
|
||||||
<h3>账户安全</h3>
|
<h3 data-i18n="pages.settings.account_security_title">账户安全</h3>
|
||||||
<form id="reset-password-form" style="margin-top: 24px;">
|
<form id="reset-password-form" style="margin-top: 24px;">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="username">用户名</label>
|
<label for="username" data-i18n="pages.login.username_label">用户名</label>
|
||||||
<input type="text" id="username" name="username" autocomplete="username">
|
<input type="text" id="username" name="username" autocomplete="username">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="old_password">当前密码</label>
|
<label for="old_password" data-i18n="pages.settings.current_password_label">当前密码</label>
|
||||||
<input type="password" id="old_password" name="old_password"
|
<input type="password" id="old_password" name="old_password"
|
||||||
autocomplete="current-password">
|
autocomplete="current-password">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="new_password">新密码 (至少8位)</label>
|
<label for="new_password" data-i18n="pages.settings.new_password_label">新密码 (至少8位)</label>
|
||||||
<input type="password" id="new_password" name="new_password" autocomplete="new-password">
|
<input type="password" id="new_password" name="new_password" autocomplete="new-password">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="confirm_new_password">确认新密码</label>
|
<label for="confirm_new_password" data-i18n="pages.settings.confirm_new_password_label">确认新密码</label>
|
||||||
<input type="password" id="confirm_new_password" name="confirm_new_password"
|
<input type="password" id="confirm_new_password" name="confirm_new_password"
|
||||||
autocomplete="new-password">
|
autocomplete="new-password">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
<button type="submit" class="btn btn-primary"><i class="fa-solid fa-key"></i>
|
<button type="submit" class="btn btn-primary"><i class="fa-solid fa-key"></i>
|
||||||
<span>重置密码</span></button>
|
<span data-i18n="pages.settings.reset_password_btn">重置密码</span></button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -89,6 +90,7 @@
|
||||||
|
|
||||||
<div id="toast-container" class="toast-container"></div>
|
<div id="toast-container" class="toast-container"></div>
|
||||||
<div id="dialog-container"></div>
|
<div id="dialog-container"></div>
|
||||||
|
<div id="modal-container"></div> <!-- 模态框容器也应在此页面存在,因为notifications.js会用到 -->
|
||||||
|
|
||||||
<script type="module" src="js/common.js"></script>
|
<script type="module" src="js/common.js"></script>
|
||||||
<script type="module" src="js/settings.js"></script>
|
<script type="module" src="js/settings.js"></script>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue