diff --git a/frontend/js/app/cache.js b/frontend/js/app/cache.js
index 6d1fbc4f9..baa365a3e 100644
--- a/frontend/js/app/cache.js
+++ b/frontend/js/app/cache.js
@@ -2,7 +2,7 @@ const UserModel = require('../models/user');
let cache = {
User: new UserModel.Model(),
- locale: 'en',
+ locale: navigator.languages[0],
version: null
};
diff --git a/frontend/js/app/i18n.js b/frontend/js/app/i18n.js
index c63cdc079..7eb74629a 100644
--- a/frontend/js/app/i18n.js
+++ b/frontend/js/app/i18n.js
@@ -1,4 +1,4 @@
-const Cache = ('./cache');
+const Cache = require('./cache');
const messages = require('../i18n/messages.json');
/**
diff --git a/frontend/js/i18n/messages.json b/frontend/js/i18n/messages.json
index d77351d6e..8302c4b6b 100644
--- a/frontend/js/i18n/messages.json
+++ b/frontend/js/i18n/messages.json
@@ -291,5 +291,298 @@
"default-site-html": "Custom Page",
"default-site-redirect": "Redirect"
}
+ },
+ "zh-CN": {
+ "str": {
+ "email-address": "邮件地址",
+ "username": "用户名",
+ "password": "密码",
+ "sign-in": "登录",
+ "sign-out": "注销",
+ "try-again": "再试一次",
+ "name": "名称",
+ "email": "邮箱",
+ "roles": "角色",
+ "created-on": "创建时间: {date}",
+ "save": "保存",
+ "cancel": "取消",
+ "close": "关闭",
+ "enable": "启用",
+ "disable": "禁用",
+ "sure": "是的!我确认.",
+ "disabled": "已禁用",
+ "choose-file": "选择文件",
+ "source": "源",
+ "destination": "目标",
+ "ssl": "SSL",
+ "access": "访问控制",
+ "public": "公开",
+ "edit": "编辑",
+ "delete": "删除",
+ "logs": "日志",
+ "status": "状态",
+ "online": "在线",
+ "offline": "离线",
+ "unknown": "位置",
+ "expires": "过期",
+ "value": "值",
+ "please-wait": "请稍候...",
+ "all": "全部",
+ "any": "任意"
+ },
+ "login": {
+ "title": "登录您的账号"
+ },
+ "main": {
+ "app": "Nginx代理管理器",
+ "version": "v{version}",
+ "welcome": "欢迎使用Nginx代理管理器",
+ "logged-in": "您当前已登录为{name}",
+ "unknown-error": "加载数据出错.请刷新页面重试.",
+ "unknown-user": "未知用户",
+ "sign-in-as": "以{name}身份重新登录"
+ },
+ "roles": {
+ "title": "角色管理",
+ "admin": "管理员",
+ "user": "Apache Helicopter"
+ },
+ "menu": {
+ "dashboard": "控制台",
+ "hosts": "主机管理"
+ },
+ "footer": {
+ "fork-me": "在Github上Fork本项目",
+ "copy": "© 2023 版权所有 jc21.com.",
+ "theme": "Tabler提供主题"
+ },
+ "dashboard": {
+ "title": "{name},您好!"
+ },
+ "all-hosts": {
+ "empty-subtitle": "{manage, select, true{为何不尝试新建一个呢?} other{权限不足,您无权创建.}}",
+ "details": "详细信息",
+ "enable-ssl": "启用 SSL",
+ "force-ssl": "强制 SSL",
+ "http2-support": "HTTP/2 支持",
+ "domain-names": "绑定域名",
+ "cert-provider": "证书提供者",
+ "block-exploits": "屏蔽常见爆破攻击",
+ "caching-enabled": "缓存资源",
+ "ssl-certificate": "SSL 证书",
+ "none": "无",
+ "new-cert": "申请新证书",
+ "with-le": "通过 Let's Encrypt",
+ "no-ssl": "当前虚拟主机将不通过 HTTPS 提供服务",
+ "advanced": "高级",
+ "advanced-warning": "请在下方输入您的自定义Nginx配置,请注意这可能带来风险.",
+ "advanced-config": "自定义Nginx配置",
+ "advanced-config-var-headline": "代理信息可通过以下变量获取:",
+ "advanced-config-header-info": "注意:Nginx将不会使用此处添加的任何add_hader或set_header指令. 您必须添加一个自定义位置“/”,并在那里的自定义配置中添加标头.",
+ "hsts-enabled": "已启用HSTS",
+ "hsts-subdomains": "HSTS 子域名",
+ "locations": "自定义路径"
+ },
+ "locations": {
+ "new_location": "添加路径",
+ "path": "/path",
+ "location_label": "路径匹配",
+ "delete": "删除"
+ },
+ "ssl": {
+ "letsencrypt": "Let's Encrypt",
+ "other": "自定义",
+ "none": "仅HTTP",
+ "letsencrypt-email": "注册Let's Encrypt时使用的邮件地址",
+ "letsencrypt-agree": "我同意Let's Encrypt 服务条款",
+ "delete-ssl": "附加的SSL证书将不会被删除,需要手动删除.",
+ "hosts-warning": "这些域名必须已经配置为指向此安装.",
+ "no-wildcard-without-dns": "未使用DNS验证时无法为通配符域名请求Let's Encrypt证书.",
+ "dns-challenge": "使用DNS验证",
+ "certbot-warning": "此部分需要一些关于Certbot及其DNS插件的知识.请参阅相应的插件文档.",
+ "dns-provider": "DNS提供商",
+ "please-choose": "请选择...",
+ "credentials-file-content": "凭据文件内容",
+ "credentials-file-content-info": "此插件需要包含API令牌或其他提供商凭据的配置文件.",
+ "stored-as-plaintext-info": "此数据将以明文形式存储在数据库和文件中!",
+ "propagation-seconds": "传播秒数",
+ "propagation-seconds-info": "留空以使用插件的默认值.DNS传播等待的秒数.",
+ "processing-info": "处理中... 这可能需要几分钟时间.",
+ "passphrase-protection-support-info": "不支持使用密码短语保护的密钥文件."
+ },
+ "proxy-hosts": {
+ "title": "代理主机",
+ "empty": "暂无代理主机",
+ "add": "添加一个代理主机",
+ "form-title": "{id, select, undefined{创建} other{编辑}} 代理主机",
+ "forward-scheme": "协议",
+ "forward-host": "转发目标主机/域名/IP",
+ "forward-port": "转发目标端口",
+ "delete": "删除代理主机",
+ "delete-confirm": "您确认要删除{domains}的代理主机吗?",
+ "help-title": "什么是代理主机?",
+ "help-content": "代理主机是要转发的web服务的传入端点.\n它为可能没有内置SSL支持的服务提供可选的SSL终止.\n代理主机是Nginx代理管理器最常见的用途.",
+ "access-list": "访问控制清单",
+ "allow-websocket-upgrade": "Websockets 转发支持",
+ "ignore-invalid-upstream-ssl": "忽略非法的 SSL 配置",
+ "custom-forward-host-help": "添加一个用于转发的子目录路径\n例: 203.0.113.25/path/",
+ "search": "搜索主机…"
+ },
+ "redirection-hosts": {
+ "title": "重定向主机",
+ "empty": "暂无重定向主机",
+ "add": "添加重定向主机",
+ "form-title": "{id, select, undefined{创建} other{编辑}} 重定向主机",
+ "forward-scheme": "协议",
+ "forward-http-status-code": "HTTP 状态码",
+ "forward-domain": "转发域名",
+ "preserve-path": "保留路径",
+ "delete": "删除重定向主机",
+ "delete-confirm": "您是否确认要删除{domains}上的重定向主机吗?",
+ "help-title": "什么是重定向主机?",
+ "help-content": "重定向主机将重定向来自传入域的请求,并将查看器推送到另一个域.\n使用这种类型的主机最常见的原因是当你的网站更改了域,但你仍然有指向旧域的搜索引擎或引用链接.",
+ "search": "搜索主机…"
+ },
+ "dead-hosts": {
+ "title": "404 主机",
+ "empty": "暂无 404 主机",
+ "add": "添加 404 主机",
+ "form-title": "{id, select, undefined{创建} other{编辑}} 404 主机",
+ "delete": "删除 404 主机",
+ "delete-confirm": "您是否确认要删除这个 404 主机?",
+ "help-title": "什么是 404 主机?",
+ "help-content": "404主机只是显示404页面的主机设置.\n当你的域在搜索引擎中列出,并且你想提供一个更好的错误页面,或者特别告诉搜索索引器域页面不再存在时,这可能很有用.\n拥有这个主机的另一个好处是可以跟踪日志中的点击量并查看引用者.",
+ "search": "搜索主机…"
+ },
+ "streams": {
+ "title": "流端口",
+ "empty": "没有流端口",
+ "add": "添加流端口",
+ "form-title": "{id, select, undefined{新建} other{编辑}} 流端口",
+ "incoming-port": "输入端口",
+ "forwarding-host": "转发目标主机",
+ "forwarding-port": "转发目标端口",
+ "tcp-forwarding": "转发TCP",
+ "udp-forwarding": "转发UDP",
+ "forward-type-error": "必须启用至少一种协议类型",
+ "protocol": "协议",
+ "tcp": "TCP",
+ "udp": "UDP",
+ "delete": "删除流端口",
+ "delete-confirm": "您确定要删除此流端口吗?",
+ "help-title": "什么是流端口?",
+ "help-content": "流是Nginx的一个相对较新的功能,用于直接将TCP/UDP流量转发到网络上的另一台计算机.\n如果您在运行游戏服务器、FTP或SSH服务器,这可能很有用.",
+ "search": "搜索输入流端口..."
+ },
+ "certificates": {
+ "title": "SSL证书",
+ "empty": "没有SSL证书",
+ "add": "添加SSL证书",
+ "form-title": "添加{provider, select, letsencrypt{Let's Encrypt} other{自定义}}证书",
+ "delete": "删除SSL证书",
+ "delete-confirm": "您确定要删除此SSL证书吗?使用该证书的主机将需要稍后进行更新.",
+ "help-title": "SSL证书",
+ "help-content": "SSL证书(TLS证书)是一种加密密钥,允许您的网站对最终用户进行加密.\nNPM使用一个名为Let's Encrypt的服务免费颁发SSL证书.\n如果您在NPM后面放置了任何个人信息、密码或敏感数据,使用证书可能是一个不错的选择.\n如果您的网站不面向互联网,或者只是想要一个通配符证书,NPM还支持DNS身份验证.",
+ "other-certificate": "证书",
+ "other-certificate-key": "证书密钥",
+ "other-intermediate-certificate": "中间证书",
+ "force-renew": "立即续订",
+ "test-reachability": "测试服务器可访问性",
+ "reachability-title": "测试服务器可访问性",
+ "reachability-info": "使用Site24x7测试域名是否可以从网访问.在使用DNS验证时,这不是必需的.",
+ "reachability-failed-to-reach-api": "与API的通信失败,NPM是否正常运行?",
+ "reachability-failed-to-check": "由于与site24x7.com的通信错误,无法检查可访问性.",
+ "reachability-ok": "您的服务器可访问,应该可以创建证书.",
+ "reachability-404": "在此域名下找到了一个服务器,但似乎不是Nginx Proxy Manager.请确保您的域名指向运行NPM实例的IP.",
+ "reachability-not-resolved": "此域名下没有可用的服务器.请确保您的域名存在,指向运行NPM实例的IP,并在必要时在路由器中转发端口80.",
+ "reachability-wrong-data": "在此域名下找到了一个服务器,但返回了意外的数据.这是NPM服务器吗?请确保您的域名指向运行NPM实例的IP.",
+ "reachability-other": "在此域名下找到了一个服务器,但返回了意外的状态码{code}.这是NPM服务器吗?请确保您的域名指向运行NPM实例的IP.",
+ "download": "下载",
+ "renew-title": "续订Let's Encrypt证书",
+ "search": "搜索证书..."
+ },
+ "access-lists": {
+ "title": "访问控制列表",
+ "empty": "没有访问控制列表",
+ "add": "添加访问控制列表",
+ "form-title": "{id, select, undefined{新建} other{编辑}} 访问控制列表",
+ "delete": "删除访问控制列表",
+ "delete-confirm": "您确定要删除此访问控制列表吗?",
+ "public": "公开",
+ "public-sub": "无访问限制",
+ "help-title": "什么是访问控制列表?",
+ "help-content": "访问控制列表提供根据客户端IP地址匹配的黑名单或白名单,并通过基本HTTP身份验证为代理主机提供身份验证.\n您可以为单个访问控制列表配置多个客户端规则、用户名和密码,然后将其应用于代理主机.\n这对于没有内置身份验证机制或您希望防止未知客户端访问的转发Web服务非常有用.",
+ "item-count": "{count}项",
+ "client-count": "{count}个规则",
+ "proxy-host-count": "{count}个代理主机",
+ "delete-has-hosts": "此访问列表与{count}个代理主机相关联.删除后,它们将变为对公共可用.",
+ "details": "详情",
+ "authorization": "授权",
+ "access": "访问",
+ "satisfy": "满足条件",
+ "satisfy-any": "满足任意条件",
+ "pass-auth": "传递身份验证到主机",
+ "access-add": "添加",
+ "auth-add": "添加",
+ "search": "搜索访问..."
+ },
+ "users": {
+ "title": "用户",
+ "default_error": "必须更改默认电子邮件地址",
+ "add": "添加用户",
+ "nickname": "昵称",
+ "full-name": "全名",
+ "edit-details": "编辑详情",
+ "change-password": "更改密码",
+ "edit-permissions": "编辑权限",
+ "sign-in-as": "以用户身份登录",
+ "form-title": "{id, select, undefined{新建} other{编辑}} 用户",
+ "delete": "删除{name, select, undefined{用户} other{{name}}}",
+ "delete-confirm": "您确定要删除{name}吗?",
+ "password-title": "更改{self, select, false{{name}的} other{}}密码",
+ "current-password": "当前密码",
+ "new-password": "新密码",
+ "confirm-password": "确认密码",
+ "permissions-title": "{name}的权限",
+ "admin-perms": "此用户是管理员,某些项目无法更改.",
+ "perms-visibility": "项目可见性",
+ "perms-visibility-user": "仅可查看此用户创建的项目",
+ "perms-visibility-all": "所有项目",
+ "perm-manage": "管理",
+ "perm-view": "只读",
+ "perm-hidden": "隐藏",
+ "search": "搜索用户..."
+ },
+ "audit-log": {
+ "title": "审计日志",
+ "empty": "没有日志.",
+ "empty-subtitle": "一旦您或其他用户进行更改,这些事件的历史记录将显示在此处.",
+ "proxy-host": "代理主机",
+ "redirection-host": "重定向主机",
+ "dead-host": "404主机",
+ "stream": "流端口",
+ "user": "用户",
+ "certificate": "证书",
+ "access-list": "访问列表",
+ "created": "创建{name}",
+ "updated": "更新{name}",
+ "deleted": "删除{name}",
+ "enabled": "启用{name}",
+ "disabled": "禁用{name}",
+ "renewed": "续订{name}",
+ "meta-title": "事件详细信息",
+ "view-meta": "查看详情",
+ "date": "日期",
+ "search": "搜索日志..."
+ },
+ "settings": {
+ "title": "设置",
+ "default-site": "默认站点",
+ "default-site-congratulations": "祝贺页面",
+ "default-site-404": "404页面",
+ "default-site-444": "无响应(444)",
+ "default-site-html": "自定义页面",
+ "default-site-redirect": "重定向"
+ }
}
}