Browse Source

翻译电子邮件模板为中文

pull/5763/head
JinkaiNiu 2 months ago
parent
commit
9545dd7522
  1. 14
      src/static/templates/404.hbs
  2. 28
      src/static/templates/admin/base.hbs
  3. 158
      src/static/templates/admin/diagnostics.hbs
  4. 8
      src/static/templates/admin/login.hbs
  5. 28
      src/static/templates/admin/organizations.hbs
  6. 70
      src/static/templates/admin/settings.hbs
  7. 68
      src/static/templates/admin/users.hbs
  8. 4
      src/static/templates/email/admin_reset_password.hbs
  9. 4
      src/static/templates/email/admin_reset_password.html.hbs
  10. 6
      src/static/templates/email/change_email.hbs
  11. 6
      src/static/templates/email/change_email.html.hbs
  12. 8
      src/static/templates/email/delete_account.hbs
  13. 8
      src/static/templates/email/delete_account.html.hbs
  14. 14
      src/static/templates/email/email_footer.hbs
  15. 3
      src/static/templates/email/email_footer_text.hbs
  16. 30
      src/static/templates/email/email_header.hbs
  17. 8
      src/static/templates/email/emergency_access_invite_accepted.hbs
  18. 8
      src/static/templates/email/emergency_access_invite_accepted.html.hbs
  19. 6
      src/static/templates/email/emergency_access_invite_confirmed.hbs
  20. 6
      src/static/templates/email/emergency_access_invite_confirmed.html.hbs
  21. 4
      src/static/templates/email/emergency_access_recovery_approved.hbs
  22. 4
      src/static/templates/email/emergency_access_recovery_approved.html.hbs
  23. 6
      src/static/templates/email/emergency_access_recovery_initiated.hbs
  24. 6
      src/static/templates/email/emergency_access_recovery_initiated.html.hbs
  25. 4
      src/static/templates/email/emergency_access_recovery_rejected.hbs
  26. 4
      src/static/templates/email/emergency_access_recovery_rejected.html.hbs
  27. 6
      src/static/templates/email/emergency_access_recovery_reminder.hbs
  28. 6
      src/static/templates/email/emergency_access_recovery_reminder.html.hbs
  29. 4
      src/static/templates/email/emergency_access_recovery_timed_out.hbs
  30. 4
      src/static/templates/email/emergency_access_recovery_timed_out.html.hbs
  31. 14
      src/static/templates/email/incomplete_2fa_login.hbs
  32. 14
      src/static/templates/email/incomplete_2fa_login.html.hbs
  33. 6
      src/static/templates/email/invite_accepted.hbs
  34. 8
      src/static/templates/email/invite_accepted.html.hbs
  35. 6
      src/static/templates/email/invite_confirmed.hbs
  36. 8
      src/static/templates/email/invite_confirmed.html.hbs
  37. 14
      src/static/templates/email/new_device_logged_in.hbs
  38. 14
      src/static/templates/email/new_device_logged_in.html.hbs
  39. 6
      src/static/templates/email/protected_action.hbs
  40. 6
      src/static/templates/email/protected_action.html.hbs
  41. 8
      src/static/templates/email/pw_hint_none.hbs
  42. 8
      src/static/templates/email/pw_hint_none.html.hbs
  43. 12
      src/static/templates/email/pw_hint_some.hbs
  44. 12
      src/static/templates/email/pw_hint_some.html.hbs
  45. 8
      src/static/templates/email/register_verify_email.hbs
  46. 8
      src/static/templates/email/register_verify_email.html.hbs
  47. 6
      src/static/templates/email/send_2fa_removed_from_org.hbs
  48. 6
      src/static/templates/email/send_2fa_removed_from_org.html.hbs
  49. 8
      src/static/templates/email/send_emergency_access_invite.hbs
  50. 8
      src/static/templates/email/send_emergency_access_invite.html.hbs
  51. 8
      src/static/templates/email/send_org_invite.hbs
  52. 8
      src/static/templates/email/send_org_invite.html.hbs
  53. 4
      src/static/templates/email/send_single_org_removed_from_org.hbs
  54. 4
      src/static/templates/email/send_single_org_removed_from_org.html.hbs
  55. 6
      src/static/templates/email/smtp_test.hbs
  56. 6
      src/static/templates/email/smtp_test.html.hbs
  57. 6
      src/static/templates/email/twofactor_email.hbs
  58. 6
      src/static/templates/email/twofactor_email.html.hbs
  59. 8
      src/static/templates/email/verify_email.hbs
  60. 8
      src/static/templates/email/verify_email.html.hbs
  61. 6
      src/static/templates/email/welcome.hbs
  62. 6
      src/static/templates/email/welcome.html.hbs
  63. 8
      src/static/templates/email/welcome_must_verify.hbs
  64. 8
      src/static/templates/email/welcome_must_verify.html.hbs
  65. 32
      src/static/templates/scss/user.vaultwarden.scss.hbs
  66. 63
      src/static/templates/scss/vaultwarden.scss.hbs

14
src/static/templates/404.hbs

@ -1,11 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<html lang="zh-CN">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="robots" content="noindex,nofollow" />
<link rel="icon" type="image/png" href="{{urlpath}}/vw_static/vaultwarden-favicon.png">
<title>Page not found!</title>
<title>页面未找到!</title>
<link rel="stylesheet" href="{{urlpath}}/vw_static/bootstrap.css" />
<link rel="stylesheet" href="{{urlpath}}/vw_static/404.css" />
</head>
@ -26,13 +26,13 @@
</nav>
<main class="container inner content text-center">
<h2>Page not found!</h2>
<p class="lead">Sorry, but the page you were looking for could not be found.</p>
<h2>页面未找到!</h2>
<p class="lead">抱歉,您访问的页面不存在。</p>
<p class="display-6">
<a href="{{urlpath}}/"><img class="vw-404" src="{{urlpath}}/vw_static/404.png" alt="Return to the web vault?"></a></p>
<p>You can <a href="{{urlpath}}/">return to the web-vault</a>, or <a href="https://github.com/dani-garcia/vaultwarden">contact us</a>.</p>
<a href="{{urlpath}}/"><img class="vw-404" src="{{urlpath}}/vw_static/404.png" alt="返回密码库?"></a></p>
<p>您可以<a href="{{urlpath}}/">返回密码库</a>,或<a href="https://github.com/dani-garcia/vaultwarden">联系我们</a>。</p>
</main>
<div class="container footer text-muted content">Vaultwarden (unofficial Bitwarden&reg; server)</div>
<div class="container footer text-muted content">Vaultwarden(非官方 Bitwarden® 服务器)</div>
</body>
</html>

28
src/static/templates/admin/base.hbs

@ -1,11 +1,11 @@
<!DOCTYPE html>
<html lang="en" data-bs-theme="auto">
<html lang="zh-CN" data-bs-theme="auto">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="noindex,nofollow" />
<link rel="icon" type="image/png" href="{{urlpath}}/vw_static/vaultwarden-favicon.png">
<title>Vaultwarden Admin Panel</title>
<title>Vaultwarden 管理面板</title>
<link rel="stylesheet" href="{{urlpath}}/vw_static/bootstrap.css" />
<link rel="stylesheet" href="{{urlpath}}/vw_static/admin.css" />
<script src="{{urlpath}}/vw_static/admin.js"></script>
@ -13,7 +13,7 @@
<body>
<nav class="navbar navbar-expand-md navbar-dark bg-dark mb-4 shadow fixed-top">
<div class="container-xl">
<a class="navbar-brand" href="{{urlpath}}/admin"><img class="vaultwarden-icon" src="{{urlpath}}/vw_static/vaultwarden-icon.png" alt="V">aultwarden Admin</a>
<a class="navbar-brand" href="{{urlpath}}/admin"><img class="vaultwarden-icon" src="{{urlpath}}/vw_static/vaultwarden-icon.png" alt="V">aultwarden 管理</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse"
aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
@ -22,20 +22,20 @@
<ul class="navbar-nav me-auto">
{{#if logged_in}}
<li class="nav-item">
<a class="nav-link" href="{{urlpath}}/admin">Settings</a>
<a class="nav-link" href="{{urlpath}}/admin">设置</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{urlpath}}/admin/users/overview">Users</a>
<a class="nav-link" href="{{urlpath}}/admin/users/overview">用户</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{urlpath}}/admin/organizations/overview">Organizations</a>
<a class="nav-link" href="{{urlpath}}/admin/organizations/overview">组织</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{urlpath}}/admin/diagnostics">Diagnostics</a>
<a class="nav-link" href="{{urlpath}}/admin/diagnostics">诊断</a>
</li>
{{/if}}
<li class="nav-item">
<a class="nav-link" href="{{urlpath}}/" target="_blank" rel="noreferrer">Vault</a>
<a class="nav-link" href="{{urlpath}}/" target="_blank" rel="noreferrer">密码库</a>
</li>
</ul>
@ -44,11 +44,11 @@
<button
class="btn btn-link nav-link py-0 px-0 px-md-2 dropdown-toggle d-flex align-items-center"
id="bd-theme" type="button" aria-expanded="false" data-bs-toggle="dropdown"
data-bs-display="static" aria-label="Toggle theme (auto)">
data-bs-display="static" aria-label="切换主题 (自动)">
<span class="my-1 fs-4 theme-icon-active">
<use>&#9775;</use>
</span>
<span class="d-md-none ms-2" id="bd-theme-text">Toggle theme</span>
<span class="d-md-none ms-2" id="bd-theme-text">切换主题</span>
</button>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="bd-theme-text">
<li>
@ -57,7 +57,7 @@
<span class="me-2 fs-4 theme-icon">
<use>&#9728;</use>
</span>
Light
浅色
</button>
</li>
<li>
@ -66,7 +66,7 @@
<span class="me-2 fs-4 theme-icon">
<use>&starf;</use>
</span>
Dark
深色
</button>
</li>
<li>
@ -75,7 +75,7 @@
<span class="me-2 fs-4 theme-icon">
<use>&#9775;</use>
</span>
Auto
自动
</button>
</li>
</ul>
@ -83,7 +83,7 @@
</ul>
{{#if logged_in}}
<a class="btn btn-sm btn-secondary" href="{{urlpath}}/admin/logout">Log Out</a>
<a class="btn btn-sm btn-secondary" href="{{urlpath}}/admin/logout">退出登录</a>
{{/if}}
</div>

158
src/static/templates/admin/diagnostics.hbs

@ -1,36 +1,36 @@
<main class="container-xl">
<div id="diagnostics-block" class="my-3 p-3 rounded shadow">
<h6 class="border-bottom pb-2 mb-2">Diagnostics</h6>
<h6 class="border-bottom pb-2 mb-2">诊断信息</h6>
<h3>Versions</h3>
<h3>版本信息</h3>
<div class="row">
<div class="col-md">
<dl class="row">
<dt class="col-sm-5">Server Installed
<span class="badge bg-success d-none" id="server-success" title="Latest version is installed.">Ok</span>
<span class="badge bg-warning text-dark d-none" id="server-warning" title="There seems to be an update available.">Update</span>
<span class="badge bg-info text-dark d-none" id="server-branch" title="This is a branched version.">Branched</span>
<dt class="col-sm-5">已安装服务器版本
<span class="badge bg-success d-none" id="server-success" title="已安装最新版本">正常</span>
<span class="badge bg-warning text-dark d-none" id="server-warning" title="有可用更新">更新</span>
<span class="badge bg-info text-dark d-none" id="server-branch" title="这是一个分支版本">分支</span>
</dt>
<dd class="col-sm-7">
<span id="server-installed">{{page_data.current_release}}</span>
</dd>
<dt class="col-sm-5">Server Latest
<span class="badge bg-secondary d-none" id="server-failed" title="Unable to determine latest version.">Unknown</span>
<dt class="col-sm-5">最新服务器版本
<span class="badge bg-secondary d-none" id="server-failed" title="无法确定最新版本">未知</span>
</dt>
<dd class="col-sm-7">
<span id="server-latest">{{page_data.latest_release}}<span id="server-latest-commit" class="d-none">-{{page_data.latest_commit}}</span></span>
</dd>
{{#if page_data.web_vault_enabled}}
<dt class="col-sm-5">Web Installed
<span class="badge bg-success d-none" id="web-success" title="Latest version is installed.">Ok</span>
<span class="badge bg-warning text-dark d-none" id="web-warning" title="There seems to be an update available.">Update</span>
<dt class="col-sm-5">已安装网页版本
<span class="badge bg-success d-none" id="web-success" title="已安装最新版本">正常</span>
<span class="badge bg-warning text-dark d-none" id="web-warning" title="有可用更新">更新</span>
</dt>
<dd class="col-sm-7">
<span id="web-installed">{{page_data.web_vault_version}}</span>
</dd>
{{#unless page_data.running_within_container}}
<dt class="col-sm-5">Web Latest
<span class="badge bg-secondary d-none" id="web-failed" title="Unable to determine latest version.">Unknown</span>
<dt class="col-sm-5">最新网页版本
<span class="badge bg-secondary d-none" id="web-failed" title="无法确定最新版本">未知</span>
</dt>
<dd class="col-sm-7">
<span id="web-latest">{{page_data.latest_web_build}}</span>
@ -38,12 +38,12 @@
{{/unless}}
{{/if}}
{{#unless page_data.web_vault_enabled}}
<dt class="col-sm-5">Web Installed</dt>
<dt class="col-sm-5">已安装网页版本</dt>
<dd class="col-sm-7">
<span id="web-installed">Web Vault is disabled</span>
<span id="web-installed">网页保险库已禁用</span>
</dd>
{{/unless}}
<dt class="col-sm-5">Database</dt>
<dt class="col-sm-5">数据库</dt>
<dd class="col-sm-7">
<span><b>{{page_data.db_type}}:</b> {{page_data.db_version}}</span>
</dd>
@ -51,141 +51,141 @@
</div>
</div>
<h3>Checks</h3>
<h3>检查项目</h3>
<div class="row">
<div class="col-md">
<dl class="row">
<dt class="col-sm-5">OS/Arch</dt>
<dt class="col-sm-5">操作系统/架构</dt>
<dd class="col-sm-7">
<span class="d-block"><b>{{ page_data.host_os }} / {{ page_data.host_arch }}</b></span>
</dd>
<dt class="col-sm-5">Running within a container</dt>
<dt class="col-sm-5">在容器中运行</dt>
<dd class="col-sm-7">
{{#if page_data.running_within_container}}
<span class="d-block"><b>Yes (Base: {{ page_data.container_base_image }})</b></span>
<span class="d-block"><b>是 (基础镜像: {{ page_data.container_base_image }})</b></span>
{{/if}}
{{#unless page_data.running_within_container}}
<span class="d-block"><b>No</b></span>
<span class="d-block"><b></b></span>
{{/unless}}
</dd>
<dt class="col-sm-5">Environment settings overridden</dt>
<dt class="col-sm-5">环境设置已覆盖</dt>
<dd class="col-sm-7">
{{#if page_data.overrides}}
<span class="d-block" title="The following settings are overridden: {{page_data.overrides}}"><b>Yes</b></span>
<span class="d-block" title="以下设置已被覆盖: {{page_data.overrides}}"><b></b></span>
{{/if}}
{{#unless page_data.overrides}}
<span class="d-block"><b>No</b></span>
<span class="d-block"><b></b></span>
{{/unless}}
</dd>
<dt class="col-sm-5">Uses a reverse proxy</dt>
<dt class="col-sm-5">使用反向代理</dt>
<dd class="col-sm-7">
{{#if page_data.ip_header_exists}}
<span class="d-block" title="IP Header found."><b>Yes</b></span>
<span class="d-block" title="已找到IP请求头"><b>是</b></span>
{{/if}}
{{#unless page_data.ip_header_exists}}
<span class="d-block" title="No IP Header found."><b>No</b></span>
<span class="d-block" title="未找到IP请求头"><b>否</b></span>
{{/unless}}
</dd>
{{!-- Only show this if the IP Header Exists --}}
{{#if page_data.ip_header_exists}}
<dt class="col-sm-5">IP header
<dt class="col-sm-5">IP请求头
{{#if page_data.ip_header_match}}
<span class="badge bg-success" title="IP_HEADER config seems to be valid.">Match</span>
<span class="badge bg-success" title="IP_HEADER配置有效">匹配</span>
{{/if}}
{{#unless page_data.ip_header_match}}
<span class="badge bg-danger" title="IP_HEADER config seems to be invalid. IP's in the log could be invalid. Please fix.">No Match</span>
<span class="badge bg-danger" title="IP_HEADER配置无效。日志中的IP可能无效。请修复。">不匹配</span>
{{/unless}}
</dt>
<dd class="col-sm-7">
{{#if page_data.ip_header_match}}
<span class="d-block"><b>Config/Server:</b> {{ page_data.ip_header_name }}</span>
<span class="d-block"><b>配置/服务器:</b> {{ page_data.ip_header_name }}</span>
{{/if}}
{{#unless page_data.ip_header_match}}
<span class="d-block"><b>Config:</b> {{ page_data.ip_header_config }}</span>
<span class="d-block"><b>Server:</b> {{ page_data.ip_header_name }}</span>
<span class="d-block"><b>配置:</b> {{ page_data.ip_header_config }}</span>
<span class="d-block"><b>服务器:</b> {{ page_data.ip_header_name }}</span>
{{/unless}}
</dd>
{{/if}}
{{!-- End if IP Header Exists --}}
<dt class="col-sm-5">Internet access
<dt class="col-sm-5">互联网访问
{{#if page_data.has_http_access}}
<span class="badge bg-success" title="We have internet access!">Ok</span>
<span class="badge bg-success" title="可以访问互联网!">正常</span>
{{/if}}
{{#unless page_data.has_http_access}}
<span class="badge bg-danger" title="There seems to be no internet access. Please fix.">Error</span>
<span class="badge bg-danger" title="似乎无法访问互联网。请修复。">错误</span>
{{/unless}}
</dt>
<dd class="col-sm-7">
{{#if page_data.has_http_access}}
<span class="d-block"><b>Yes</b></span>
<span class="d-block"><b></b></span>
{{/if}}
{{#unless page_data.has_http_access}}
<span class="d-block"><b>No</b></span>
<span class="d-block"><b></b></span>
{{/unless}}
</dd>
<dt class="col-sm-5">Internet access via a proxy</dt>
<dt class="col-sm-5">通过代理访问互联网</dt>
<dd class="col-sm-7">
{{#if page_data.uses_proxy}}
<span class="d-block" title="Internet access goes via a proxy (HTTPS_PROXY or HTTP_PROXY is configured)."><b>Yes</b></span>
<span class="d-block" title="通过代理访问互联网 (已配置 HTTPS_PROXY 或 HTTP_PROXY)"><b>是</b></span>
{{/if}}
{{#unless page_data.uses_proxy}}
<span class="d-block" title="We have direct internet access, no outgoing proxy configured."><b>No</b></span>
<span class="d-block" title="直接访问互联网,未配置出站代理"><b>否</b></span>
{{/unless}}
</dd>
<dt class="col-sm-5">Websocket enabled
<dt class="col-sm-5">WebSocket已启用
{{#if page_data.enable_websocket}}
<span class="badge bg-success d-none" id="websocket-success" title="Websocket connection is working.">Ok</span>
<span class="badge bg-danger d-none" id="websocket-error" title="Websocket connection error, validate your reverse proxy configuration!">Error</span>
<span class="badge bg-success d-none" id="websocket-success" title="WebSocket连接正常">正常</span>
<span class="badge bg-danger d-none" id="websocket-error" title="WebSocket连接错误,请检查反向代理配置!">错误</span>
{{/if}}
</dt>
<dd class="col-sm-7">
{{#if page_data.enable_websocket}}
<span class="d-block" title="Websocket connections are enabled (ENABLE_WEBSOCKET is true)."><b>Yes</b></span>
<span class="d-block" title="已启用WebSocket连接 (ENABLE_WEBSOCKET 为 true)"><b>是</b></span>
{{/if}}
{{#unless page_data.enable_websocket}}
<span class="d-block" title="Websocket connections are disabled (ENABLE_WEBSOCKET is false)."><b>No</b></span>
<span class="d-block" title="已禁用WebSocket连接 (ENABLE_WEBSOCKET 为 false)"><b>否</b></span>
{{/unless}}
</dd>
<dt class="col-sm-5">DNS (github.com)
<span class="badge bg-success d-none" id="dns-success" title="DNS Resolving works!">Ok</span>
<span class="badge bg-danger d-none" id="dns-warning" title="DNS Resolving failed. Please fix.">Error</span>
<dt class="col-sm-5">DNS解析 (github.com)
<span class="badge bg-success d-none" id="dns-success" title="DNS解析正常!">正常</span>
<span class="badge bg-danger d-none" id="dns-warning" title="DNS解析失败。请修复。">错误</span>
</dt>
<dd class="col-sm-7">
<span id="dns-resolved">{{page_data.dns_resolved}}</span>
</dd>
<dt class="col-sm-5">Date & Time (Local)</dt>
<dt class="col-sm-5">日期和时间 (本地)</dt>
<dd class="col-sm-7">
<span><b>Server:</b> {{page_data.server_time_local}}</span>
<span><b>服务器:</b> {{page_data.server_time_local}}</span>
</dd>
<dt class="col-sm-5">Date & Time (UTC)
<span class="badge bg-success d-none" id="time-success" title="Server and browser times are within 15 seconds of each other.">Server/Browser Ok</span>
<span class="badge bg-danger d-none" id="time-warning" title="Server and browser times are more than 15 seconds apart.">Server/Browser Error</span>
<span class="badge bg-success d-none" id="ntp-server-success" title="Server and NTP times are within 15 seconds of each other.">Server NTP Ok</span>
<span class="badge bg-danger d-none" id="ntp-server-warning" title="Server and NTP times are more than 15 seconds apart.">Server NTP Error</span>
<span class="badge bg-success d-none" id="ntp-browser-success" title="Browser and NTP times are within 15 seconds of each other.">Browser NTP Ok</span>
<span class="badge bg-danger d-none" id="ntp-browser-warning" title="Browser and NTP times are more than 15 seconds apart.">Browser NTP Error</span>
<dt class="col-sm-5">日期和时间 (UTC)
<span class="badge bg-success d-none" id="time-success" title="服务器和浏览器时间相差在15秒内">服务器/浏览器正常</span>
<span class="badge bg-danger d-none" id="time-warning" title="服务器和浏览器时间相差超过15秒">服务器/浏览器错误</span>
<span class="badge bg-success d-none" id="ntp-server-success" title="服务器和NTP时间相差在15秒内">服务器NTP正常</span>
<span class="badge bg-danger d-none" id="ntp-server-warning" title="服务器和NTP时间相差超过15秒">服务器NTP错误</span>
<span class="badge bg-success d-none" id="ntp-browser-success" title="浏览器和NTP时间相差在15秒内">浏览器NTP正常</span>
<span class="badge bg-danger d-none" id="ntp-browser-warning" title="浏览器和NTP时间相差超过15秒">浏览器NTP错误</span>
</dt>
<dd class="col-sm-7">
<span id="ntp-time" class="d-block"><b>NTP:</b> <span id="ntp-server-string">{{page_data.ntp_time}}</span></span>
<span id="time-server" class="d-block"><b>Server:</b> <span id="time-server-string">{{page_data.server_time}}</span></span>
<span id="time-browser" class="d-block"><b>Browser:</b> <span id="time-browser-string"></span></span>
<span id="time-server" class="d-block"><b>服务器:</b> <span id="time-server-string">{{page_data.server_time}}</span></span>
<span id="time-browser" class="d-block"><b>浏览器:</b> <span id="time-browser-string"></span></span>
</dd>
<dt class="col-sm-5">Domain configuration
<span class="badge bg-success d-none" id="domain-success" title="The domain variable matches the browser location and seems to be configured correctly.">Match</span>
<span class="badge bg-danger d-none" id="domain-warning" title="The domain variable does not match the browser location.&#013;&#010;The domain variable does not seem to be configured correctly.&#013;&#010;Some features may not work as expected!">No Match</span>
<span class="badge bg-success d-none" id="https-success" title="Configured to use HTTPS">HTTPS</span>
<span class="badge bg-danger d-none" id="https-warning" title="Not configured to use HTTPS.&#013;&#010;Some features may not work as expected!">No HTTPS</span>
<dt class="col-sm-5">域名配置
<span class="badge bg-success d-none" id="domain-success" title="域名变量与浏览器位置匹配且配置正确">匹配</span>
<span class="badge bg-danger d-none" id="domain-warning" title="域名变量与浏览器位置不匹配。&#013;&#010;域名变量配置似乎不正确。&#013;&#010;某些功能可能无法正常工作!">不匹配</span>
<span class="badge bg-success d-none" id="https-success" title="已配置使用HTTPS">HTTPS</span>
<span class="badge bg-danger d-none" id="https-warning" title="未配置使用HTTPS。&#013;&#010;某些功能可能无法正常工作!">无HTTPS</span>
</dt>
<dd class="col-sm-7">
<span id="domain-server" class="d-block"><b>Server:</b> <span id="domain-server-string">{{page_data.admin_url}}</span></span>
<span id="domain-browser" class="d-block"><b>Browser:</b> <span id="domain-browser-string"></span></span>
<span id="domain-server" class="d-block"><b>服务器:</b> <span id="domain-server-string">{{page_data.admin_url}}</span></span>
<span id="domain-browser" class="d-block"><b>浏览器:</b> <span id="domain-browser-string"></span></span>
</dd>
<dt class="col-sm-5">HTTP Response validation
<span class="badge bg-success d-none" id="http-response-success" title="All headers and HTTP request responses seem to be ok.">Ok</span>
<span class="badge bg-danger d-none" id="http-response-warning" title="Some headers or HTTP request responses return invalid data!">Error</span>
<dt class="col-sm-5">HTTP响应验证
<span class="badge bg-success d-none" id="http-response-success" title="所有请求头和HTTP响应正常">正常</span>
<span class="badge bg-danger d-none" id="http-response-warning" title="部分请求头或HTTP响应返回无效数据!">错误</span>
</dt>
<dd class="col-sm-7">
<span id="http-response-errors" class="d-block"></span>
@ -194,31 +194,31 @@
</div>
</div>
<h3>Support</h3>
<h3>支持</h3>
<div class="row">
<div class="col-md">
<dl class="row">
<dd class="col-sm-12">
If you need support please check the following links first before you create a new issue:
<a href="https://vaultwarden.discourse.group/" target="_blank" rel="noreferrer noopener">Vaultwarden Forum</a>
| <a href="https://github.com/dani-garcia/vaultwarden/discussions" target="_blank" rel="noreferrer noopener">Github Discussions</a>
如需支持,请在创建新问题前先查看以下链接:
<a href="https://vaultwarden.discourse.group/" target="_blank" rel="noreferrer noopener">Vaultwarden论坛</a>
| <a href="https://github.com/dani-garcia/vaultwarden/discussions" target="_blank" rel="noreferrer noopener">Github讨论区</a>
</dd>
</dl>
<dl class="row">
<dd class="col-sm-12">
You can use the button below to pre-generate a string which you can copy/paste on either the Forum or when Creating a new issue at Github.<br>
We try to hide the most sensitive values from the generated support string by default, but please verify if there is nothing in there which you want to hide!<br>
您可以使用下面的按钮预生成一段文本,可以复制/粘贴到论坛或Github新建问题时使用。<br>
我们默认会尝试隐藏生成的支持字符串中最敏感的值,但请检查是否有您想要隐藏的内容!<br>
</dd>
</dl>
<dl class="row">
<dt class="col-sm-3">
<button type="button" id="gen-support" class="btn btn-primary">Generate Support String</button>
<button type="button" id="gen-support" class="btn btn-primary">生成支持字符串</button>
<br><br>
<button type="button" id="copy-support" class="btn btn-info mb-3 d-none">Copy To Clipboard</button>
<button type="button" id="copy-support" class="btn btn-info mb-3 d-none">复制到剪贴板</button>
<div class="toast-container position-absolute float-start vw-copy-toast">
<div id="toastClipboardCopy" class="toast fade hide" role="status" aria-live="polite" aria-atomic="true" data-bs-autohide="true" data-bs-delay="1500">
<div class="toast-body">
Copied to clipboard!
已复制到剪贴板!
</div>
</div>
</div>

8
src/static/templates/admin/login.hbs

@ -9,15 +9,15 @@
<div class="align-items-center p-3 mb-3 text-opacity-75 text-light bg-danger rounded shadow">
<div>
<h6 class="mb-0 text-light">Authentication key needed to continue</h6>
<small>Please provide it below:</small>
<h6 class="mb-0 text-light">需要认证密钥才能继续</h6>
<small>请在下方输入:</small>
<form class="form-inline" method="post" action="{{urlpath}}/admin">
<input type="password" autocomplete="password" class="form-control w-50 mr-2" name="token" placeholder="Enter admin token" autofocus="autofocus">
<input type="password" autocomplete="password" class="form-control w-50 mr-2" name="token" placeholder="请输入管理员令牌" autofocus="autofocus">
{{#if redirect}}
<input type="hidden" id="redirect" name="redirect" value="/{{redirect}}">
{{/if}}
<button type="submit" class="btn btn-primary mt-2">Enter</button>
<button type="submit" class="btn btn-primary mt-2">确定</button>
</form>
</div>
</div>

28
src/static/templates/admin/organizations.hbs

@ -1,16 +1,16 @@
<main class="container-xl">
<div id="organizations-block" class="my-3 p-3 rounded shadow">
<h6 class="border-bottom pb-2 mb-3">Organizations</h6>
<h6 class="border-bottom pb-2 mb-3">组织管理</h6>
<div class="table-responsive-xl small">
<table id="orgs-table" class="table table-sm table-striped table-hover">
<thead>
<tr>
<th class="vw-org-details">Organization</th>
<th class="vw-users">Users</th>
<th class="vw-entries">Entries</th>
<th class="vw-attachments">Attachments</th>
<th class="vw-misc">Misc</th>
<th class="vw-actions">Actions</th>
<th class="vw-org-details">组织信息</th>
<th class="vw-users">用户</th>
<th class="vw-entries">条目</th>
<th class="vw-attachments">附件</th>
<th class="vw-misc">其他</th>
<th class="vw-actions">操作</th>
</tr>
</thead>
<tbody>
@ -33,18 +33,18 @@
<span class="d-block">{{cipher_count}}</span>
</td>
<td>
<span class="d-block"><strong>Amount:</strong> {{attachment_count}}</span>
<span class="d-block"><strong>数量:</strong> {{attachment_count}}</span>
{{#if attachment_count}}
<span class="d-block"><strong>Size:</strong> {{attachment_size}}</span>
<span class="d-block"><strong>大小:</strong> {{attachment_size}}</span>
{{/if}}
</td>
<td>
<span class="d-block"><strong>Collections:</strong> {{collection_count}}</span>
<span class="d-block"><strong>Groups:</strong> {{group_count}}</span>
<span class="d-block"><strong>Events:</strong> {{event_count}}</span>
<span class="d-block"><strong>集合:</strong> {{collection_count}}</span>
<span class="d-block"><strong>群组:</strong> {{group_count}}</span>
<span class="d-block"><strong>事件:</strong> {{event_count}}</span>
</td>
<td class="text-end px-0 small">
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-delete-organization data-vw-org-uuid="{{id}}" data-vw-org-name="{{name}}" data-vw-billing-email="{{billingEmail}}">Delete Organization</button><br>
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-delete-organization data-vw-org-uuid="{{id}}" data-vw-org-name="{{name}}" data-vw-billing-email="{{billingEmail}}">删除组织</button><br>
</td>
</tr>
{{/each}}
@ -53,7 +53,7 @@
</div>
<div class="mt-3 clearfix">
<button type="button" class="btn btn-sm btn-primary float-end" id="reload">Reload organizations</button>
<button type="button" class="btn btn-sm btn-primary float-end" id="reload">重新加载组织</button>
</div>
</div>
</main>

70
src/static/templates/admin/settings.hbs

@ -1,17 +1,17 @@
<main class="container-xl">
<div id="admin_token_warning" class="alert alert-warning alert-dismissible fade show d-none">
<button type="button" class="btn-close" data-bs-target="admin_token_warning" data-bs-dismiss="alert" aria-label="Close"></button>
You are using a plain text `ADMIN_TOKEN` which is insecure.<br>
Please generate a secure Argon2 PHC string by using `vaultwarden hash` or `argon2`.<br>
See: <a href="https://github.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page#secure-the-admin_token" target="_blank" rel="noopener noreferrer">Enabling admin page - Secure the `ADMIN_TOKEN`</a>
您正在使用明文的 `ADMIN_TOKEN`,这不安全。<br>
请使用 `vaultwarden hash` 或 `argon2` 生成一个安全的 Argon2 PHC 字符串。<br>
参见:<a href="https://github.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page#secure-the-admin_token" target="_blank" rel="noopener noreferrer">启用管理页面 - 保护 `ADMIN_TOKEN`</a>
</div>
<div id="config-block" class="align-items-center p-3 mb-3 bg-secondary rounded shadow">
<div>
<h6 class="text-white mb-3">Configuration</h6>
<h6 class="text-white mb-3">配置</h6>
<div class="small text-white mb-3">
<span class="font-weight-bolder">NOTE:</span> The settings here override the environment variables. Once saved, it's recommended to stop setting them to avoid confusion.<br>
This does not apply to the read-only section, which can only be set via environment variables.<br>
Settings which are overridden are shown with <span class="is-overridden-true alert-row px-1">a yellow colored background</span>.
<span class="font-weight-bolder">注意:</span> 这里的设置会覆盖环境变量。保存后,建议停止设置它们以避免混淆。<br>
这不适用于只读部分,只能通过环境变量设置。<br>
被覆盖的设置将显示为 <span class="is-overridden-true alert-row px-1">黄色背景</span>。
</div>
<form class="form needs-validation" id="config-form" novalidate>
@ -28,9 +28,9 @@
<div class="col-sm-8">
<div class="input-group">
<input class="form-control conf-{{type}}" id="input_{{name}}" type="{{type}}"
name="{{name}}" value="{{value}}" {{#if default}} placeholder="Default: {{default}}"{{/if}}>
name="{{name}}" value="{{value}}" {{#if default}} placeholder="默认: {{default}}"{{/if}}>
{{#case type "password"}}
<button class="btn btn-outline-secondary input-group-text" type="button" data-vw-pw-toggle="input_{{name}}">Show/hide</button>
<button class="btn btn-outline-secondary input-group-text" type="button" data-vw-pw-toggle="input_{{name}}">显示/隐藏</button>
{{/case}}
</div>
</div>
@ -42,7 +42,7 @@
<input class="form-check-input conf-{{type}}" type="checkbox" id="input_{{name}}"
name="{{name}}" {{#if value}} checked {{/if}}>
<label class="form-check-label" for="input_{{name}}"> Default: {{default}} </label>
<label class="form-check-label" for="input_{{name}}"> 默认: {{default}} </label>
</div>
</div>
{{/case}}
@ -50,12 +50,12 @@
{{/if}}
{{/each}}
{{#case group "smtp"}}
<div class="row my-2 align-items-center pt-3 border-top" title="Send a test email to given email address">
<label for="smtp-test-email" class="col-sm-3 col-form-label">Test SMTP</label>
<div class="row my-2 align-items-center pt-3 border-top" title="向指定邮箱地址发送测试邮件">
<label for="smtp-test-email" class="col-sm-3 col-form-label">测试 SMTP</label>
<div class="col-sm-8 input-group">
<input class="form-control" id="smtp-test-email" type="email" placeholder="Enter test email" required spellcheck="false">
<button type="button" class="btn btn-outline-primary input-group-text" id="smtpTest">Send test email</button>
<div class="invalid-tooltip">Please provide a valid email address</div>
<input class="form-control" id="smtp-test-email" type="email" placeholder="输入测试邮箱" required spellcheck="false">
<button type="button" class="btn btn-outline-primary input-group-text" id="smtpTest">发送测试邮件</button>
<div class="invalid-tooltip">请提供有效的电子邮件地址</div>
</div>
</div>
{{/case}}
@ -66,12 +66,10 @@
<div class="card mb-3">
<button id="b_readonly" type="button" class="card-header text-start btn btn-link text-decoration-none" aria-expanded="false" aria-controls="g_readonly"
data-bs-toggle="collapse" data-bs-target="#g_readonly">Read-Only Config</button>
data-bs-toggle="collapse" data-bs-target="#g_readonly">只读配置</button>
<div id="g_readonly" class="card-body collapse">
<div class="small mb-3">
NOTE: These options can't be modified in the editor because they would require the server
to be restarted. To modify them, you need to set the correct environment variables when
launching the server. You can check the variable names in the tooltips of each option.
注意:这些选项不能在编辑器中修改,因为它们需要重启服务器。要修改它们,您需要在启动服务器时设置正确的环境变量。您可以在每个选项的工具提示中查看变量名称。
</div>
{{#each page_data.config}}
@ -83,17 +81,17 @@
<div class="col-sm-8">
<div class="input-group">
{{!--
Also set the database_url input as password here.
If we would set it to password in config.rs it will not be character masked for the support string.
And sometimes this is more useful for providing support than just 3 asterisk.
这里也将 database_url 输入设置为密码。
如果我们在 config.rs 中将其设置为密码,它将不会为支持字符串掩码字符。
有时这比仅显示三个星号更有用。
--}}
{{#if (eq name "database_url")}}
<input readonly class="form-control" id="input_{{name}}" type="password" value="{{value}}" {{#if default}} placeholder="Default: {{default}}" {{/if}}>
<button class="btn btn-outline-secondary" type="button" data-vw-pw-toggle="input_{{name}}">Show/hide</button>
<input readonly class="form-control" id="input_{{name}}" type="password" value="{{value}}" {{#if default}} placeholder="默认: {{default}}" {{/if}}>
<button class="btn btn-outline-secondary" type="button" data-vw-pw-toggle="input_{{name}}">显示/隐藏</button>
{{else}}
<input readonly class="form-control" id="input_{{name}}" type="{{type}}" value="{{value}}" {{#if default}} placeholder="Default: {{default}}" {{/if}} spellcheck="false">
<input readonly class="form-control" id="input_{{name}}" type="{{type}}" value="{{value}}" {{#if default}} placeholder="默认: {{default}}" {{/if}} spellcheck="false">
{{#case type "password"}}
<button class="btn btn-outline-secondary" type="button" data-vw-pw-toggle="input_{{name}}">Show/hide</button>
<button class="btn btn-outline-secondary" type="button" data-vw-pw-toggle="input_{{name}}">显示/隐藏</button>
{{/case}}
{{/if}}
</div>
@ -106,7 +104,7 @@
<input disabled class="form-check-input" type="checkbox" id="input_{{name}}"
{{#if value}} checked {{/if}}>
<label class="form-check-label" for="input_{{name}}"> Default: {{default}} </label>
<label class="form-check-label" for="input_{{name}}"> 默认: {{default}} </label>
</div>
</div>
{{/case}}
@ -121,29 +119,27 @@
{{#if page_data.can_backup}}
<div class="card mb-3">
<button id="b_database" type="button" class="card-header text-start btn btn-link text-decoration-none" aria-expanded="false" aria-controls="g_database"
data-bs-toggle="collapse" data-bs-target="#g_database">Backup Database</button>
data-bs-toggle="collapse" data-bs-target="#g_database">备份数据库</button>
<div id="g_database" class="card-body collapse">
<div class="small mb-3">
WARNING: This function only creates a backup copy of the SQLite database.
This does not include any configuration or file attachment data that may
also be needed to fully restore a vaultwarden instance. For details on
how to perform complete backups, refer to the wiki page on
<a href="https://github.com/dani-garcia/vaultwarden/wiki/Backing-up-your-vault" target="_blank" rel="noopener noreferrer">backups</a>.
警告:此功能仅创建 SQLite 数据库的备份副本。
这不包括任何配置或文件附件数据,这些数据可能也需要完全恢复 vaultwarden 实例。有关如何执行完整备份的详细信息,请参阅 wiki 页面
<a href="https://github.com/dani-garcia/vaultwarden/wiki/Backing-up-your-vault" target="_blank" rel="noopener noreferrer">备份</a>。
</div>
<button type="button" class="btn btn-primary" id="backupDatabase">Backup Database</button>
<button type="button" class="btn btn-primary" id="backupDatabase">备份数据库</button>
</div>
</div>
{{/if}}
<button type="submit" class="btn btn-primary">Save</button>
<button type="button" class="btn btn-danger float-end" id="deleteConf">Reset defaults</button>
<button type="submit" class="btn btn-primary">保存</button>
<button type="button" class="btn btn-danger float-end" id="deleteConf">重置为默认值</button>
</form>
</div>
</div>
</main>
<style>
#config-block ::placeholder {
/* Most modern browsers support this now. */
/* 大多数现代浏览器现在都支持此功能。 */
color: orangered;
}

68
src/static/templates/admin/users.hbs

@ -1,17 +1,17 @@
<main class="container-xl">
<div id="users-block" class="my-3 p-3 rounded shadow">
<h6 class="border-bottom pb-2 mb-3">Registered Users</h6>
<h6 class="border-bottom pb-2 mb-3">已注册用户</h6>
<div class="table-responsive-xl small">
<table id="users-table" class="table table-sm table-striped table-hover">
<thead>
<tr>
<th class="vw-account-details">User</th>
<th class="vw-created-at">Created at</th>
<th class="vw-last-active">Last Active</th>
<th class="vw-entries">Entries</th>
<th class="vw-attachments">Attachments</th>
<th class="vw-organizations">Organizations</th>
<th class="vw-actions">Actions</th>
<th class="vw-account-details">用户</th>
<th class="vw-created-at">创建时间</th>
<th class="vw-last-active">最后活动</th>
<th class="vw-entries">条目数</th>
<th class="vw-attachments">附件</th>
<th class="vw-organizations">组织</th>
<th class="vw-actions">操作</th>
</tr>
</thead>
<tbody>
@ -24,16 +24,16 @@
<span class="d-block">{{email}}</span>
<span class="d-block">
{{#unless user_enabled}}
<span class="badge bg-danger me-2" title="User is disabled">Disabled</span>
<span class="badge bg-danger me-2" title="用户已禁用">已禁用</span>
{{/unless}}
{{#if twoFactorEnabled}}
<span class="badge bg-success me-2" title="2FA is enabled">2FA</span>
<span class="badge bg-success me-2" title="已启用两步验证">两步验证</span>
{{/if}}
{{#case _status 1}}
<span class="badge bg-warning text-dark me-2" title="User is invited">Invited</span>
<span class="badge bg-warning text-dark me-2" title="用户已被邀请">已邀请</span>
{{/case}}
{{#if emailVerified}}
<span class="badge bg-success me-2" title="Email has been verified">Verified</span>
<span class="badge bg-success me-2" title="邮箱已验证">已验证</span>
{{/if}}
</span>
</div>
@ -48,9 +48,9 @@
<span class="d-block">{{cipher_count}}</span>
</td>
<td>
<span class="d-block"><strong>Amount:</strong> {{attachment_count}}</span>
<span class="d-block"><strong>数量:</strong> {{attachment_count}}</span>
{{#if attachment_count}}
<span class="d-block"><strong>Size:</strong> {{attachment_size}}</span>
<span class="d-block"><strong>大小:</strong> {{attachment_size}}</span>
{{/if}}
</td>
<td>
@ -63,17 +63,17 @@
<td class="text-end px-0 small">
<span data-vw-user-uuid="{{id}}" data-vw-user-email="{{email}}">
{{#if twoFactorEnabled}}
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-remove2fa>Remove all 2FA</button><br>
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-remove2fa>移除所有两步验证</button><br>
{{/if}}
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-deauth-user>Deauthorize sessions</button><br>
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-delete-user>Delete User</button><br>
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-deauth-user>取消授权会话</button><br>
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-delete-user>删除用户</button><br>
{{#if user_enabled}}
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-disable-user>Disable User</button><br>
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-disable-user>禁用用户</button><br>
{{else}}
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-enable-user>Enable User</button><br>
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-enable-user>启用用户</button><br>
{{/if}}
{{#case _status 1}}
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-resend-user-invite>Resend invite</button><br>
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-resend-user-invite>重新发送邀请</button><br>
{{/case}}
</span>
</td>
@ -85,22 +85,22 @@
<div class="mt-3 clearfix">
<button type="button" class="btn btn-sm btn-danger" id="updateRevisions"
title="Force all clients to fetch new data next time they connect. Useful after restoring a backup to remove any stale data.">
Force clients to resync
title="强制所有客户端在下次连接时获取新数据。在恢复备份后删除任何过期数据时很有用。">
强制客户端重新同步
</button>
<button type="button" class="btn btn-sm btn-primary float-end" id="reload">Reload users</button>
<button type="button" class="btn btn-sm btn-primary float-end" id="reload">刷新用户列表</button>
</div>
</div>
<div id="inviteUserFormBlock" class="align-items-center p-3 mb-3 text-white-50 bg-secondary rounded shadow">
<div>
<h6 class="mb-0 text-white">Invite User</h6>
<small>Email:</small>
<h6 class="mb-0 text-white">邀请用户</h6>
<small>邮箱:</small>
<form class="form-inline input-group w-50" id="inviteUserForm">
<input type="email" class="form-control me-2" id="inviteEmail" placeholder="Enter email" required spellcheck="false">
<button type="submit" class="btn btn-primary">Invite</button>
<input type="email" class="form-control me-2" id="inviteEmail" placeholder="请输入邮箱" required spellcheck="false">
<button type="submit" class="btn btn-primary">邀请</button>
</form>
</div>
</div>
@ -110,7 +110,7 @@
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title">
<b>Update User Type:</b><br><b>Organization:</b> <span id="userOrgTypeDialogOrgName"></span><br><b>User:</b> <span id="userOrgTypeDialogUserEmail"></span>
<b>更新用户类型:</b><br><b>组织:</b> <span id="userOrgTypeDialogOrgName"></span><br><b>用户:</b> <span id="userOrgTypeDialogUserEmail"></span>
</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
@ -119,21 +119,21 @@
<input type="hidden" name="org_uuid" id="userOrgTypeOrgUuid" value="">
<div class="modal-body">
<div class="radio">
<label><input type="radio" value="2" class="form-radio-input" name="user_type" id="userOrgTypeUser">&nbsp;User</label>
<label><input type="radio" value="2" class="form-radio-input" name="user_type" id="userOrgTypeUser">&nbsp;用户</label>
</div>
<div class="radio">
<label><input type="radio" value="3" class="form-radio-input" name="user_type" id="userOrgTypeManager">&nbsp;Manager</label>
<label><input type="radio" value="3" class="form-radio-input" name="user_type" id="userOrgTypeManager">&nbsp;管理员</label>
</div>
<div class="radio">
<label><input type="radio" value="1" class="form-radio-input" name="user_type" id="userOrgTypeAdmin">&nbsp;Admin</label>
<label><input type="radio" value="1" class="form-radio-input" name="user_type" id="userOrgTypeAdmin">&nbsp;超级管理员</label>
</div>
<div class="radio">
<label><input type="radio" value="0" class="form-radio-input" name="user_type" id="userOrgTypeOwner">&nbsp;Owner</label>
<label><input type="radio" value="0" class="form-radio-input" name="user_type" id="userOrgTypeOwner">&nbsp;所有者</label>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-sm btn-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-sm btn-primary">Change Role</button>
<button type="button" class="btn btn-sm btn-secondary" data-bs-dismiss="modal">取消</button>
<button type="submit" class="btn btn-sm btn-primary">更改角色</button>
</div>
</form>
</div>

4
src/static/templates/email/admin_reset_password.hbs

@ -1,4 +1,4 @@
Master Password Has Been Changed
主密码已被更改
<!---------------->
The master password for {{user_name}} has been changed by an administrator in your {{org_name}} organization. If you did not initiate this request, please reach out to your administrator immediately.
您在 {{org_name}} 组织中的主密码已被管理员更改。如果这不是您发起的请求,请立即联系您的管理员。
{{> email/email_footer_text }}

4
src/static/templates/email/admin_reset_password.html.hbs

@ -1,10 +1,10 @@
Master Password Has Been Changed
主密码已被更改
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
The master password for <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{user_name}}</b> has been changed by an administrator in your <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{org_name}}</b> organization. If you did not initiate this request, please reach out to your administrator immediately.
您所在的 <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{org_name}}</b> 组织的管理员已更改用户 <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{user_name}}</b> 的主密码。如果这不是您发起的请求,请立即联系您的管理员。
</td>
</tr>
</table>

6
src/static/templates/email/change_email.hbs

@ -1,6 +1,6 @@
Your Email Change
邮箱变更
<!---------------->
To finalize changing your email address enter the following code in web vault: {{token}}
要完成邮箱地址变更,请在网页保管库中输入以下验证码:{{token}}
If you did not try to change your email address, contact your administrator.
如果您没有尝试更改邮箱地址,请联系管理员。
{{> email/email_footer_text }}

6
src/static/templates/email/change_email.html.hbs

@ -1,15 +1,15 @@
Your Email Change
更改邮箱地址
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
To finalize changing your email address enter the following code in web vault: <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{token}}</b>
要完成邮箱地址更改,请在网页密码库中输入以下验证码:<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{token}}</b>
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
If you did not try to change your email address, contact your administrator.
如果您没有尝试更改邮箱地址,请联系管理员。
</td>
</tr>
</table>

8
src/static/templates/email/delete_account.hbs

@ -1,8 +1,8 @@
Delete Your Account
删除您的账户
<!---------------->
Click the link below to delete your account.
请点击以下链接删除您的账户。
Delete Your Account: {{url}}/#/verify-recover-delete?userId={{user_id}}&token={{token}}&email={{email}}
删除账户: {{url}}/#/verify-recover-delete?userId={{user_id}}&token={{token}}&email={{email}}
If you did not request this email to delete your account, you can safely ignore this email.
如果您没有请求删除账户,请忽略此邮件。
{{> email/email_footer_text }}

8
src/static/templates/email/delete_account.html.hbs

@ -1,23 +1,23 @@
Delete Your Account
删除您的账户
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
Click the link below to delete your account.
请点击下方链接删除您的账户。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
<a href="{{url}}/#/verify-recover-delete?userId={{user_id}}&token={{token}}&email={{email}}"
clicktracking=off target="_blank" style="color: #ffffff; text-decoration: none; text-align: center; cursor: pointer; display: inline-block; border-radius: 5px; background-color: #3c8dbc; border-color: #3c8dbc; border-style: solid; border-width: 10px 20px; margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
Delete Your Account
删除您的账户
</a>
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
If you did not request this email to delete your account, you can safely ignore this email.
如果您没有请求删除账户,请忽略此邮件。
</td>
</tr>
</table>

14
src/static/templates/email/email_footer.hbs

@ -1,16 +1,16 @@
</td>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table class="footer" cellpadding="0" cellspacing="0" width="100%" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; clear: both; color: #999; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px; margin: 0; width: 100%;">
<tr style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0;">
<td class="aligncenter social-icons" align="center" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #999; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px; margin: 0; padding: 5px 0 20px 0;" valign="top">
<table cellpadding="0" cellspacing="0" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0 auto;">
<tr style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0;">
<td style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #999; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px; margin: 0; padding: 0 10px;" valign="top"><a href="https://github.com/dani-garcia/vaultwarden" target="_blank" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #999; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 20px; margin: 0; text-decoration: underline;"><img src="{{img_src}}mail-github.png" alt="GitHub" width="30" height="30" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; border: none; box-sizing: border-box; color: #333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0; max-width: 100%;" /></a></td>
<table class="footer" cellpadding="0" cellspacing="0" width="100%" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; clear: both; color: #999; font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif; font-size: 12px; line-height: 20px; margin: 0; width: 100%;">
<tr style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif; font-size: 16px; line-height: 25px; margin: 0;">
<td class="aligncenter social-icons" align="center" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #999; font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif; font-size: 12px; line-height: 20px; margin: 0; padding: 5px 0 20px 0;" valign="top">
<table cellpadding="0" cellspacing="0" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif; font-size: 16px; line-height: 25px; margin: 0 auto;">
<tr style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif; font-size: 16px; line-height: 25px; margin: 0;">
<td style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #999; font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif; font-size: 12px; line-height: 20px; margin: 0; padding: 0 10px;" valign="top"><a href="https://github.com/dani-garcia/vaultwarden" target="_blank" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #999; font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif; font-size: 12px; line-height: 20px; margin: 0; text-decoration: underline;"><img src="{{img_src}}mail-github.png" alt="GitHub" width="30" height="30" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; border: none; box-sizing: border-box; color: #333; font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif; font-size: 16px; line-height: 25px; margin: 0; max-width: 100%;" /></a></td>
</tr>
</table>
</td>

3
src/static/templates/email/email_footer_text.hbs

@ -1,3 +1,2 @@
===
Github: https://github.com/dani-garcia/vaultwarden
Github 项目地址: https://github.com/dani-garcia/vaultwarden

30
src/static/templates/email/email_header.hbs

@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0;">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0;">
<head>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@ -9,7 +9,7 @@
<style type="text/css">
body {
margin: 0;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
box-sizing: border-box;
font-size: 16px;
color: #333;
@ -19,7 +19,7 @@
}
body * {
margin: 0;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
box-sizing: border-box;
font-size: 16px;
color: #333;
@ -78,17 +78,17 @@
}
}
</style>
<table class="body-wrap" cellpadding="0" cellspacing="0" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0; width: 100%;" bgcolor="#f6f6f6">
<tr style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0;">
<td valign="middle" class="aligncenter middle logo" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0; padding: 20px 0 10px;" align="center">
<img src="{{img_src}}logo-gray.png" alt="Vaultwarden" width="190" height="39" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; border: none; box-sizing: border-box; color: #333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0; max-width: 100%;" />
<table class="body-wrap" cellpadding="0" cellspacing="0" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0; width: 100%;" bgcolor="#f6f6f6">
<tr style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0;">
<td valign="middle" class="aligncenter middle logo" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0; padding: 20px 0 10px;" align="center">
<img src="{{img_src}}logo-gray.png" alt="Vaultwarden" width="190" height="39" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; border: none; box-sizing: border-box; color: #333; font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0; max-width: 100%;" />
</td>
</tr>
<tr style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0;">
<td class="container" align="center" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; clear: both !important; color: #333; display: block !important; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0 auto; max-width: 600px !important; width: 600px;" valign="top">
<table cellpadding="0" cellspacing="0" class="container-table" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; clear: both !important; color: #333; display: block !important; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0 auto; max-width: 600px !important; width: max-content;">
<tr style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0;">
<td class="content" align="center" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; display: block; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 0; line-height: 0; margin: 0 auto; max-width: 600px; padding-bottom: 20px;" valign="top">
<table class="main" width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; margin: 0; -webkit-text-size-adjust: none; border: 1px solid #e9e9e9; border-radius: 3px;" bgcolor="white">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-wrap" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 20px; -webkit-text-size-adjust: none;" valign="top">
<tr style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0;">
<td class="container" align="center" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; clear: both !important; color: #333; display: block !important; font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0 auto; max-width: 600px !important; width: 600px;" valign="top">
<table cellpadding="0" cellspacing="0" class="container-table" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; clear: both !important; color: #333; display: block !important; font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0 auto; max-width: 600px !important; width: max-content;">
<tr style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25px; margin: 0;">
<td class="content" align="center" style="-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; box-sizing: border-box; color: #333; display: block; font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 0; line-height: 0; margin: 0 auto; max-width: 600px; padding-bottom: 20px;" valign="top">
<table class="main" width="100%" cellpadding="0" cellspacing="0" style="font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; margin: 0; -webkit-text-size-adjust: none; border: 1px solid #e9e9e9; border-radius: 3px;" bgcolor="white">
<tr style="margin: 0; font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-wrap" style="font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 20px; -webkit-text-size-adjust: none;" valign="top">

8
src/static/templates/email/emergency_access_invite_accepted.hbs

@ -1,8 +1,8 @@
Emergency access contact {{{grantee_email}}} accepted
紧急访问联系人 {{{grantee_email}}} 已接受
<!---------------->
This email is to notify you that {{grantee_email}} has accepted your invitation to become an emergency access contact.
此邮件用于通知您,{{grantee_email}} 已接受您发出的成为紧急访问联系人的邀请。
To confirm this user, log into the web vault ({{url}}), go to settings and confirm the user.
要确认此用户,请登录网页密码库 ({{url}}),进入设置页面并确认该用户。
If you do not wish to confirm this user, you can also remove them on the same page.
如果您不希望确认此用户,也可以在同一页面中将其移除。
{{> email/email_footer_text }}

8
src/static/templates/email/emergency_access_invite_accepted.html.hbs

@ -1,20 +1,20 @@
Emergency access contact {{{grantee_email}}} accepted
紧急访问联系人 {{{grantee_email}}} 已接受
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
This email is to notify you that {{grantee_email}} has accepted your invitation to become an emergency access contact.
此邮件通知您,{{grantee_email}} 已接受您发出的紧急访问联系人邀请。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
To confirm this user, log into the <a href="{{url}}/">web vault</a>, go to settings and confirm the user.
要确认此用户,请登录<a href="{{url}}/">网页密码库</a>,进入设置页面并确认该用户。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none;" valign="top">
If you do not wish to confirm this user, you can also remove them on the same page.
如果您不想确认此用户,也可以在同一页面中将其移除。
</td>
</tr>
</table>

6
src/static/templates/email/emergency_access_invite_confirmed.hbs

@ -1,6 +1,6 @@
Emergency access contact for {{{grantor_name}}} confirmed
{{{grantor_name}}} 的紧急访问联系人已确认
<!---------------->
This email is to notify you that you have been confirmed as an emergency access contact for *{{grantor_name}}*.
此邮件通知您已被确认为 *{{grantor_name}}* 的紧急访问联系人。
You can now initiate emergency access requests from the web vault ({{url}}).
您现在可以从网页密码库 ({{url}}) 发起紧急访问请求。
{{> email/email_footer_text }}

6
src/static/templates/email/emergency_access_invite_confirmed.html.hbs

@ -1,15 +1,15 @@
Emergency access contact for {{{grantor_name}}} confirmed
{{{grantor_name}}} 的紧急访问联系人已确认
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
This email is to notify you that you have been confirmed as an emergency access contact for <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantor_name}}</b>.
此邮件是通知您已被确认为 <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantor_name}}</b> 的紧急访问联系人。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none;" valign="top">
You can now initiate emergency access requests from the <a href="{{url}}/">web vault</a>.
您现在可以从<a href="{{url}}/">网页保管库</a>发起紧急访问请求。
</td>
</tr>
</table>

4
src/static/templates/email/emergency_access_recovery_approved.hbs

@ -1,4 +1,4 @@
Emergency access request for {{{grantor_name}}} approved
{{{grantor_name}}} 的紧急访问请求已批准
<!---------------->
{{grantor_name}} has approved your emergency access request. You may now login on the web vault ({{url}}) and access their account.
{{grantor_name}} 已批准了您的紧急访问请求。您现在可以登录网页保管库 ({{url}}) 并访问他们的账户。
{{> email/email_footer_text }}

4
src/static/templates/email/emergency_access_recovery_approved.html.hbs

@ -1,10 +1,10 @@
Emergency access request for {{{grantor_name}}} approved
{{{grantor_name}}} 的紧急访问请求已批准
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantor_name}}</b> has approved your emergency access request. You may now login on the <a href="{{url}}/">web vault</a> and access their account.
<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantor_name}}</b> 已批准了您的紧急访问请求。您现在可以登录<a href="{{url}}/">网页保管库</a>访问他们的账户。
</td>
</tr>
</table>

6
src/static/templates/email/emergency_access_recovery_initiated.hbs

@ -1,6 +1,6 @@
Emergency access request by {{{grantee_name}}} initiated
{{{grantee_name}}} 发起的紧急访问请求
<!---------------->
{{grantee_name}} has initiated an emergency access request to {{atype}} your account. You may login on the web vault ({{url}}) and manually approve or reject this request.
{{grantee_name}} 已发起一个{{atype}}您账户的紧急访问请求。您可以登录网页密码库 ({{url}}) 手动批准或拒绝此请求。
If you do nothing, the request will automatically be approved after {{wait_time_days}} day(s).
如果您不采取任何操作,该请求将在 {{wait_time_days}} 天后自动批准。
{{> email/email_footer_text }}

6
src/static/templates/email/emergency_access_recovery_initiated.html.hbs

@ -1,15 +1,15 @@
Emergency access request by {{{grantee_name}}} initiated
{{{grantee_name}}} 发起的紧急访问请求
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantee_name}}</b> has initiated an emergency access request to <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{atype}}</b> your account. You may login on the <a href="{{url}}/">web vault</a> and manually approve or reject this request.
<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantee_name}}</b> 已发起紧急访问请求以<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{atype}}</b>您的账户。您可以登录<a href="{{url}}/">网页密码库</a>手动批准或拒绝此请求。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none;" valign="top">
If you do nothing, the request will automatically be approved after <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{wait_time_days}}</b> day(s).
如果您不采取任何操作,该请求将在 <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{wait_time_days}}</b> 天后自动批准。
</td>
</tr>
</table>

4
src/static/templates/email/emergency_access_recovery_rejected.hbs

@ -1,4 +1,4 @@
Emergency access request to {{{grantor_name}}} rejected
紧急访问 {{{grantor_name}}} 的请求已被拒绝
<!---------------->
{{grantor_name}} has rejected your emergency access request.
{{grantor_name}} 已拒绝了您的紧急访问请求。
{{> email/email_footer_text }}

4
src/static/templates/email/emergency_access_recovery_rejected.html.hbs

@ -1,10 +1,10 @@
Emergency access request to {{{grantor_name}}} rejected
{{{grantor_name}}} 拒绝了紧急访问请求
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantor_name}}</b> has rejected your emergency access request.
<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantor_name}}</b> 已拒绝了您的紧急访问请求。
</td>
</tr>
</table>

6
src/static/templates/email/emergency_access_recovery_reminder.hbs

@ -1,6 +1,6 @@
Emergency access request by {{{grantee_name}}} is pending
来自 {{{grantee_name}}} 的紧急访问请求正在等待处理
<!---------------->
{{grantee_name}} has a pending emergency access request to {{atype}} your account. You may login on the web vault ({{url}}) and manually approve or reject this request.
{{grantee_name}} 发起了一个待处理的紧急访问请求,用于{{atype}}您的账户。您可以登录网页密码库 ({{url}}) 手动批准或拒绝此请求。
If you do nothing, the request will automatically be approved after {{days_left}} day(s).
如果您不采取任何操作,该请求将在 {{days_left}} 天后自动批准。
{{> email/email_footer_text }}

6
src/static/templates/email/emergency_access_recovery_reminder.html.hbs

@ -1,15 +1,15 @@
Emergency access request by {{{grantee_name}}} is pending
来自 {{{grantee_name}}} 的紧急访问请求待处理
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantee_name}}</b> has a pending emergency access request to <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{atype}}</b> your account. You may login on the <a href="{{url}}/">web vault</a> and manually approve or reject this request.
<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantee_name}}</b> 发起了一个待处理的紧急访问请求,请求<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{atype}}</b>您的账户。您可以登录<a href="{{url}}/">网页密码库</a>手动批准或拒绝此请求。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none;" valign="top">
If you do nothing, the request will automatically be approved after <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{days_left}}</b> day(s).
如果您不采取任何操作,该请求将在 <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{days_left}}</b> 天后自动批准。
</td>
</tr>
</table>

4
src/static/templates/email/emergency_access_recovery_timed_out.hbs

@ -1,4 +1,4 @@
Emergency access request by {{{grantee_name}}} granted
{{{grantee_name}}} 的紧急访问请求已通过
<!---------------->
{{grantee_name}} has been granted emergency access to {{atype}} your account. You may login on the web vault ({{url}}) and manually revoke this request.
{{{grantee_name}}} 已被授予{{atype}}您账户的紧急访问权限。您可以登录网页保管库 ({{url}}) 手动撤销此请求。
{{> email/email_footer_text }}

4
src/static/templates/email/emergency_access_recovery_timed_out.html.hbs

@ -1,10 +1,10 @@
Emergency access request by {{{grantee_name}}} granted
{{{grantee_name}}} 的紧急访问请求已获准
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantee_name}}</b> has been granted emergency access to <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{atype}}</b> your account. You may login on the <a href="{{url}}/">web vault</a> and manually revoke this request.
已授予 <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantee_name}}</b> 对您账户的<b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{atype}}</b>紧急访问权限。您可以登录<a href="{{url}}/">网页保管库</a>手动撤销此请求。
</td>
</tr>
</table>

14
src/static/templates/email/incomplete_2fa_login.hbs

@ -1,11 +1,11 @@
Incomplete Two-Step Login From {{{device_name}}}
来自 {{{device_name}}} 的未完成两步登录
<!---------------->
Someone attempted to log into your account with the correct master password, but did not provide the correct token or action required to complete the two-step login process within {{time_limit}} minutes of the initial login attempt.
有人使用正确的主密码尝试登录您的账户,但在首次登录尝试后的 {{time_limit}} 分钟内未能提供正确的令牌或完成所需的两步登录操作。
* Date: {{datetime}}
* IP Address: {{ip}}
* Device Name: {{device_name}}
* Device Type: {{device_type}}
* 日期:{{datetime}}
* IP 地址:{{ip}}
* 设备名称:{{device_name}}
* 设备类型:{{device_type}}
If this was not you or someone you authorized, then you should change your master password as soon as possible, as it is likely to be compromised.
如果这不是您本人或您授权的人的操作,那么您应该尽快更改主密码,因为它可能已经泄露。
{{> email/email_footer_text }}

14
src/static/templates/email/incomplete_2fa_login.html.hbs

@ -1,35 +1,35 @@
Incomplete Two-Step Login From {{{device_name}}}
来自 {{{device_name}}} 的未完成两步登录
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
Someone attempted to log into your account with the correct master password, but did not provide the correct token or action required to complete the two-step login process within {{time_limit}} minutes of the initial login attempt.
有人使用正确的主密码尝试登录您的账户,但在初次登录尝试后的 {{time_limit}} 分钟内未能提供正确的令牌或完成所需的两步登录验证操作。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b>Date</b>: {{datetime}}
<b>日期</b>:{{datetime}}
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b>IP Address:</b> {{ip}}
<b>IP 地址:</b> {{ip}}
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b>Device Name:</b> {{device_name}}
<b>设备名称:</b> {{device_name}}
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b>Device Type:</b> {{device_type}}
<b>设备类型:</b> {{device_type}}
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none;" valign="top">
If this was not you or someone you authorized, then you should change your master password as soon as possible, as it is likely to be compromised.
如果这不是您本人或您授权的人的操作,那么您应该尽快更改主密码,因为它可能已经泄露。
</td>
</tr>
</table>

6
src/static/templates/email/invite_accepted.hbs

@ -1,5 +1,5 @@
Invitation to {{{org_name}}} accepted
已接受加入 {{{org_name}}} 的邀请
<!---------------->
This email is to notify you that {{email}} has accepted your invitation to join {{org_name}}.
Please log in via {{url}} to the vaultwarden server and confirm them from the organization management page.
此邮件通知您,{{email}} 已接受加入 {{org_name}} 的邀请。
请通过 {{url}} 登录 vaultwarden 服务器,并在组织管理页面进行确认。
{{> email/email_footer_text }}

8
src/static/templates/email/invite_accepted.html.hbs

@ -1,20 +1,20 @@
Invitation to {{{org_name}}} accepted
已接受加入 {{{org_name}}} 的邀请
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
This email is to notify you that {{email}} has accepted your invitation to join <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{org_name}}</b>.
此邮件用于通知您 {{email}} 已接受加入 <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{org_name}}</b> 的邀请。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
Please <a href="{{url}}/">log in</a> to the vaultwarden server and confirm them from the organization management page.
<a href="{{url}}/">登录</a>到 Vaultwarden 服务器,并在组织管理页面确认该用户。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none;" valign="top">
If you do not wish to confirm this user, you can also remove them from the organization on the same page.
如果您不希望确认该用户,也可以在同一页面将其从组织中移除。
</td>
</tr>
</table>

6
src/static/templates/email/invite_confirmed.hbs

@ -1,5 +1,5 @@
Invitation to {{{org_name}}} confirmed
确认加入 {{{org_name}}}
<!---------------->
This email is to notify you that you have been confirmed as a user of {{org_name}}.
Any collections and logins being shared with you by this organization will now appear in your Vaultwarden vault at {{url}}.
此邮件是通知您已被确认为 {{org_name}} 的用户。
该组织与您共享的任何集合和登录信息现在都会出现在您位于 {{url}} 的 Vaultwarden 密码库中。
{{> email/email_footer_text }}

8
src/static/templates/email/invite_confirmed.html.hbs

@ -1,16 +1,16 @@
Invitation to {{{org_name}}} confirmed
邀请加入 {{{org_name}}} 已确认
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
This email is to notify you that you have been confirmed as a user of <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{org_name}}</b>.
此邮件通知您已被确认为 <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{org_name}}</b> 的用户。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none;" valign="top">
Any collections and logins being shared with you by this organization will now appear in your Vaultwarden vault. <br>
<a href="{{url}}/">Log in</a>
此组织与您共享的所有集合和登录信息现在将显示在您的 Vaultwarden 保险库中。<br>
<a href="{{url}}/">登录</a>
</td>
</tr>
</table>

14
src/static/templates/email/new_device_logged_in.hbs

@ -1,11 +1,11 @@
New Device Logged In From {{{device_name}}}
新设备登录自 {{{device_name}}}
<!---------------->
Your account was just logged into from a new device.
您的账户刚刚从一个新设备登录。
* Date: {{datetime}}
* IP Address: {{ip}}
* Device Name: {{device_name}}
* Device Type: {{device_type}}
* 日期: {{datetime}}
* IP 地址: {{ip}}
* 设备名称: {{device_name}}
* 设备类型: {{device_type}}
You can deauthorize all devices that have access to your account from the web vault ( {{url}} ) under Settings > My Account > Deauthorize Sessions.
您可以在网页保险库 ( {{url}} ) 的设置 > 我的账户 > 取消授权会话中取消所有设备的访问权限。
{{> email/email_footer_text }}

14
src/static/templates/email/new_device_logged_in.html.hbs

@ -1,35 +1,35 @@
New Device Logged In From {{{device_name}}}
新设备登录自 {{{device_name}}}
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
Your account was just logged into from a new device.
您的账户刚刚从一个新设备登录。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b>Date:</b> {{datetime}}
<b>日期:</b> {{datetime}}
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b>IP Address:</b> {{ip}}
<b>IP 地址:</b> {{ip}}
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b>Device Name:</b> {{device_name}}
<b>设备名称:</b> {{device_name}}
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
<b>Device Type:</b> {{device_type}}
<b>设备类型:</b> {{device_type}}
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none;" valign="top">
You can deauthorize all devices that have access to your account from the <a href="{{url}}/">web vault</a> under Settings > My Account > Deauthorize Sessions.
您可以从 <a href="{{url}}/">网页保险库</a> 的设置 > 我的账户 > 取消授权会话中取消所有设备对您账户的访问权限。
</td>
</tr>
</table>

6
src/static/templates/email/protected_action.hbs

@ -1,6 +1,6 @@
Your Vaultwarden Verification Code
您的 Vaultwarden 验证码
<!---------------->
Your email verification code is: {{token}}
您的邮箱验证码是: {{token}}
Use this code to complete the protected action in Vaultwarden.
使用此验证码完成 Vaultwarden 中的保护操作。
{{> email/email_footer_text }}

6
src/static/templates/email/protected_action.html.hbs

@ -1,15 +1,15 @@
Your Vaultwarden Verification Code
您的 Vaultwarden 验证码
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
Your email verification code is: <b>{{token}}</b>
您的邮箱验证码是:<b>{{token}}</b>
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
Use this code to complete the protected action in Vaultwarden.
使用此代码完成 Vaultwarden 中的受保护操作。
</td>
</tr>
</table>

8
src/static/templates/email/pw_hint_none.hbs

@ -1,8 +1,8 @@
Your master password hint
您的主密码提示
<!---------------->
You (or someone) recently requested your master password hint. Unfortunately, your account does not have a master password hint.
您(或某人)最近请求了您的主密码提示。不幸的是,您的账户没有设置主密码提示。
If you cannot remember your master password, there is no way to recover your data. The only option to gain access to your account again is to delete the account ( {{url}}/#/recover-delete ) so that you can register again and start over. All data associated with your account will be deleted.
如果您无法记住您的主密码,则无法恢复您的数据。重新访问您的账户的唯一选项是删除账户( {{url}}/#/recover-delete ),以便您可以重新注册并重新开始。与您的账户关联的所有数据都将被删除。
If you did not request your master password hint you can safely ignore this email.
如果您没有请求您的主密码提示,您可以忽略此邮件。
{{> email/email_footer_text }}

8
src/static/templates/email/pw_hint_none.html.hbs

@ -1,20 +1,20 @@
Sorry, you have no password hint...
抱歉,您没有设置密码提示...
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
You (or someone) recently requested your master password hint. Unfortunately, your account does not have a master password hint. <br style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;" />
您(或其他人)最近请求获取主密码提示。很遗憾,您的账户没有设置主密码提示。<br style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;" />
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none;" valign="top">
If you cannot remember your master password, there is no way to recover your data. The only option to gain access to your account again is to <a href="{{url}}/#/recover-delete">delete the account</a> so that you can register again and start over. All data associated with your account will be deleted.
如果您无法记住主密码,将无法恢复您的数据。重新访问账户的唯一方式是<a href="{{url}}/#/recover-delete">删除账户</a>,然后重新注册并重新开始。您账户相关的所有数据都将被删除。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none;" valign="top">
If you did not request your master password hint you can safely ignore this email.
如果您没有请求主密码提示,请忽略此邮件。
</td>
</tr>
</table>

12
src/static/templates/email/pw_hint_some.hbs

@ -1,11 +1,11 @@
Your master password hint
主密码提示
<!---------------->
You (or someone) recently requested your master password hint.
您(或其他人)最近请求了您的主密码提示。
Your hint is: *{{hint}}*
Log in to the web vault: {{url}}
您的提示是:*{{hint}}*
登录网页保管库:{{url}}
If you cannot remember your master password, there is no way to recover your data. The only option to gain access to your account again is to delete the account ( {{url}}/#/recover-delete ) so that you can register again and start over. All data associated with your account will be deleted.
如果您无法记住主密码,将无法恢复您的数据。重新访问您的账户的唯一选项是删除账户({{url}}/#/recover-delete),这样您可以重新注册并重新开始。与您账户关联的所有数据都将被删除。
If you did not request your master password hint you can safely ignore this email.
如果您没有请求主密码提示,您可以安全地忽略此邮件。
{{> email/email_footer_text }}

12
src/static/templates/email/pw_hint_some.html.hbs

@ -1,26 +1,26 @@
Your master password hint
主密码提示
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
You (or someone) recently requested your master password hint.
您(或其他人)最近请求获取您的主密码提示。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
Your hint is: "{{hint}}"<br style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;" />
Log in: <a href="{{url}}/">Web Vault</a>
您的提示是:"{{hint}}"<br style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;" />
登录: <a href="{{url}}/">网页密码库</a>
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none;" valign="top">
If you cannot remember your master password, there is no way to recover your data. The only option to gain access to your account again is to <a href="{{url}}/#/recover-delete">delete the account</a> so that you can register again and start over. All data associated with your account will be deleted.
如果您无法记住主密码,将无法恢复您的数据。重新访问您账户的唯一选择是<a href="{{url}}/#/recover-delete">删除账户</a>,这样您可以重新注册并重新开始。与您账户相关的所有数据都将被删除。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none;" valign="top">
If you did not request your master password hint you can safely ignore this email.
如果您没有请求获取主密码提示,可以安全地忽略此邮件。
</td>
</tr>
</table>

8
src/static/templates/email/register_verify_email.hbs

@ -1,8 +1,8 @@
Verify Your Email
验证您的电子邮箱
<!---------------->
Verify this email address to finish creating your account by clicking the link below.
请点击以下链接验证此电子邮箱地址,以完成账号创建。
Verify Email Address Now: {{{url}}}
立即验证电子邮箱:{{{url}}}
If you did not request to verify your account, you can safely ignore this email.
如果您没有请求验证账号,可以安全地忽略此邮件。
{{> email/email_footer_text }}

8
src/static/templates/email/register_verify_email.html.hbs

@ -1,23 +1,23 @@
Verify Your Email
验证您的邮箱
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
Verify this email address to finish creating your account by clicking the link below.
请点击下方链接验证此电子邮箱地址以完成账号创建。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
<a href="{{{url}}}"
clicktracking=off target="_blank" style="color: #ffffff; text-decoration: none; text-align: center; cursor: pointer; display: inline-block; border-radius: 5px; background-color: #3c8dbc; border-color: #3c8dbc; border-style: solid; border-width: 10px 20px; margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
Verify Email Address Now
立即验证邮箱地址
</a>
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
If you did not request to verify your account, you can safely ignore this email.
如果您没有请求验证账号,可以安全地忽略此邮件。
</td>
</tr>
</table>

6
src/static/templates/email/send_2fa_removed_from_org.hbs

@ -1,7 +1,7 @@
Removed from {{{org_name}}}
已从 {{{org_name}}} 移除
<!---------------->
You have been removed from organization *{{org_name}}* because your account does not have Two-step Login enabled.
由于您的账户未启用双重认证,您已被从组织 *{{org_name}}* 移除。
You can enable Two-step Login in your account settings.
您可以在账户设置中启用双重认证。
{{> email/email_footer_text }}

6
src/static/templates/email/send_2fa_removed_from_org.html.hbs

@ -1,15 +1,15 @@
Removed from {{{org_name}}}
已从 {{{org_name}}} 中移除
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
You have been removed from organization <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{org_name}}</b> because your account does not have Two-step Login enabled.
由于您的账户未启用两步登录,您已被从组织 <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{org_name}}</b> 中移除。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
You can enable Two-step Login in your account settings.
您可以在账户设置中启用两步登录。
</td>
</tr>
</table>

8
src/static/templates/email/send_emergency_access_invite.hbs

@ -1,8 +1,8 @@
Emergency access for {{{grantor_name}}}
{{{grantor_name}}} 的紧急访问邀请
<!---------------->
You have been invited to become an emergency contact for {{grantor_name}}. To accept this invite, click the following link:
您已被邀请成为 {{grantor_name}} 的紧急联系人。要接受此邀请,请点击以下链接:
Click here to join: {{{url}}}
点击此处加入:{{{url}}}
If you do not wish to become an emergency contact for {{grantor_name}}, you can safely ignore this email.
如果您不想成为 {{grantor_name}} 的紧急联系人,可以直接忽略此邮件。
{{> email/email_footer_text }}

8
src/static/templates/email/send_emergency_access_invite.html.hbs

@ -1,23 +1,23 @@
Emergency access for {{{grantor_name}}}
{{{grantor_name}}} 的紧急访问邀请
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
You have been invited to become an emergency contact for <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantor_name}}</b>.
您被邀请成为 <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{grantor_name}}</b> 的紧急联系人。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
<a href="{{{url}}}"
clicktracking=off target="_blank" style="color: #ffffff; text-decoration: none; text-align: center; cursor: pointer; display: inline-block; border-radius: 5px; background-color: #3c8dbc; border-color: #3c8dbc; border-style: solid; border-width: 10px 20px; margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
Become emergency contact
成为紧急联系人
</a>
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
If you do not wish to become an emergency contact for {{grantor_name}}, you can safely ignore this email.
如果您不想成为 {{grantor_name}} 的紧急联系人,可以安全地忽略此邮件。
</td>
</tr>
</table>

8
src/static/templates/email/send_org_invite.hbs

@ -1,10 +1,10 @@
Join {{{org_name}}}
加入 {{{org_name}}}
<!---------------->
You have been invited to join the *{{org_name}}* organization.
您被邀请加入 *{{org_name}}* 组织。
Click here to join: {{{url}}}
点击此处加入:{{{url}}}
If you do not wish to join this organization, you can safely ignore this email.
如果您不希望加入该组织,可以安全地忽略此邮件。
{{> email/email_footer_text }}

8
src/static/templates/email/send_org_invite.html.hbs

@ -1,23 +1,23 @@
Join {{{org_name}}}
加入 {{{org_name}}}
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
You have been invited to join the <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{org_name}}</b> organization.
您被邀请加入 <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{org_name}}</b> 组织。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
<a href="{{{url}}}"
clicktracking=off target="_blank" style="color: #ffffff; text-decoration: none; text-align: center; cursor: pointer; display: inline-block; border-radius: 5px; background-color: #3c8dbc; border-color: #3c8dbc; border-style: solid; border-width: 10px 20px; margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
Join Organization Now
立即加入组织
</a>
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
If you do not wish to join this organization, you can safely ignore this email.
如果您不想加入该组织,可以安全地忽略此邮件。
</td>
</tr>
</table>

4
src/static/templates/email/send_single_org_removed_from_org.hbs

@ -1,4 +1,4 @@
You have been removed from {{{org_name}}}
您已被从 {{{org_name}}} 移除
<!---------------->
Your user account has been removed from the *{{org_name}}* organization because you are a part of another organization. The {{org_name}} organization has enabled a policy that prevents users from being a part of multiple organizations. Before you can re-join this organization you need to leave all other organizations or join with a different account.
由于您已加入其他组织,您的用户账户已从 *{{org_name}}* 组织中移除。{{org_name}} 组织启用了禁止用户加入多个组织的政策。在您能重新加入此组织之前,您需要退出所有其他组织或使用其他账户加入。
{{> email/email_footer_text }}

4
src/static/templates/email/send_single_org_removed_from_org.html.hbs

@ -1,10 +1,10 @@
You have been removed from {{{org_name}}}
您已被移出 {{{org_name}}}
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
Your user account has been removed from the <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{org_name}}</b> organization because you are a part of another organization. The {{org_name}} organization has enabled a policy that prevents users from being a part of multiple organizations. Before you can re-join this organization you need to leave all other organizations or join with a different account.
由于您已经加入了其他组织,您的用户账号已被移出 <b style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">{{org_name}}</b> 组织。{{org_name}} 组织启用了禁止用户加入多个组织的策略。在您可以重新加入此组织之前,您需要退出所有其他组织,或使用其他账号加入。
</td>
</tr>
</table>

6
src/static/templates/email/smtp_test.hbs

@ -1,6 +1,6 @@
Vaultwarden SMTP Test
Vaultwarden SMTP 测试
<!---------------->
This is a test email to verify the SMTP configuration for {{url}}.
这是一封用于验证 {{url}} 的 SMTP 配置的测试邮件。
When you can read this email it is probably configured correctly.
如果您能看到这封邮件,说明配置可能已经正确。
{{> email/email_footer_text }}

6
src/static/templates/email/smtp_test.html.hbs

@ -1,15 +1,15 @@
Vaultwarden SMTP Test
Vaultwarden SMTP 测试
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
This is a test email to verify the SMTP configuration for <a href="{{url}}">{{url}}</a>.
这是一封用于验证 SMTP 配置的测试邮件,配置地址为 <a href="{{url}}">{{url}}</a>
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
When you can read this email it is probably configured correctly.
如果您能看到这封邮件,说明配置可能已经正确完成。
</td>
</tr>
</table>

6
src/static/templates/email/twofactor_email.hbs

@ -1,6 +1,6 @@
Vaultwarden Login Verification Code
Vaultwarden 登录验证码
<!---------------->
Your two-step verification code is: {{token}}
您的两步验证码是:{{token}}
Use this code to complete logging in with Vaultwarden.
请使用此验证码完成 Vaultwarden 的登录。
{{> email/email_footer_text }}

6
src/static/templates/email/twofactor_email.html.hbs

@ -1,15 +1,15 @@
Vaultwarden Login Verification Code
Vaultwarden 登录验证码
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
Your two-step verification code is: <b>{{token}}</b>
您的两步验证码是:<b>{{token}}</b>
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none;" valign="top">
Use this code to complete logging in with Vaultwarden.
请使用此验证码完成 Vaultwarden 的登录。
</td>
</tr>
</table>

8
src/static/templates/email/verify_email.hbs

@ -1,8 +1,8 @@
Verify Your Email
验证您的电子邮箱
<!---------------->
Verify this email address for your account by clicking the link below.
请点击下方链接验证您账户的电子邮箱地址。
Verify Email Address Now: {{url}}/#/verify-email/?userId={{user_id}}&token={{token}}
立即验证电子邮箱: {{url}}/#/verify-email/?userId={{user_id}}&token={{token}}
If you did not request to verify your account, you can safely ignore this email.
如果您没有请求验证账户,可以安全地忽略此邮件。
{{> email/email_footer_text }}

8
src/static/templates/email/verify_email.html.hbs

@ -1,23 +1,23 @@
Verify Your Email
验证您的电子邮箱
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
Verify this email address for your account by clicking the link below.
请点击下方链接验证您的电子邮箱地址。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
<a href="{{url}}/#/verify-email/?userId={{user_id}}&token={{token}}"
clicktracking=off target="_blank" style="color: #ffffff; text-decoration: none; text-align: center; cursor: pointer; display: inline-block; border-radius: 5px; background-color: #3c8dbc; border-color: #3c8dbc; border-style: solid; border-width: 10px 20px; margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
Verify Email Address Now
立即验证邮箱地址
</a>
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
If you did not request to verify your account, you can safely ignore this email.
如果您没有请求验证账户,可以安全地忽略此邮件。
</td>
</tr>
</table>

6
src/static/templates/email/welcome.hbs

@ -1,6 +1,6 @@
Welcome
欢迎
<!---------------->
Thank you for creating an account at {{url}}. You may now log in with your new account.
感谢您在 {{url}} 创建账户。您现在可以使用新账户登录了。
If you did not request to create an account, you can safely ignore this email.
如果您没有请求创建账户,请忽略此邮件。
{{> email/email_footer_text }}

6
src/static/templates/email/welcome.html.hbs

@ -1,15 +1,15 @@
Welcome
欢迎
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
Thank you for creating an account at <a href="{{url}}/">{{url}}</a>. You may now log in with your new account.
感谢您在 <a href="{{url}}/">{{url}}</a> 创建账户。您现在可以使用新账户登录了。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
If you did not request to create an account, you can safely ignore this email.
如果您没有请求创建账户,请忽略此邮件。
</td>
</tr>
</table>

8
src/static/templates/email/welcome_must_verify.hbs

@ -1,8 +1,8 @@
Welcome
欢迎
<!---------------->
Thank you for creating an account at {{url}}. Before you can login with your new account, you must verify this email address by clicking the link below.
感谢您在 {{url}} 创建账户。在使用新账户登录之前,您必须点击下方链接验证此电子邮件地址。
Verify Email Address Now: {{url}}/#/verify-email/?userId={{user_id}}&token={{token}}
立即验证电子邮件: {{url}}/#/verify-email/?userId={{user_id}}&token={{token}}
If you did not request to create an account, you can safely ignore this email.
如果您没有请求创建账户,可以安全地忽略此邮件。
{{> email/email_footer_text }}

8
src/static/templates/email/welcome_must_verify.html.hbs

@ -1,23 +1,23 @@
Welcome
欢迎
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
Thank you for creating an account at <a href="{{url}}/">{{url}}</a>. Before you can login with your new account, you must verify this email address by clicking the link below.
感谢您在 <a href="{{url}}/">{{url}}</a> 创建账户。在登录新账户之前,您需要点击下方链接验证此电子邮件地址。
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
<a href="{{url}}/#/verify-email/?userId={{user_id}}&token={{token}}"
clicktracking=off target="_blank" style="color: #ffffff; text-decoration: none; text-align: center; cursor: pointer; display: inline-block; border-radius: 5px; background-color: #3c8dbc; border-color: #3c8dbc; border-style: solid; border-width: 10px 20px; margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
Verify Email Address Now
立即验证电子邮件地址
</a>
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
If you did not request to create an account, you can safely ignore this email.
如果您没有请求创建账户,可以安全地忽略此电子邮件。
</td>
</tr>
</table>

32
src/static/templates/scss/user.vaultwarden.scss.hbs

@ -1 +1,33 @@
/* See the wiki for examples and details: https://github.com/dani-garcia/vaultwarden/wiki/Customize-Vaultwarden-CSS */
/* 设置中文字体 */
:lang(zh-CN) {
font-family: -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
"Helvetica Neue", Arial, sans-serif;
}
/* 界面文本本地化 */
.text-main:lang(zh-CN)::before {
content: "密码库";
}
.text-generator:lang(zh-CN)::before {
content: "密码生成器";
}
.text-settings:lang(zh-CN)::before {
content: "设置";
}
.text-help:lang(zh-CN)::before {
content: "帮助";
}
/* 登录界面文本 */
.login-title:lang(zh-CN)::before {
content: "登录";
}
.login-button:lang(zh-CN)::before {
content: "登录到账户";
}

63
src/static/templates/scss/vaultwarden.scss.hbs

@ -1,84 +1,84 @@
/**** START Static Vaultwarden changes ****/
/* This combines all selectors extending it into one */
/**** 开始 静态 Vaultwarden 更改 ****/
/* 这将所有继承它的选择器组合成一个 */
%vw-hide {
display: none !important;
}
/* This allows searching for the combined style in the browsers dev-tools (look into the head tag) */
/* 这允许在浏览器开发工具中搜索组合样式(查看 head 标签) */
.vw-hide,
head {
@extend %vw-hide;
}
/* Hide the Subscription Page tab */
/* 隐藏订阅页面标签 */
bit-nav-item[route="settings/subscription"] {
@extend %vw-hide;
}
/* Hide any link pointing to Free Bitwarden Families */
/* 隐藏指向免费 Bitwarden 家庭的任何链接 */
a[href$="/settings/sponsored-families"] {
@extend %vw-hide;
}
/* Hide the `Enterprise Single Sign-On` button on the login page */
/* 隐藏登录页面上的 `企业单点登录` 按钮 */
a[routerlink="/sso"] {
@extend %vw-hide;
}
/* Hide Two-Factor menu in Organization settings */
/* 隐藏组织设置中的双因素菜单 */
bit-nav-item[route="settings/two-factor"],
a[href$="/settings/two-factor"] {
@extend %vw-hide;
}
/* Hide Business Owned checkbox */
/* 隐藏业务拥有的复选框 */
app-org-info > form:nth-child(1) > div:nth-child(3) {
@extend %vw-hide;
}
/* Hide the `This account is owned by a business` checkbox and label */
/* 隐藏 `此账户由企业拥有` 复选框和标签 */
#ownedBusiness,
label[for^="ownedBusiness"] {
@extend %vw-hide;
}
/* Hide Business Name */
/* 隐藏业务名称 */
app-org-account form div bit-form-field.tw-block:nth-child(3) {
@extend %vw-hide;
}
/* Hide organization plans */
/* 隐藏组织计划 */
app-organization-plans > form > bit-section:nth-child(2) {
@extend %vw-hide;
}
/* Hide Collection Management Form */
/* 隐藏集合管理表单 */
app-org-account form.ng-untouched:nth-child(6) {
@extend %vw-hide;
}
/* Hide 'Member Access' Report Card from Org Reports */
/* 隐藏组织报告中的 `成员访问` 报告卡 */
app-org-reports-home > app-report-list > div.tw-inline-grid > div:nth-child(6) {
@extend %vw-hide;
}
/* Hide Device Verification form at the Two Step Login screen */
/* 隐藏两步登录屏幕上的设备验证表单 */
app-security > app-two-factor-setup > form {
@extend %vw-hide;
}
/* Hide unsupported Custom Role options */
/* 隐藏不支持的自定义角色选项 */
bit-dialog div.tw-ml-4:has(bit-form-control input),
bit-dialog div.tw-col-span-4:has(input[formcontrolname*="access"], input[formcontrolname*="manage"]) {
@extend %vw-hide;
}
/* Hide Log in with passkey */
/* 隐藏使用密码登录 */
app-login div.tw-flex:nth-child(4) {
@extend %vw-hide;
}
/* Change collapsed menu icon to Vaultwarden */
/* 更改折叠菜单图标为 Vaultwarden */
bit-nav-logo bit-nav-item a:before {
content: "";
background-image: url("../images/icon-white.svg");
@ -90,16 +90,16 @@ bit-nav-logo bit-nav-item a:before {
bit-nav-logo bit-nav-item .bwi-shield {
@extend %vw-hide;
}
/**** END Static Vaultwarden Changes ****/
/**** START Dynamic Vaultwarden Changes ****/
/**** 结束 静态 Vaultwarden 更改 ****/
/**** 开始 动态 Vaultwarden 更改 ****/
{{#if signup_disabled}}
/* From web vault 2025.1.2 and onwards, the signup button is hidden
when signups are disabled as the web vault checks the /api/config endpoint.
Note that the clients tend to aggressively cache this endpoint, so it might
take a while for the change to take effect. To avoid the button appearing
when it shouldn't, we'll keep this style in place for a couple of versions */
/* 从 web vault 2025.1.2 版本开始,当注册功能被禁用时,
注册按钮会被隐藏,因为 web vault 会检查 /api/config 端点。
注意,客户端往往会大量缓存此端点,因此更改可能需要一段时间才能生效。
为了避免按钮在不应该出现时出现,我们将在未来几个版本中保留此样式 */
{{#if webver "<2025.3.0"}}
/* Hide the register link on the login screen */
/* 隐藏登录界面的注册链接 */
app-login form div + div + div + div + hr,
app-login form div + div + div + div + hr + p {
@extend %vw-hide;
@ -108,34 +108,35 @@ app-login form div + div + div + div + hr + p {
{{/if}}
{{#unless mail_enabled}}
/* Hide `Email` 2FA if mail is not enabled */
/* 隐藏 `电子邮件` 双因素认证,如果邮件未启用 */
app-two-factor-setup ul.list-group.list-group-2fa li.list-group-item:nth-child(1) {
@extend %vw-hide;
}
{{/unless}}
{{#unless yubico_enabled}}
/* Hide `YubiKey OTP security key` 2FA if it is not enabled */
/* 隐藏 `YubiKey OTP 安全密钥` 双因素认证,如果未启用 */
app-two-factor-setup ul.list-group.list-group-2fa li.list-group-item:nth-child(4) {
@extend %vw-hide;
}
{{/unless}}
{{#unless emergency_access_allowed}}
/* Hide Emergency Access if not allowed */
/* 隐藏紧急访问,如果不允许 */
bit-nav-item[route="settings/emergency-access"] {
@extend %vw-hide;
}
{{/unless}}
{{#unless sends_allowed}}
/* Hide Sends if not allowed */
/* 隐藏发送,如果不允许 */
bit-nav-item[route="sends"] {
@extend %vw-hide;
}
{{/unless}}
/**** End Dynamic Vaultwarden Changes ****/
/**** Include a special user stylesheet for custom changes ****/
/**** 结束 动态 Vaultwarden 更改 ****/
/**** 包含用于自定义更改的特殊用户样式表 ****/
{{#if load_user_scss}}
{{> scss/user.vaultwarden.scss }}
{{/if}}

Loading…
Cancel
Save