From 94d90015f4098cf0348426e259a409cf4a920456 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Aug 2026 23:28:24 +0800 Subject: [PATCH] New Crowdin translations by GitHub Action (#1760) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- pkg/embed/locales/zh_CN/backend.po | 849 +++-- pkg/embed/locales/zh_TW/backend.po | 849 +++-- web/src/locales/zh_CN.po | 4645 +++++++++++++++++----------- web/src/locales/zh_TW.po | 4626 +++++++++++++++++---------- 4 files changed, 6893 insertions(+), 4076 deletions(-) diff --git a/pkg/embed/locales/zh_CN/backend.po b/pkg/embed/locales/zh_CN/backend.po index 80097f5b..50a80c8f 100644 --- a/pkg/embed/locales/zh_CN/backend.po +++ b/pkg/embed/locales/zh_CN/backend.po @@ -13,7 +13,11 @@ msgstr "" "X-Crowdin-File-ID: 1166\n" "Project-Id-Version: acepanel\n" "Language-Team: Chinese Simplified\n" -"PO-Revision-Date: 2026-08-15 10:05\n" +"PO-Revision-Date: 2026-08-15 15:27\n" + +#: internal/service/cli.go:1107 +msgid "%d certificate(s) failed to renew" +msgstr "%d 个证书续签失败" #: internal/service/toolbox_log.go:257 msgid "%d images" @@ -39,11 +43,11 @@ msgstr "1 分钟负载" msgid "15 minutes load" msgstr "15 分钟负载" -#: internal/service/cli.go:341 +#: internal/service/cli.go:416 msgid "2FA disabled for user %s" msgstr "用户 %s 已禁用两步验证" -#: internal/service/cli.go:349 +#: internal/service/cli.go:424 msgid "2FA url: %s" msgstr "两步验证 URL: %s" @@ -71,19 +75,19 @@ msgstr "AcePanel" msgid "AcePanel CLI Tool" msgstr "AcePanel 命令行工具" -#: internal/service/cli.go:105 +#: internal/service/cli.go:117 msgid "AcePanel service restarted" msgstr "AcePanel 服务已重启" -#: internal/service/cli.go:121 +#: internal/service/cli.go:133 msgid "AcePanel service started" msgstr "AcePanel 服务已启动" -#: internal/service/cli.go:96 +#: internal/service/cli.go:108 msgid "AcePanel service status: %s" msgstr "AcePanel 服务状态:%s" -#: internal/service/cli.go:113 +#: internal/service/cli.go:125 msgid "AcePanel service stopped" msgstr "AcePanel 服务已停止" @@ -117,11 +121,11 @@ msgstr "活动连接" msgid "Aliyun" msgstr "阿里云" -#: internal/service/cli.go:381 +#: internal/service/cli.go:456 msgid "All passkeys cleared for user %s" msgstr "已清除用户 %s 的所有通行密钥" -#: internal/service/cli.go:1037 +#: internal/service/cli.go:1496 msgid "Already initialized" msgstr "已经初始化过了" @@ -129,27 +133,27 @@ msgstr "已经初始化过了" msgid "App %s %s" msgstr "应用 %s %s" -#: internal/service/cli.go:886 +#: internal/service/cli.go:1345 msgid "App %s installed successfully" msgstr "应用 %s 安装成功" -#: internal/service/cli.go:900 +#: internal/service/cli.go:1359 msgid "App %s uninstalled successfully" msgstr "应用 %s 卸载成功" -#: internal/service/cli.go:914 +#: internal/service/cli.go:1373 msgid "App %s updated successfully" msgstr "应用 %s 更新成功" -#: internal/service/cli.go:883 +#: internal/service/cli.go:1342 msgid "App install failed: %v" msgstr "应用安装失败:%v" -#: internal/service/cli.go:897 +#: internal/service/cli.go:1356 msgid "App uninstall failed: %v" msgstr "应用卸载失败:%v" -#: internal/service/cli.go:911 +#: internal/service/cli.go:1370 msgid "App update failed: %v" msgstr "应用更新失败:%v" @@ -157,15 +161,15 @@ msgstr "应用更新失败:%v" msgid "Application Pool" msgstr "应用程序池" -#: internal/data/backup.go:1838 +#: internal/data/backup.go:1848 msgid "Applying update failed: %v" msgstr "应用更新失败:%v" -#: internal/data/backup.go:1836 +#: internal/data/backup.go:1846 msgid "Applying update..." msgstr "应用更新……" -#: internal/data/backup.go:1800 +#: internal/data/backup.go:1810 msgid "Backing up panel data..." msgstr "备份面板数据……" @@ -173,22 +177,34 @@ msgstr "备份面板数据……" msgid "Backup %s: %s" msgstr "备份 %s: %s" -#: internal/service/cli.go:716 +#: internal/service/cli.go:1144 msgid "Backup failed: %v" msgstr "备份失败:%v" -#: internal/service/cli.go:534 +#: internal/service/cli.go:651 msgid "Bind IP disabled" msgstr "绑定 IP 已禁用" -#: internal/service/cli.go:550 +#: internal/service/cli.go:635 +msgid "Bind IP enabled: %s" +msgstr "已启用绑定 IP:%s" + +#: internal/service/cli.go:688 msgid "Bind UA disabled" msgstr "绑定 UA 已禁用" -#: internal/service/cli.go:518 +#: internal/service/cli.go:672 +msgid "Bind UA enabled: %s" +msgstr "已启用绑定 UA:%s" + +#: internal/service/cli.go:614 msgid "Bind domain disabled" msgstr "绑定域名已禁用" +#: internal/service/cli.go:598 +msgid "Bind domain enabled: %s" +msgstr "已启用绑定域名:%s" + #: internal/apps/rocketmq/app.go:65 msgid "Broker Name" msgstr "Broker 名称" @@ -248,21 +264,25 @@ msgstr "Calendar 是一个用于处理日期的库" msgid "Certificate" msgstr "证书" +#: internal/service/cli.go:930 +msgid "Certificate for website %s updated successfully" +msgstr "网站 %s 的证书更新成功" + #: internal/biz/notify.go:190 msgid "Channel" msgstr "渠道" -#: internal/service/cli.go:735 -#: internal/service/cli.go:740 +#: internal/service/cli.go:1162 +#: internal/service/cli.go:1167 msgid "Cleaning failed: %v" msgstr "清理失败:%v" -#: internal/data/backup.go:1691 +#: internal/data/backup.go:1701 msgid "Cleaning temporary directory failed: %v" msgstr "清理临时目录失败:%v" -#: internal/data/backup.go:424 -#: internal/data/backup.go:485 +#: internal/data/backup.go:426 +#: internal/data/backup.go:490 msgid "Cleanup failed: %v" msgstr "清理失败:%v" @@ -300,7 +320,7 @@ msgstr "配置重载成功" msgid "Connected Clients" msgstr "已连接客户端数" -#: internal/service/cli.go:798 +#: internal/service/cli.go:1238 msgid "Container %s has no log file" msgstr "容器 %s 没有日志文件" @@ -312,6 +332,26 @@ msgstr "次数" msgid "Create container %s" msgstr "创建容器 %s" +#: internal/service/cli.go:1648 +msgid "Cron task %d disabled" +msgstr "计划任务 %d 已禁用" + +#: internal/service/cli.go:1650 +msgid "Cron task %d enabled" +msgstr "计划任务 %d 已启用" + +#: internal/service/cli.go:1638 +msgid "Cron task %s executed successfully" +msgstr "计划任务 %s 执行成功" + +#: internal/service/cli.go:1635 +msgid "Cron task %s failed: %v" +msgstr "计划任务 %s 执行失败:%v" + +#: internal/service/cli.go:1626 +msgid "Cron task script %s not exists" +msgstr "计划任务脚本 %s 不存在" + #: internal/apps/mongodb/app.go:95 msgid "Current Connections" msgstr "当前连接数" @@ -325,7 +365,7 @@ msgstr "当前值" msgid "DESCRIPTION" msgstr "描述" -#: internal/service/cli.go:163 +#: internal/service/cli.go:175 msgid "Data synchronized successfully" msgstr "数据同步成功" @@ -333,14 +373,18 @@ msgstr "数据同步成功" msgid "Database" msgstr "数据库" -#: internal/service/cli.go:672 +#: internal/service/cli.go:1043 msgid "Database server %s added successfully" msgstr "数据库服务器 %s 添加成功" -#: internal/service/cli.go:686 +#: internal/service/cli.go:1057 msgid "Database server %s deleted successfully" msgstr "数据库服务器 %s 删除成功" +#: internal/service/cli.go:901 +msgid "Database: %s, username: %s, password: %s" +msgstr "数据库:%s,用户名:%s,密码:%s" + #: internal/apps/clickhouse/app.go:102 msgid "Databases" msgstr "数据库" @@ -357,16 +401,16 @@ msgstr "详情" msgid "Docker container logs: %d files" msgstr "Docker 容器日志:%d 个文件" -#: internal/service/cli.go:134 +#: internal/service/cli.go:146 msgid "Download URL is empty" msgstr "下载 URL 为空" -#: internal/data/backup.go:1811 -#: internal/data/backup.go:1814 +#: internal/data/backup.go:1821 +#: internal/data/backup.go:1824 msgid "Download failed: %v" msgstr "下载失败:%v" -#: internal/data/backup.go:1817 +#: internal/data/backup.go:1827 msgid "Download file check failed" msgstr "下载文件检查失败" @@ -374,7 +418,7 @@ msgstr "下载文件检查失败" msgid "Download remote file %v" msgstr "下载远程文件 %v" -#: internal/data/backup.go:1809 +#: internal/data/backup.go:1819 msgid "Downloading new version..." msgstr "正在下载新版本……" @@ -386,16 +430,16 @@ msgstr "Elasticsearch 指标" msgid "Enchant is a spell-checking library" msgstr "Enchant 是一个拼写检查库" -#: internal/service/cli.go:502 +#: internal/service/cli.go:577 msgid "Entrance disabled" msgstr "入口已禁用" -#: internal/service/cli.go:485 +#: internal/service/cli.go:560 msgid "Entrance enabled" msgstr "入口已启用" -#: internal/service/cli.go:223 -#: internal/service/cli.go:486 +#: internal/service/cli.go:243 +#: internal/service/cli.go:561 msgid "Entrance: %s" msgstr "入口: %s" @@ -413,7 +457,7 @@ msgstr "Event 是一个用于处理事件的库" msgid "Exif is a library for reading and writing image metadata" msgstr "Exif 是一个用于读取和写入图像元数据的库" -#: internal/service/cli.go:1157 +#: internal/service/cli.go:1671 msgid "Exit Code" msgstr "退出码" @@ -421,7 +465,7 @@ msgstr "退出码" msgid "Expire Time" msgstr "过期时间" -#: internal/data/backup.go:1827 +#: internal/data/backup.go:1837 msgid "Extracting new version..." msgstr "正在提取新版本……" @@ -430,143 +474,173 @@ msgstr "正在提取新版本……" msgid "Failed Attempts" msgstr "失败次数" -#: internal/service/cli.go:339 +#: internal/service/cli.go:414 msgid "Failed to change 2FA status: %v" msgstr "修改两步验证失败:%v" -#: internal/service/cli.go:314 +#: internal/service/cli.go:389 msgid "Failed to change password: %v" msgstr "修改密码失败:%v" -#: internal/service/cli.go:283 +#: internal/service/cli.go:354 msgid "Failed to change username: %v" msgstr "修改用户名失败:%v" -#: internal/data/backup.go:1793 +#: internal/data/backup.go:1803 msgid "Failed to clean up temporary directory: %v" msgstr "清理临时目录失败:%v" -#: internal/service/cli.go:378 +#: internal/service/cli.go:453 msgid "Failed to clear passkeys: %v" msgstr "清除通行密钥失败:%v" -#: internal/service/cli.go:974 +#: internal/service/cli.go:1433 msgid "Failed to clear tasks: %v" msgstr "清除任务失败:%v" -#: internal/data/backup.go:1807 +#: internal/data/backup.go:1817 msgid "Failed to create temporary directory: %v" msgstr "创建临时目录失败:%v" -#: internal/service/cli.go:949 +#: internal/service/cli.go:305 +msgid "Failed to create user: %v" +msgstr "创建用户失败:%v" + +#: internal/service/cli.go:1408 msgid "Failed to delete app: %v" msgstr "删除应用失败:%v" -#: internal/service/cli.go:1028 +#: internal/service/cli.go:1487 msgid "Failed to delete setting: %v" msgstr "删除设置失败:%v" -#: internal/service/cli.go:347 +#: internal/service/cli.go:327 +msgid "Failed to delete user: %v" +msgstr "删除用户失败:%v" + +#: internal/service/cli.go:422 msgid "Failed to generate 2FA: %v" msgstr "生成两步验证失败:%v" -#: internal/service/cli.go:187 -#: internal/service/cli.go:310 +#: internal/service/cli.go:207 +#: internal/service/cli.go:385 msgid "Failed to generate password: %v" msgstr "生成密码失败:%v" -#: internal/service/cli.go:444 +#: internal/service/cli.go:519 msgid "Failed to get ACME account: %v" msgstr "获取 ACME 帐户失败:%v" -#: internal/service/cli.go:440 +#: internal/service/cli.go:515 msgid "Failed to get a panel user: %v" msgstr "获取面板用户失败:%v" -#: internal/service/cli.go:929 +#: internal/service/cli.go:1319 +msgid "Failed to get app list: %v" +msgstr "获取应用列表失败:%v" + +#: internal/service/cli.go:1388 msgid "Failed to get app: %v" msgstr "获取应用失败:%v" -#: internal/service/cli.go:794 +#: internal/service/cli.go:1234 msgid "Failed to get container log path: %v" msgstr "无法获取容器日志路径:%v" -#: internal/service/cli.go:213 +#: internal/service/cli.go:233 msgid "Failed to get entrance" msgstr "获取入口失败" -#: internal/service/cli.go:129 +#: internal/service/cli.go:141 msgid "Failed to get latest version: %v" msgstr "获取最新版本失败:%v" -#: internal/service/cli.go:209 +#: internal/service/cli.go:229 msgid "Failed to get port" msgstr "获取端口失败" -#: internal/service/cli.go:1009 -#: internal/service/cli.go:992 +#: internal/service/cli.go:1451 +#: internal/service/cli.go:1468 msgid "Failed to get setting: %v" msgstr "获取设置失败:%v" -#: internal/service/cli.go:174 +#: internal/service/cli.go:194 msgid "Failed to get user info: %v" msgstr "获取用户信息失败:%v" -#: internal/service/cli.go:253 +#: internal/service/cli.go:273 msgid "Failed to get user list: %v" msgstr "获取用户列表失败:%v" -#: internal/service/cli.go:278 -#: internal/service/cli.go:305 -#: internal/service/cli.go:332 -#: internal/service/cli.go:374 +#: internal/service/cli.go:323 +#: internal/service/cli.go:349 +#: internal/service/cli.go:380 +#: internal/service/cli.go:407 +#: internal/service/cli.go:449 msgid "Failed to get user: %v" msgstr "获取用户失败:%v" -#: internal/service/cli.go:450 +#: internal/service/cli.go:994 +msgid "Failed to get website: %v" +msgstr "获取网站失败:%v" + +#: internal/service/cli.go:525 msgid "Failed to obtain panel certificate via ACME, using self-signed certificate" msgstr "无法通过 ACME 获取面板证书,使用自签名证书" -#: internal/data/backup.go:1796 +#: internal/data/backup.go:1806 msgid "Failed to optimize database: %v" msgstr "优化数据库失败:%v" -#: internal/service/cli.go:354 +#: internal/service/cli.go:910 +msgid "Failed to read certificate file: %v" +msgstr "读取证书文件失败:%v" + +#: internal/service/cli.go:1724 +#: internal/service/cli.go:429 msgid "Failed to read input: %v" msgstr "读取输入失败: %v" -#: internal/data/backup.go:1642 +#: internal/service/cli.go:914 +msgid "Failed to read private key file: %v" +msgstr "读取私钥文件失败:%v" + +#: internal/data/backup.go:1647 msgid "Failed to remove %s.db: %v" msgstr "删除 %s.db 失败:%v" -#: internal/service/cli.go:936 +#: internal/service/cli.go:1395 msgid "Failed to save app: %v" msgstr "保存应用失败:%v" -#: internal/service/cli.go:1015 -#: internal/service/cli.go:198 +#: internal/service/cli.go:1474 +#: internal/service/cli.go:218 msgid "Failed to save setting: %v" msgstr "保存设置失败:%v" -#: internal/service/cli.go:193 +#: internal/service/cli.go:213 msgid "Failed to save user info: %v" msgstr "保存用户信息失败:%v" +#: internal/service/cli.go:1004 +msgid "Failed to save website: %v" +msgstr "保存网站失败:%v" + #: internal/service/ws.go:203 msgid "Failed to start command: %v" msgstr "启动命令失败:%v" -#: internal/service/cli.go:154 -#: internal/service/cli.go:157 -#: internal/service/cli.go:160 +#: internal/service/cli.go:166 +#: internal/service/cli.go:169 +#: internal/service/cli.go:172 msgid "Failed to synchronize app data: %v" msgstr "同步应用数据失败:%v" -#: internal/service/cli.go:151 +#: internal/service/cli.go:163 msgid "Failed to synchronize categories data: %v" msgstr "同步分类数据失败:%v" -#: internal/service/cli.go:357 +#: internal/service/cli.go:432 msgid "Failed to update 2FA: %v" msgstr "更新两步验证失败: %v" @@ -574,18 +648,34 @@ msgstr "更新两步验证失败: %v" msgid "Fileinfo is a library used to identify file types" msgstr "Fileinfo 是一个用于识别文件类型的库" -#: internal/data/backup.go:1632 +#: internal/data/backup.go:1637 msgid "Files are normal and do not need to be repaired, please run acepanel update to update the panel" msgstr "文件正常,无需修复,请运行 acepanel update 更新面板" -#: internal/data/backup.go:1842 +#: internal/data/backup.go:1852 msgid "Finishing up..." msgstr "正在结束更新……" -#: internal/data/backup.go:1844 +#: internal/data/backup.go:1854 msgid "Finishing update failed: %v" msgstr "结束更新失败:%v" +#: internal/service/cli.go:773 +msgid "Firewall disabled" +msgstr "防火墙已禁用" + +#: internal/service/cli.go:764 +msgid "Firewall enabled" +msgstr "防火墙已启用" + +#: internal/service/cli.go:812 +msgid "Firewall is not running" +msgstr "防火墙未运行" + +#: internal/service/cli.go:750 +msgid "Firewall status: %s" +msgstr "防火墙状态:%s" + #: internal/apps/rocketmq/app.go:69 msgid "Flush Disk Type" msgstr "刷盘类型" @@ -628,15 +718,15 @@ msgstr "Go-%s 未安装" msgid "Goroutine Count" msgstr "Goroutine 数量" -#: internal/service/cli.go:469 +#: internal/service/cli.go:544 msgid "HTTPS certificate generated" msgstr "HTTPS 证书已生成" -#: internal/service/cli.go:413 +#: internal/service/cli.go:488 msgid "HTTPS disabled" msgstr "HTTPS 已禁用" -#: internal/service/cli.go:397 +#: internal/service/cli.go:472 msgid "HTTPS enabled" msgstr "HTTPS 已启用" @@ -648,7 +738,23 @@ msgstr "硬件和操作系统指标" msgid "Huawei Cloud" msgstr "华为云" -#: internal/service/cli.go:257 +#: internal/service/cli.go:1069 +msgid "ID: %d, Domains: %s, Auto Renewal: %t, Expires At: %s" +msgstr "ID:%d,域名:%s,自动续签:%t,到期时间:%s" + +#: internal/service/cli.go:1019 +msgid "ID: %d, Name: %s, Type: %s, Address: %s:%d, Username: %s" +msgstr "ID:%d,名称:%s,类型:%s,地址:%s:%d,用户名:%s" + +#: internal/service/cli.go:1614 +msgid "ID: %d, Name: %s, Type: %s, Schedule: %s, Status: %s" +msgstr "ID:%d,名称:%s,类型:%s,执行周期:%s,状态:%s" + +#: internal/service/cli.go:852 +msgid "ID: %d, Name: %s, Type: %s, Status: %s, Path: %s" +msgstr "ID:%d,名称:%s,类型:%s,状态:%s,路径:%s" + +#: internal/service/cli.go:278 msgid "ID: %d, Username: %s, Email: %s, Created At: %s" msgstr "ID: %d, 用户名: %s, 邮箱: %s, 创建时间: %s" @@ -672,11 +778,11 @@ msgstr "空闲进程" msgid "Idle Workers" msgstr "空闲的 Worker" -#: internal/service/cli.go:243 +#: internal/service/cli.go:263 msgid "If you cannot access, please check whether the server's security group and firewall allow port %d" msgstr "如果您无法访问,请检查服务器的安全组和防火墙是否放行端口 %d" -#: internal/service/cli.go:244 +#: internal/service/cli.go:264 msgid "If you still cannot access, try running `acepanel https off` to turn off panel HTTPS" msgstr "如果您仍然无法访问,请尝试运行 `acepanel https off` 关闭面板 HTTPS" @@ -692,10 +798,10 @@ msgstr "ImageMagick 是一个创建、编辑、合成图片的免费软件" msgid "Index Hit Rate" msgstr "索引命中率" -#: internal/service/cli.go:1085 -#: internal/service/cli.go:1090 -#: internal/service/cli.go:1095 -#: internal/service/cli.go:1137 +#: internal/service/cli.go:1544 +#: internal/service/cli.go:1549 +#: internal/service/cli.go:1554 +#: internal/service/cli.go:1596 msgid "Initialization failed: %v" msgstr "初始化失败:%v" @@ -779,11 +885,11 @@ msgstr "监听队列长度" msgid "Listeners" msgstr "监听器" -#: internal/service/cli.go:227 +#: internal/service/cli.go:247 msgid "Local IPv4: %s://%s:%d%s" msgstr "本地 IPv4: %s://%s:%d%s" -#: internal/service/cli.go:231 +#: internal/service/cli.go:251 msgid "Local IPv6: %s://[%s]:%d%s" msgstr "本地 IPv6: %s://[%s]:%d%s" @@ -792,7 +898,7 @@ msgstr "本地 IPv6: %s://[%s]:%d%s" msgid "Local Storage" msgstr "本地存储" -#: internal/service/cli.go:1158 +#: internal/service/cli.go:1672 #: internal/taskqueue/runner.go:171 msgid "Log" msgstr "日志" @@ -867,11 +973,11 @@ msgstr "迁移已开始" msgid "MongoDB metrics" msgstr "MongoDB 指标" -#: internal/data/backup.go:1722 +#: internal/data/backup.go:1732 msgid "Move acepanel file failed: %v" msgstr "移动 acepanel 文件失败:%v" -#: internal/data/backup.go:1713 +#: internal/data/backup.go:1723 msgid "Move panel file failed: %v" msgstr "移动面板文件失败:%v" @@ -885,6 +991,10 @@ msgstr "MySQL 数据库指标" msgid "NAME" msgstr "名称" +#: internal/service/cli.go:1121 +msgid "Name: %s, Size: %s, Time: %s" +msgstr "名称:%s,大小:%s,时间:%s" + #: internal/apps/rocketmq/app.go:67 msgid "NameServer Address" msgstr "NameServer 地址" @@ -897,7 +1007,7 @@ msgstr "NameServer 状态" msgid "NameSilo" msgstr "NameSilo" -#: internal/service/cli.go:271 +#: internal/service/cli.go:342 msgid "New username cannot be empty" msgstr "新用户名不能为空" @@ -905,7 +1015,7 @@ msgstr "新用户名不能为空" msgid "Nginx metrics" msgstr "Nginx 指标" -#: internal/data/backup.go:1678 +#: internal/data/backup.go:1683 msgid "No backup file found, unable to automatically repair" msgstr "未找到备份文件,无法自动修复" @@ -923,10 +1033,6 @@ msgstr "未安装 Node.js 依赖;请安装依赖并手动启动项目" msgid "Node.js-%s is not installed" msgstr "Node.js-%s 未安装" -#: internal/service/cli.go:653 -msgid "Not supported" -msgstr "不支持" - #: internal/service/home.go:267 msgid "Not used" msgstr "不使用" @@ -954,7 +1060,7 @@ msgstr "选项" msgid "OPcache stores precompiled PHP script bytecode in shared memory to improve PHP performance" msgstr "OPcache 将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能" -#: internal/service/cli.go:268 +#: internal/service/cli.go:339 msgid "Old username cannot be empty" msgstr "旧用户名不能为空" @@ -966,10 +1072,14 @@ msgstr "已打开的表" msgid "Operation" msgstr "操作" -#: internal/service/cli.go:1159 +#: internal/service/cli.go:1673 msgid "Output" msgstr "输出" +#: internal/bootstrap/cli.go:44 +msgid "Output in JSON format (list commands only)" +msgstr "以 JSON 格式输出(仅适用于列表命令)" + #: internal/service/environment_php.go:111 #: internal/service/environment_php.go:130 #: internal/service/environment_php.go:150 @@ -988,14 +1098,14 @@ msgstr "输出" msgid "PHP-%d is not installed" msgstr "PHP-%d 未安装" -#: internal/service/cli.go:1003 -#: internal/service/cli.go:1024 -#: internal/service/cli.go:879 -#: internal/service/cli.go:893 -#: internal/service/cli.go:907 -#: internal/service/cli.go:923 -#: internal/service/cli.go:945 -#: internal/service/cli.go:984 +#: internal/service/cli.go:1332 +#: internal/service/cli.go:1352 +#: internal/service/cli.go:1366 +#: internal/service/cli.go:1382 +#: internal/service/cli.go:1404 +#: internal/service/cli.go:1443 +#: internal/service/cli.go:1462 +#: internal/service/cli.go:1483 msgid "Parameters cannot be empty" msgstr "参数不能为空" @@ -1003,19 +1113,24 @@ msgstr "参数不能为空" msgid "Passkey" msgstr "通行密钥" -#: internal/service/cli.go:317 +#: internal/service/cli.go:392 msgid "Password for user %s changed successfully" msgstr "用户 %s 的密码已成功更改" -#: internal/service/cli.go:298 +#: internal/service/cli.go:294 +#: internal/service/cli.go:373 msgid "Password length cannot be less than 6" msgstr "密码长度不能少于6位" -#: internal/service/cli.go:218 +#: internal/service/cli.go:1717 +msgid "Password not provided, pass it as an argument or set the %s environment variable" +msgstr "未提供密码,请将其作为参数传入或设置 %s 环境变量" + +#: internal/service/cli.go:238 msgid "Password: %s" msgstr "密码: %s" -#: internal/service/cli.go:220 +#: internal/service/cli.go:240 msgid "Password: ******* (use -f to force reset)" msgstr "密码:*******(使用 -f 强制重置)" @@ -1023,6 +1138,10 @@ msgstr "密码:*******(使用 -f 强制重置)" msgid "Path" msgstr "路径" +#: internal/service/cli.go:899 +msgid "Path: %s" +msgstr "路径:%s" + #: internal/apps/mysql/app.go:119 msgid "Peak Connections" msgstr "峰值连接数" @@ -1035,18 +1154,50 @@ msgstr "占用内存峰值" msgid "PhpRedis connects to and operates on data in Redis databases (requires the igbinary module installed above)" msgstr "PhpRedis 连接并操作 Redis 数据库上的数据(需先安装上面 igbinary 模块)" -#: internal/service/cli.go:242 +#: internal/service/cli.go:753 +msgid "Ping allowed: %t" +msgstr "允许 Ping:%t" + +#: internal/service/cli.go:262 msgid "Please choose the appropriate address to access the panel based on your network situation" msgstr "请根据您的网络情况选择合适的地址访问面板" -#: internal/service/cli.go:351 +#: internal/service/cli.go:426 msgid "Please enter the 2FA code: " msgstr "请输入两步验证代码: " -#: internal/biz/cert.go:252 +#: internal/service/cli.go:368 +msgid "Please enter the new password: " +msgstr "请输入新密码: " + +#: internal/service/cli.go:289 +msgid "Please enter the password: " +msgstr "请输入密码: " + +#: internal/biz/cert.go:260 msgid "Please set the panel IP in settings first for ACME certificate generation" msgstr "请先在设置中设置面板 IP 以生成 ACME 证书" +#: internal/service/cli.go:621 +msgid "Please specify at least one IP" +msgstr "请至少指定一个 IP" + +#: internal/service/cli.go:658 +msgid "Please specify at least one User-Agent" +msgstr "请至少指定一个 User-Agent" + +#: internal/service/cli.go:584 +msgid "Please specify at least one domain" +msgstr "请至少指定一个域名" + +#: internal/service/cli.go:1090 +msgid "Please specify the certificate ID or use --all" +msgstr "请指定证书 ID 或使用 --all" + +#: internal/service/cli.go:696 +msgid "Please specify the port" +msgstr "请指定端口" + #: internal/service/toolbox_log.go:285 msgid "Podman container logs: %d files" msgstr "Podman 容器日志:%d 个文件" @@ -1055,27 +1206,40 @@ msgstr "Podman 容器日志:%d 个文件" msgid "Porkbun" msgstr "Porkbun" -#: internal/service/cli.go:567 +#: internal/service/cli.go:831 +msgid "Port %s allowed successfully" +msgstr "端口 %s 放行成功" + +#: internal/service/cli.go:833 +msgid "Port %s removed successfully" +msgstr "端口 %s 移除成功" + +#: internal/service/cli.go:709 msgid "Port already in use" msgstr "端口已被占用" -#: internal/service/cli.go:593 +#: internal/service/cli.go:735 msgid "Port changed to %d" msgstr "端口已更改为 %d" -#: internal/service/cli.go:557 +#: internal/service/cli.go:699 +#: internal/service/cli.go:802 msgid "Port range error" msgstr "端口范围错误" -#: internal/service/cli.go:222 +#: internal/service/cli.go:242 msgid "Port: %d" msgstr "端口:%d" +#: internal/service/cli.go:785 +msgid "Port: %d-%d, Protocol: %s, Strategy: %s, Direction: %s, Address: %s" +msgstr "端口:%d-%d,协议:%s,策略:%s,方向:%s,地址:%s" + #: internal/apps/prometheus/app.go:393 msgid "PostgreSQL database metrics" msgstr "PostgreSQL 数据库指标" -#: internal/data/backup.go:1791 +#: internal/data/backup.go:1801 msgid "Preparing to update to %s..." msgstr "正在准备更新到 %s……" @@ -1099,11 +1263,11 @@ msgstr "进程 PID" msgid "Pspell is a spell-checking library" msgstr "Pspell 是一个拼写检查库" -#: internal/service/cli.go:235 +#: internal/service/cli.go:255 msgid "Public IPv4: %s://%s:%d%s" msgstr "公网 IPv4: %s://%s:%d%s" -#: internal/service/cli.go:239 +#: internal/service/cli.go:259 msgid "Public IPv6: %s://[%s]:%d%s" msgstr "公网 IPv6: %s://[%s]:%d%s" @@ -1158,7 +1322,7 @@ msgstr "Redis 指标" msgid "Relocating Shards" msgstr "迁移中的分片" -#: internal/data/backup.go:1710 +#: internal/data/backup.go:1720 msgid "Remove panel file failed: %v" msgstr "删除面板文件失败:%v" @@ -1198,7 +1362,7 @@ msgstr "SSH 登录成功" msgid "SSH2 is a library for connecting to SSH servers" msgstr "SSH2 是一个用于连接 SSH 服务器的库" -#: internal/service/cli.go:1156 +#: internal/service/cli.go:1670 msgid "Schedule" msgstr "执行周期" @@ -1206,7 +1370,7 @@ msgstr "执行周期" msgid "Session save handler is not files, cannot clean" msgstr "Session 保存处理程序不是 files,无法清理" -#: internal/service/cli.go:990 +#: internal/service/cli.go:1449 msgid "Setting not exists" msgstr "设置不存在" @@ -1214,6 +1378,10 @@ msgstr "设置不存在" msgid "Slow Requests" msgstr "慢请求" +#: internal/service/cli.go:1324 +msgid "Slug: %s, Channel: %s, Version: %s" +msgstr "Slug:%s,渠道:%s,版本:%s" + #: internal/apps/mysql/app.go:127 msgid "Sort Merge Passes" msgstr "排序后的合并次数" @@ -1240,7 +1408,7 @@ msgstr "存储使用" msgid "Subqueries without Index" msgstr "没有索引的子查询" -#: internal/service/cli.go:448 +#: internal/service/cli.go:523 msgid "Successfully obtained panel certificate via ACME" msgstr "成功通过 ACME 获取面板证书" @@ -1280,12 +1448,12 @@ msgstr "表" msgid "Target" msgstr "目标" -#: internal/service/cli.go:1155 +#: internal/service/cli.go:1669 #: internal/taskqueue/runner.go:170 msgid "Task" msgstr "任务" -#: internal/service/cli.go:977 +#: internal/service/cli.go:1436 msgid "Tasks cleared successfully" msgstr "任务已成功清除" @@ -1313,7 +1481,7 @@ msgstr "阈值" #: internal/biz/notify.go:191 #: internal/biz/tamper.go:311 #: internal/job/cert_renew.go:175 -#: internal/service/cli.go:1160 +#: internal/service/cli.go:1674 #: internal/service/user.go:182 #: internal/service/user.go:202 #: internal/service/user_passkey.go:305 @@ -1321,7 +1489,7 @@ msgstr "阈值" msgid "Time" msgstr "时间" -#: internal/service/cli.go:965 +#: internal/service/cli.go:1424 msgid "Time synchronized successfully" msgstr "时间同步成功" @@ -1426,23 +1594,31 @@ msgstr "卸载应用 %s" msgid "Uninstall environment %s" msgstr "卸载环境 %s" -#: internal/service/cli.go:859 +#: internal/service/cli.go:807 +msgid "Unsupported protocol: %s" +msgstr "不支持的协议:%s" + +#: internal/service/cli.go:1295 msgid "Unsupported rotation type: %s" msgstr "不支持的轮转类型:%s" +#: internal/service/cli.go:975 +msgid "Unsupported website type: %s" +msgstr "不支持的网站类型:%s" + #: internal/service/toolbox_log.go:255 msgid "Unused container images: %d" msgstr "未使用的容器镜像: %d" -#: internal/data/backup.go:1694 +#: internal/data/backup.go:1704 msgid "Unzip backup file failed: %v" msgstr "解压备份文件失败:%v" -#: internal/data/backup.go:1832 +#: internal/data/backup.go:1842 msgid "Unzip new version failed, missing file" msgstr "解压新版本失败,缺少文件" -#: internal/data/backup.go:1829 +#: internal/data/backup.go:1839 msgid "Unzip new version failed: %v" msgstr "解压新版本失败:%v" @@ -1454,7 +1630,7 @@ msgstr "更新操作" msgid "Update app %s" msgstr "更新应用 %s" -#: internal/data/backup.go:1849 +#: internal/data/backup.go:1859 msgid "Update completed" msgstr "更新完成" @@ -1479,16 +1655,26 @@ msgstr "运行时间(秒)" msgid "Uptime in Days" msgstr "已运行天数" +#: internal/service/cli.go:308 +msgid "User %s created successfully" +msgstr "用户 %s 创建成功" + +#: internal/service/cli.go:330 +msgid "User %s deleted successfully" +msgstr "用户 %s 删除成功" + #: internal/service/user.go:181 #: internal/service/user.go:201 #: internal/service/user_passkey.go:304 msgid "User Agent" msgstr "User Agent" -#: internal/service/cli.go:276 -#: internal/service/cli.go:303 -#: internal/service/cli.go:330 -#: internal/service/cli.go:372 +#: internal/service/cli.go:192 +#: internal/service/cli.go:321 +#: internal/service/cli.go:347 +#: internal/service/cli.go:378 +#: internal/service/cli.go:405 +#: internal/service/cli.go:447 msgid "User not exists" msgstr "用户不存在" @@ -1499,20 +1685,19 @@ msgstr "用户不存在" msgid "Username" msgstr "用户名" -#: internal/service/cli.go:286 +#: internal/service/cli.go:357 msgid "Username %s changed to %s successfully" msgstr "用户名 %s 已成功更改为 %s" -#: internal/service/cli.go:295 -msgid "Username and password cannot be empty" -msgstr "用户名和密码不能为空" - -#: internal/service/cli.go:325 -#: internal/service/cli.go:367 +#: internal/service/cli.go:286 +#: internal/service/cli.go:315 +#: internal/service/cli.go:365 +#: internal/service/cli.go:400 +#: internal/service/cli.go:442 msgid "Username cannot be empty" msgstr "用户名不能为空" -#: internal/service/cli.go:216 +#: internal/service/cli.go:236 msgid "Username: %s" msgstr "用户名: %s" @@ -1520,11 +1705,11 @@ msgstr "用户名: %s" msgid "VERSION" msgstr "版本" -#: internal/data/backup.go:1823 +#: internal/data/backup.go:1833 msgid "Verify download file failed: %v" msgstr "验证下载文件失败:%v" -#: internal/data/backup.go:1821 +#: internal/data/backup.go:1831 msgid "Verifying download file..." msgstr "验证下载文件……" @@ -1538,7 +1723,7 @@ msgstr "版本" msgid "Waiting" msgstr "正在驻留等待" -#: internal/service/cli.go:245 +#: internal/service/cli.go:265 msgid "Warning: After turning off panel HTTPS, the security of the panel will be greatly reduced, please operate with caution" msgstr "警告:关闭面板 HTTPS 后,面板的安全性将大大降低,请谨慎操作" @@ -1546,18 +1731,26 @@ msgstr "警告:关闭面板 HTTPS 后,面板的安全性将大大降低, msgid "Website" msgstr "网站" -#: internal/service/cli.go:612 +#: internal/service/cli.go:898 msgid "Website %s created successfully" msgstr "网站 %s 创建成功" -#: internal/service/cli.go:648 +#: internal/service/cli.go:966 msgid "Website %s deleted successfully" msgstr "网站 %s 删除成功" -#: internal/service/cli.go:629 +#: internal/service/cli.go:947 msgid "Website %s removed successfully" msgstr "网站 %s 移除成功" +#: internal/service/cli.go:1007 +msgid "Website %s written successfully" +msgstr "网站 %s 写入成功" + +#: internal/service/cli.go:987 +msgid "Website path must be an absolute path" +msgstr "网站路径必须是绝对路径" + #: internal/bootstrap/cli.go:33 msgid "Website:https://acepanel.net" msgstr "网站:https://acepanel.net" @@ -1619,7 +1812,7 @@ msgstr "[AcePanel] 备份失败" msgid "[AcePanel] Certificate Renewal Failed" msgstr "[AcePanel] 证书续签失败" -#: internal/service/cli.go:1153 +#: internal/service/cli.go:1667 msgid "[AcePanel] Cron Task Failed" msgstr "[AcePanel] 计划任务失败" @@ -1758,7 +1951,7 @@ msgstr "btrfs 文件系统未挂载,逻辑卷已扩展但文件系统未调整 msgid "can't download a directory" msgstr "无法下载目录" -#: internal/biz/website.go:140 +#: internal/biz/website.go:141 msgid "can't find %s database server, please add it first" msgstr "找不到 %s 数据库服务器,请先添加" @@ -1815,7 +2008,7 @@ msgstr "容器 %s 未运行" msgid "container status" msgstr "容器状态" -#: internal/data/backup.go:1469 +#: internal/data/backup.go:1474 msgid "could not find database backup file" msgstr "找不到数据库备份文件" @@ -1828,24 +2021,24 @@ msgstr "创建目录错误:%v" msgid "create target file error: %v" msgstr "创建目标文件错误:%v" -#: internal/service/cli.go:1154 +#: internal/service/cli.go:1668 msgid "cron task exited abnormally" msgstr "计划任务异常退出" -#: internal/data/backup.go:1491 +#: internal/data/backup.go:1496 msgid "database backup archive contains multiple dump files" msgstr "数据库备份压缩包包含多个转储文件" -#: internal/data/backup.go:1427 +#: internal/data/backup.go:1432 msgid "database backup contains too many nested archives" msgstr "数据库备份包含过多层嵌套压缩包" -#: internal/data/backup.go:1001 -#: internal/data/backup.go:1050 -#: internal/data/backup.go:583 -#: internal/data/backup.go:651 -#: internal/data/backup.go:716 -#: internal/data/backup.go:968 +#: internal/data/backup.go:1006 +#: internal/data/backup.go:1055 +#: internal/data/backup.go:588 +#: internal/data/backup.go:656 +#: internal/data/backup.go:721 +#: internal/data/backup.go:973 msgid "database does not exist: %s" msgstr "数据库不存在:%s" @@ -1882,8 +2075,8 @@ msgstr "数据源 %s 不存在" msgid "default site is only supported with nginx" msgstr "默认站点仅支持 nginx" -#: internal/biz/cert.go:232 -#: internal/biz/cert.go:360 +#: internal/biz/cert.go:240 +#: internal/biz/cert.go:367 msgid "deploying certificate to website" msgstr "部署证书到网站" @@ -1919,7 +2112,7 @@ msgstr "磁盘写入速率" msgid "downloading" msgstr "正在下载" -#: internal/data/backup.go:1248 +#: internal/data/backup.go:1253 msgid "dump.rdb not found in backup file" msgstr "备份文件中找不到 dump.rdb" @@ -2105,7 +2298,7 @@ msgstr "启用 %s 服务失败:%v" msgid "failed to encode auth: %v" msgstr "编码认证信息失败:%v" -#: internal/data/backup.go:1196 +#: internal/data/backup.go:1201 msgid "failed to export RDB snapshot" msgstr "导出 RDB 快照失败" @@ -2219,14 +2412,6 @@ msgstr "获取 apache 工作进程失败: %v" msgid "failed to get available timezones: %v" msgstr "获取可用时区失败: %v" -#: internal/apps/fail2ban/app.go:278 -msgid "failed to get banned ip list" -msgstr "获取被封禁的 ip 列表失败" - -#: internal/apps/fail2ban/app.go:268 -msgid "failed to get current banned list" -msgstr "获取当前被禁止的列表失败" - #: internal/service/toolbox_disk.go:33 msgid "failed to get disk list: %v" msgstr "获取磁盘列表失败:%v" @@ -2263,9 +2448,8 @@ msgstr "获取首页模板文件失败:%v" msgid "failed to get kafka status: %v" msgstr "获取 kafka 状态失败:%v" -#: internal/apps/supervisor/app.go:218 -#: internal/apps/supervisor/app.go:344 -#: internal/apps/supervisor/app.go:354 +#: internal/apps/supervisor/app.go:173 +#: internal/apps/supervisor/app.go:314 msgid "failed to get log path for process %s: %v" msgstr "获取进程 %s 的日志路径失败: %v" @@ -2332,9 +2516,9 @@ msgstr "获取最新版本下载链接失败" msgid "failed to get the latest version: %v" msgstr "获取最新版本失败: %v" -#: internal/apps/rsync/app.go:90 -msgid "failed to get the secret key for module %s" -msgstr "获取模块 %s 的密钥失败" +#: internal/apps/fail2ban/app.go:221 +msgid "failed to get the status of rule %s: %v" +msgstr "获取规则 %s 的状态失败:%v" #: internal/service/home.go:359 msgid "failed to get the update information: %v" @@ -2344,10 +2528,6 @@ msgstr "获取更新信息失败: %v" msgid "failed to get timezone: %v" msgstr "获取时区失败: %v" -#: internal/apps/fail2ban/app.go:273 -msgid "failed to get total banned list" -msgstr "获取全部被禁止的列表失败" - #: internal/data/app.go:163 msgid "failed to get uninstall script for app %s" msgstr "获取应用 %s 的卸载脚本失败" @@ -2389,10 +2569,10 @@ msgstr "在 %s 上打开 SFTP 会话失败:%v" msgid "failed to parse SMART info: %v" msgstr "解析 SMART 信息失败:%v" -#: internal/biz/cert.go:95 +#: internal/biz/cert.go:103 #: internal/biz/setting.go:241 #: internal/biz/setting.go:315 -#: internal/data/website.go:1244 +#: internal/data/website.go:1250 #: internal/data/website.go:862 msgid "failed to parse certificate: %v" msgstr "解析证书失败: %v" @@ -2409,10 +2589,10 @@ msgstr "解析 pgAdmin 登录页面失败" msgid "failed to parse phpMyAdmin login page" msgstr "解析 phpMyAdmin 登录页面失败" -#: internal/biz/cert.go:98 +#: internal/biz/cert.go:106 #: internal/biz/setting.go:244 #: internal/biz/setting.go:318 -#: internal/data/website.go:1247 +#: internal/data/website.go:1253 #: internal/data/website.go:865 msgid "failed to parse private key: %v" msgstr "解析私钥失败: %v" @@ -2425,11 +2605,6 @@ msgstr "解析 smartctl 输出失败:%v" msgid "failed to parse systemd config" msgstr "解析 systemd 配置失败" -#: internal/apps/fail2ban/app.go:334 -#: internal/apps/fail2ban/app.go:362 -msgid "failed to parse the ignoreip of fail2ban" -msgstr "解析 fail2ban 的 ignoreip 失败" - #: internal/service/home.go:308 #: internal/service/home.go:313 #: internal/service/home.go:344 @@ -2592,10 +2767,6 @@ msgstr "调整文件系统大小失败:%v" msgid "failed to restart %s service: %v" msgstr "重启 %s 服务失败: %v" -#: internal/apps/supervisor/app.go:103 -msgid "failed to restart %s: %v" -msgstr "重启 %s 失败: %v" - #: internal/apps/mysql/app.go:79 msgid "failed to restart MySQL: %v" msgstr "重启 MySQL 失败: %v" @@ -2745,7 +2916,7 @@ msgstr "文件太大,请下载后查看" msgid "gRPC is a high-performance, open-source, and general-purpose RPC framework" msgstr "gRPC 是一个高性能、开源和通用的 RPC 框架" -#: internal/apps/fail2ban/app.go:194 +#: internal/apps/fail2ban/app.go:120 msgid "get service port failed, please check if it is installed" msgstr "获取服务端口失败,请检查是否安装" @@ -2765,7 +2936,7 @@ msgstr "大于等于" msgid "if the site connects to a database, change the host in its config from the 1Panel container name to localhost" msgstr "如果网站连接数据库,请在其配置中将主机地址从 1Panel 容器名称改为 localhost" -#: internal/biz/cert.go:180 +#: internal/biz/cert.go:188 msgid "initializing ACME client" msgstr "初始化 ACME 客户端" @@ -2836,7 +3007,7 @@ msgstr "无效的用户ID,请重新登录" msgid "ionCube is a professional-grade PHP encryption and decryption tool (must be installed after OPcache)" msgstr "ionCube 是一个专业级的 PHP 加密解密工具(需在 OPcache 之后安装)" -#: internal/biz/cert.go:214 +#: internal/biz/cert.go:222 msgid "issuing certificate, domains: %s" msgstr "签发证书,域名:%s" @@ -2852,11 +3023,11 @@ msgstr "小于" msgid "less than or equal to" msgstr "小于等于" -#: internal/data/backup.go:336 +#: internal/data/backup.go:338 msgid "log file %s not exists" msgstr "日志文件 %s 不存在" -#: internal/data/website.go:1348 +#: internal/data/website.go:1354 msgid "maximum number of custom configurations reached (limit: %d)" msgstr "已达到自定义配置的最大数量(限制:%d)" @@ -2873,12 +3044,11 @@ msgstr "迁移正在运行中" msgid "migration is running, cannot reset" msgstr "迁移正在运行中,无法重置" -#: internal/apps/rsync/app.go:125 +#: internal/apps/rsync/app.go:65 msgid "module %s already exists" msgstr "模块 %s 已存在" -#: internal/apps/rsync/app.go:170 -#: internal/apps/rsync/app.go:212 +#: internal/apps/rsync/app.go:80 #: internal/service/environment_php.go:300 #: internal/service/environment_php.go:335 msgid "module %s does not exist" @@ -2952,8 +3122,8 @@ msgstr "文件中未找到规则" msgid "not running" msgstr "未运行" -#: internal/biz/cert.go:222 -#: internal/biz/cert.go:350 +#: internal/biz/cert.go:230 +#: internal/biz/cert.go:357 msgid "obtaining and saving certificate" msgstr "获取并保存证书" @@ -2969,7 +3139,7 @@ msgstr "打开文件错误: %v" msgid "open upload file error: %v" msgstr "打开上传文件错误:%v" -#: internal/data/backup.go:1909 +#: internal/data/backup.go:1919 msgid "panel binary is missing after update" msgstr "更新后面板二进制文件丢失" @@ -2981,7 +3151,7 @@ msgstr "更新后面板二进制文件丢失" msgid "panel certificate" msgstr "面板证书" -#: internal/data/backup.go:1773 +#: internal/data/backup.go:1783 msgid "panel is already updating, please try again later" msgstr "面板正在更新,请稍后再试" @@ -3010,7 +3180,7 @@ msgstr "面板上报了健康问题" msgid "panel run error, please check or contact support" msgstr "面板运行错误,请检查或联系技术支持" -#: internal/data/backup.go:1905 +#: internal/data/backup.go:1915 msgid "panel service file is missing" msgstr "面板服务文件丢失" @@ -3030,11 +3200,11 @@ msgstr "密钥登录失败:%v" msgid "passkey registration failed: %v" msgstr "通行密钥注册失败:%v" -#: internal/data/backup.go:817 +#: internal/data/backup.go:822 msgid "path does not exist: %s" msgstr "路径不存在:%s" -#: internal/data/backup.go:820 +#: internal/data/backup.go:825 msgid "path is not a directory: %s" msgstr "路径不是目录:%s" @@ -3109,11 +3279,11 @@ msgstr "请至少选择一个迁移资源" msgid "port is already in use" msgstr "端口已被占用" -#: internal/biz/cert.go:299 +#: internal/biz/cert.go:307 msgid "preparing renewal" msgstr "准备续签" -#: internal/apps/supervisor/app.go:310 +#: internal/apps/supervisor/app.go:268 msgid "process %s already exists" msgstr "进程 %s 已存在" @@ -3137,6 +3307,15 @@ msgstr "项目状态" msgid "protobuf is a library for serializing and deserializing data" msgstr "protobuf 是一个用于序列化和反序列化数据的库" +#: internal/apps/frp/app.go:279 +msgid "proxy %s already exists" +msgstr "代理 %s 已存在" + +#: internal/apps/frp/app.go:296 +#: internal/apps/frp/app.go:312 +msgid "proxy %s does not exist" +msgstr "代理 %s 不存在" + #: internal/service/environment_php.go:513 msgid "rdkafka is a library for connecting to Apache Kafka" msgstr "rdkafka 是一个用于连接 Apache Kafka 的库" @@ -3153,11 +3332,11 @@ msgstr "读取分块数据错误:%v" msgid "read directory error: %v" msgstr "读取目录错误:%v" -#: internal/biz/cert.go:343 +#: internal/biz/cert.go:350 msgid "renewal failed, attempting re-issuance" msgstr "续签失败,尝试重新签发" -#: internal/biz/cert.go:337 +#: internal/biz/cert.go:344 msgid "renewing certificate, domains: %s" msgstr "续签证书,域名:%s" @@ -3170,15 +3349,19 @@ msgstr "续签证书,域名:%s" msgid "resource no longer exists on the source server" msgstr "源服务器上已不存在该资源" -#: internal/apps/fail2ban/app.go:117 +#: internal/apps/fail2ban/app.go:130 msgid "rule already exists" msgstr "规则已存在" -#: internal/apps/fail2ban/app.go:238 +#: internal/apps/fail2ban/app.go:165 +#: internal/apps/fail2ban/app.go:192 msgid "rule not found" msgstr "找不到规则" -#: internal/service/cli.go:91 +#: internal/service/cli.go:103 +#: internal/service/cli.go:1612 +#: internal/service/cli.go:748 +#: internal/service/cli.go:850 msgid "running" msgstr "运行中" @@ -3245,6 +3428,10 @@ msgstr "签名已过期" msgid "smartmontools is not installed, please install it first (e.g., apt install smartmontools or dnf install smartmontools)" msgstr "未安装 smartmontools,请先安装它(例如:apt install smartmontools 或 dnf install smartmontools)" +#: internal/data/cert.go:205 +msgid "some of the selected websites do not exist" +msgstr "所选网站中有部分不存在" + #: internal/service/ws.go:290 msgid "source and destination are the same file" msgstr "源文件与目标文件相同" @@ -3261,7 +3448,10 @@ msgstr "sqlite 不支持从此处删除表" msgid "sqlsrv is a driver for connecting to SQL Server" msgstr "sqlsrv 是一个用于连接 SQL Server 的驱动程序" -#: internal/service/cli.go:93 +#: internal/service/cli.go:105 +#: internal/service/cli.go:1610 +#: internal/service/cli.go:746 +#: internal/service/cli.go:848 msgid "stopped" msgstr "已停止" @@ -3451,20 +3641,20 @@ msgstr "目标网站目录不为空" msgid "this 1Panel website type is not supported for automatic migration: %s" msgstr "不支持自动迁移此类 1Panel 网站:%s" -#: internal/biz/cert.go:404 +#: internal/biz/cert.go:411 msgid "this certificate has not been obtained successfully and cannot be deployed" msgstr "此证书尚未成功签发,无法部署" -#: internal/biz/cert.go:311 +#: internal/biz/cert.go:319 msgid "this certificate has not been obtained successfully and cannot be renewed" msgstr "此证书尚未成功签发,无法续签" -#: internal/biz/cert.go:202 -#: internal/biz/cert.go:325 +#: internal/biz/cert.go:210 +#: internal/biz/cert.go:333 msgid "this certificate is not associated with a website and cannot be obtained. You can try to obtain it manually" msgstr "此证书未与任何网站关联,无法签发。您可以尝试使用手动签发" -#: internal/data/cert.go:313 +#: internal/data/cert.go:368 msgid "this certificate is not associated with an ACME account and cannot be obtained" msgstr "此证书未与 ACME 帐户关联,无法签发" @@ -3490,18 +3680,18 @@ msgstr "离线模式下无法检查更新" msgid "unable to update in offline mode" msgstr "离线模式下无法更新" -#: internal/data/backup.go:892 +#: internal/data/backup.go:897 msgid "uncompressed backup is empty, restore aborted" msgstr "解压后的备份为空,已中止恢复" #: internal/biz/toolbox_migration_import.go:320 #: internal/biz/toolbox_migration_import.go:89 -#: internal/service/cli.go:88 +#: internal/service/cli.go:100 msgid "unknown" msgstr "未知" #: internal/data/backup.go:157 -#: internal/data/backup.go:290 +#: internal/data/backup.go:292 msgid "unknown backup type" msgstr "未知备份类型" @@ -3510,11 +3700,11 @@ msgstr "未知备份类型" msgid "unknown log type" msgstr "未知日志类型" -#: internal/apps/fail2ban/app.go:190 +#: internal/apps/fail2ban/app.go:116 msgid "unknown service" msgstr "未知服务" -#: internal/data/backup.go:525 +#: internal/data/backup.go:530 msgid "unknown storage type" msgstr "未知存储类型" @@ -3557,17 +3747,17 @@ msgstr "不支持的源面板:%s" msgid "unsupported system" msgstr "不支持的系统" -#: internal/data/website.go:1437 -#: internal/data/website.go:1501 +#: internal/data/website.go:1443 +#: internal/data/website.go:1507 msgid "unsupported web server: %s" msgstr "不支持的 Web 服务器:%s" -#: internal/data/cert.go:276 -#: internal/data/website.go:1412 +#: internal/data/cert.go:331 +#: internal/data/website.go:1418 msgid "unsupported website type: %s" msgstr "不支持的网站类型:%s" -#: internal/biz/cert.go:145 +#: internal/biz/cert.go:153 msgid "upload certificate cannot be set to auto renewal" msgstr "上传的证书无法设置为自动续签" @@ -3587,6 +3777,15 @@ msgstr "正在上传" msgid "username or password error" msgstr "用户名或密码错误" +#: internal/apps/frp/app.go:365 +msgid "visitor %s already exists" +msgstr "访客 %s 已存在" + +#: internal/apps/frp/app.go:382 +#: internal/apps/frp/app.go:398 +msgid "visitor %s does not exist" +msgstr "访客 %s 不存在" + #: internal/service/backup_storage.go:156 msgid "webdav configuration error: %v" msgstr "WebDAV 配置错误:%v" @@ -3647,12 +3846,12 @@ msgstr "网站不存在" msgid "website type is unchanged" msgstr "网站类型未更改" -#: internal/biz/cert.go:208 -#: internal/biz/cert.go:329 +#: internal/biz/cert.go:216 +#: internal/biz/cert.go:337 msgid "wildcard domains cannot use HTTP verification" msgstr "通配符域名不能使用 HTTP 验证" -#: internal/biz/website.go:255 +#: internal/biz/website.go:256 msgid "wildcard domains require DNS verification, please select a DNS provider" msgstr "通配符域名需要 DNS 验证,请选择一个 DNS 提供商" @@ -3688,18 +3887,18 @@ msgstr "yaml 是一个用于处理 YAML 的库" msgid "zstd is a library for compressing and decompressing files" msgstr "zstd 是一个压缩和解压文件的库" -#: internal/data/backup.go:1683 +#: internal/data/backup.go:1688 msgid "|-Backup file used: %s" msgstr "|-使用的备份文件:%s" -#: internal/data/backup.go:1217 +#: internal/data/backup.go:1222 #: internal/data/backup.go:232 #: internal/data/backup.go:269 -#: internal/data/backup.go:565 -#: internal/data/backup.go:632 -#: internal/data/backup.go:695 -#: internal/data/backup.go:788 -#: internal/data/backup.go:852 +#: internal/data/backup.go:570 +#: internal/data/backup.go:637 +#: internal/data/backup.go:700 +#: internal/data/backup.go:793 +#: internal/data/backup.go:857 msgid "|-Backup file: %s" msgstr "|-备份文件:%s" @@ -3720,81 +3919,93 @@ msgstr "|-备份时间:%s" msgid "|-Backup type: %s" msgstr "|-备份类型:%s" -#: internal/service/cli.go:714 +#: internal/service/cli.go:1142 msgid "|-Backup type: panel" msgstr "|-备份类型:面板" -#: internal/data/backup.go:421 -#: internal/data/backup.go:482 +#: internal/service/cli.go:1100 +msgid "|-Certificate %d renewal failed: %v" +msgstr "|-证书 %d 续签失败:%v" + +#: internal/service/cli.go:1103 +msgid "|-Certificate %d renewed successfully" +msgstr "|-证书 %d 续签成功" + +#: internal/data/backup.go:423 +#: internal/data/backup.go:487 msgid "|-Cleaning expired file: %s" msgstr "|-清理过期文件:%s" -#: internal/service/cli.go:730 -#: internal/service/cli.go:837 +#: internal/service/cli.go:1157 +#: internal/service/cli.go:1277 msgid "|-Cleaning target: %s" msgstr "|-清理目标:%s" -#: internal/service/cli.go:729 -#: internal/service/cli.go:836 +#: internal/service/cli.go:1156 +#: internal/service/cli.go:1276 msgid "|-Cleaning type: %s" msgstr "|-清理类型:%s" -#: internal/data/backup.go:939 +#: internal/data/backup.go:944 msgid "|-File size: %s" msgstr "|-文件大小:%s" -#: internal/data/backup.go:1652 -#: internal/data/backup.go:1758 +#: internal/data/backup.go:1657 +#: internal/data/backup.go:1768 msgid "|-Fix completed" msgstr "|-修复完成" -#: internal/data/backup.go:911 +#: internal/data/backup.go:916 msgid "|-Fixing file permissions..." msgstr "|-正在修复文件权限……" -#: internal/data/backup.go:1645 +#: internal/data/backup.go:1650 msgid "|-Found %s.db is abnormal, removed it" msgstr "|-发现 %s.db 异常,已删除" -#: internal/data/backup.go:1021 +#: internal/data/backup.go:1026 msgid "|-Importing PostgreSQL backup..." msgstr "|-正在导入 PostgreSQL 备份..." -#: internal/data/backup.go:1056 -#: internal/data/backup.go:983 +#: internal/data/backup.go:1061 +#: internal/data/backup.go:988 msgid "|-Importing SQL into database..." msgstr "|-正在将 SQL 导入数据库……" -#: internal/data/backup.go:1098 +#: internal/data/backup.go:1103 msgid "|-Importing table: %s" msgstr "|-正在导入表:%s" -#: internal/data/backup.go:946 +#: internal/data/backup.go:951 msgid "|-Importing: %s (%s/s)" msgstr "|-正在导入:%s(%s/s)" -#: internal/data/backup.go:942 +#: internal/data/backup.go:947 msgid "|-Importing: %s / %s (%.1f%%, %s/s)" msgstr "|-正在导入:%s / %s(%.1f%%,%s/s)" -#: internal/service/cli.go:731 -#: internal/service/cli.go:838 +#: internal/service/cli.go:1158 +#: internal/service/cli.go:1278 msgid "|-Keep count: %d" msgstr "|-保留数量:%d" -#: internal/data/backup.go:1699 +#: internal/data/backup.go:1709 msgid "|-Move backup file..." msgstr "|-移动备份文件……" -#: internal/data/backup.go:1294 +#: internal/data/backup.go:1299 msgid "|-Re-enabling AOF..." msgstr "|-正在重新启用 AOF……" -#: internal/data/backup.go:1264 +#: internal/service/cli.go:1095 +msgid "|-Renewing certificate %d..." +msgstr "|-正在续签证书 %d..." + +#: internal/data/backup.go:1269 msgid "|-Replacing dump.rdb..." msgstr "|-正在替换 dump.rdb……" -#: internal/data/backup.go:901 +#: internal/data/backup.go:906 msgid "|-Replacing website files..." msgstr "|-正在替换网站文件……" @@ -3802,7 +4013,7 @@ msgstr "|-正在替换网站文件……" msgid "|-Restore target: %s" msgstr "|-恢复目标:%s" -#: internal/data/backup.go:294 +#: internal/data/backup.go:296 msgid "|-Restore time: %s" msgstr "|-恢复时间:%s" @@ -3810,81 +4021,85 @@ msgstr "|-恢复时间:%s" msgid "|-Restore type: %s" msgstr "|-恢复类型:%s" -#: internal/data/backup.go:1080 +#: internal/data/backup.go:1085 msgid "|-Restoring schema..." msgstr "|-正在恢复表结构……" -#: internal/service/cli.go:761 -#: internal/service/cli.go:807 +#: internal/service/cli.go:1201 +#: internal/service/cli.go:1247 msgid "|-Rotation target: %s" msgstr "|-轮转目标:%s" -#: internal/service/cli.go:806 +#: internal/service/cli.go:1246 msgid "|-Rotation type: container" msgstr "|-轮转类型:container" -#: internal/service/cli.go:760 +#: internal/service/cli.go:1200 msgid "|-Rotation type: website" msgstr "|-轮转类型:website" -#: internal/data/backup.go:1735 +#: internal/service/cli.go:1629 +msgid "|-Running cron task: %s" +msgstr "|-正在运行计划任务:%s" + +#: internal/data/backup.go:1745 msgid "|-Set key file permissions..." msgstr "|-设置关键文件权限……" -#: internal/data/backup.go:1598 +#: internal/data/backup.go:1603 msgid "|-Start fixing the panel..." msgstr "|-开始修复面板……" -#: internal/data/backup.go:1284 +#: internal/data/backup.go:1289 msgid "|-Starting %s service (loading RDB)..." msgstr "|-正在启动 %s 服务(加载 RDB)……" -#: internal/data/backup.go:1253 +#: internal/data/backup.go:1258 msgid "|-Stopping %s service..." msgstr "|-正在停止 %s 服务……" -#: internal/data/backup.go:1069 -#: internal/data/backup.go:1187 -#: internal/data/backup.go:1240 -#: internal/data/backup.go:544 -#: internal/data/backup.go:594 -#: internal/data/backup.go:662 -#: internal/data/backup.go:727 -#: internal/data/backup.go:831 +#: internal/data/backup.go:1074 +#: internal/data/backup.go:1192 +#: internal/data/backup.go:1245 +#: internal/data/backup.go:549 +#: internal/data/backup.go:599 +#: internal/data/backup.go:667 +#: internal/data/backup.go:732 +#: internal/data/backup.go:836 msgid "|-Temporary directory: %s" msgstr "|-临时目录:%s" -#: internal/data/backup.go:1016 -#: internal/data/backup.go:1070 -#: internal/data/backup.go:1241 -#: internal/data/backup.go:875 -#: internal/data/backup.go:978 +#: internal/data/backup.go:1021 +#: internal/data/backup.go:1075 +#: internal/data/backup.go:1246 +#: internal/data/backup.go:880 +#: internal/data/backup.go:983 msgid "|-Uncompressing backup..." msgstr "|-正在解压备份……" -#: internal/data/backup.go:1688 +#: internal/data/backup.go:1698 msgid "|-Unzip backup file..." msgstr "|-解压备份文件……" -#: internal/data/backup.go:874 +#: internal/data/backup.go:879 msgid "|-Website path: %s" msgstr "|-网站路径:%s" #: internal/data/backup.go:134 -#: internal/service/cli.go:712 +#: internal/service/cli.go:1140 msgid "★ Start backup [%s]" msgstr "★ 开始备份 [%s]" -#: internal/service/cli.go:727 +#: internal/service/cli.go:1154 msgid "★ Start cleaning [%s]" msgstr "★ 开始清理 [%s]" -#: internal/service/cli.go:834 +#: internal/service/cli.go:1274 msgid "★ Start cleaning rotated logs [%s]" msgstr "★ 开始清理轮转日志 [%s]" -#: internal/service/cli.go:758 -#: internal/service/cli.go:804 +#: internal/service/cli.go:1198 +#: internal/service/cli.go:1244 msgid "★ Start log rotation [%s]" msgstr "★ 开始轮转日志 [%s]" @@ -3900,25 +4115,25 @@ msgstr "☆ 备份完成 [%s]" msgid "☆ Backup failed: %v [%s]" msgstr "☆ 备份失败:%v [%s]" -#: internal/service/cli.go:719 +#: internal/service/cli.go:1147 msgid "☆ Backup successful [%s]" msgstr "☆ 备份成功 [%s]" -#: internal/service/cli.go:745 -#: internal/service/cli.go:870 +#: internal/service/cli.go:1172 +#: internal/service/cli.go:1311 msgid "☆ Cleaning successful [%s]" msgstr "☆ 清理成功 [%s]" -#: internal/data/backup.go:299 +#: internal/data/backup.go:301 msgid "☆ Restore completed [%s]" msgstr "☆ 恢复完成 [%s]" -#: internal/data/backup.go:297 +#: internal/data/backup.go:299 msgid "☆ Restore failed: %v [%s]" msgstr "☆ 恢复失败:%v [%s]" -#: internal/service/cli.go:783 -#: internal/service/cli.go:822 +#: internal/service/cli.go:1223 +#: internal/service/cli.go:1262 msgid "☆ Rotation successful [%s]" msgstr "☆ 轮转成功 [%s]" diff --git a/pkg/embed/locales/zh_TW/backend.po b/pkg/embed/locales/zh_TW/backend.po index 8bc21b39..1d886d18 100644 --- a/pkg/embed/locales/zh_TW/backend.po +++ b/pkg/embed/locales/zh_TW/backend.po @@ -13,7 +13,11 @@ msgstr "" "X-Crowdin-File-ID: 1166\n" "Project-Id-Version: acepanel\n" "Language-Team: Chinese Traditional\n" -"PO-Revision-Date: 2026-08-15 10:05\n" +"PO-Revision-Date: 2026-08-15 15:27\n" + +#: internal/service/cli.go:1107 +msgid "%d certificate(s) failed to renew" +msgstr "%d 個證書續簽失敗" #: internal/service/toolbox_log.go:257 msgid "%d images" @@ -39,11 +43,11 @@ msgstr "1 分鐘負載" msgid "15 minutes load" msgstr "15 分鐘負載" -#: internal/service/cli.go:341 +#: internal/service/cli.go:416 msgid "2FA disabled for user %s" msgstr "已停用使用者 %s 的兩步驟驗證" -#: internal/service/cli.go:349 +#: internal/service/cli.go:424 msgid "2FA url: %s" msgstr "兩步驗證 URL: %s" @@ -71,19 +75,19 @@ msgstr "AcePanel" msgid "AcePanel CLI Tool" msgstr "AcePanel 命令列工具" -#: internal/service/cli.go:105 +#: internal/service/cli.go:117 msgid "AcePanel service restarted" msgstr "AcePanel 服務已重新啟動" -#: internal/service/cli.go:121 +#: internal/service/cli.go:133 msgid "AcePanel service started" msgstr "AcePanel 服務已啟動" -#: internal/service/cli.go:96 +#: internal/service/cli.go:108 msgid "AcePanel service status: %s" msgstr "AcePanel 服務狀態:%s" -#: internal/service/cli.go:113 +#: internal/service/cli.go:125 msgid "AcePanel service stopped" msgstr "AcePanel 服務已停止" @@ -117,11 +121,11 @@ msgstr "活動連接" msgid "Aliyun" msgstr "阿里雲" -#: internal/service/cli.go:381 +#: internal/service/cli.go:456 msgid "All passkeys cleared for user %s" msgstr "已清除使用者 %s 的所有通行金鑰" -#: internal/service/cli.go:1037 +#: internal/service/cli.go:1496 msgid "Already initialized" msgstr "已經初始化過了" @@ -129,27 +133,27 @@ msgstr "已經初始化過了" msgid "App %s %s" msgstr "應用 %s %s" -#: internal/service/cli.go:886 +#: internal/service/cli.go:1345 msgid "App %s installed successfully" msgstr "應用程式 %s 安裝成功" -#: internal/service/cli.go:900 +#: internal/service/cli.go:1359 msgid "App %s uninstalled successfully" msgstr "應用程式 %s 解除安裝成功" -#: internal/service/cli.go:914 +#: internal/service/cli.go:1373 msgid "App %s updated successfully" msgstr "應用程式 %s 更新成功" -#: internal/service/cli.go:883 +#: internal/service/cli.go:1342 msgid "App install failed: %v" msgstr "應用程式安裝失敗:%v" -#: internal/service/cli.go:897 +#: internal/service/cli.go:1356 msgid "App uninstall failed: %v" msgstr "應用程式解除安裝失敗:%v" -#: internal/service/cli.go:911 +#: internal/service/cli.go:1370 msgid "App update failed: %v" msgstr "應用程式更新失敗:%v" @@ -157,15 +161,15 @@ msgstr "應用程式更新失敗:%v" msgid "Application Pool" msgstr "應用程序池" -#: internal/data/backup.go:1838 +#: internal/data/backup.go:1848 msgid "Applying update failed: %v" msgstr "應用程式更新失敗:%v" -#: internal/data/backup.go:1836 +#: internal/data/backup.go:1846 msgid "Applying update..." msgstr "應用程式更新中……" -#: internal/data/backup.go:1800 +#: internal/data/backup.go:1810 msgid "Backing up panel data..." msgstr "備份面板資料……" @@ -173,22 +177,34 @@ msgstr "備份面板資料……" msgid "Backup %s: %s" msgstr "備份 %s: %s" -#: internal/service/cli.go:716 +#: internal/service/cli.go:1144 msgid "Backup failed: %v" msgstr "備份失敗:%v" -#: internal/service/cli.go:534 +#: internal/service/cli.go:651 msgid "Bind IP disabled" msgstr "繫結 IP 已禁用" -#: internal/service/cli.go:550 +#: internal/service/cli.go:635 +msgid "Bind IP enabled: %s" +msgstr "已啟用綁定 IP:%s" + +#: internal/service/cli.go:688 msgid "Bind UA disabled" msgstr "繫結 UA 已禁用" -#: internal/service/cli.go:518 +#: internal/service/cli.go:672 +msgid "Bind UA enabled: %s" +msgstr "已啟用綁定 UA:%s" + +#: internal/service/cli.go:614 msgid "Bind domain disabled" msgstr "繫結網域已禁用" +#: internal/service/cli.go:598 +msgid "Bind domain enabled: %s" +msgstr "已啟用綁定域名:%s" + #: internal/apps/rocketmq/app.go:65 msgid "Broker Name" msgstr "Broker 名稱" @@ -248,21 +264,25 @@ msgstr "Calendar 是一個用於處理日期的庫" msgid "Certificate" msgstr "證書" +#: internal/service/cli.go:930 +msgid "Certificate for website %s updated successfully" +msgstr "網站 %s 的證書更新成功" + #: internal/biz/notify.go:190 msgid "Channel" msgstr "渠道" -#: internal/service/cli.go:735 -#: internal/service/cli.go:740 +#: internal/service/cli.go:1162 +#: internal/service/cli.go:1167 msgid "Cleaning failed: %v" msgstr "清理失敗:%v" -#: internal/data/backup.go:1691 +#: internal/data/backup.go:1701 msgid "Cleaning temporary directory failed: %v" msgstr "清理臨時目錄失敗:%v" -#: internal/data/backup.go:424 -#: internal/data/backup.go:485 +#: internal/data/backup.go:426 +#: internal/data/backup.go:490 msgid "Cleanup failed: %v" msgstr "清理失敗:%v" @@ -300,7 +320,7 @@ msgstr "設定重載成功" msgid "Connected Clients" msgstr "已連接客戶端數" -#: internal/service/cli.go:798 +#: internal/service/cli.go:1238 msgid "Container %s has no log file" msgstr "容器 %s 沒有日誌檔案" @@ -312,6 +332,26 @@ msgstr "次數" msgid "Create container %s" msgstr "建立容器 %s" +#: internal/service/cli.go:1648 +msgid "Cron task %d disabled" +msgstr "計劃任務 %d 已停用" + +#: internal/service/cli.go:1650 +msgid "Cron task %d enabled" +msgstr "計劃任務 %d 已啟用" + +#: internal/service/cli.go:1638 +msgid "Cron task %s executed successfully" +msgstr "計劃任務 %s 執行成功" + +#: internal/service/cli.go:1635 +msgid "Cron task %s failed: %v" +msgstr "計劃任務 %s 執行失敗:%v" + +#: internal/service/cli.go:1626 +msgid "Cron task script %s not exists" +msgstr "計劃任務指令碼 %s 不存在" + #: internal/apps/mongodb/app.go:95 msgid "Current Connections" msgstr "目前連線數" @@ -325,7 +365,7 @@ msgstr "目前值" msgid "DESCRIPTION" msgstr "描述" -#: internal/service/cli.go:163 +#: internal/service/cli.go:175 msgid "Data synchronized successfully" msgstr "資料同步成功" @@ -333,14 +373,18 @@ msgstr "資料同步成功" msgid "Database" msgstr "資料庫" -#: internal/service/cli.go:672 +#: internal/service/cli.go:1043 msgid "Database server %s added successfully" msgstr "資料庫伺服器 %s 新增成功" -#: internal/service/cli.go:686 +#: internal/service/cli.go:1057 msgid "Database server %s deleted successfully" msgstr "資料庫伺服器 %s 刪除成功" +#: internal/service/cli.go:901 +msgid "Database: %s, username: %s, password: %s" +msgstr "資料庫:%s,使用者名稱:%s,密碼:%s" + #: internal/apps/clickhouse/app.go:102 msgid "Databases" msgstr "資料庫" @@ -357,16 +401,16 @@ msgstr "詳情" msgid "Docker container logs: %d files" msgstr "Docker 容器日誌:%d 個檔案" -#: internal/service/cli.go:134 +#: internal/service/cli.go:146 msgid "Download URL is empty" msgstr "下載 URL 為空" -#: internal/data/backup.go:1811 -#: internal/data/backup.go:1814 +#: internal/data/backup.go:1821 +#: internal/data/backup.go:1824 msgid "Download failed: %v" msgstr "下載失敗:%v" -#: internal/data/backup.go:1817 +#: internal/data/backup.go:1827 msgid "Download file check failed" msgstr "下載檔案檢查失敗" @@ -374,7 +418,7 @@ msgstr "下載檔案檢查失敗" msgid "Download remote file %v" msgstr "下載遠端檔案 %v" -#: internal/data/backup.go:1809 +#: internal/data/backup.go:1819 msgid "Downloading new version..." msgstr "正在下載新版本……" @@ -386,16 +430,16 @@ msgstr "Elasticsearch 指標" msgid "Enchant is a spell-checking library" msgstr "Enchant 是一個拼寫檢查庫" -#: internal/service/cli.go:502 +#: internal/service/cli.go:577 msgid "Entrance disabled" msgstr "入口已禁用" -#: internal/service/cli.go:485 +#: internal/service/cli.go:560 msgid "Entrance enabled" msgstr "入口已啟用" -#: internal/service/cli.go:223 -#: internal/service/cli.go:486 +#: internal/service/cli.go:243 +#: internal/service/cli.go:561 msgid "Entrance: %s" msgstr "入口: %s" @@ -413,7 +457,7 @@ msgstr "Event 是一個用於處理事件的庫" msgid "Exif is a library for reading and writing image metadata" msgstr "Exif 是一個用於讀寫影像中繼資料的函式庫" -#: internal/service/cli.go:1157 +#: internal/service/cli.go:1671 msgid "Exit Code" msgstr "結束代碼" @@ -421,7 +465,7 @@ msgstr "結束代碼" msgid "Expire Time" msgstr "過期時間" -#: internal/data/backup.go:1827 +#: internal/data/backup.go:1837 msgid "Extracting new version..." msgstr "正在提取新版本……" @@ -430,143 +474,173 @@ msgstr "正在提取新版本……" msgid "Failed Attempts" msgstr "失敗次數" -#: internal/service/cli.go:339 +#: internal/service/cli.go:414 msgid "Failed to change 2FA status: %v" msgstr "修改兩步驗證狀態失敗:%v" -#: internal/service/cli.go:314 +#: internal/service/cli.go:389 msgid "Failed to change password: %v" msgstr "修改密碼失敗:%v" -#: internal/service/cli.go:283 +#: internal/service/cli.go:354 msgid "Failed to change username: %v" msgstr "修改使用者名稱失敗:%v" -#: internal/data/backup.go:1793 +#: internal/data/backup.go:1803 msgid "Failed to clean up temporary directory: %v" msgstr "清理臨時目錄失敗:%v" -#: internal/service/cli.go:378 +#: internal/service/cli.go:453 msgid "Failed to clear passkeys: %v" msgstr "清除通行金鑰失敗:%v" -#: internal/service/cli.go:974 +#: internal/service/cli.go:1433 msgid "Failed to clear tasks: %v" msgstr "清除任務失敗:%v" -#: internal/data/backup.go:1807 +#: internal/data/backup.go:1817 msgid "Failed to create temporary directory: %v" msgstr "建立臨時目錄失敗:%v" -#: internal/service/cli.go:949 +#: internal/service/cli.go:305 +msgid "Failed to create user: %v" +msgstr "建立使用者失敗:%v" + +#: internal/service/cli.go:1408 msgid "Failed to delete app: %v" msgstr "刪除應用失敗:%v" -#: internal/service/cli.go:1028 +#: internal/service/cli.go:1487 msgid "Failed to delete setting: %v" msgstr "刪除設定失敗:%v" -#: internal/service/cli.go:347 +#: internal/service/cli.go:327 +msgid "Failed to delete user: %v" +msgstr "刪除使用者失敗:%v" + +#: internal/service/cli.go:422 msgid "Failed to generate 2FA: %v" msgstr "生成兩步驗證失敗:%v" -#: internal/service/cli.go:187 -#: internal/service/cli.go:310 +#: internal/service/cli.go:207 +#: internal/service/cli.go:385 msgid "Failed to generate password: %v" msgstr "生成密碼失敗:%v" -#: internal/service/cli.go:444 +#: internal/service/cli.go:519 msgid "Failed to get ACME account: %v" msgstr "取得 ACME 帳戶失敗:%v" -#: internal/service/cli.go:440 +#: internal/service/cli.go:515 msgid "Failed to get a panel user: %v" msgstr "取得面板使用者失敗:%v" -#: internal/service/cli.go:929 +#: internal/service/cli.go:1319 +msgid "Failed to get app list: %v" +msgstr "獲取應用列表失敗:%v" + +#: internal/service/cli.go:1388 msgid "Failed to get app: %v" msgstr "取得應用失敗:%v" -#: internal/service/cli.go:794 +#: internal/service/cli.go:1234 msgid "Failed to get container log path: %v" msgstr "無法取得容器日誌路徑:%v" -#: internal/service/cli.go:213 +#: internal/service/cli.go:233 msgid "Failed to get entrance" msgstr "取得入口失敗" -#: internal/service/cli.go:129 +#: internal/service/cli.go:141 msgid "Failed to get latest version: %v" msgstr "無法取得最新版本:%v" -#: internal/service/cli.go:209 +#: internal/service/cli.go:229 msgid "Failed to get port" msgstr "無法取得連接埠" -#: internal/service/cli.go:1009 -#: internal/service/cli.go:992 +#: internal/service/cli.go:1451 +#: internal/service/cli.go:1468 msgid "Failed to get setting: %v" msgstr "無法取得設定:%v" -#: internal/service/cli.go:174 +#: internal/service/cli.go:194 msgid "Failed to get user info: %v" msgstr "無法取得使用者資訊:%v" -#: internal/service/cli.go:253 +#: internal/service/cli.go:273 msgid "Failed to get user list: %v" msgstr "無法取得使用者清單:%v" -#: internal/service/cli.go:278 -#: internal/service/cli.go:305 -#: internal/service/cli.go:332 -#: internal/service/cli.go:374 +#: internal/service/cli.go:323 +#: internal/service/cli.go:349 +#: internal/service/cli.go:380 +#: internal/service/cli.go:407 +#: internal/service/cli.go:449 msgid "Failed to get user: %v" msgstr "無法取得使用者:%v" -#: internal/service/cli.go:450 +#: internal/service/cli.go:994 +msgid "Failed to get website: %v" +msgstr "獲取網站失敗:%v" + +#: internal/service/cli.go:525 msgid "Failed to obtain panel certificate via ACME, using self-signed certificate" msgstr "無法透過 ACME 取得面板憑證,使用自簽憑證" -#: internal/data/backup.go:1796 +#: internal/data/backup.go:1806 msgid "Failed to optimize database: %v" msgstr "優化資料庫失敗:%v" -#: internal/service/cli.go:354 +#: internal/service/cli.go:910 +msgid "Failed to read certificate file: %v" +msgstr "讀取證書檔案失敗:%v" + +#: internal/service/cli.go:1724 +#: internal/service/cli.go:429 msgid "Failed to read input: %v" msgstr "讀取輸入失敗: %v" -#: internal/data/backup.go:1642 +#: internal/service/cli.go:914 +msgid "Failed to read private key file: %v" +msgstr "讀取私鑰檔案失敗:%v" + +#: internal/data/backup.go:1647 msgid "Failed to remove %s.db: %v" msgstr "無法刪除 %s.db:%v" -#: internal/service/cli.go:936 +#: internal/service/cli.go:1395 msgid "Failed to save app: %v" msgstr "無法儲存應用:%v" -#: internal/service/cli.go:1015 -#: internal/service/cli.go:198 +#: internal/service/cli.go:1474 +#: internal/service/cli.go:218 msgid "Failed to save setting: %v" msgstr "無法儲存設定:%v" -#: internal/service/cli.go:193 +#: internal/service/cli.go:213 msgid "Failed to save user info: %v" msgstr "無法儲存使用者資訊:%v" +#: internal/service/cli.go:1004 +msgid "Failed to save website: %v" +msgstr "儲存網站失敗:%v" + #: internal/service/ws.go:203 msgid "Failed to start command: %v" msgstr "啟動命令失敗:%v" -#: internal/service/cli.go:154 -#: internal/service/cli.go:157 -#: internal/service/cli.go:160 +#: internal/service/cli.go:166 +#: internal/service/cli.go:169 +#: internal/service/cli.go:172 msgid "Failed to synchronize app data: %v" msgstr "同步應用程式資料失敗:%v" -#: internal/service/cli.go:151 +#: internal/service/cli.go:163 msgid "Failed to synchronize categories data: %v" msgstr "同步分類資料失敗:%v" -#: internal/service/cli.go:357 +#: internal/service/cli.go:432 msgid "Failed to update 2FA: %v" msgstr "更新兩步驗證失敗: %v" @@ -574,18 +648,34 @@ msgstr "更新兩步驗證失敗: %v" msgid "Fileinfo is a library used to identify file types" msgstr "Fileinfo 是一個用於識別檔案類型的函式庫" -#: internal/data/backup.go:1632 +#: internal/data/backup.go:1637 msgid "Files are normal and do not need to be repaired, please run acepanel update to update the panel" msgstr "檔案正常,無需修復,請執行 acepanel update 更新面板" -#: internal/data/backup.go:1842 +#: internal/data/backup.go:1852 msgid "Finishing up..." msgstr "正在結束更新……" -#: internal/data/backup.go:1844 +#: internal/data/backup.go:1854 msgid "Finishing update failed: %v" msgstr "結束更新失敗:%v" +#: internal/service/cli.go:773 +msgid "Firewall disabled" +msgstr "防火牆已停用" + +#: internal/service/cli.go:764 +msgid "Firewall enabled" +msgstr "防火牆已啟用" + +#: internal/service/cli.go:812 +msgid "Firewall is not running" +msgstr "防火牆未執行" + +#: internal/service/cli.go:750 +msgid "Firewall status: %s" +msgstr "防火牆狀態:%s" + #: internal/apps/rocketmq/app.go:69 msgid "Flush Disk Type" msgstr "刷盤類型" @@ -628,15 +718,15 @@ msgstr "Go-%s 未安裝" msgid "Goroutine Count" msgstr "Goroutine 數量" -#: internal/service/cli.go:469 +#: internal/service/cli.go:544 msgid "HTTPS certificate generated" msgstr "HTTPS 憑證已生成" -#: internal/service/cli.go:413 +#: internal/service/cli.go:488 msgid "HTTPS disabled" msgstr "HTTPS 已停用" -#: internal/service/cli.go:397 +#: internal/service/cli.go:472 msgid "HTTPS enabled" msgstr "HTTPS 已啟用" @@ -648,7 +738,23 @@ msgstr "硬體和作業系統指標" msgid "Huawei Cloud" msgstr "華為雲" -#: internal/service/cli.go:257 +#: internal/service/cli.go:1069 +msgid "ID: %d, Domains: %s, Auto Renewal: %t, Expires At: %s" +msgstr "ID:%d,域名:%s,自動續簽:%t,到期時間:%s" + +#: internal/service/cli.go:1019 +msgid "ID: %d, Name: %s, Type: %s, Address: %s:%d, Username: %s" +msgstr "ID:%d,名稱:%s,類型:%s,地址:%s:%d,使用者名稱:%s" + +#: internal/service/cli.go:1614 +msgid "ID: %d, Name: %s, Type: %s, Schedule: %s, Status: %s" +msgstr "ID:%d,名稱:%s,類型:%s,執行週期:%s,狀態:%s" + +#: internal/service/cli.go:852 +msgid "ID: %d, Name: %s, Type: %s, Status: %s, Path: %s" +msgstr "ID:%d,名稱:%s,類型:%s,狀態:%s,路徑:%s" + +#: internal/service/cli.go:278 msgid "ID: %d, Username: %s, Email: %s, Created At: %s" msgstr "ID: %d, 使用者名稱: %s, 電子郵件: %s, 建立時間: %s" @@ -672,11 +778,11 @@ msgstr "閒置處理程序" msgid "Idle Workers" msgstr "空閒的 Worker" -#: internal/service/cli.go:243 +#: internal/service/cli.go:263 msgid "If you cannot access, please check whether the server's security group and firewall allow port %d" msgstr "如果您無法存取,請檢查伺服器的安全群組和防火牆是否放行連接埠 %d" -#: internal/service/cli.go:244 +#: internal/service/cli.go:264 msgid "If you still cannot access, try running `acepanel https off` to turn off panel HTTPS" msgstr "如果您仍然無法存取,請嘗試執行 `acepanel https off` 關閉面板 HTTPS" @@ -692,10 +798,10 @@ msgstr "ImageMagick 是一套用於建立、編輯與合成影像的免費軟體 msgid "Index Hit Rate" msgstr "索引命中率" -#: internal/service/cli.go:1085 -#: internal/service/cli.go:1090 -#: internal/service/cli.go:1095 -#: internal/service/cli.go:1137 +#: internal/service/cli.go:1544 +#: internal/service/cli.go:1549 +#: internal/service/cli.go:1554 +#: internal/service/cli.go:1596 msgid "Initialization failed: %v" msgstr "初始化失敗:%v" @@ -779,11 +885,11 @@ msgstr "監聽佇列長度" msgid "Listeners" msgstr "監聽器" -#: internal/service/cli.go:227 +#: internal/service/cli.go:247 msgid "Local IPv4: %s://%s:%d%s" msgstr "本地 IPv4: %s://%s:%d%s" -#: internal/service/cli.go:231 +#: internal/service/cli.go:251 msgid "Local IPv6: %s://[%s]:%d%s" msgstr "本地 IPv6: %s://[%s]:%d%s" @@ -792,7 +898,7 @@ msgstr "本地 IPv6: %s://[%s]:%d%s" msgid "Local Storage" msgstr "本機儲存" -#: internal/service/cli.go:1158 +#: internal/service/cli.go:1672 #: internal/taskqueue/runner.go:171 msgid "Log" msgstr "日誌" @@ -867,11 +973,11 @@ msgstr "遷移已開始" msgid "MongoDB metrics" msgstr "MongoDB 指標" -#: internal/data/backup.go:1722 +#: internal/data/backup.go:1732 msgid "Move acepanel file failed: %v" msgstr "移動 acepanel 檔案失敗:%v" -#: internal/data/backup.go:1713 +#: internal/data/backup.go:1723 msgid "Move panel file failed: %v" msgstr "移動面板檔案失敗:%v" @@ -885,6 +991,10 @@ msgstr "MySQL 資料庫指標" msgid "NAME" msgstr "名稱" +#: internal/service/cli.go:1121 +msgid "Name: %s, Size: %s, Time: %s" +msgstr "名稱:%s,大小:%s,時間:%s" + #: internal/apps/rocketmq/app.go:67 msgid "NameServer Address" msgstr "NameServer 地址" @@ -897,7 +1007,7 @@ msgstr "NameServer 狀態" msgid "NameSilo" msgstr "NameSilo" -#: internal/service/cli.go:271 +#: internal/service/cli.go:342 msgid "New username cannot be empty" msgstr "新使用者名稱不能為空" @@ -905,7 +1015,7 @@ msgstr "新使用者名稱不能為空" msgid "Nginx metrics" msgstr "Nginx 指標" -#: internal/data/backup.go:1678 +#: internal/data/backup.go:1683 msgid "No backup file found, unable to automatically repair" msgstr "未找到備份檔案,無法自動修復" @@ -923,10 +1033,6 @@ msgstr "未安裝 Node.js 依賴;請安裝依賴並手動開始項目" msgid "Node.js-%s is not installed" msgstr "Node.js-%s 未安裝" -#: internal/service/cli.go:653 -msgid "Not supported" -msgstr "不支援" - #: internal/service/home.go:267 msgid "Not used" msgstr "不使用" @@ -954,7 +1060,7 @@ msgstr "選項" msgid "OPcache stores precompiled PHP script bytecode in shared memory to improve PHP performance" msgstr "OPcache 將 PHP 腳本預編譯的位元組碼儲存到共享記憶體中來提升 PHP 的效能" -#: internal/service/cli.go:268 +#: internal/service/cli.go:339 msgid "Old username cannot be empty" msgstr "舊使用者名稱不能為空" @@ -966,10 +1072,14 @@ msgstr "已開啟的表" msgid "Operation" msgstr "操作" -#: internal/service/cli.go:1159 +#: internal/service/cli.go:1673 msgid "Output" msgstr "輸出" +#: internal/bootstrap/cli.go:44 +msgid "Output in JSON format (list commands only)" +msgstr "以 JSON 格式輸出(僅適用於列表命令)" + #: internal/service/environment_php.go:111 #: internal/service/environment_php.go:130 #: internal/service/environment_php.go:150 @@ -988,14 +1098,14 @@ msgstr "輸出" msgid "PHP-%d is not installed" msgstr "PHP-%d 未安裝" -#: internal/service/cli.go:1003 -#: internal/service/cli.go:1024 -#: internal/service/cli.go:879 -#: internal/service/cli.go:893 -#: internal/service/cli.go:907 -#: internal/service/cli.go:923 -#: internal/service/cli.go:945 -#: internal/service/cli.go:984 +#: internal/service/cli.go:1332 +#: internal/service/cli.go:1352 +#: internal/service/cli.go:1366 +#: internal/service/cli.go:1382 +#: internal/service/cli.go:1404 +#: internal/service/cli.go:1443 +#: internal/service/cli.go:1462 +#: internal/service/cli.go:1483 msgid "Parameters cannot be empty" msgstr "參數不能為空" @@ -1003,19 +1113,24 @@ msgstr "參數不能為空" msgid "Passkey" msgstr "通行金鑰" -#: internal/service/cli.go:317 +#: internal/service/cli.go:392 msgid "Password for user %s changed successfully" msgstr "使用者 %s 的密碼已成功變更" -#: internal/service/cli.go:298 +#: internal/service/cli.go:294 +#: internal/service/cli.go:373 msgid "Password length cannot be less than 6" msgstr "密碼長度不能少於6位" -#: internal/service/cli.go:218 +#: internal/service/cli.go:1717 +msgid "Password not provided, pass it as an argument or set the %s environment variable" +msgstr "未提供密碼,請將其作為參數傳入或設定 %s 環境變數" + +#: internal/service/cli.go:238 msgid "Password: %s" msgstr "密碼: %s" -#: internal/service/cli.go:220 +#: internal/service/cli.go:240 msgid "Password: ******* (use -f to force reset)" msgstr "密碼:******* (使用 -f 強制重設)" @@ -1023,6 +1138,10 @@ msgstr "密碼:******* (使用 -f 強制重設)" msgid "Path" msgstr "路徑" +#: internal/service/cli.go:899 +msgid "Path: %s" +msgstr "路徑:%s" + #: internal/apps/mysql/app.go:119 msgid "Peak Connections" msgstr "峰值連接數" @@ -1035,18 +1154,50 @@ msgstr "佔用記憶體峰值" msgid "PhpRedis connects to and operates on data in Redis databases (requires the igbinary module installed above)" msgstr "PhpRedis 連接並操作 Redis 資料庫上的資料(需先安裝上面 igbinary 模組)" -#: internal/service/cli.go:242 +#: internal/service/cli.go:753 +msgid "Ping allowed: %t" +msgstr "允許 Ping:%t" + +#: internal/service/cli.go:262 msgid "Please choose the appropriate address to access the panel based on your network situation" msgstr "請根據您的網路情況選擇合適的位址存取面板" -#: internal/service/cli.go:351 +#: internal/service/cli.go:426 msgid "Please enter the 2FA code: " msgstr "請輸入兩步驟驗證碼: " -#: internal/biz/cert.go:252 +#: internal/service/cli.go:368 +msgid "Please enter the new password: " +msgstr "請輸入新密碼: " + +#: internal/service/cli.go:289 +msgid "Please enter the password: " +msgstr "請輸入密碼: " + +#: internal/biz/cert.go:260 msgid "Please set the panel IP in settings first for ACME certificate generation" msgstr "請先在設定中設定面板 IP 以產生 ACME 憑證" +#: internal/service/cli.go:621 +msgid "Please specify at least one IP" +msgstr "請至少指定一個 IP" + +#: internal/service/cli.go:658 +msgid "Please specify at least one User-Agent" +msgstr "請至少指定一個 User-Agent" + +#: internal/service/cli.go:584 +msgid "Please specify at least one domain" +msgstr "請至少指定一個域名" + +#: internal/service/cli.go:1090 +msgid "Please specify the certificate ID or use --all" +msgstr "請指定證書 ID 或使用 --all" + +#: internal/service/cli.go:696 +msgid "Please specify the port" +msgstr "請指定連接埠" + #: internal/service/toolbox_log.go:285 msgid "Podman container logs: %d files" msgstr "Podman 容器日誌:%d 個檔案" @@ -1055,27 +1206,40 @@ msgstr "Podman 容器日誌:%d 個檔案" msgid "Porkbun" msgstr "Porkbun" -#: internal/service/cli.go:567 +#: internal/service/cli.go:831 +msgid "Port %s allowed successfully" +msgstr "連接埠 %s 放行成功" + +#: internal/service/cli.go:833 +msgid "Port %s removed successfully" +msgstr "連接埠 %s 移除成功" + +#: internal/service/cli.go:709 msgid "Port already in use" msgstr "連接埠已被佔用" -#: internal/service/cli.go:593 +#: internal/service/cli.go:735 msgid "Port changed to %d" msgstr "連接埠已變更為 %d" -#: internal/service/cli.go:557 +#: internal/service/cli.go:699 +#: internal/service/cli.go:802 msgid "Port range error" msgstr "連接埠範圍錯誤" -#: internal/service/cli.go:222 +#: internal/service/cli.go:242 msgid "Port: %d" msgstr "連接埠:%d" +#: internal/service/cli.go:785 +msgid "Port: %d-%d, Protocol: %s, Strategy: %s, Direction: %s, Address: %s" +msgstr "連接埠:%d-%d,協議:%s,策略:%s,方向:%s,地址:%s" + #: internal/apps/prometheus/app.go:393 msgid "PostgreSQL database metrics" msgstr "PostgreSQL 資料庫指標" -#: internal/data/backup.go:1791 +#: internal/data/backup.go:1801 msgid "Preparing to update to %s..." msgstr "正在準備更新至 %s……" @@ -1099,11 +1263,11 @@ msgstr "處理程序 PID" msgid "Pspell is a spell-checking library" msgstr "Pspell 是一個拼寫檢查庫" -#: internal/service/cli.go:235 +#: internal/service/cli.go:255 msgid "Public IPv4: %s://%s:%d%s" msgstr "公網 IPv4: %s://%s:%d%s" -#: internal/service/cli.go:239 +#: internal/service/cli.go:259 msgid "Public IPv6: %s://[%s]:%d%s" msgstr "公網 IPv6: %s://[%s]:%d%s" @@ -1158,7 +1322,7 @@ msgstr "Redis 指標" msgid "Relocating Shards" msgstr "遷移中的分片" -#: internal/data/backup.go:1710 +#: internal/data/backup.go:1720 msgid "Remove panel file failed: %v" msgstr "刪除面板檔案失敗:%v" @@ -1198,7 +1362,7 @@ msgstr "SSH 登入成功" msgid "SSH2 is a library for connecting to SSH servers" msgstr "SSH2 是一個用於連接 SSH 伺服器的程式庫" -#: internal/service/cli.go:1156 +#: internal/service/cli.go:1670 msgid "Schedule" msgstr "執行週期" @@ -1206,7 +1370,7 @@ msgstr "執行週期" msgid "Session save handler is not files, cannot clean" msgstr "Session 儲存處理器不是 files,無法清理" -#: internal/service/cli.go:990 +#: internal/service/cli.go:1449 msgid "Setting not exists" msgstr "設定不存在" @@ -1214,6 +1378,10 @@ msgstr "設定不存在" msgid "Slow Requests" msgstr "慢請求" +#: internal/service/cli.go:1324 +msgid "Slug: %s, Channel: %s, Version: %s" +msgstr "Slug:%s,渠道:%s,版本:%s" + #: internal/apps/mysql/app.go:127 msgid "Sort Merge Passes" msgstr "排序後的合併次數" @@ -1240,7 +1408,7 @@ msgstr "儲存空間使用量" msgid "Subqueries without Index" msgstr "沒有索引的子查詢" -#: internal/service/cli.go:448 +#: internal/service/cli.go:523 msgid "Successfully obtained panel certificate via ACME" msgstr "已成功透過 ACME 取得面板憑證" @@ -1280,12 +1448,12 @@ msgstr "表" msgid "Target" msgstr "目標" -#: internal/service/cli.go:1155 +#: internal/service/cli.go:1669 #: internal/taskqueue/runner.go:170 msgid "Task" msgstr "任務" -#: internal/service/cli.go:977 +#: internal/service/cli.go:1436 msgid "Tasks cleared successfully" msgstr "任務已成功清除" @@ -1313,7 +1481,7 @@ msgstr "閾值" #: internal/biz/notify.go:191 #: internal/biz/tamper.go:311 #: internal/job/cert_renew.go:175 -#: internal/service/cli.go:1160 +#: internal/service/cli.go:1674 #: internal/service/user.go:182 #: internal/service/user.go:202 #: internal/service/user_passkey.go:305 @@ -1321,7 +1489,7 @@ msgstr "閾值" msgid "Time" msgstr "時間" -#: internal/service/cli.go:965 +#: internal/service/cli.go:1424 msgid "Time synchronized successfully" msgstr "時間同步成功" @@ -1426,23 +1594,31 @@ msgstr "卸載應用 %s" msgid "Uninstall environment %s" msgstr "卸載環境 %s" -#: internal/service/cli.go:859 +#: internal/service/cli.go:807 +msgid "Unsupported protocol: %s" +msgstr "不支援的協議:%s" + +#: internal/service/cli.go:1295 msgid "Unsupported rotation type: %s" msgstr "不支援的輪轉類型:%s" +#: internal/service/cli.go:975 +msgid "Unsupported website type: %s" +msgstr "不支援的網站類型:%s" + #: internal/service/toolbox_log.go:255 msgid "Unused container images: %d" msgstr "未使用的容器鏡像:%d" -#: internal/data/backup.go:1694 +#: internal/data/backup.go:1704 msgid "Unzip backup file failed: %v" msgstr "解壓備份檔案失敗:%v" -#: internal/data/backup.go:1832 +#: internal/data/backup.go:1842 msgid "Unzip new version failed, missing file" msgstr "解壓新版本失敗,缺少檔案" -#: internal/data/backup.go:1829 +#: internal/data/backup.go:1839 msgid "Unzip new version failed: %v" msgstr "解壓新版本失敗:%v" @@ -1454,7 +1630,7 @@ msgstr "更新操作" msgid "Update app %s" msgstr "更新應用 %s" -#: internal/data/backup.go:1849 +#: internal/data/backup.go:1859 msgid "Update completed" msgstr "更新完成" @@ -1479,16 +1655,26 @@ msgstr "執行時間(秒)" msgid "Uptime in Days" msgstr "已運作天數" +#: internal/service/cli.go:308 +msgid "User %s created successfully" +msgstr "使用者 %s 建立成功" + +#: internal/service/cli.go:330 +msgid "User %s deleted successfully" +msgstr "使用者 %s 刪除成功" + #: internal/service/user.go:181 #: internal/service/user.go:201 #: internal/service/user_passkey.go:304 msgid "User Agent" msgstr "User Agent" -#: internal/service/cli.go:276 -#: internal/service/cli.go:303 -#: internal/service/cli.go:330 -#: internal/service/cli.go:372 +#: internal/service/cli.go:192 +#: internal/service/cli.go:321 +#: internal/service/cli.go:347 +#: internal/service/cli.go:378 +#: internal/service/cli.go:405 +#: internal/service/cli.go:447 msgid "User not exists" msgstr "使用者不存在" @@ -1499,20 +1685,19 @@ msgstr "使用者不存在" msgid "Username" msgstr "使用者名稱" -#: internal/service/cli.go:286 +#: internal/service/cli.go:357 msgid "Username %s changed to %s successfully" msgstr "使用者名稱 %s 已成功更改為 %s" -#: internal/service/cli.go:295 -msgid "Username and password cannot be empty" -msgstr "使用者名稱和密碼不能為空" - -#: internal/service/cli.go:325 -#: internal/service/cli.go:367 +#: internal/service/cli.go:286 +#: internal/service/cli.go:315 +#: internal/service/cli.go:365 +#: internal/service/cli.go:400 +#: internal/service/cli.go:442 msgid "Username cannot be empty" msgstr "使用者名稱不能為空" -#: internal/service/cli.go:216 +#: internal/service/cli.go:236 msgid "Username: %s" msgstr "使用者名稱: %s" @@ -1520,11 +1705,11 @@ msgstr "使用者名稱: %s" msgid "VERSION" msgstr "版本" -#: internal/data/backup.go:1823 +#: internal/data/backup.go:1833 msgid "Verify download file failed: %v" msgstr "驗證下載檔案失敗:%v" -#: internal/data/backup.go:1821 +#: internal/data/backup.go:1831 msgid "Verifying download file..." msgstr "驗證下載檔案……" @@ -1538,7 +1723,7 @@ msgstr "版本" msgid "Waiting" msgstr "正在駐留等待" -#: internal/service/cli.go:245 +#: internal/service/cli.go:265 msgid "Warning: After turning off panel HTTPS, the security of the panel will be greatly reduced, please operate with caution" msgstr "警告:關閉面板 HTTPS 後,面板的安全性將大大降低,請謹慎操作" @@ -1546,18 +1731,26 @@ msgstr "警告:關閉面板 HTTPS 後,面板的安全性將大大降低, msgid "Website" msgstr "網站" -#: internal/service/cli.go:612 +#: internal/service/cli.go:898 msgid "Website %s created successfully" msgstr "網站 %s 建立成功" -#: internal/service/cli.go:648 +#: internal/service/cli.go:966 msgid "Website %s deleted successfully" msgstr "網站 %s 刪除成功" -#: internal/service/cli.go:629 +#: internal/service/cli.go:947 msgid "Website %s removed successfully" msgstr "網站 %s 移除成功" +#: internal/service/cli.go:1007 +msgid "Website %s written successfully" +msgstr "網站 %s 寫入成功" + +#: internal/service/cli.go:987 +msgid "Website path must be an absolute path" +msgstr "網站路徑必須是絕對路徑" + #: internal/bootstrap/cli.go:33 msgid "Website:https://acepanel.net" msgstr "網站:https://acepanel.net" @@ -1619,7 +1812,7 @@ msgstr "[AcePanel] 備份失敗" msgid "[AcePanel] Certificate Renewal Failed" msgstr "[AcePanel] 證書續簽失敗" -#: internal/service/cli.go:1153 +#: internal/service/cli.go:1667 msgid "[AcePanel] Cron Task Failed" msgstr "[AcePanel] 計劃任務失敗" @@ -1758,7 +1951,7 @@ msgstr "btrfs 檔案系統未掛載,邏輯卷已擴展但檔案系統未調整 msgid "can't download a directory" msgstr "無法下載目錄" -#: internal/biz/website.go:140 +#: internal/biz/website.go:141 msgid "can't find %s database server, please add it first" msgstr "找不到 %s 資料庫伺服器,請先新增" @@ -1815,7 +2008,7 @@ msgstr "容器 %s 未執行" msgid "container status" msgstr "容器狀態" -#: internal/data/backup.go:1469 +#: internal/data/backup.go:1474 msgid "could not find database backup file" msgstr "找不到資料庫備份檔案" @@ -1828,24 +2021,24 @@ msgstr "建立目錄錯誤:%v" msgid "create target file error: %v" msgstr "建立目標檔案錯誤:%v" -#: internal/service/cli.go:1154 +#: internal/service/cli.go:1668 msgid "cron task exited abnormally" msgstr "計劃任務異常結束" -#: internal/data/backup.go:1491 +#: internal/data/backup.go:1496 msgid "database backup archive contains multiple dump files" msgstr "資料庫備份壓縮包包含多個轉儲檔案" -#: internal/data/backup.go:1427 +#: internal/data/backup.go:1432 msgid "database backup contains too many nested archives" msgstr "資料庫備份包含過多層巢狀壓縮包" -#: internal/data/backup.go:1001 -#: internal/data/backup.go:1050 -#: internal/data/backup.go:583 -#: internal/data/backup.go:651 -#: internal/data/backup.go:716 -#: internal/data/backup.go:968 +#: internal/data/backup.go:1006 +#: internal/data/backup.go:1055 +#: internal/data/backup.go:588 +#: internal/data/backup.go:656 +#: internal/data/backup.go:721 +#: internal/data/backup.go:973 msgid "database does not exist: %s" msgstr "資料庫不存在:%s" @@ -1882,8 +2075,8 @@ msgstr "資料來源 %s 不存在" msgid "default site is only supported with nginx" msgstr "預設站點僅支援 nginx" -#: internal/biz/cert.go:232 -#: internal/biz/cert.go:360 +#: internal/biz/cert.go:240 +#: internal/biz/cert.go:367 msgid "deploying certificate to website" msgstr "部署證書到網站" @@ -1919,7 +2112,7 @@ msgstr "磁碟寫入速率" msgid "downloading" msgstr "正在下載" -#: internal/data/backup.go:1248 +#: internal/data/backup.go:1253 msgid "dump.rdb not found in backup file" msgstr "備份檔案中找不到 dump.rdb" @@ -2105,7 +2298,7 @@ msgstr "啟用 %s 服務失敗:%v" msgid "failed to encode auth: %v" msgstr "編碼驗證資訊失敗:%v" -#: internal/data/backup.go:1196 +#: internal/data/backup.go:1201 msgid "failed to export RDB snapshot" msgstr "匯出 RDB 快照失敗" @@ -2219,14 +2412,6 @@ msgstr "取得 apache 工作處理程序失敗:%v" msgid "failed to get available timezones: %v" msgstr "無法取得可用時區:%v" -#: internal/apps/fail2ban/app.go:278 -msgid "failed to get banned ip list" -msgstr "無法取得被封鎖的 ip 清單" - -#: internal/apps/fail2ban/app.go:268 -msgid "failed to get current banned list" -msgstr "無法取得目前封鎖清單" - #: internal/service/toolbox_disk.go:33 msgid "failed to get disk list: %v" msgstr "取得磁碟清單失敗:%v" @@ -2263,9 +2448,8 @@ msgstr "取得首頁範本檔案失敗:%v" msgid "failed to get kafka status: %v" msgstr "取得 kafka 狀態失敗:%v" -#: internal/apps/supervisor/app.go:218 -#: internal/apps/supervisor/app.go:344 -#: internal/apps/supervisor/app.go:354 +#: internal/apps/supervisor/app.go:173 +#: internal/apps/supervisor/app.go:314 msgid "failed to get log path for process %s: %v" msgstr "無法取得處理程序 %s 的日誌路徑:%v" @@ -2332,9 +2516,9 @@ msgstr "無法取得最新版本下載連結" msgid "failed to get the latest version: %v" msgstr "無法取得最新版本:%v" -#: internal/apps/rsync/app.go:90 -msgid "failed to get the secret key for module %s" -msgstr "無法取得模組 %s 的金鑰" +#: internal/apps/fail2ban/app.go:221 +msgid "failed to get the status of rule %s: %v" +msgstr "獲取規則 %s 的狀態失敗:%v" #: internal/service/home.go:359 msgid "failed to get the update information: %v" @@ -2344,10 +2528,6 @@ msgstr "無法取得更新資訊:%v" msgid "failed to get timezone: %v" msgstr "無法取得時區:%v" -#: internal/apps/fail2ban/app.go:273 -msgid "failed to get total banned list" -msgstr "無法取得全部封鎖清單" - #: internal/data/app.go:163 msgid "failed to get uninstall script for app %s" msgstr "無法取得應用程式 %s 的解除安裝腳本" @@ -2389,10 +2569,10 @@ msgstr "在 %s 上開啟 SFTP 工作階段失敗:%v" msgid "failed to parse SMART info: %v" msgstr "解析 SMART 資訊失敗:%v" -#: internal/biz/cert.go:95 +#: internal/biz/cert.go:103 #: internal/biz/setting.go:241 #: internal/biz/setting.go:315 -#: internal/data/website.go:1244 +#: internal/data/website.go:1250 #: internal/data/website.go:862 msgid "failed to parse certificate: %v" msgstr "無法解析證書:%v" @@ -2409,10 +2589,10 @@ msgstr "解析 pgAdmin 登入頁面失敗" msgid "failed to parse phpMyAdmin login page" msgstr "解析 phpMyAdmin 登入頁面失敗" -#: internal/biz/cert.go:98 +#: internal/biz/cert.go:106 #: internal/biz/setting.go:244 #: internal/biz/setting.go:318 -#: internal/data/website.go:1247 +#: internal/data/website.go:1253 #: internal/data/website.go:865 msgid "failed to parse private key: %v" msgstr "解析私鑰失敗:%v" @@ -2425,11 +2605,6 @@ msgstr "解析 smartctl 輸出失敗:%v" msgid "failed to parse systemd config" msgstr "解析 systemd 配置失敗" -#: internal/apps/fail2ban/app.go:334 -#: internal/apps/fail2ban/app.go:362 -msgid "failed to parse the ignoreip of fail2ban" -msgstr "無法解析 fail2ban 的 ignoreip" - #: internal/service/home.go:308 #: internal/service/home.go:313 #: internal/service/home.go:344 @@ -2592,10 +2767,6 @@ msgstr "調整檔案系統大小失敗:%v" msgid "failed to restart %s service: %v" msgstr "重新啟動 %s 服務失敗:%v" -#: internal/apps/supervisor/app.go:103 -msgid "failed to restart %s: %v" -msgstr "重新啟動 %s 失敗:%v" - #: internal/apps/mysql/app.go:79 msgid "failed to restart MySQL: %v" msgstr "重新啟動 MySQL 失敗:%v" @@ -2745,7 +2916,7 @@ msgstr "檔案太大,請下載後查看" msgid "gRPC is a high-performance, open-source, and general-purpose RPC framework" msgstr "gRPC 是一個高性能、開源和通用的 RPC 框架" -#: internal/apps/fail2ban/app.go:194 +#: internal/apps/fail2ban/app.go:120 msgid "get service port failed, please check if it is installed" msgstr "取得服務連接埠失敗,請檢查是否已安裝" @@ -2765,7 +2936,7 @@ msgstr "大於等於" msgid "if the site connects to a database, change the host in its config from the 1Panel container name to localhost" msgstr "如果網站連接資料庫,請在其配置中將主機地址從 1Panel 容器名稱改為 localhost" -#: internal/biz/cert.go:180 +#: internal/biz/cert.go:188 msgid "initializing ACME client" msgstr "初始化 ACME 客戶端" @@ -2836,7 +3007,7 @@ msgstr "無效的使用者 ID,請重新登入" msgid "ionCube is a professional-grade PHP encryption and decryption tool (must be installed after OPcache)" msgstr "ionCube 是一個專業級的 PHP 加密解密工具(需在 OPcache 之後安裝)" -#: internal/biz/cert.go:214 +#: internal/biz/cert.go:222 msgid "issuing certificate, domains: %s" msgstr "簽發證書,域名:%s" @@ -2852,11 +3023,11 @@ msgstr "小於" msgid "less than or equal to" msgstr "小於等於" -#: internal/data/backup.go:336 +#: internal/data/backup.go:338 msgid "log file %s not exists" msgstr "日誌檔案 %s 不存在" -#: internal/data/website.go:1348 +#: internal/data/website.go:1354 msgid "maximum number of custom configurations reached (limit: %d)" msgstr "已達到自定義配置的最大數量(限制:%d)" @@ -2873,12 +3044,11 @@ msgstr "遷移正在執行中" msgid "migration is running, cannot reset" msgstr "遷移正在執行中,無法重設" -#: internal/apps/rsync/app.go:125 +#: internal/apps/rsync/app.go:65 msgid "module %s already exists" msgstr "模組 %s 已存在" -#: internal/apps/rsync/app.go:170 -#: internal/apps/rsync/app.go:212 +#: internal/apps/rsync/app.go:80 #: internal/service/environment_php.go:300 #: internal/service/environment_php.go:335 msgid "module %s does not exist" @@ -2952,8 +3122,8 @@ msgstr "檔案中未找到規則" msgid "not running" msgstr "未執行" -#: internal/biz/cert.go:222 -#: internal/biz/cert.go:350 +#: internal/biz/cert.go:230 +#: internal/biz/cert.go:357 msgid "obtaining and saving certificate" msgstr "取得並儲存憑證" @@ -2969,7 +3139,7 @@ msgstr "開啟檔案錯誤:%v" msgid "open upload file error: %v" msgstr "開啟上傳檔案錯誤:%v" -#: internal/data/backup.go:1909 +#: internal/data/backup.go:1919 msgid "panel binary is missing after update" msgstr "更新後缺少面板二進位檔" @@ -2981,7 +3151,7 @@ msgstr "更新後缺少面板二進位檔" msgid "panel certificate" msgstr "面板證書" -#: internal/data/backup.go:1773 +#: internal/data/backup.go:1783 msgid "panel is already updating, please try again later" msgstr "面板正在更新,請稍後再試" @@ -3010,7 +3180,7 @@ msgstr "面板回報了健康問題" msgid "panel run error, please check or contact support" msgstr "面板執行錯誤,請檢查或聯絡技術支援" -#: internal/data/backup.go:1905 +#: internal/data/backup.go:1915 msgid "panel service file is missing" msgstr "面板服務檔案遺失" @@ -3030,11 +3200,11 @@ msgstr "通行金鑰登入失敗:%v" msgid "passkey registration failed: %v" msgstr "通行金鑰註冊失敗:%v" -#: internal/data/backup.go:817 +#: internal/data/backup.go:822 msgid "path does not exist: %s" msgstr "路徑不存在:%s" -#: internal/data/backup.go:820 +#: internal/data/backup.go:825 msgid "path is not a directory: %s" msgstr "路徑不是目錄:%s" @@ -3109,11 +3279,11 @@ msgstr "請至少選擇一個遷移資源" msgid "port is already in use" msgstr "連接埠已被佔用" -#: internal/biz/cert.go:299 +#: internal/biz/cert.go:307 msgid "preparing renewal" msgstr "準備續簽" -#: internal/apps/supervisor/app.go:310 +#: internal/apps/supervisor/app.go:268 msgid "process %s already exists" msgstr "處理 %s 已存在" @@ -3137,6 +3307,15 @@ msgstr "項目狀態" msgid "protobuf is a library for serializing and deserializing data" msgstr "protobuf 是一個用於序列化與反序列化資料的函式庫" +#: internal/apps/frp/app.go:279 +msgid "proxy %s already exists" +msgstr "代理 %s 已存在" + +#: internal/apps/frp/app.go:296 +#: internal/apps/frp/app.go:312 +msgid "proxy %s does not exist" +msgstr "代理 %s 不存在" + #: internal/service/environment_php.go:513 msgid "rdkafka is a library for connecting to Apache Kafka" msgstr "rdkafka 是一個用於連接 Apache Kafka 的庫" @@ -3153,11 +3332,11 @@ msgstr "讀取分塊資料錯誤:%v" msgid "read directory error: %v" msgstr "讀取目錄錯誤:%v" -#: internal/biz/cert.go:343 +#: internal/biz/cert.go:350 msgid "renewal failed, attempting re-issuance" msgstr "續簽失敗,嘗試重新簽發" -#: internal/biz/cert.go:337 +#: internal/biz/cert.go:344 msgid "renewing certificate, domains: %s" msgstr "續簽證書,域名:%s" @@ -3170,15 +3349,19 @@ msgstr "續簽證書,域名:%s" msgid "resource no longer exists on the source server" msgstr "源伺服器上已不存在該資源" -#: internal/apps/fail2ban/app.go:117 +#: internal/apps/fail2ban/app.go:130 msgid "rule already exists" msgstr "規則已存在" -#: internal/apps/fail2ban/app.go:238 +#: internal/apps/fail2ban/app.go:165 +#: internal/apps/fail2ban/app.go:192 msgid "rule not found" msgstr "找不到規則" -#: internal/service/cli.go:91 +#: internal/service/cli.go:103 +#: internal/service/cli.go:1612 +#: internal/service/cli.go:748 +#: internal/service/cli.go:850 msgid "running" msgstr "執行中" @@ -3245,6 +3428,10 @@ msgstr "簽名已過期" msgid "smartmontools is not installed, please install it first (e.g., apt install smartmontools or dnf install smartmontools)" msgstr "未安裝 smartmontools,請先安裝它(例如:apt install smartmontools 或 dnf install smartmontools)" +#: internal/data/cert.go:205 +msgid "some of the selected websites do not exist" +msgstr "所選網站中有部分不存在" + #: internal/service/ws.go:290 msgid "source and destination are the same file" msgstr "來源檔案與目標檔案相同" @@ -3261,7 +3448,10 @@ msgstr "sqlite 不支援從此處刪除表" msgid "sqlsrv is a driver for connecting to SQL Server" msgstr "sqlsrv 是一個用於連接 SQL Server 的驅動程序" -#: internal/service/cli.go:93 +#: internal/service/cli.go:105 +#: internal/service/cli.go:1610 +#: internal/service/cli.go:746 +#: internal/service/cli.go:848 msgid "stopped" msgstr "已停止" @@ -3451,20 +3641,20 @@ msgstr "目標網站目錄不為空" msgid "this 1Panel website type is not supported for automatic migration: %s" msgstr "不支援自動遷移此類 1Panel 網站:%s" -#: internal/biz/cert.go:404 +#: internal/biz/cert.go:411 msgid "this certificate has not been obtained successfully and cannot be deployed" msgstr "此證書尚未成功簽發,無法部署" -#: internal/biz/cert.go:311 +#: internal/biz/cert.go:319 msgid "this certificate has not been obtained successfully and cannot be renewed" msgstr "此證書尚未成功簽發,無法續期" -#: internal/biz/cert.go:202 -#: internal/biz/cert.go:325 +#: internal/biz/cert.go:210 +#: internal/biz/cert.go:333 msgid "this certificate is not associated with a website and cannot be obtained. You can try to obtain it manually" msgstr "此證書未與任何網站關聯,無法簽發。您可以嘗試使用手動簽發" -#: internal/data/cert.go:313 +#: internal/data/cert.go:368 msgid "this certificate is not associated with an ACME account and cannot be obtained" msgstr "此證書未與 ACME 帳戶關聯,無法簽發" @@ -3490,18 +3680,18 @@ msgstr "離線模式下無法檢查更新" msgid "unable to update in offline mode" msgstr "離線模式下無法更新" -#: internal/data/backup.go:892 +#: internal/data/backup.go:897 msgid "uncompressed backup is empty, restore aborted" msgstr "解壓縮後的備份為空,已中止恢復" #: internal/biz/toolbox_migration_import.go:320 #: internal/biz/toolbox_migration_import.go:89 -#: internal/service/cli.go:88 +#: internal/service/cli.go:100 msgid "unknown" msgstr "未知" #: internal/data/backup.go:157 -#: internal/data/backup.go:290 +#: internal/data/backup.go:292 msgid "unknown backup type" msgstr "未知備份類型" @@ -3510,11 +3700,11 @@ msgstr "未知備份類型" msgid "unknown log type" msgstr "未知日誌類型" -#: internal/apps/fail2ban/app.go:190 +#: internal/apps/fail2ban/app.go:116 msgid "unknown service" msgstr "未知服務" -#: internal/data/backup.go:525 +#: internal/data/backup.go:530 msgid "unknown storage type" msgstr "未知儲存類型" @@ -3557,17 +3747,17 @@ msgstr "不支援的源面板:%s" msgid "unsupported system" msgstr "不支援的系統" -#: internal/data/website.go:1437 -#: internal/data/website.go:1501 +#: internal/data/website.go:1443 +#: internal/data/website.go:1507 msgid "unsupported web server: %s" msgstr "不支援的 Web 伺服器:%s" -#: internal/data/cert.go:276 -#: internal/data/website.go:1412 +#: internal/data/cert.go:331 +#: internal/data/website.go:1418 msgid "unsupported website type: %s" msgstr "不支援的網站類型:%s" -#: internal/biz/cert.go:145 +#: internal/biz/cert.go:153 msgid "upload certificate cannot be set to auto renewal" msgstr "上傳的憑證無法設定為自動續期" @@ -3587,6 +3777,15 @@ msgstr "正在上傳" msgid "username or password error" msgstr "使用者名稱或密碼錯誤" +#: internal/apps/frp/app.go:365 +msgid "visitor %s already exists" +msgstr "訪客 %s 已存在" + +#: internal/apps/frp/app.go:382 +#: internal/apps/frp/app.go:398 +msgid "visitor %s does not exist" +msgstr "訪客 %s 不存在" + #: internal/service/backup_storage.go:156 msgid "webdav configuration error: %v" msgstr "WebDAV 配置錯誤:%v" @@ -3647,12 +3846,12 @@ msgstr "網站不存在" msgid "website type is unchanged" msgstr "網站類型未更改" -#: internal/biz/cert.go:208 -#: internal/biz/cert.go:329 +#: internal/biz/cert.go:216 +#: internal/biz/cert.go:337 msgid "wildcard domains cannot use HTTP verification" msgstr "萬用字元網域無法使用 HTTP 驗證" -#: internal/biz/website.go:255 +#: internal/biz/website.go:256 msgid "wildcard domains require DNS verification, please select a DNS provider" msgstr "萬用字元域名需要 DNS 驗證,請選擇一個 DNS 提供商" @@ -3688,18 +3887,18 @@ msgstr "yaml 是一個用於處理 YAML 的庫" msgid "zstd is a library for compressing and decompressing files" msgstr "zstd 是一個用於壓縮與解壓縮檔案的函式庫" -#: internal/data/backup.go:1683 +#: internal/data/backup.go:1688 msgid "|-Backup file used: %s" msgstr "|-使用的備份檔案:%s" -#: internal/data/backup.go:1217 +#: internal/data/backup.go:1222 #: internal/data/backup.go:232 #: internal/data/backup.go:269 -#: internal/data/backup.go:565 -#: internal/data/backup.go:632 -#: internal/data/backup.go:695 -#: internal/data/backup.go:788 -#: internal/data/backup.go:852 +#: internal/data/backup.go:570 +#: internal/data/backup.go:637 +#: internal/data/backup.go:700 +#: internal/data/backup.go:793 +#: internal/data/backup.go:857 msgid "|-Backup file: %s" msgstr "|-備份檔案:%s" @@ -3720,81 +3919,93 @@ msgstr "|-備份時間:%s" msgid "|-Backup type: %s" msgstr "|-備份類型:%s" -#: internal/service/cli.go:714 +#: internal/service/cli.go:1142 msgid "|-Backup type: panel" msgstr "|-備份類型:面板" -#: internal/data/backup.go:421 -#: internal/data/backup.go:482 +#: internal/service/cli.go:1100 +msgid "|-Certificate %d renewal failed: %v" +msgstr "|-證書 %d 續簽失敗:%v" + +#: internal/service/cli.go:1103 +msgid "|-Certificate %d renewed successfully" +msgstr "|-證書 %d 續簽成功" + +#: internal/data/backup.go:423 +#: internal/data/backup.go:487 msgid "|-Cleaning expired file: %s" msgstr "|-清理過期檔案:%s" -#: internal/service/cli.go:730 -#: internal/service/cli.go:837 +#: internal/service/cli.go:1157 +#: internal/service/cli.go:1277 msgid "|-Cleaning target: %s" msgstr "|-清理目標:%s" -#: internal/service/cli.go:729 -#: internal/service/cli.go:836 +#: internal/service/cli.go:1156 +#: internal/service/cli.go:1276 msgid "|-Cleaning type: %s" msgstr "|-清理類型:%s" -#: internal/data/backup.go:939 +#: internal/data/backup.go:944 msgid "|-File size: %s" msgstr "|-檔案大小:%s" -#: internal/data/backup.go:1652 -#: internal/data/backup.go:1758 +#: internal/data/backup.go:1657 +#: internal/data/backup.go:1768 msgid "|-Fix completed" msgstr "|-修復完成" -#: internal/data/backup.go:911 +#: internal/data/backup.go:916 msgid "|-Fixing file permissions..." msgstr "|-正在修復檔案權限……" -#: internal/data/backup.go:1645 +#: internal/data/backup.go:1650 msgid "|-Found %s.db is abnormal, removed it" msgstr "|-發現 %s.db 異常,已刪除" -#: internal/data/backup.go:1021 +#: internal/data/backup.go:1026 msgid "|-Importing PostgreSQL backup..." msgstr "|-正在匯入 PostgreSQL 備份..." -#: internal/data/backup.go:1056 -#: internal/data/backup.go:983 +#: internal/data/backup.go:1061 +#: internal/data/backup.go:988 msgid "|-Importing SQL into database..." msgstr "|-正在將 SQL 匯入資料庫……" -#: internal/data/backup.go:1098 +#: internal/data/backup.go:1103 msgid "|-Importing table: %s" msgstr "|-正在匯入資料表:%s" -#: internal/data/backup.go:946 +#: internal/data/backup.go:951 msgid "|-Importing: %s (%s/s)" msgstr "|-正在匯入:%s(%s/s)" -#: internal/data/backup.go:942 +#: internal/data/backup.go:947 msgid "|-Importing: %s / %s (%.1f%%, %s/s)" msgstr "|-正在匯入:%s / %s(%.1f%%,%s/s)" -#: internal/service/cli.go:731 -#: internal/service/cli.go:838 +#: internal/service/cli.go:1158 +#: internal/service/cli.go:1278 msgid "|-Keep count: %d" msgstr "|-保留數量:%d" -#: internal/data/backup.go:1699 +#: internal/data/backup.go:1709 msgid "|-Move backup file..." msgstr "|-移動備份檔案……" -#: internal/data/backup.go:1294 +#: internal/data/backup.go:1299 msgid "|-Re-enabling AOF..." msgstr "|-正在重新啟用 AOF……" -#: internal/data/backup.go:1264 +#: internal/service/cli.go:1095 +msgid "|-Renewing certificate %d..." +msgstr "|-正在續簽證書 %d..." + +#: internal/data/backup.go:1269 msgid "|-Replacing dump.rdb..." msgstr "|-正在替換 dump.rdb……" -#: internal/data/backup.go:901 +#: internal/data/backup.go:906 msgid "|-Replacing website files..." msgstr "|-正在替換網站檔案……" @@ -3802,7 +4013,7 @@ msgstr "|-正在替換網站檔案……" msgid "|-Restore target: %s" msgstr "|-恢復目標:%s" -#: internal/data/backup.go:294 +#: internal/data/backup.go:296 msgid "|-Restore time: %s" msgstr "|-恢復時間:%s" @@ -3810,81 +4021,85 @@ msgstr "|-恢復時間:%s" msgid "|-Restore type: %s" msgstr "|-恢復類型:%s" -#: internal/data/backup.go:1080 +#: internal/data/backup.go:1085 msgid "|-Restoring schema..." msgstr "|-正在恢復資料表結構……" -#: internal/service/cli.go:761 -#: internal/service/cli.go:807 +#: internal/service/cli.go:1201 +#: internal/service/cli.go:1247 msgid "|-Rotation target: %s" msgstr "|-輪換目標:%s" -#: internal/service/cli.go:806 +#: internal/service/cli.go:1246 msgid "|-Rotation type: container" msgstr "|-輪轉類型:container" -#: internal/service/cli.go:760 +#: internal/service/cli.go:1200 msgid "|-Rotation type: website" msgstr "|-旋轉類型:website" -#: internal/data/backup.go:1735 +#: internal/service/cli.go:1629 +msgid "|-Running cron task: %s" +msgstr "|-正在執行計劃任務:%s" + +#: internal/data/backup.go:1745 msgid "|-Set key file permissions..." msgstr "|-設定關鍵檔案權限……" -#: internal/data/backup.go:1598 +#: internal/data/backup.go:1603 msgid "|-Start fixing the panel..." msgstr "|-開始修復面板……" -#: internal/data/backup.go:1284 +#: internal/data/backup.go:1289 msgid "|-Starting %s service (loading RDB)..." msgstr "|-正在啟動 %s 服務(載入 RDB)……" -#: internal/data/backup.go:1253 +#: internal/data/backup.go:1258 msgid "|-Stopping %s service..." msgstr "|-正在停止 %s 服務……" -#: internal/data/backup.go:1069 -#: internal/data/backup.go:1187 -#: internal/data/backup.go:1240 -#: internal/data/backup.go:544 -#: internal/data/backup.go:594 -#: internal/data/backup.go:662 -#: internal/data/backup.go:727 -#: internal/data/backup.go:831 +#: internal/data/backup.go:1074 +#: internal/data/backup.go:1192 +#: internal/data/backup.go:1245 +#: internal/data/backup.go:549 +#: internal/data/backup.go:599 +#: internal/data/backup.go:667 +#: internal/data/backup.go:732 +#: internal/data/backup.go:836 msgid "|-Temporary directory: %s" msgstr "|-臨時目錄:%s" -#: internal/data/backup.go:1016 -#: internal/data/backup.go:1070 -#: internal/data/backup.go:1241 -#: internal/data/backup.go:875 -#: internal/data/backup.go:978 +#: internal/data/backup.go:1021 +#: internal/data/backup.go:1075 +#: internal/data/backup.go:1246 +#: internal/data/backup.go:880 +#: internal/data/backup.go:983 msgid "|-Uncompressing backup..." msgstr "|-正在解壓縮備份……" -#: internal/data/backup.go:1688 +#: internal/data/backup.go:1698 msgid "|-Unzip backup file..." msgstr "|-解壓備份檔案……" -#: internal/data/backup.go:874 +#: internal/data/backup.go:879 msgid "|-Website path: %s" msgstr "|-網站路徑:%s" #: internal/data/backup.go:134 -#: internal/service/cli.go:712 +#: internal/service/cli.go:1140 msgid "★ Start backup [%s]" msgstr "★ 開始備份 [%s]" -#: internal/service/cli.go:727 +#: internal/service/cli.go:1154 msgid "★ Start cleaning [%s]" msgstr "★ 開始清理 [%s]" -#: internal/service/cli.go:834 +#: internal/service/cli.go:1274 msgid "★ Start cleaning rotated logs [%s]" msgstr "★ 開始清理已旋轉的日誌 [%s]" -#: internal/service/cli.go:758 -#: internal/service/cli.go:804 +#: internal/service/cli.go:1198 +#: internal/service/cli.go:1244 msgid "★ Start log rotation [%s]" msgstr "★ 開始日誌旋轉 [%s]" @@ -3900,25 +4115,25 @@ msgstr "☆ 備份完成 [%s]" msgid "☆ Backup failed: %v [%s]" msgstr "☆ 備份失敗:%v [%s]" -#: internal/service/cli.go:719 +#: internal/service/cli.go:1147 msgid "☆ Backup successful [%s]" msgstr "☆ 備份成功 [%s]" -#: internal/service/cli.go:745 -#: internal/service/cli.go:870 +#: internal/service/cli.go:1172 +#: internal/service/cli.go:1311 msgid "☆ Cleaning successful [%s]" msgstr "☆ 清理成功 [%s]" -#: internal/data/backup.go:299 +#: internal/data/backup.go:301 msgid "☆ Restore completed [%s]" msgstr "☆ 恢復完成 [%s]" -#: internal/data/backup.go:297 +#: internal/data/backup.go:299 msgid "☆ Restore failed: %v [%s]" msgstr "☆ 恢復失敗:%v [%s]" -#: internal/service/cli.go:783 -#: internal/service/cli.go:822 +#: internal/service/cli.go:1223 +#: internal/service/cli.go:1262 msgid "☆ Rotation successful [%s]" msgstr "☆ 旋轉成功 [%s]" diff --git a/web/src/locales/zh_CN.po b/web/src/locales/zh_CN.po index 2f5ee56f..469365b1 100644 --- a/web/src/locales/zh_CN.po +++ b/web/src/locales/zh_CN.po @@ -1,9 +1,5 @@ msgid "" msgstr "" -"Project-Id-Version: acepanel\n" -"PO-Revision-Date: 2026-08-15 10:05\n" -"Language-Team: Chinese Simplified\n" -"Language: zh_CN\n" "Content-Type: text/plain; charset=UTF-8\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: acepanel\n" @@ -11,8 +7,13 @@ msgstr "" "X-Crowdin-Language: zh-CN\n" "X-Crowdin-File: frontend.pot\n" "X-Crowdin-File-ID: 1168\n" +"Project-Id-Version: acepanel\n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"PO-Revision-Date: 2026-08-15 15:27\n" -#: src/components/common/AppFooter.vue:18 src/views/home/IndexView.vue:560 +#: src/components/common/AppFooter.vue:18 +#: src/views/home/IndexView.vue:560 msgid "AcePanel" msgstr "AcePanel" @@ -24,12 +25,18 @@ msgstr "版权所有" msgid "QQ Group" msgstr "QQ 群" -#: src/components/common/AppFooter.vue:38 src/locales/menu.ts:24 -#: src/views/apps/fail2ban/IndexView.vue:313 src/views/backup/IndexView.vue:53 -#: src/views/backup/ListView.vue:276 src/views/backup/ListView.vue:324 -#: src/views/cert/CertView.vue:550 src/views/cert/CertView.vue:667 -#: src/views/cert/CreateCertModal.vue:118 src/views/home/IndexView.vue:542 -#: src/views/task/CreateModal.vue:445 src/views/task/CreateModal.vue:467 +#: src/components/common/AppFooter.vue:38 +#: src/locales/menu.ts:24 +#: src/views/apps/fail2ban/IndexView.vue:361 +#: src/views/backup/IndexView.vue:53 +#: src/views/backup/ListView.vue:276 +#: src/views/backup/ListView.vue:324 +#: src/views/cert/CertView.vue:550 +#: src/views/cert/CertView.vue:667 +#: src/views/cert/CreateCertModal.vue:118 +#: src/views/home/IndexView.vue:542 +#: src/views/task/CreateModal.vue:445 +#: src/views/task/CreateModal.vue:467 #: src/views/toolbox/MigrationView.vue:75 msgid "Website" msgstr "网站" @@ -182,11 +189,16 @@ msgid "After Reboot" msgstr "重启后" #: src/components/common/CronSelector.vue:192 -#: src/views/monitor/SystemView.vue:713 src/views/monitor/SystemView.vue:767 -#: src/views/monitor/SystemView.vue:819 src/views/monitor/SystemView.vue:875 -#: src/views/monitor/SystemView.vue:942 src/views/project/CreateModal.vue:22 -#: src/views/project/CreateModal.vue:33 src/views/project/CreateModal.vue:46 -#: src/views/project/CreateModal.vue:58 src/views/project/CreateModal.vue:70 +#: src/views/monitor/SystemView.vue:713 +#: src/views/monitor/SystemView.vue:767 +#: src/views/monitor/SystemView.vue:819 +#: src/views/monitor/SystemView.vue:875 +#: src/views/monitor/SystemView.vue:942 +#: src/views/project/CreateModal.vue:22 +#: src/views/project/CreateModal.vue:33 +#: src/views/project/CreateModal.vue:46 +#: src/views/project/CreateModal.vue:58 +#: src/views/project/CreateModal.vue:70 #: src/views/website/StatsView.vue:160 msgid "Custom" msgstr "自定义" @@ -196,17 +208,20 @@ msgid "Month %{month}" msgstr "%{month} 月" #: src/components/common/CronSelector.vue:347 -#: src/views/apps/nginx/NginxIndex.vue:799 src/views/website/EditModal.vue:748 +#: src/views/apps/nginx/NginxIndex.vue:799 +#: src/views/website/EditModal.vue:748 msgid "Seconds" msgstr "秒" #: src/components/common/CronSelector.vue:358 -#: src/views/apps/nginx/NginxIndex.vue:800 src/views/website/EditModal.vue:749 +#: src/views/apps/nginx/NginxIndex.vue:800 +#: src/views/website/EditModal.vue:749 msgid "Minutes" msgstr "分" #: src/components/common/CronSelector.vue:369 -#: src/views/apps/nginx/NginxIndex.vue:801 src/views/website/EditModal.vue:750 +#: src/views/apps/nginx/NginxIndex.vue:801 +#: src/views/website/EditModal.vue:750 msgid "Hours" msgstr "时" @@ -246,7 +261,8 @@ msgstr "最大化" #: src/components/common/DraggableWindow.vue:289 #: src/components/file-editor/EditorPane.vue:282 #: src/layouts/tab/components/ContextMenu.vue:29 -#: src/views/cert/ObtainModal.vue:183 src/views/ssh/IndexView.vue:512 +#: src/views/cert/ObtainModal.vue:183 +#: src/views/ssh/IndexView.vue:512 msgid "Close" msgstr "关闭" @@ -269,8 +285,15 @@ msgstr "当前状态无法保存" #: src/views/apps/docker/IndexView.vue:176 #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:58 #: src/views/apps/elasticsearch/IndexView.vue:51 -#: src/views/apps/fail2ban/IndexView.vue:146 -#: src/views/apps/frp/IndexView.vue:38 src/views/apps/frp/IndexView.vue:49 +#: src/views/apps/fail2ban/IndexView.vue:174 +#: src/views/apps/fail2ban/IndexView.vue:225 +#: src/views/apps/fail2ban/IndexView.vue:235 +#: src/views/apps/frp/FrpcConfigTuneView.vue:64 +#: src/views/apps/frp/FrpProxyModal.vue:236 +#: src/views/apps/frp/FrpsConfigTuneView.vue:64 +#: src/views/apps/frp/FrpVisitorModal.vue:103 +#: src/views/apps/frp/IndexView.vue:48 +#: src/views/apps/frp/IndexView.vue:59 #: src/views/apps/gitea/IndexView.vue:24 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:139 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:174 @@ -309,25 +332,34 @@ msgstr "当前状态无法保存" #: src/views/apps/redis/RedisConfigTuneView.vue:109 #: src/views/apps/rocketmq/IndexView.vue:51 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:73 -#: src/views/apps/rsync/IndexView.vue:127 -#: src/views/apps/rsync/IndexView.vue:180 -#: src/views/apps/supervisor/IndexView.vue:201 -#: src/views/apps/supervisor/IndexView.vue:291 +#: src/views/apps/rsync/IndexView.vue:137 +#: src/views/apps/rsync/IndexView.vue:192 +#: src/views/apps/supervisor/IndexView.vue:234 +#: src/views/apps/supervisor/IndexView.vue:328 +#: src/views/apps/supervisor/IndexView.vue:343 #: src/views/apps/valkey/IndexView.vue:51 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:103 #: src/views/database/ElasticsearchDocModal.vue:61 -#: src/views/database/RedisKeyModal.vue:77 src/views/environment/GoView.vue:52 +#: src/views/database/RedisKeyModal.vue:77 +#: src/views/environment/GoView.vue:52 #: src/views/environment/NodejsView.vue:55 #: src/views/environment/PhpConfigTuneView.vue:183 -#: src/views/environment/PHPView.vue:149 src/views/environment/PHPView.vue:155 +#: src/views/environment/PHPView.vue:149 +#: src/views/environment/PHPView.vue:155 #: src/views/environment/PythonView.vue:59 #: src/views/monitor/AlertRuleModal.vue:116 -#: src/views/monitor/ChannelModal.vue:70 src/views/monitor/SettingView.vue:35 -#: src/views/monitor/SettingView.vue:183 src/views/project/EditModal.vue:159 -#: src/views/setting/IndexView.vue:84 src/views/tamper/RuleModal.vue:76 -#: src/views/tamper/TamperView.vue:55 src/views/toolbox/SystemView.vue:62 -#: src/views/toolbox/SystemView.vue:76 src/views/toolbox/SystemView.vue:90 -#: src/views/toolbox/SystemView.vue:137 src/views/website/EditModal.vue:197 +#: src/views/monitor/ChannelModal.vue:70 +#: src/views/monitor/SettingView.vue:35 +#: src/views/monitor/SettingView.vue:183 +#: src/views/project/EditModal.vue:159 +#: src/views/setting/IndexView.vue:84 +#: src/views/tamper/RuleModal.vue:76 +#: src/views/tamper/TamperView.vue:55 +#: src/views/toolbox/SystemView.vue:62 +#: src/views/toolbox/SystemView.vue:76 +#: src/views/toolbox/SystemView.vue:90 +#: src/views/toolbox/SystemView.vue:137 +#: src/views/website/EditModal.vue:197 msgid "Saved successfully" msgstr "保存成功" @@ -336,7 +368,8 @@ msgstr "保存成功" msgid "Remove" msgstr "移除" -#: src/components/common/PathSelector.vue:28 src/views/task/CreateModal.vue:506 +#: src/components/common/PathSelector.vue:28 +#: src/views/task/CreateModal.vue:506 msgid "Select Directory" msgstr "选择目录" @@ -346,8 +379,14 @@ msgstr "选择文件" #: src/components/common/PathSelector.vue:51 #: src/components/common/PathSelector.vue:395 -#: src/views/app/EnvironmentView.vue:38 src/views/app/InstalledView.vue:158 -#: src/views/apps/fail2ban/IndexView.vue:41 +#: src/views/app/EnvironmentView.vue:38 +#: src/views/app/InstalledView.vue:158 +#: src/views/apps/fail2ban/IndexView.vue:51 +#: src/views/apps/fail2ban/IndexView.vue:444 +#: src/views/apps/frp/FrpProxyModal.vue:255 +#: src/views/apps/frp/FrpProxyView.vue:22 +#: src/views/apps/frp/FrpVisitorModal.vue:122 +#: src/views/apps/frp/FrpVisitorView.vue:22 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:72 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:206 #: src/views/apps/nginx/NginxIndex.vue:153 @@ -355,27 +394,43 @@ msgstr "选择文件" #: src/views/apps/nginx/NginxIndex.vue:619 #: src/views/apps/nginx/NginxIndex.vue:705 #: src/views/apps/prometheus/PrometheusExportersView.vue:26 -#: src/views/apps/rsync/IndexView.vue:43 src/views/apps/rsync/IndexView.vue:263 -#: src/views/apps/supervisor/IndexView.vue:56 -#: src/views/apps/supervisor/IndexView.vue:392 -#: src/views/backup/StorageView.vue:66 src/views/backup/StorageView.vue:230 -#: src/views/backup/StorageView.vue:392 src/views/container/ComposeView.vue:59 -#: src/views/container/NetworkView.vue:48 src/views/container/VolumeView.vue:29 +#: src/views/apps/rsync/IndexView.vue:45 +#: src/views/apps/rsync/IndexView.vue:275 +#: src/views/apps/supervisor/IndexView.vue:89 +#: src/views/apps/supervisor/IndexView.vue:444 +#: src/views/backup/StorageView.vue:66 +#: src/views/backup/StorageView.vue:230 +#: src/views/backup/StorageView.vue:392 +#: src/views/container/ComposeView.vue:59 +#: src/views/container/NetworkView.vue:48 +#: src/views/container/VolumeView.vue:29 #: src/views/database/CreateServerModal.vue:108 #: src/views/database/ServerList.vue:66 -#: src/views/database/UpdateServerModal.vue:66 src/views/file/ListView.vue:1444 -#: src/views/file/PropertyModal.vue:27 src/views/file/ToolBar.vue:123 -#: src/views/home/IndexView.vue:671 src/views/home/IndexView.vue:772 -#: src/views/monitor/AlertRuleModal.vue:136 src/views/monitor/AlertView.vue:53 -#: src/views/monitor/ChannelModal.vue:90 src/views/monitor/SettingView.vue:102 -#: src/views/project/ListView.vue:37 src/views/setting/PasskeyModal.vue:26 -#: src/views/ssh/CreateModal.vue:60 src/views/ssh/UpdateModal.vue:66 -#: src/views/tamper/RuleModal.vue:105 src/views/tamper/TamperView.vue:118 -#: src/views/toolbox/LogView.vue:219 src/views/toolbox/MigrationView.vue:132 +#: src/views/database/UpdateServerModal.vue:66 +#: src/views/file/ListView.vue:1444 +#: src/views/file/PropertyModal.vue:27 +#: src/views/file/ToolBar.vue:123 +#: src/views/home/IndexView.vue:671 +#: src/views/home/IndexView.vue:772 +#: src/views/monitor/AlertRuleModal.vue:136 +#: src/views/monitor/AlertView.vue:53 +#: src/views/monitor/ChannelModal.vue:90 +#: src/views/monitor/SettingView.vue:102 +#: src/views/project/ListView.vue:37 +#: src/views/setting/PasskeyModal.vue:26 +#: src/views/ssh/CreateModal.vue:60 +#: src/views/ssh/UpdateModal.vue:66 +#: src/views/tamper/RuleModal.vue:105 +#: src/views/tamper/TamperView.vue:118 +#: src/views/toolbox/LogView.vue:219 +#: src/views/toolbox/MigrationView.vue:132 #: src/views/toolbox/MigrationView.vue:207 -#: src/views/toolbox/ProcessView.vue:106 src/views/toolbox/ProcessView.vue:393 -#: src/views/toolbox/WebHookView.vue:37 src/views/toolbox/WebHookView.vue:330 -#: src/views/toolbox/WebHookView.vue:371 src/views/website/CreateModal.vue:187 +#: src/views/toolbox/ProcessView.vue:106 +#: src/views/toolbox/ProcessView.vue:393 +#: src/views/toolbox/WebHookView.vue:37 +#: src/views/toolbox/WebHookView.vue:330 +#: src/views/toolbox/WebHookView.vue:371 +#: src/views/website/CreateModal.vue:187 #: src/views/website/EditModal.vue:2140 msgid "Name" msgstr "名称" @@ -384,37 +439,49 @@ msgstr "名称" msgid "Permissions" msgstr "权限" -#: src/components/common/PathSelector.vue:102 src/views/file/ListView.vue:1455 +#: src/components/common/PathSelector.vue:102 +#: src/views/file/ListView.vue:1455 msgid "Owner / Group" msgstr "所有者 / 组" -#: src/components/common/PathSelector.vue:114 src/views/backup/ListView.vue:48 +#: src/components/common/PathSelector.vue:114 +#: src/views/backup/ListView.vue:48 #: src/views/container/ImageView.vue:81 #: src/views/database/ElasticsearchDataView.vue:112 -#: src/views/database/RedisDataView.vue:116 src/views/file/ListView.vue:1451 -#: src/views/file/PropertyModal.vue:39 src/views/file/ToolBar.vue:124 +#: src/views/database/RedisDataView.vue:116 +#: src/views/file/ListView.vue:1451 +#: src/views/file/PropertyModal.vue:39 +#: src/views/file/ToolBar.vue:124 #: src/views/toolbox/disk/RaidView.vue:95 -#: src/views/toolbox/disk/RaidView.vue:177 src/views/toolbox/DiskView.vue:233 -#: src/views/toolbox/LogView.vue:220 src/views/toolbox/MigrationView.vue:153 +#: src/views/toolbox/disk/RaidView.vue:177 +#: src/views/toolbox/DiskView.vue:233 +#: src/views/toolbox/LogView.vue:220 +#: src/views/toolbox/MigrationView.vue:153 msgid "Size" msgstr "大小" -#: src/components/common/PathSelector.vue:149 src/views/file/ListView.vue:1618 +#: src/components/common/PathSelector.vue:149 +#: src/views/file/ListView.vue:1618 msgid "Calculate" msgstr "计算" -#: src/components/common/PathSelector.vue:154 src/views/file/ListView.vue:1460 -#: src/views/file/PropertyModal.vue:51 src/views/file/ToolBar.vue:125 +#: src/components/common/PathSelector.vue:154 +#: src/views/file/ListView.vue:1460 +#: src/views/file/PropertyModal.vue:51 +#: src/views/file/ToolBar.vue:125 msgid "Modification Time" msgstr "修改时间" -#: src/components/common/PathSelector.vue:188 src/views/file/ListView.vue:1284 +#: src/components/common/PathSelector.vue:188 +#: src/views/file/ListView.vue:1284 #: src/views/file/PathInput.vue:43 msgid "Invalid path" msgstr "无效路径" -#: src/components/common/PathSelector.vue:248 src/views/file/ListView.vue:147 -#: src/views/file/ListView.vue:825 src/views/file/ToolBar.vue:46 +#: src/components/common/PathSelector.vue:248 +#: src/views/file/ListView.vue:147 +#: src/views/file/ListView.vue:825 +#: src/views/file/ToolBar.vue:46 msgid "Invalid name" msgstr "无效的名称" @@ -423,7 +490,8 @@ msgstr "无效的名称" #: src/views/app/TemplateDeployModal.vue:237 #: src/views/backup/StorageView.vue:150 #: src/views/cert/CreateAccountModal.vue:55 -#: src/views/cert/CreateCertModal.vue:75 src/views/cert/CreateDnsModal.vue:44 +#: src/views/cert/CreateCertModal.vue:75 +#: src/views/cert/CreateDnsModal.vue:44 #: src/views/cert/UploadCertModal.vue:26 #: src/views/container/ComposeView.vue:231 #: src/views/container/ContainerCreate.vue:124 @@ -432,19 +500,24 @@ msgstr "无效的名称" #: src/views/database/CreateDatabaseModal.vue:48 #: src/views/database/CreateUserModal.vue:56 #: src/views/database/ElasticsearchDataView.vue:263 -#: src/views/file/ListView.vue:156 src/views/firewall/CreateForwardModal.vue:44 -#: src/views/setting/CreateModal.vue:22 src/views/setting/TokenModal.vue:117 -#: src/views/ssh/CreateModal.vue:41 src/views/task/CreateModal.vue:120 +#: src/views/file/ListView.vue:156 +#: src/views/firewall/CreateForwardModal.vue:44 +#: src/views/setting/CreateModal.vue:22 +#: src/views/setting/TokenModal.vue:117 +#: src/views/ssh/CreateModal.vue:41 +#: src/views/task/CreateModal.vue:120 #: src/views/toolbox/WebHookView.vue:249 msgid "Created successfully" msgstr "创建成功" #: src/components/common/PathSelector.vue:319 -#: src/views/file/PropertyModal.vue:34 src/views/file/ToolBar.vue:147 +#: src/views/file/PropertyModal.vue:34 +#: src/views/file/ToolBar.vue:147 msgid "File" msgstr "文件" -#: src/components/common/PathSelector.vue:320 src/views/file/ToolBar.vue:148 +#: src/components/common/PathSelector.vue:320 +#: src/views/file/ToolBar.vue:148 msgid "Folder" msgstr "文件夹" @@ -452,31 +525,43 @@ msgstr "文件夹" #: src/components/common/PathSelector.vue:387 #: src/views/app/TemplateDeployModal.vue:652 #: src/views/container/ContainerCreate.vue:653 -#: src/views/project/CreateModal.vue:693 src/views/setting/TokenModal.vue:270 -#: src/views/ssh/SftpBrowser.vue:160 src/views/toolbox/WebHookView.vue:356 +#: src/views/project/CreateModal.vue:693 +#: src/views/setting/TokenModal.vue:270 +#: src/views/ssh/SftpBrowser.vue:160 +#: src/views/toolbox/WebHookView.vue:356 #: src/views/website/BulkCreateModal.vue:240 #: src/views/website/CreateModal.vue:342 msgid "Create" msgstr "创建" -#: src/components/common/PathSelector.vue:333 src/views/file/PathInput.vue:155 +#: src/components/common/PathSelector.vue:333 +#: src/views/file/PathInput.vue:155 msgid "Root Directory" msgstr "根目录" #: src/components/common/PathSelector.vue:406 -#: src/views/apps/fail2ban/IndexView.vue:373 +#: src/views/apps/fail2ban/IndexView.vue:421 +#: src/views/apps/frp/FrpProxyModal.vue:582 +#: src/views/apps/frp/FrpVisitorModal.vue:241 #: src/views/apps/nginx/NginxIndex.vue:690 #: src/views/apps/nginx/NginxIndex.vue:816 #: src/views/apps/pureftpd/IndexView.vue:266 #: src/views/apps/pureftpd/IndexView.vue:296 -#: src/views/apps/rsync/IndexView.vue:319 src/views/apps/s3fs/IndexView.vue:185 -#: src/views/apps/supervisor/IndexView.vue:435 -#: src/views/backup/ListView.vue:310 src/views/backup/ListView.vue:351 -#: src/views/backup/StorageView.vue:376 src/views/backup/StorageView.vue:529 -#: src/views/cert/AccountView.vue:258 src/views/cert/CertView.vue:652 -#: src/views/cert/CertView.vue:700 src/views/cert/CreateAccountModal.vue:136 -#: src/views/cert/CreateCertModal.vue:164 src/views/cert/CreateDnsModal.vue:199 -#: src/views/cert/DnsView.vue:330 src/views/cert/ObtainModal.vue:180 +#: src/views/apps/rsync/IndexView.vue:334 +#: src/views/apps/s3fs/IndexView.vue:185 +#: src/views/apps/supervisor/IndexView.vue:487 +#: src/views/backup/ListView.vue:310 +#: src/views/backup/ListView.vue:351 +#: src/views/backup/StorageView.vue:376 +#: src/views/backup/StorageView.vue:529 +#: src/views/cert/AccountView.vue:258 +#: src/views/cert/CertView.vue:652 +#: src/views/cert/CertView.vue:700 +#: src/views/cert/CreateAccountModal.vue:136 +#: src/views/cert/CreateCertModal.vue:164 +#: src/views/cert/CreateDnsModal.vue:199 +#: src/views/cert/DnsView.vue:330 +#: src/views/cert/ObtainModal.vue:180 #: src/views/cert/UploadCertModal.vue:64 #: src/views/container/ComposeView.vue:341 #: src/views/container/ComposeView.vue:367 @@ -494,12 +579,16 @@ msgstr "根目录" #: src/views/database/RedisDataView.vue:378 #: src/views/database/RedisKeyModal.vue:130 #: src/views/database/UpdateServerModal.vue:124 -#: src/views/database/UpdateUserModal.vue:88 src/views/file/ToolBar.vue:230 +#: src/views/database/UpdateUserModal.vue:88 +#: src/views/file/ToolBar.vue:230 #: src/views/firewall/CreateForwardModal.vue:94 #: src/views/firewall/CreateIpModal.vue:125 -#: src/views/firewall/CreateModal.vue:205 src/views/setting/CreateModal.vue:71 -#: src/views/setting/PasswordModal.vue:53 src/views/setting/TwoFaModal.vue:95 -#: src/views/ssh/CreateModal.vue:110 src/views/ssh/UpdateModal.vue:116 +#: src/views/firewall/CreateModal.vue:205 +#: src/views/setting/CreateModal.vue:71 +#: src/views/setting/PasswordModal.vue:53 +#: src/views/setting/TwoFaModal.vue:95 +#: src/views/ssh/CreateModal.vue:110 +#: src/views/ssh/UpdateModal.vue:116 #: src/views/task/CreateModal.vue:548 msgid "Submit" msgstr "提交" @@ -522,7 +611,8 @@ msgstr "连接错误" #: src/components/common/PtyTerminalModal.vue:143 #: src/views/container/ImagePullModal.vue:104 -#: src/views/container/ImageView.vue:252 src/views/ssh/SftpPanel.vue:158 +#: src/views/container/ImageView.vue:252 +#: src/views/ssh/SftpPanel.vue:158 msgid "Failed to connect" msgstr "连接失败" @@ -532,28 +622,37 @@ msgstr "连接失败" #: src/components/system/ConfirmDialog.vue:54 #: src/layouts/header/components/UserAvatar.vue:30 #: src/views/app/TemplateDeployModal.vue:342 -#: src/views/apps/supervisor/IndexView.vue:133 -#: src/views/apps/supervisor/IndexView.vue:151 +#: src/views/apps/supervisor/IndexView.vue:166 +#: src/views/apps/supervisor/IndexView.vue:184 #: src/views/container/ComposeView.vue:171 -#: src/views/file/composables/usePaste.ts:72 src/views/file/UploadModal.vue:784 -#: src/views/home/IndexView.vue:1041 src/views/home/UpdateView.vue:119 -#: src/views/toolbox/DiskView.vue:353 src/views/toolbox/DiskView.vue:355 -#: src/views/toolbox/DiskView.vue:375 src/views/toolbox/DiskView.vue:377 -#: src/views/toolbox/DiskView.vue:441 src/views/toolbox/DiskView.vue:445 -#: src/views/toolbox/DiskView.vue:463 src/views/toolbox/DiskView.vue:480 -#: src/views/toolbox/DiskView.vue:484 src/views/toolbox/DiskView.vue:504 -#: src/views/toolbox/DiskView.vue:521 src/views/toolbox/DiskView.vue:526 -#: src/views/toolbox/DiskView.vue:547 src/views/toolbox/DiskView.vue:564 -#: src/views/toolbox/DiskView.vue:569 src/views/toolbox/DiskView.vue:591 +#: src/views/file/composables/usePaste.ts:72 +#: src/views/file/UploadModal.vue:784 +#: src/views/home/IndexView.vue:1041 +#: src/views/home/UpdateView.vue:119 +#: src/views/toolbox/DiskView.vue:353 +#: src/views/toolbox/DiskView.vue:355 +#: src/views/toolbox/DiskView.vue:375 +#: src/views/toolbox/DiskView.vue:377 +#: src/views/toolbox/DiskView.vue:441 +#: src/views/toolbox/DiskView.vue:445 +#: src/views/toolbox/DiskView.vue:463 +#: src/views/toolbox/DiskView.vue:480 +#: src/views/toolbox/DiskView.vue:484 +#: src/views/toolbox/DiskView.vue:504 +#: src/views/toolbox/DiskView.vue:521 +#: src/views/toolbox/DiskView.vue:526 +#: src/views/toolbox/DiskView.vue:547 +#: src/views/toolbox/DiskView.vue:564 +#: src/views/toolbox/DiskView.vue:569 +#: src/views/toolbox/DiskView.vue:591 #: src/views/toolbox/network/InterfaceView.vue:296 -#: src/views/toolbox/ProcessView.vue:242 src/views/toolbox/ProcessView.vue:247 +#: src/views/toolbox/ProcessView.vue:242 +#: src/views/toolbox/ProcessView.vue:247 msgid "Confirm" msgstr "确认" #: src/components/common/PtyTerminalModal.vue:203 -msgid "" -"Command may still running. Closing the window will terminate the command. " -"Are you sure?" +msgid "Command may still running. Closing the window will terminate the command. Are you sure?" msgstr "命令可能仍在运行。关闭窗口将终止命令。您确定吗?" #: src/components/common/PtyTerminalModal.vue:207 @@ -570,156 +669,185 @@ msgstr "命令可能仍在运行。关闭窗口将终止命令。您确定吗? #: src/views/container/ImagePullModal.vue:197 #: src/views/container/ImagePullModal.vue:211 #: src/views/container/ImagePullModal.vue:228 -#: src/views/container/ImageView.vue:370 src/views/container/ImageView.vue:385 +#: src/views/container/ImageView.vue:370 +#: src/views/container/ImageView.vue:385 #: src/views/file/composables/usePaste.ts:73 -#: src/views/file/composables/usePaste.ts:153 src/views/file/ListView.vue:312 -#: src/views/file/ListView.vue:851 src/views/file/ToolBar.vue:181 -#: src/views/file/UploadModal.vue:505 src/views/file/UploadModal.vue:640 -#: src/views/file/UploadModal.vue:783 src/views/home/IndexView.vue:1042 -#: src/views/home/UpdateView.vue:120 src/views/monitor/AlertRuleModal.vue:193 -#: src/views/monitor/ChannelModal.vue:148 src/views/project/EditModal.vue:579 -#: src/views/ssh/SftpPanel.vue:299 src/views/tamper/RuleModal.vue:134 -#: src/views/task/TaskView.vue:110 src/views/toolbox/DiskView.vue:356 -#: src/views/toolbox/DiskView.vue:378 src/views/toolbox/DiskView.vue:399 -#: src/views/toolbox/DiskView.vue:423 src/views/toolbox/DiskView.vue:446 -#: src/views/toolbox/DiskView.vue:464 src/views/toolbox/DiskView.vue:485 -#: src/views/toolbox/DiskView.vue:505 src/views/toolbox/DiskView.vue:527 -#: src/views/toolbox/DiskView.vue:548 src/views/toolbox/DiskView.vue:570 -#: src/views/toolbox/DiskView.vue:592 src/views/toolbox/MigrationView.vue:346 +#: src/views/file/composables/usePaste.ts:153 +#: src/views/file/ListView.vue:312 +#: src/views/file/ListView.vue:851 +#: src/views/file/ToolBar.vue:181 +#: src/views/file/UploadModal.vue:505 +#: src/views/file/UploadModal.vue:640 +#: src/views/file/UploadModal.vue:783 +#: src/views/home/IndexView.vue:1042 +#: src/views/home/UpdateView.vue:120 +#: src/views/monitor/AlertRuleModal.vue:193 +#: src/views/monitor/ChannelModal.vue:148 +#: src/views/project/EditModal.vue:579 +#: src/views/ssh/SftpPanel.vue:299 +#: src/views/tamper/RuleModal.vue:134 +#: src/views/task/TaskView.vue:110 +#: src/views/toolbox/DiskView.vue:356 +#: src/views/toolbox/DiskView.vue:378 +#: src/views/toolbox/DiskView.vue:399 +#: src/views/toolbox/DiskView.vue:423 +#: src/views/toolbox/DiskView.vue:446 +#: src/views/toolbox/DiskView.vue:464 +#: src/views/toolbox/DiskView.vue:485 +#: src/views/toolbox/DiskView.vue:505 +#: src/views/toolbox/DiskView.vue:527 +#: src/views/toolbox/DiskView.vue:548 +#: src/views/toolbox/DiskView.vue:570 +#: src/views/toolbox/DiskView.vue:592 +#: src/views/toolbox/MigrationView.vue:346 #: src/views/toolbox/MigrationView.vue:416 #: src/views/toolbox/network/InterfaceView.vue:297 #: src/views/toolbox/network/InterfaceView.vue:429 -#: src/views/toolbox/ProcessView.vue:248 src/views/website/EditModal.vue:215 +#: src/views/toolbox/ProcessView.vue:248 +#: src/views/website/EditModal.vue:215 #: src/views/website/EditModal.vue:2249 msgid "Cancel" msgstr "取消" -#: src/components/common/PtyTerminalModal.vue:259 src/locales/menu.ts:20 +#: src/components/common/PtyTerminalModal.vue:259 +#: src/locales/menu.ts:20 #: src/views/container/ContainerView.vue:142 #: src/views/container/ContainerView.vue:669 -#: src/views/database/ServerList.vue:174 src/views/file/ListView.vue:422 -#: src/views/file/ListView.vue:1024 src/views/file/ToolBar.vue:156 +#: src/views/database/ServerList.vue:174 +#: src/views/file/ListView.vue:422 +#: src/views/file/ListView.vue:1024 +#: src/views/file/ToolBar.vue:156 msgid "Terminal" msgstr "终端" -#: src/components/common/RealtimeLog.vue:57 +#: src/components/common/RealtimeLog.vue:59 msgid "Connected" msgstr "已连接" -#: src/components/common/RealtimeLog.vue:59 +#: src/components/common/RealtimeLog.vue:61 #: src/views/container/ImagePullModal.vue:56 #: src/views/container/ImageView.vue:199 msgid "Connecting..." msgstr "连接中……" -#: src/components/common/RealtimeLog.vue:60 +#: src/components/common/RealtimeLog.vue:62 msgid "Connection failed, retrying..." msgstr "连接失败,正在重试..." -#: src/components/common/RealtimeLog.vue:286 +#: src/components/common/RealtimeLog.vue:289 #: src/views/apps/clickhouse/IndexView.vue:77 #: src/views/apps/mongodb/IndexView.vue:77 #: src/views/apps/mysql/MysqlIndex.vue:110 #: src/views/apps/postgresql/IndexView.vue:144 -#: src/views/database/ServerList.vue:102 src/views/database/UserList.vue:52 +#: src/views/database/ServerList.vue:102 +#: src/views/database/UserList.vue:52 #: src/views/file/composables/usePaste.ts:29 #: src/views/setting/TokenModal.vue:155 msgid "Copied successfully" msgstr "复制成功" -#: src/components/common/RealtimeLog.vue:312 +#: src/components/common/RealtimeLog.vue:315 msgid "Not found" msgstr "未找到" -#: src/components/common/RealtimeLog.vue:395 +#: src/components/common/RealtimeLog.vue:399 msgid "Pause Auto-scroll" msgstr "暂停自动滚动" -#: src/components/common/RealtimeLog.vue:395 +#: src/components/common/RealtimeLog.vue:399 msgid "Resume Auto-scroll" msgstr "恢复自动滚动" -#: src/components/common/RealtimeLog.vue:401 +#: src/components/common/RealtimeLog.vue:405 msgid "Jump to Top" msgstr "跳转到顶部" -#: src/components/common/RealtimeLog.vue:404 +#: src/components/common/RealtimeLog.vue:408 msgid "Jump to Bottom" msgstr "跳转到底部" -#: src/components/common/RealtimeLog.vue:409 +#: src/components/common/RealtimeLog.vue:413 #: src/components/file-editor/EditorToolbar.vue:190 -#: src/components/file-editor/FileTree.vue:702 src/views/app/AppView.vue:237 -#: src/views/app/EnvironmentView.vue:264 src/views/app/TemplateView.vue:102 +#: src/components/file-editor/FileTree.vue:702 +#: src/views/app/AppView.vue:237 +#: src/views/app/EnvironmentView.vue:264 +#: src/views/app/TemplateView.vue:102 #: src/views/database/ElasticsearchDataView.vue:314 #: src/views/database/RedisDataView.vue:289 msgid "Search" msgstr "搜索" -#: src/components/common/RealtimeLog.vue:418 +#: src/components/common/RealtimeLog.vue:422 msgid "Enter keyword and press Enter" msgstr "输入关键字并按回车" -#: src/components/common/RealtimeLog.vue:421 +#: src/components/common/RealtimeLog.vue:425 #: src/views/app/TemplateDeployModal.vue:631 msgid "Previous" msgstr "返回" -#: src/components/common/RealtimeLog.vue:424 +#: src/components/common/RealtimeLog.vue:428 #: src/views/app/TemplateDeployModal.vue:640 #: src/views/app/TemplateDeployModal.vue:643 msgid "Next" msgstr "下一步" -#: src/components/common/RealtimeLog.vue:429 +#: src/components/common/RealtimeLog.vue:433 msgid "Only loaded logs are searched" msgstr "仅搜索已加载的日志" -#: src/components/common/RealtimeLog.vue:438 +#: src/components/common/RealtimeLog.vue:442 msgid "Disable Line Wrap" msgstr "禁用自动换行" -#: src/components/common/RealtimeLog.vue:438 +#: src/components/common/RealtimeLog.vue:442 msgid "Enable Line Wrap" msgstr "启用自动换行" -#: src/components/common/RealtimeLog.vue:443 +#: src/components/common/RealtimeLog.vue:447 msgid "Copy All" msgstr "全部复制" -#: src/components/common/RealtimeLog.vue:447 +#: src/components/common/RealtimeLog.vue:451 msgid "Decrease Font Size" msgstr "减小字体大小" -#: src/components/common/RealtimeLog.vue:450 +#: src/components/common/RealtimeLog.vue:454 msgid "Increase Font Size" msgstr "增大字体大小" -#: src/components/common/RealtimeLog.vue:456 src/views/ssh/IndexView.vue:549 +#: src/components/common/RealtimeLog.vue:460 +#: src/views/ssh/IndexView.vue:549 msgid "Exit Fullscreen" msgstr "退出全屏" -#: src/components/common/RealtimeLog.vue:456 src/views/ssh/IndexView.vue:549 +#: src/components/common/RealtimeLog.vue:460 +#: src/views/ssh/IndexView.vue:549 msgid "Fullscreen" msgstr "全屏" -#: src/components/common/RealtimeLog.vue:476 +#: src/components/common/RealtimeLog.vue:480 msgid "No more logs" msgstr "没有更多日志" -#: src/components/common/RealtimeLog.vue:493 +#: src/components/common/RealtimeLog.vue:497 msgid "%{ count } new line" msgid_plural "%{ count } new lines" msgstr[0] "%{ count } 行新日志" -#: src/components/common/RealtimeLog.vue:500 +#: src/components/common/RealtimeLog.vue:504 msgid "No logs available" msgstr "暂无日志数据" -#: src/components/common/RealtimeLogModal.vue:42 src/locales/menu.ts:16 -#: src/views/apps/supervisor/IndexView.vue:98 -#: src/views/container/ContainerView.vue:154 src/views/project/ListView.vue:168 -#: src/views/project/ListView.vue:334 src/views/task/CronView.vue:146 +#: src/components/common/RealtimeLogModal.vue:42 +#: src/locales/menu.ts:16 +#: src/views/apps/frp/FrpcConfigTuneView.vue:268 +#: src/views/apps/frp/FrpsConfigTuneView.vue:296 +#: src/views/apps/supervisor/IndexView.vue:131 +#: src/views/container/ContainerView.vue:154 +#: src/views/project/ListView.vue:168 +#: src/views/project/ListView.vue:334 +#: src/views/task/CronView.vue:146 #: src/views/task/TaskView.vue:88 msgid "Logs" msgstr "日志" @@ -739,14 +867,17 @@ msgstr "您确定要清除日志吗?" #: src/views/apps/nginx/NginxIndex.vue:599 #: src/views/apps/postgresql/IndexView.vue:254 #: src/views/apps/postgresql/IndexView.vue:270 -#: src/views/apps/supervisor/IndexView.vue:373 +#: src/views/apps/supervisor/IndexView.vue:425 #: src/views/environment/PHPView.vue:276 msgid "Clear Log" msgstr "清除日志" -#: src/components/common/ServiceStatus.vue:29 src/views/home/IndexView.vue:903 -#: src/views/home/IndexView.vue:911 src/views/home/IndexView.vue:918 -#: src/views/home/IndexView.vue:924 src/views/home/IndexView.vue:935 +#: src/components/common/ServiceStatus.vue:29 +#: src/views/home/IndexView.vue:903 +#: src/views/home/IndexView.vue:911 +#: src/views/home/IndexView.vue:918 +#: src/views/home/IndexView.vue:924 +#: src/views/home/IndexView.vue:935 #: src/views/home/IndexView.vue:947 msgid "Loading..." msgstr "加载中……" @@ -754,18 +885,23 @@ msgstr "加载中……" #: src/components/common/ServiceStatus.vue:30 #: src/views/app/InstalledView.vue:16 #: src/views/apps/prometheus/PrometheusExportersView.vue:50 -#: src/views/project/ListView.vue:70 src/views/task/TaskView.vue:47 +#: src/views/project/ListView.vue:70 +#: src/views/task/TaskView.vue:47 #: src/views/toolbox/MigrationView.vue:83 -#: src/views/toolbox/MigrationView.vue:149 src/views/toolbox/ProcessView.vue:48 -#: src/views/toolbox/ProcessView.vue:77 src/views/website/ListView.vue:135 +#: src/views/toolbox/MigrationView.vue:149 +#: src/views/toolbox/ProcessView.vue:48 +#: src/views/toolbox/ProcessView.vue:77 +#: src/views/website/ListView.vue:135 msgid "Running" msgstr "运行中" #: src/components/common/ServiceStatus.vue:30 #: src/views/app/InstalledView.vue:17 #: src/views/apps/prometheus/PrometheusExportersView.vue:51 -#: src/views/project/ListView.vue:72 src/views/tamper/TamperView.vue:234 -#: src/views/toolbox/MigrationView.vue:149 src/views/toolbox/ProcessView.vue:50 +#: src/views/project/ListView.vue:72 +#: src/views/tamper/TamperView.vue:234 +#: src/views/toolbox/MigrationView.vue:149 +#: src/views/toolbox/ProcessView.vue:50 #: src/views/toolbox/ProcessView.vue:83 msgid "Stopped" msgstr "已停止" @@ -776,8 +912,9 @@ msgstr "正在启动……" #: src/components/common/ServiceStatus.vue:52 #: src/views/apps/prometheus/PrometheusExportersView.vue:160 -#: src/views/apps/supervisor/IndexView.vue:236 -#: src/views/project/ListView.vue:222 src/views/website/ListView.vue:335 +#: src/views/apps/supervisor/IndexView.vue:269 +#: src/views/project/ListView.vue:222 +#: src/views/website/ListView.vue:335 msgid "Started successfully" msgstr "启动成功" @@ -788,8 +925,9 @@ msgstr "停止中..." #: src/components/common/ServiceStatus.vue:67 #: src/views/apps/prometheus/PrometheusExportersView.vue:167 -#: src/views/apps/supervisor/IndexView.vue:243 -#: src/views/project/ListView.vue:217 src/views/website/ListView.vue:337 +#: src/views/apps/supervisor/IndexView.vue:276 +#: src/views/project/ListView.vue:217 +#: src/views/website/ListView.vue:337 msgid "Stopped successfully" msgstr "停止成功" @@ -799,7 +937,7 @@ msgstr "重启中..." #: src/components/common/ServiceStatus.vue:82 #: src/views/apps/prometheus/PrometheusExportersView.vue:174 -#: src/views/apps/supervisor/IndexView.vue:250 +#: src/views/apps/supervisor/IndexView.vue:283 #: src/views/project/ListView.vue:230 msgid "Restarted successfully" msgstr "重启成功" @@ -831,7 +969,9 @@ msgstr "自启动已成功禁用" #: src/views/apps/codeserver/IndexView.vue:37 #: src/views/apps/docker/IndexView.vue:191 #: src/views/apps/elasticsearch/IndexView.vue:62 -#: src/views/apps/fail2ban/IndexView.vue:222 +#: src/views/apps/fail2ban/IndexView.vue:270 +#: src/views/apps/frp/IndexView.vue:77 +#: src/views/apps/frp/IndexView.vue:129 #: src/views/apps/gitea/IndexView.vue:35 #: src/views/apps/grafana/IndexView.vue:63 #: src/views/apps/kafka/IndexView.vue:62 @@ -847,11 +987,12 @@ msgstr "自启动已成功禁用" #: src/views/apps/pureftpd/IndexView.vue:168 #: src/views/apps/redis/IndexView.vue:62 #: src/views/apps/rocketmq/IndexView.vue:62 -#: src/views/apps/rsync/IndexView.vue:194 -#: src/views/apps/supervisor/IndexView.vue:308 +#: src/views/apps/rsync/IndexView.vue:206 +#: src/views/apps/supervisor/IndexView.vue:360 #: src/views/apps/valkey/IndexView.vue:62 #: src/views/container/ContainerView.vue:106 -#: src/views/environment/PHPView.vue:189 src/views/tamper/TamperView.vue:230 +#: src/views/environment/PHPView.vue:189 +#: src/views/tamper/TamperView.vue:230 msgid "Running Status" msgstr "运行状态" @@ -865,10 +1006,11 @@ msgstr "自启动关闭" #: src/components/common/ServiceStatus.vue:160 #: src/views/apps/prometheus/PrometheusExportersView.vue:88 -#: src/views/apps/supervisor/IndexView.vue:120 +#: src/views/apps/supervisor/IndexView.vue:153 #: src/views/container/ComposeView.vue:160 #: src/views/container/ContainerView.vue:181 -#: src/views/container/ContainerView.vue:593 src/views/project/ListView.vue:130 +#: src/views/container/ContainerView.vue:593 +#: src/views/project/ListView.vue:130 msgid "Start" msgstr "启动" @@ -878,18 +1020,20 @@ msgstr "您确定要停止 %{ service } 吗?" #: src/components/common/ServiceStatus.vue:171 #: src/views/apps/prometheus/PrometheusExportersView.vue:96 -#: src/views/apps/supervisor/IndexView.vue:141 +#: src/views/apps/supervisor/IndexView.vue:174 #: src/views/container/ComposeView.vue:189 #: src/views/container/ContainerView.vue:186 -#: src/views/container/ContainerView.vue:596 src/views/project/ListView.vue:130 +#: src/views/container/ContainerView.vue:596 +#: src/views/project/ListView.vue:130 msgid "Stop" msgstr "停止" #: src/components/common/ServiceStatus.vue:181 #: src/views/apps/prometheus/PrometheusExportersView.vue:103 -#: src/views/apps/supervisor/IndexView.vue:159 +#: src/views/apps/supervisor/IndexView.vue:192 #: src/views/container/ContainerView.vue:191 -#: src/views/container/ContainerView.vue:599 src/views/home/IndexView.vue:567 +#: src/views/container/ContainerView.vue:599 +#: src/views/home/IndexView.vue:567 #: src/views/project/ListView.vue:145 msgid "Restart" msgstr "重启" @@ -935,8 +1079,22 @@ msgstr "放弃" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:97 #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:132 #: src/views/apps/elasticsearch/IndexView.vue:82 -#: src/views/apps/frp/IndexView.vue:76 src/views/apps/frp/IndexView.vue:91 -#: src/views/apps/frp/IndexView.vue:109 src/views/apps/frp/IndexView.vue:124 +#: src/views/apps/fail2ban/IndexView.vue:482 +#: src/views/apps/frp/FrpcConfigTuneView.vue:115 +#: src/views/apps/frp/FrpcConfigTuneView.vue:145 +#: src/views/apps/frp/FrpcConfigTuneView.vue:221 +#: src/views/apps/frp/FrpcConfigTuneView.vue:263 +#: src/views/apps/frp/FrpcConfigTuneView.vue:295 +#: src/views/apps/frp/FrpsConfigTuneView.vue:131 +#: src/views/apps/frp/FrpsConfigTuneView.vue:161 +#: src/views/apps/frp/FrpsConfigTuneView.vue:198 +#: src/views/apps/frp/FrpsConfigTuneView.vue:243 +#: src/views/apps/frp/FrpsConfigTuneView.vue:291 +#: src/views/apps/frp/FrpsConfigTuneView.vue:323 +#: src/views/apps/frp/IndexView.vue:95 +#: src/views/apps/frp/IndexView.vue:117 +#: src/views/apps/frp/IndexView.vue:153 +#: src/views/apps/frp/IndexView.vue:175 #: src/views/apps/gitea/IndexView.vue:55 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:184 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:218 @@ -1000,33 +1158,44 @@ msgstr "放弃" #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:112 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:143 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:176 -#: src/views/apps/rsync/IndexView.vue:242 -#: src/views/apps/rsync/IndexView.vue:374 -#: src/views/apps/supervisor/IndexView.vue:356 -#: src/views/apps/supervisor/IndexView.vue:463 +#: src/views/apps/rsync/IndexView.vue:254 +#: src/views/apps/rsync/IndexView.vue:392 +#: src/views/apps/supervisor/IndexView.vue:408 +#: src/views/apps/supervisor/IndexView.vue:583 +#: src/views/apps/supervisor/IndexView.vue:597 #: src/views/apps/valkey/IndexView.vue:82 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:171 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:205 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:230 #: src/views/container/ContainerCreate.vue:653 -#: src/views/environment/GoView.vue:90 src/views/environment/NodejsView.vue:93 +#: src/views/environment/GoView.vue:90 +#: src/views/environment/NodejsView.vue:93 #: src/views/environment/PhpConfigTuneView.vue:274 #: src/views/environment/PhpConfigTuneView.vue:305 #: src/views/environment/PhpConfigTuneView.vue:376 #: src/views/environment/PhpConfigTuneView.vue:421 #: src/views/environment/PhpConfigTuneView.vue:486 #: src/views/environment/PhpConfigTuneView.vue:561 -#: src/views/environment/PHPView.vue:236 src/views/environment/PHPView.vue:254 -#: src/views/environment/PythonView.vue:97 src/views/file/EditModal.vue:89 +#: src/views/environment/PHPView.vue:236 +#: src/views/environment/PHPView.vue:254 +#: src/views/environment/PythonView.vue:97 +#: src/views/file/EditModal.vue:89 #: src/views/firewall/SettingView.vue:136 #: src/views/monitor/AlertRuleModal.vue:195 -#: src/views/monitor/ChannelModal.vue:150 src/views/monitor/SettingView.vue:226 -#: src/views/monitor/SettingView.vue:293 src/views/project/EditModal.vue:582 -#: src/views/setting/IndexView.vue:169 src/views/tamper/RuleModal.vue:136 -#: src/views/task/CreateModal.vue:548 src/views/task/CronView.vue:344 -#: src/views/toolbox/SshView.vue:220 src/views/toolbox/SystemView.vue:171 -#: src/views/toolbox/SystemView.vue:194 src/views/toolbox/SystemView.vue:237 -#: src/views/toolbox/SystemView.vue:319 src/views/toolbox/WebHookView.vue:400 +#: src/views/monitor/ChannelModal.vue:150 +#: src/views/monitor/SettingView.vue:226 +#: src/views/monitor/SettingView.vue:293 +#: src/views/project/EditModal.vue:582 +#: src/views/setting/IndexView.vue:169 +#: src/views/tamper/RuleModal.vue:136 +#: src/views/task/CreateModal.vue:548 +#: src/views/task/CronView.vue:344 +#: src/views/toolbox/SshView.vue:220 +#: src/views/toolbox/SystemView.vue:171 +#: src/views/toolbox/SystemView.vue:194 +#: src/views/toolbox/SystemView.vue:237 +#: src/views/toolbox/SystemView.vue:319 +#: src/views/toolbox/WebHookView.vue:400 #: src/views/website/EditModal.vue:2258 msgid "Save" msgstr "保存" @@ -1102,15 +1271,22 @@ msgstr "此文件有未保存的更改。刷新将丢弃它们。是否继续? #: src/components/file-editor/EditorToolbar.vue:76 #: src/components/file-editor/EditorToolbar.vue:169 #: src/components/file-editor/EditorToolbar.vue:174 -#: src/components/file-editor/FileTree.vue:680 src/views/file/PathInput.vue:133 -#: src/views/home/UpdateView.vue:178 src/views/log/DatabaseLog.vue:132 -#: src/views/log/HttpLog.vue:161 src/views/log/OperationLog.vue:184 -#: src/views/log/SSHLog.vue:115 src/views/monitor/AlertView.vue:240 -#: src/views/ssh/SftpBrowser.vue:138 src/views/tamper/TamperView.vue:379 +#: src/components/file-editor/FileTree.vue:680 +#: src/views/file/PathInput.vue:133 +#: src/views/home/UpdateView.vue:178 +#: src/views/log/DatabaseLog.vue:132 +#: src/views/log/HttpLog.vue:161 +#: src/views/log/OperationLog.vue:184 +#: src/views/log/SSHLog.vue:115 +#: src/views/monitor/AlertView.vue:240 +#: src/views/ssh/SftpBrowser.vue:138 +#: src/views/tamper/TamperView.vue:379 #: src/views/toolbox/MigrationView.vue:566 #: src/views/toolbox/network/InterfaceView.vue:350 -#: src/views/toolbox/NetworkView.vue:193 src/views/toolbox/PanelView.vue:100 -#: src/views/toolbox/PanelView.vue:233 src/views/toolbox/ProcessView.vue:335 +#: src/views/toolbox/NetworkView.vue:193 +#: src/views/toolbox/PanelView.vue:100 +#: src/views/toolbox/PanelView.vue:233 +#: src/views/toolbox/ProcessView.vue:335 #: src/views/website/StatsView.vue:176 msgid "Refresh" msgstr "刷新" @@ -1160,8 +1336,10 @@ msgid "Toggle Minimap" msgstr "切换小地图" #: src/components/file-editor/EditorToolbar.vue:260 -#: src/views/firewall/IndexView.vue:28 src/views/monitor/IndexView.vue:22 -#: src/views/ssh/IndexView.vue:527 src/views/tamper/TamperView.vue:224 +#: src/views/firewall/IndexView.vue:28 +#: src/views/monitor/IndexView.vue:22 +#: src/views/ssh/IndexView.vue:527 +#: src/views/tamper/TamperView.vue:224 #: src/views/website/IndexView.vue:30 msgid "Settings" msgstr "设置" @@ -1237,14 +1415,21 @@ msgid "Render Whitespace" msgstr "渲染空格" #: src/components/file-editor/FileEditorView.vue:225 -#: src/views/apps/docker/IndexView.vue:83 src/views/cert/CertView.vue:152 -#: src/views/cert/CertView.vue:206 src/views/cert/CertView.vue:218 -#: src/views/cert/CertView.vue:241 src/views/cert/CertView.vue:259 +#: src/views/apps/docker/IndexView.vue:83 +#: src/views/cert/CertView.vue:152 +#: src/views/cert/CertView.vue:206 +#: src/views/cert/CertView.vue:218 +#: src/views/cert/CertView.vue:241 +#: src/views/cert/CertView.vue:259 #: src/views/container/ContainerCreate.vue:57 -#: src/views/database/ServerList.vue:78 src/views/database/ServerList.vue:93 -#: src/views/database/UserList.vue:28 src/views/database/UserList.vue:68 -#: src/views/firewall/ForwardView.vue:27 src/views/firewall/IpRuleView.vue:27 -#: src/views/firewall/IpRuleView.vue:44 src/views/firewall/RuleView.vue:67 +#: src/views/database/ServerList.vue:78 +#: src/views/database/ServerList.vue:93 +#: src/views/database/UserList.vue:28 +#: src/views/database/UserList.vue:68 +#: src/views/firewall/ForwardView.vue:27 +#: src/views/firewall/IpRuleView.vue:27 +#: src/views/firewall/IpRuleView.vue:44 +#: src/views/firewall/RuleView.vue:67 #: src/views/firewall/RuleView.vue:84 msgid "None" msgstr "无" @@ -1262,9 +1447,12 @@ msgid "Trailing" msgstr "尾部" #: src/components/file-editor/FileEditorView.vue:229 -#: src/views/app/AppView.vue:222 src/views/app/EnvironmentView.vue:249 -#: src/views/app/TemplateView.vue:87 src/views/firewall/RuleView.vue:255 -#: src/views/project/IndexView.vue:21 src/views/website/IndexView.vue:25 +#: src/views/app/AppView.vue:222 +#: src/views/app/EnvironmentView.vue:249 +#: src/views/app/TemplateView.vue:87 +#: src/views/firewall/RuleView.vue:255 +#: src/views/project/IndexView.vue:21 +#: src/views/website/IndexView.vue:25 #: src/views/website/stats/ErrorsTab.vue:18 msgid "All" msgstr "全部" @@ -1361,12 +1549,14 @@ msgstr "输入时格式化" msgid "Failed to create" msgstr "创建失败" -#: src/components/file-editor/FileTree.vue:360 src/views/file/ListView.vue:1481 +#: src/components/file-editor/FileTree.vue:360 +#: src/views/file/ListView.vue:1481 #: src/views/file/ListView.vue:1502 msgid "Folder name" msgstr "文件夹名" -#: src/components/file-editor/FileTree.vue:360 src/views/file/ListView.vue:1481 +#: src/components/file-editor/FileTree.vue:360 +#: src/views/file/ListView.vue:1481 #: src/views/file/ListView.vue:1502 msgid "File name" msgstr "文件名" @@ -1376,8 +1566,10 @@ msgstr "文件名" #: src/views/container/ContainerView.vue:640 #: src/views/database/RedisDataView.vue:168 #: src/views/file/composables/usePaste.ts:48 -#: src/views/file/composables/usePaste.ts:164 src/views/file/ListView.vue:420 -#: src/views/file/ListView.vue:1674 src/views/file/UploadModal.vue:747 +#: src/views/file/composables/usePaste.ts:164 +#: src/views/file/ListView.vue:420 +#: src/views/file/ListView.vue:1674 +#: src/views/file/UploadModal.vue:747 #: src/views/file/UploadModal.vue:776 msgid "Rename" msgstr "重命名" @@ -1387,49 +1579,73 @@ msgstr "重命名" #: src/components/file-editor/FileTree.vue:589 #: src/components/system/composables/useConfirm.ts:32 #: src/components/system/ConfirmDialog.vue:54 -#: src/views/apps/fail2ban/IndexView.vue:96 +#: src/views/apps/fail2ban/IndexView.vue:124 +#: src/views/apps/frp/FrpProxyView.vue:105 +#: src/views/apps/frp/FrpVisitorView.vue:94 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:127 #: src/views/apps/nginx/NginxIndex.vue:216 #: src/views/apps/nginx/NginxIndex.vue:280 #: src/views/apps/nginx/NginxIndex.vue:764 #: src/views/apps/prometheus/PrometheusExportersView.vue:134 #: src/views/apps/pureftpd/IndexView.vue:87 -#: src/views/apps/rsync/IndexView.vue:101 -#: src/views/apps/supervisor/IndexView.vue:178 -#: src/views/backup/ListView.vue:106 src/views/backup/StorageView.vue:126 -#: src/views/cert/AccountView.vue:113 src/views/cert/CertView.vue:390 -#: src/views/cert/DnsView.vue:109 src/views/container/ComposeView.vue:209 +#: src/views/apps/rsync/IndexView.vue:111 +#: src/views/apps/supervisor/IndexView.vue:211 +#: src/views/backup/ListView.vue:106 +#: src/views/backup/StorageView.vue:126 +#: src/views/cert/AccountView.vue:113 +#: src/views/cert/CertView.vue:390 +#: src/views/cert/DnsView.vue:109 +#: src/views/container/ComposeView.vue:209 #: src/views/container/ComposeView.vue:289 #: src/views/container/ContainerView.vue:211 #: src/views/container/ContainerView.vue:611 -#: src/views/container/ImageView.vue:114 src/views/container/ImageView.vue:296 +#: src/views/container/ImageView.vue:114 +#: src/views/container/ImageView.vue:296 #: src/views/container/NetworkView.vue:130 #: src/views/container/NetworkView.vue:221 -#: src/views/container/VolumeView.vue:83 src/views/container/VolumeView.vue:167 +#: src/views/container/VolumeView.vue:83 +#: src/views/container/VolumeView.vue:167 #: src/views/database/DatabaseList.vue:86 #: src/views/database/ElasticsearchDataView.vue:146 #: src/views/database/ElasticsearchDataView.vue:200 #: src/views/database/RedisDataView.vue:182 -#: src/views/database/ServerList.vue:247 src/views/database/UserList.vue:165 -#: src/views/environment/PHPView.vue:107 src/views/file/ListView.vue:378 -#: src/views/file/ListView.vue:434 src/views/file/ListView.vue:1685 -#: src/views/file/ToolBar.vue:198 src/views/firewall/ForwardView.vue:98 -#: src/views/firewall/ForwardView.vue:162 src/views/firewall/IpRuleView.vue:140 -#: src/views/firewall/IpRuleView.vue:204 src/views/firewall/RuleView.vue:280 -#: src/views/firewall/RuleView.vue:361 src/views/monitor/AlertView.vue:118 -#: src/views/monitor/SettingView.vue:151 src/views/project/ListView.vue:194 -#: src/views/project/ListView.vue:305 src/views/setting/PasskeyModal.vue:68 -#: src/views/setting/SettingUser.vue:142 src/views/setting/TokenModal.vue:87 -#: src/views/ssh/IndexView.vue:625 src/views/tamper/TamperView.vue:156 -#: src/views/task/CronView.vue:169 src/views/task/IndexView.vue:41 -#: src/views/task/TaskView.vue:127 src/views/toolbox/WebHookView.vue:172 -#: src/views/website/ListView.vue:305 src/views/website/ListView.vue:423 +#: src/views/database/ServerList.vue:247 +#: src/views/database/UserList.vue:165 +#: src/views/environment/PHPView.vue:107 +#: src/views/file/ListView.vue:378 +#: src/views/file/ListView.vue:434 +#: src/views/file/ListView.vue:1685 +#: src/views/file/ToolBar.vue:198 +#: src/views/firewall/ForwardView.vue:98 +#: src/views/firewall/ForwardView.vue:162 +#: src/views/firewall/IpRuleView.vue:140 +#: src/views/firewall/IpRuleView.vue:204 +#: src/views/firewall/RuleView.vue:280 +#: src/views/firewall/RuleView.vue:361 +#: src/views/monitor/AlertView.vue:118 +#: src/views/monitor/SettingView.vue:151 +#: src/views/project/ListView.vue:194 +#: src/views/project/ListView.vue:305 +#: src/views/setting/PasskeyModal.vue:68 +#: src/views/setting/SettingUser.vue:142 +#: src/views/setting/TokenModal.vue:87 +#: src/views/ssh/IndexView.vue:625 +#: src/views/tamper/TamperView.vue:156 +#: src/views/task/CronView.vue:169 +#: src/views/task/IndexView.vue:41 +#: src/views/task/TaskView.vue:127 +#: src/views/toolbox/WebHookView.vue:172 +#: src/views/website/ListView.vue:305 +#: src/views/website/ListView.vue:423 msgid "Delete" msgstr "删除" -#: src/components/file-editor/FileTree.vue:463 src/views/backup/ListView.vue:79 -#: src/views/file/ListView.vue:412 src/views/file/ListView.vue:1669 -#: src/views/monitor/SystemView.vue:590 src/views/toolbox/SshView.vue:345 +#: src/components/file-editor/FileTree.vue:463 +#: src/views/backup/ListView.vue:79 +#: src/views/file/ListView.vue:412 +#: src/views/file/ListView.vue:1669 +#: src/views/monitor/SystemView.vue:590 +#: src/views/toolbox/SshView.vue:345 msgid "Download" msgstr "下载" @@ -1448,20 +1664,25 @@ msgstr "重命名失败" #: src/components/file-editor/FileTree.vue:588 #: src/views/apps/nginx/NginxIndex.vue:211 -#: src/views/apps/nginx/NginxIndex.vue:275 src/views/file/ListView.vue:894 +#: src/views/apps/nginx/NginxIndex.vue:275 +#: src/views/file/ListView.vue:894 #: src/views/file/ListView.vue:1679 msgid "Are you sure you want to delete %{ name }?" msgstr "您确定要删除 %{ name } 吗?" #: src/components/file-editor/FileTree.vue:594 -#: src/views/apps/fail2ban/IndexView.vue:190 +#: src/views/apps/fail2ban/IndexView.vue:218 +#: src/views/apps/frp/FrpProxyView.vue:125 +#: src/views/apps/frp/FrpVisitorView.vue:114 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:185 #: src/views/apps/nginx/NginxIndex.vue:405 #: src/views/apps/nginx/NginxIndex.vue:489 #: src/views/apps/pureftpd/IndexView.vue:155 -#: src/views/apps/rsync/IndexView.vue:160 src/views/apps/s3fs/IndexView.vue:87 -#: src/views/apps/supervisor/IndexView.vue:257 -#: src/views/backup/ListView.vue:156 src/views/backup/StorageView.vue:183 +#: src/views/apps/rsync/IndexView.vue:171 +#: src/views/apps/s3fs/IndexView.vue:87 +#: src/views/apps/supervisor/IndexView.vue:290 +#: src/views/backup/ListView.vue:156 +#: src/views/backup/StorageView.vue:183 #: src/views/container/ImageView.vue:155 #: src/views/container/NetworkView.vue:178 #: src/views/container/VolumeView.vue:124 @@ -1469,18 +1690,28 @@ msgstr "您确定要删除 %{ name } 吗?" #: src/views/database/ElasticsearchDataView.vue:241 #: src/views/database/ElasticsearchDataView.vue:250 #: src/views/database/RedisDataView.vue:211 -#: src/views/database/ServerList.vue:269 src/views/database/UserList.vue:185 +#: src/views/database/ServerList.vue:269 +#: src/views/database/UserList.vue:185 #: src/views/file/composables/useFileOps.ts:29 #: src/views/firewall/ForwardView.vue:119 -#: src/views/firewall/ForwardView.vue:137 src/views/firewall/IpRuleView.vue:161 -#: src/views/firewall/IpRuleView.vue:179 src/views/firewall/RuleView.vue:322 -#: src/views/firewall/RuleView.vue:340 src/views/monitor/AlertView.vue:47 -#: src/views/monitor/SettingView.vue:84 src/views/project/ListView.vue:268 -#: src/views/project/ListView.vue:278 src/views/setting/PasskeyModal.vue:96 -#: src/views/setting/SettingUser.vue:173 src/views/setting/TokenModal.vue:106 -#: src/views/tamper/TamperView.vue:112 src/views/task/CronView.vue:231 -#: src/views/task/CronView.vue:241 src/views/task/TaskView.vue:149 -#: src/views/toolbox/WebHookView.vue:225 src/views/website/ListView.vue:379 +#: src/views/firewall/ForwardView.vue:137 +#: src/views/firewall/IpRuleView.vue:161 +#: src/views/firewall/IpRuleView.vue:179 +#: src/views/firewall/RuleView.vue:322 +#: src/views/firewall/RuleView.vue:340 +#: src/views/monitor/AlertView.vue:47 +#: src/views/monitor/SettingView.vue:84 +#: src/views/project/ListView.vue:268 +#: src/views/project/ListView.vue:278 +#: src/views/setting/PasskeyModal.vue:96 +#: src/views/setting/SettingUser.vue:173 +#: src/views/setting/TokenModal.vue:106 +#: src/views/tamper/TamperView.vue:112 +#: src/views/task/CronView.vue:231 +#: src/views/task/CronView.vue:241 +#: src/views/task/TaskView.vue:149 +#: src/views/toolbox/WebHookView.vue:225 +#: src/views/website/ListView.vue:379 #: src/views/website/ListView.vue:389 msgid "Deleted successfully" msgstr "删除成功" @@ -1493,15 +1724,18 @@ msgstr "删除失败" msgid "Go Up" msgstr "上一级" -#: src/components/file-editor/FileTree.vue:687 src/views/file/ListView.vue:359 +#: src/components/file-editor/FileTree.vue:687 +#: src/views/file/ListView.vue:359 msgid "New File" msgstr "新文件" -#: src/components/file-editor/FileTree.vue:688 src/views/file/ListView.vue:360 +#: src/components/file-editor/FileTree.vue:688 +#: src/views/file/ListView.vue:360 msgid "New Folder" msgstr "新文件夹" -#: src/components/file-editor/FileTree.vue:692 src/views/file/ToolBar.vue:152 +#: src/components/file-editor/FileTree.vue:692 +#: src/views/file/ToolBar.vue:152 msgid "New" msgstr "新建" @@ -1539,9 +1773,7 @@ msgid "Panel encountered a fault: %{key}" msgstr "面板遇到故障:%{key}" #: src/components/system/HealthBanner.vue:36 -msgid "" -"Try running \"acepanel fix\" on the server to detect and rebuild the broken " -"database file." +msgid "Try running \"acepanel fix\" on the server to detect and rebuild the broken database file." msgstr "尝试在服务器上运行「acepanel fix」来检测并重建损坏的数据库文件。" #: src/layouts/header/components/FullScreen.vue:16 @@ -1584,7 +1816,8 @@ msgstr "切换主题" #: src/layouts/header/components/UserAvatar.vue:14 #: src/views/apps/pureftpd/IndexView.vue:71 #: src/views/apps/pureftpd/IndexView.vue:274 -#: src/views/setting/PasswordModal.vue:34 src/views/setting/SettingUser.vue:128 +#: src/views/setting/PasswordModal.vue:34 +#: src/views/setting/SettingUser.vue:128 msgid "Change Password" msgstr "更改密码" @@ -1605,12 +1838,16 @@ msgid "Logged out successfully!" msgstr "退出登录成功!" #: src/layouts/header/components/UserAvatar.vue:49 -#: src/views/cert/DnsView.vue:61 src/views/firewall/IpRuleView.vue:78 -#: src/views/firewall/IpRuleView.vue:103 src/views/firewall/RuleView.vue:215 -#: src/views/firewall/RuleView.vue:240 src/views/toolbox/DiskView.vue:159 +#: src/views/cert/DnsView.vue:61 +#: src/views/firewall/IpRuleView.vue:78 +#: src/views/firewall/IpRuleView.vue:103 +#: src/views/firewall/RuleView.vue:215 +#: src/views/firewall/RuleView.vue:240 +#: src/views/toolbox/DiskView.vue:159 #: src/views/website/stats/GeoTab.vue:102 #: src/views/website/stats/GeoTab.vue:104 -#: src/views/website/stats/GeoTab.vue:225 src/views/website/stats/IPsTab.vue:98 +#: src/views/website/stats/GeoTab.vue:225 +#: src/views/website/stats/IPsTab.vue:98 msgid "Unknown" msgstr "未知" @@ -1634,26 +1871,34 @@ msgstr "关闭右侧" msgid "Apps" msgstr "应用" -#: src/locales/menu.ts:8 src/views/task/CreateModal.vue:145 +#: src/locales/menu.ts:8 +#: src/views/task/CreateModal.vue:145 msgid "Backup" msgstr "备份" -#: src/locales/menu.ts:9 src/views/cert/CertView.vue:607 -#: src/views/cert/CertView.vue:716 src/views/cert/IndexView.vue:97 -#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingSafe.vue:275 +#: src/locales/menu.ts:9 +#: src/views/cert/CertView.vue:607 +#: src/views/cert/CertView.vue:716 +#: src/views/cert/IndexView.vue:97 +#: src/views/cert/UploadCertModal.vue:46 +#: src/views/setting/SettingSafe.vue:275 #: src/views/website/EditModal.vue:1774 msgid "Certificate" msgstr "证书" -#: src/locales/menu.ts:10 src/views/home/IndexView.vue:537 +#: src/locales/menu.ts:10 +#: src/views/home/IndexView.vue:537 #: src/views/task/CreateModal.vue:469 msgid "Container" msgstr "容器" -#: src/locales/menu.ts:11 src/views/apps/grafana/GrafanaConfigTuneView.vue:189 +#: src/locales/menu.ts:11 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:189 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:222 -#: src/views/backup/ListView.vue:334 src/views/home/IndexView.vue:546 -#: src/views/toolbox/MigrationView.vue:76 src/views/website/CreateModal.vue:248 +#: src/views/backup/ListView.vue:334 +#: src/views/home/IndexView.vue:546 +#: src/views/toolbox/MigrationView.vue:76 +#: src/views/website/CreateModal.vue:248 msgid "Database" msgstr "数据库" @@ -1669,15 +1914,18 @@ msgstr "防火墙" msgid "Home" msgstr "首页" -#: src/locales/menu.ts:15 src/views/apps/grafana/GrafanaConfigTuneView.vue:223 +#: src/locales/menu.ts:15 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:223 msgid "Security" msgstr "安全" -#: src/locales/menu.ts:17 src/views/monitor/SettingView.vue:198 +#: src/locales/menu.ts:17 +#: src/views/monitor/SettingView.vue:198 msgid "Monitoring" msgstr "监控" -#: src/locales/menu.ts:18 src/views/home/IndexView.vue:551 +#: src/locales/menu.ts:18 +#: src/views/home/IndexView.vue:551 #: src/views/toolbox/MigrationView.vue:78 msgid "Project" msgstr "项目" @@ -1694,10 +1942,13 @@ msgstr "任务" msgid "Toolbox" msgstr "工具箱" -#: src/locales/menu.ts:23 src/views/app/AppView.vue:97 -#: src/views/app/EnvironmentView.vue:88 src/views/app/InstalledView.vue:103 +#: src/locales/menu.ts:23 +#: src/views/app/AppView.vue:97 +#: src/views/app/EnvironmentView.vue:88 +#: src/views/app/InstalledView.vue:103 #: src/views/app/InstalledView.vue:202 -#: src/views/app/TemplateDeployModal.vue:652 src/views/home/IndexView.vue:575 +#: src/views/app/TemplateDeployModal.vue:652 +#: src/views/home/IndexView.vue:575 #: src/views/setting/TokenModal.vue:308 msgid "Update" msgstr "更新" @@ -1726,147 +1977,187 @@ msgstr "Rsync 管理器" msgid "Frp Manager" msgstr "Frp 管理器" -#: src/router/routes/index.ts:44 src/views/login/IndexView.vue:309 +#: src/router/routes/index.ts:44 +#: src/views/login/IndexView.vue:309 msgid "Login" msgstr "登录" -#: src/views/app/AppView.vue:19 src/views/app/AppView.vue:143 -#: src/views/app/AppView.vue:147 src/views/app/EnvironmentView.vue:147 -#: src/views/app/EnvironmentView.vue:292 src/views/app/EnvironmentView.vue:312 +#: src/views/app/AppView.vue:19 +#: src/views/app/AppView.vue:143 +#: src/views/app/AppView.vue:147 +#: src/views/app/EnvironmentView.vue:147 +#: src/views/app/EnvironmentView.vue:292 +#: src/views/app/EnvironmentView.vue:312 #: src/views/apps/prometheus/PrometheusExportersView.vue:79 #: src/views/environment/PHPView.vue:107 msgid "Install" msgstr "安装" -#: src/views/app/AppView.vue:37 src/views/app/InstalledView.vue:33 +#: src/views/app/AppView.vue:37 +#: src/views/app/InstalledView.vue:33 msgid "App Name" msgstr "应用名称" -#: src/views/app/AppView.vue:43 src/views/app/EnvironmentView.vue:44 -#: src/views/app/InstalledView.vue:39 src/views/app/InstalledView.vue:164 +#: src/views/app/AppView.vue:43 +#: src/views/app/EnvironmentView.vue:44 +#: src/views/app/InstalledView.vue:39 +#: src/views/app/InstalledView.vue:164 #: src/views/apps/prometheus/PrometheusExportersView.vue:32 -#: src/views/environment/PHPView.vue:64 src/views/project/EditModal.vue:193 +#: src/views/environment/PHPView.vue:64 +#: src/views/project/EditModal.vue:193 #: src/views/project/ListView.vue:44 msgid "Description" msgstr "描述" -#: src/views/app/AppView.vue:49 src/views/app/EnvironmentView.vue:56 -#: src/views/app/InstalledView.vue:45 src/views/app/InstalledView.vue:170 +#: src/views/app/AppView.vue:49 +#: src/views/app/EnvironmentView.vue:56 +#: src/views/app/InstalledView.vue:45 +#: src/views/app/InstalledView.vue:170 msgid "Installed Version" msgstr "已安装版本" -#: src/views/app/AppView.vue:55 src/views/app/InstalledView.vue:61 +#: src/views/app/AppView.vue:55 +#: src/views/app/InstalledView.vue:61 msgid "Show in Home" msgstr "在主页显示" -#: src/views/app/AppView.vue:68 src/views/app/EnvironmentView.vue:62 -#: src/views/app/InstalledView.vue:74 src/views/app/InstalledView.vue:176 -#: src/views/apps/fail2ban/IndexView.vue:63 -#: src/views/apps/fail2ban/IndexView.vue:112 +#: src/views/app/AppView.vue:68 +#: src/views/app/EnvironmentView.vue:62 +#: src/views/app/InstalledView.vue:74 +#: src/views/app/InstalledView.vue:176 +#: src/views/apps/fail2ban/IndexView.vue:73 +#: src/views/apps/fail2ban/IndexView.vue:140 +#: src/views/apps/frp/FrpProxyView.vue:73 +#: src/views/apps/frp/FrpVisitorView.vue:62 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:99 #: src/views/apps/nginx/NginxIndex.vue:190 #: src/views/apps/nginx/NginxIndex.vue:254 #: src/views/apps/nginx/NginxIndex.vue:751 #: src/views/apps/prometheus/PrometheusExportersView.vue:55 #: src/views/apps/pureftpd/IndexView.vue:53 -#: src/views/apps/rsync/IndexView.vue:72 src/views/apps/s3fs/IndexView.vue:35 -#: src/views/apps/supervisor/IndexView.vue:84 src/views/backup/ListView.vue:63 -#: src/views/backup/StorageView.vue:95 src/views/cert/AccountView.vue:74 -#: src/views/cert/CertView.vue:277 src/views/cert/DnsView.vue:69 +#: src/views/apps/rsync/IndexView.vue:82 +#: src/views/apps/s3fs/IndexView.vue:35 +#: src/views/apps/supervisor/IndexView.vue:117 +#: src/views/backup/ListView.vue:63 +#: src/views/backup/StorageView.vue:95 +#: src/views/cert/AccountView.vue:74 +#: src/views/cert/CertView.vue:277 +#: src/views/cert/DnsView.vue:69 #: src/views/container/ComposeView.vue:102 #: src/views/container/ContainerView.vue:113 -#: src/views/container/ImageView.vue:97 src/views/container/NetworkView.vue:112 -#: src/views/container/VolumeView.vue:66 src/views/database/DatabaseList.vue:68 +#: src/views/container/ImageView.vue:97 +#: src/views/container/NetworkView.vue:112 +#: src/views/container/VolumeView.vue:66 +#: src/views/database/DatabaseList.vue:68 #: src/views/database/ElasticsearchDataView.vue:117 #: src/views/database/ElasticsearchDataView.vue:169 #: src/views/database/RedisDataView.vue:124 -#: src/views/database/ServerList.vue:161 src/views/database/UserList.vue:134 -#: src/views/environment/PHPView.vue:71 src/views/file/ListView.vue:1463 -#: src/views/file/ShareModal.vue:102 src/views/firewall/ForwardView.vue:81 -#: src/views/firewall/IpRuleView.vue:123 src/views/firewall/RuleView.vue:263 -#: src/views/firewall/ScanView.vue:256 src/views/monitor/AlertView.vue:103 -#: src/views/monitor/SettingView.vue:126 src/views/project/ListView.vue:117 -#: src/views/setting/PasskeyModal.vue:51 src/views/setting/SettingUser.vue:88 -#: src/views/setting/TokenModal.vue:57 src/views/tamper/TamperView.vue:141 -#: src/views/task/CronView.vue:119 src/views/task/TaskView.vue:69 -#: src/views/toolbox/DiskView.vue:298 src/views/toolbox/DiskView.vue:608 +#: src/views/database/ServerList.vue:161 +#: src/views/database/UserList.vue:134 +#: src/views/environment/PHPView.vue:71 +#: src/views/file/ListView.vue:1463 +#: src/views/file/ShareModal.vue:102 +#: src/views/firewall/ForwardView.vue:81 +#: src/views/firewall/IpRuleView.vue:123 +#: src/views/firewall/RuleView.vue:263 +#: src/views/firewall/ScanView.vue:256 +#: src/views/monitor/AlertView.vue:103 +#: src/views/monitor/SettingView.vue:126 +#: src/views/project/ListView.vue:117 +#: src/views/setting/PasskeyModal.vue:51 +#: src/views/setting/SettingUser.vue:88 +#: src/views/setting/TokenModal.vue:57 +#: src/views/tamper/TamperView.vue:141 +#: src/views/task/CronView.vue:119 +#: src/views/task/TaskView.vue:69 +#: src/views/toolbox/DiskView.vue:298 +#: src/views/toolbox/DiskView.vue:608 #: src/views/toolbox/network/InterfaceView.vue:197 -#: src/views/toolbox/WebHookView.vue:135 src/views/website/ListView.vue:246 +#: src/views/toolbox/WebHookView.vue:135 +#: src/views/website/ListView.vue:246 msgid "Actions" msgstr "操作" -#: src/views/app/AppView.vue:88 src/views/app/EnvironmentView.vue:80 -#: src/views/app/InstalledView.vue:94 src/views/app/InstalledView.vue:194 +#: src/views/app/AppView.vue:88 +#: src/views/app/EnvironmentView.vue:80 +#: src/views/app/InstalledView.vue:94 +#: src/views/app/InstalledView.vue:194 #: src/views/container/ContainerCreate.vue:157 msgid "Confirm Update" msgstr "确认更新" -#: src/views/app/AppView.vue:89 src/views/app/InstalledView.vue:95 -msgid "" -"Updating app %{ app } to %{ version } may reset related configurations to " -"default state, are you sure to continue?" -msgstr "" -"更新应用 %{ app } 到 %{ version } 可能会将相关配置重置为默认状态,您确定要继" -"续吗?" +#: src/views/app/AppView.vue:89 +#: src/views/app/InstalledView.vue:95 +msgid "Updating app %{ app } to %{ version } may reset related configurations to default state, are you sure to continue?" +msgstr "更新应用 %{ app } 到 %{ version } 可能会将相关配置重置为默认状态,您确定要继续吗?" -#: src/views/app/AppView.vue:110 src/views/app/EnvironmentView.vue:101 -#: src/views/app/InstalledView.vue:115 src/views/app/InstalledView.vue:214 +#: src/views/app/AppView.vue:110 +#: src/views/app/EnvironmentView.vue:101 +#: src/views/app/InstalledView.vue:115 +#: src/views/app/InstalledView.vue:214 msgid "Manage" msgstr "管理" -#: src/views/app/AppView.vue:119 src/views/app/EnvironmentView.vue:110 -#: src/views/app/InstalledView.vue:124 src/views/app/InstalledView.vue:223 +#: src/views/app/AppView.vue:119 +#: src/views/app/EnvironmentView.vue:110 +#: src/views/app/InstalledView.vue:124 +#: src/views/app/InstalledView.vue:223 #: src/views/apps/prometheus/PrometheusExportersView.vue:124 #: src/views/environment/PHPView.vue:85 msgid "Confirm Uninstall" msgstr "确认卸载" -#: src/views/app/AppView.vue:121 src/views/app/InstalledView.vue:126 -msgid "" -"Reinstalling/Switching to a different web server will reset the " -"configuration of all websites, are you sure to continue?" +#: src/views/app/AppView.vue:121 +#: src/views/app/InstalledView.vue:126 +msgid "Reinstalling/Switching to a different web server will reset the configuration of all websites, are you sure to continue?" msgstr "重新安装/切换到不同的 Web 服务器将重置所有网站的配置,您确定要继续吗?" -#: src/views/app/AppView.vue:124 src/views/app/InstalledView.vue:129 +#: src/views/app/AppView.vue:124 +#: src/views/app/InstalledView.vue:129 msgid "Are you sure to uninstall app %{ app }?" msgstr "您确定要卸载应用 %{ app } 吗?" -#: src/views/app/AppView.vue:125 src/views/app/AppView.vue:131 -#: src/views/app/EnvironmentView.vue:114 src/views/app/EnvironmentView.vue:120 -#: src/views/app/InstalledView.vue:130 src/views/app/InstalledView.vue:136 -#: src/views/app/InstalledView.vue:227 src/views/app/InstalledView.vue:233 +#: src/views/app/AppView.vue:125 +#: src/views/app/AppView.vue:131 +#: src/views/app/EnvironmentView.vue:114 +#: src/views/app/EnvironmentView.vue:120 +#: src/views/app/InstalledView.vue:130 +#: src/views/app/InstalledView.vue:136 +#: src/views/app/InstalledView.vue:227 +#: src/views/app/InstalledView.vue:233 #: src/views/apps/prometheus/PrometheusExportersView.vue:128 msgid "Uninstall" msgstr "卸载" -#: src/views/app/AppView.vue:183 src/views/app/InstalledView.vue:272 +#: src/views/app/AppView.vue:183 +#: src/views/app/InstalledView.vue:272 msgid "Setup successfully" msgstr "设置成功" -#: src/views/app/AppView.vue:190 src/views/app/AppView.vue:198 -#: src/views/app/EnvironmentView.vue:184 src/views/app/EnvironmentView.vue:206 -#: src/views/app/EnvironmentView.vue:217 src/views/app/EnvironmentView.vue:225 -#: src/views/app/InstalledView.vue:279 src/views/app/InstalledView.vue:287 -#: src/views/app/InstalledView.vue:300 src/views/app/InstalledView.vue:308 +#: src/views/app/AppView.vue:190 +#: src/views/app/AppView.vue:198 +#: src/views/app/EnvironmentView.vue:184 +#: src/views/app/EnvironmentView.vue:206 +#: src/views/app/EnvironmentView.vue:217 +#: src/views/app/EnvironmentView.vue:225 +#: src/views/app/InstalledView.vue:279 +#: src/views/app/InstalledView.vue:287 +#: src/views/app/InstalledView.vue:300 +#: src/views/app/InstalledView.vue:308 #: src/views/app/VersionModal.vue:53 msgid "Task submitted, please check the progress in background tasks" msgstr "任务已提交,请在后台任务中查看进度" #: src/views/app/CustomForm.vue:46 -msgid "" -"Settings are saved persistently and applied automatically on every install " -"and update (recompile), no need to re-enter after reinstalling." -msgstr "" -"设置持久保存,每次安装与更新(重新编译)时自动应用,重装后无需重新填写。" +msgid "Settings are saved persistently and applied automatically on every install and update (recompile), no need to re-enter after reinstalling." +msgstr "设置持久保存,每次安装与更新(重新编译)时自动应用,重装后无需重新填写。" #: src/views/app/CustomForm.vue:52 msgid "Pre-script" msgstr "前置脚本" #: src/views/app/CustomForm.vue:56 -msgid "" -"Runs before configure, can be used to download and prepare third-party " -"module sources." +msgid "Runs before configure, can be used to download and prepare third-party module sources." msgstr "在 configure 之前运行,可用于下载和准备第三方模块源码。" #: src/views/app/CustomForm.vue:64 @@ -1874,20 +2165,20 @@ msgid "Compile Params" msgstr "编译参数" #: src/views/app/CustomForm.vue:68 -msgid "" -"One param per line, appended to the end of configure. Lines starting with # " -"are ignored." +msgid "One param per line, appended to the end of configure. Lines starting with # are ignored." msgstr "每行一个参数,追加到 configure 末尾,以 # 开头的行将被忽略。" #: src/views/app/EnvironmentView.vue:50 msgid "Latest Version" msgstr "最新版本" -#: src/views/app/EnvironmentView.vue:81 src/views/app/InstalledView.vue:195 +#: src/views/app/EnvironmentView.vue:81 +#: src/views/app/InstalledView.vue:195 msgid "Are you sure to update environment %{ environment }?" msgstr "您确定要更新环境 %{ environment } 吗?" -#: src/views/app/EnvironmentView.vue:111 src/views/app/InstalledView.vue:224 +#: src/views/app/EnvironmentView.vue:111 +#: src/views/app/InstalledView.vue:224 msgid "Are you sure to uninstall environment %{ environment }?" msgstr "您确定要卸载环境 %{ environment } 吗?" @@ -1909,11 +2200,13 @@ msgstr "缓存更新成功" msgid "Installed" msgstr "已安装" -#: src/views/app/IndexView.vue:41 src/views/app/InstalledView.vue:327 +#: src/views/app/IndexView.vue:41 +#: src/views/app/InstalledView.vue:327 msgid "Native App" msgstr "原生应用" -#: src/views/app/IndexView.vue:42 src/views/app/InstalledView.vue:351 +#: src/views/app/IndexView.vue:42 +#: src/views/app/InstalledView.vue:351 msgid "Operating Environment" msgstr "运行环境" @@ -1929,24 +2222,34 @@ msgstr "更新缓存" msgid "Partial" msgstr "部分运行" -#: src/views/app/InstalledView.vue:51 src/views/apps/fail2ban/IndexView.vue:47 +#: src/views/app/InstalledView.vue:51 +#: src/views/apps/fail2ban/IndexView.vue:57 +#: src/views/apps/frp/FrpProxyView.vue:37 +#: src/views/apps/frp/FrpVisitorView.vue:37 #: src/views/apps/phpmyadmin/IndexView.vue:67 #: src/views/apps/prometheus/PrometheusExportersView.vue:38 -#: src/views/apps/supervisor/IndexView.vue:63 +#: src/views/apps/supervisor/IndexView.vue:96 #: src/views/container/ComposeView.vue:86 #: src/views/container/ContainerInfoModal.vue:112 #: src/views/container/ContainerView.vue:58 -#: src/views/database/ServerList.vue:140 src/views/database/UserList.vue:113 -#: src/views/firewall/RuleView.vue:103 src/views/log/HttpLog.vue:95 -#: src/views/log/SSHLog.vue:63 src/views/monitor/AlertView.vue:93 -#: src/views/monitor/SettingView.vue:116 src/views/project/ListView.vue:59 -#: src/views/tamper/TamperView.vue:131 src/views/tamper/TamperView.vue:232 -#: src/views/task/TaskView.vue:34 src/views/toolbox/disk/RaidView.vue:97 +#: src/views/database/ServerList.vue:140 +#: src/views/database/UserList.vue:113 +#: src/views/firewall/RuleView.vue:103 +#: src/views/log/HttpLog.vue:95 +#: src/views/log/SSHLog.vue:63 +#: src/views/monitor/AlertView.vue:93 +#: src/views/monitor/SettingView.vue:116 +#: src/views/project/ListView.vue:59 +#: src/views/tamper/TamperView.vue:131 +#: src/views/tamper/TamperView.vue:232 +#: src/views/task/TaskView.vue:34 +#: src/views/toolbox/disk/RaidView.vue:97 #: src/views/toolbox/disk/SmartView.vue:217 #: src/views/toolbox/MigrationView.vue:142 #: src/views/toolbox/MigrationView.vue:209 #: src/views/toolbox/network/InterfaceView.vue:160 -#: src/views/toolbox/NetworkView.vue:99 src/views/toolbox/ProcessView.vue:134 +#: src/views/toolbox/NetworkView.vue:99 +#: src/views/toolbox/ProcessView.vue:134 #: src/views/toolbox/ProcessView.vue:399 #: src/views/website/stats/ErrorsTab.vue:95 msgid "Status" @@ -1972,9 +2275,12 @@ msgstr "请输入编排名称" msgid "Please select a compose" msgstr "请选择一个编排" -#: src/views/app/TemplateDeployModal.vue:258 src/views/cert/AccountView.vue:145 -#: src/views/cert/CertView.vue:425 src/views/cert/CertView.vue:446 -#: src/views/cert/DnsView.vue:137 src/views/container/ComposeView.vue:249 +#: src/views/app/TemplateDeployModal.vue:258 +#: src/views/cert/AccountView.vue:145 +#: src/views/cert/CertView.vue:425 +#: src/views/cert/CertView.vue:446 +#: src/views/cert/DnsView.vue:137 +#: src/views/container/ComposeView.vue:249 msgid "Update successful" msgstr "更新成功" @@ -2051,7 +2357,8 @@ msgstr "自动放行在 compose 中定义的端口" #: src/views/container/ComposeView.vue:357 #: src/views/container/ContainerCreate.vue:568 #: src/views/container/ContainerInfoModal.vue:185 -#: src/views/project/EditModal.vue:380 src/views/toolbox/ProcessView.vue:445 +#: src/views/project/EditModal.vue:380 +#: src/views/toolbox/ProcessView.vue:445 msgid "Environment Variables" msgstr "环境变量" @@ -2073,9 +2380,7 @@ msgid "Compose File" msgstr "编排文件" #: src/views/app/TemplateDeployModal.vue:567 -msgid "" -"Left side shows the original compose, right side shows the new compose. You " -"can edit the right side." +msgid "Left side shows the original compose, right side shows the new compose. You can edit the right side." msgstr "左侧显示旧编排,右侧显示新编排。您可以编辑右侧。" #: src/views/app/TemplateDeployModal.vue:586 @@ -2102,9 +2407,12 @@ msgstr "更新现有" #: src/views/app/TemplateDeployModal.vue:611 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:94 #: src/views/apps/nginx/NginxIndex.vue:186 +#: src/views/apps/supervisor/IndexView.vue:75 #: src/views/container/ContainerInfoModal.vue:130 -#: src/views/file/ListView.vue:269 src/views/file/ListView.vue:899 -#: src/views/file/PropertyModal.vue:55 src/views/file/PropertyModal.vue:59 +#: src/views/file/ListView.vue:269 +#: src/views/file/ListView.vue:899 +#: src/views/file/PropertyModal.vue:55 +#: src/views/file/PropertyModal.vue:59 #: src/views/toolbox/WebHookView.vue:85 msgid "Yes" msgstr "是" @@ -2113,9 +2421,12 @@ msgstr "是" #: src/views/app/TemplateDeployModal.vue:611 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:95 #: src/views/apps/nginx/NginxIndex.vue:186 +#: src/views/apps/supervisor/IndexView.vue:76 #: src/views/container/ContainerInfoModal.vue:130 -#: src/views/file/ListView.vue:270 src/views/file/ListView.vue:900 -#: src/views/file/PropertyModal.vue:55 src/views/file/PropertyModal.vue:59 +#: src/views/file/ListView.vue:270 +#: src/views/file/ListView.vue:900 +#: src/views/file/PropertyModal.vue:55 +#: src/views/file/PropertyModal.vue:59 #: src/views/toolbox/WebHookView.vue:85 msgid "No" msgstr "否" @@ -2133,12 +2444,16 @@ msgstr "编排内容" msgid "Starting Compose" msgstr "正在启动编排" -#: src/views/app/TemplateView.vue:142 src/views/backup/StorageView.vue:78 -#: src/views/ssh/IndexView.vue:82 src/views/ssh/IndexView.vue:88 +#: src/views/app/TemplateView.vue:142 +#: src/views/apps/frp/FrpProxyView.vue:47 +#: src/views/backup/StorageView.vue:78 +#: src/views/ssh/IndexView.vue:82 +#: src/views/ssh/IndexView.vue:88 msgid "Local" msgstr "本地" -#: src/views/app/TemplateView.vue:152 src/views/cert/CertView.vue:309 +#: src/views/app/TemplateView.vue:152 +#: src/views/cert/CertView.vue:309 msgid "Deploy" msgstr "部署" @@ -2176,7 +2491,8 @@ msgstr "自定义编译参数" #: src/views/apps/prometheus/IndexView.vue:44 #: src/views/apps/redis/IndexView.vue:33 #: src/views/apps/rocketmq/IndexView.vue:33 -#: src/views/apps/valkey/IndexView.vue:33 src/views/environment/PHPView.vue:115 +#: src/views/apps/valkey/IndexView.vue:33 +#: src/views/environment/PHPView.vue:115 msgid "Property" msgstr "属性" @@ -2194,7 +2510,8 @@ msgstr "属性" #: src/views/apps/prometheus/IndexView.vue:51 #: src/views/apps/redis/IndexView.vue:40 #: src/views/apps/rocketmq/IndexView.vue:40 -#: src/views/apps/valkey/IndexView.vue:40 src/views/environment/PHPView.vue:122 +#: src/views/apps/valkey/IndexView.vue:40 +#: src/views/environment/PHPView.vue:122 msgid "Current Value" msgstr "当前值" @@ -2205,20 +2522,24 @@ msgstr "当前值" #: src/views/apps/nginx/NginxIndex.vue:336 #: src/views/apps/postgresql/IndexView.vue:111 #: src/views/apps/postgresql/IndexView.vue:124 -#: src/views/apps/supervisor/IndexView.vue:213 -#: src/views/apps/supervisor/IndexView.vue:269 +#: src/views/apps/supervisor/IndexView.vue:246 +#: src/views/apps/supervisor/IndexView.vue:302 #: src/views/database/RedisDataView.vue:252 -#: src/views/environment/PHPView.vue:162 src/views/environment/PHPView.vue:169 -#: src/views/firewall/ScanView.vue:336 src/views/monitor/AlertView.vue:180 -#: src/views/monitor/SettingView.vue:49 src/views/tamper/TamperView.vue:216 -#: src/views/task/CronView.vue:23 src/views/task/TaskView.vue:21 -#: src/views/website/EditModal.vue:333 src/views/website/StatsView.vue:93 +#: src/views/environment/PHPView.vue:162 +#: src/views/environment/PHPView.vue:169 +#: src/views/firewall/ScanView.vue:336 +#: src/views/monitor/AlertView.vue:180 +#: src/views/monitor/SettingView.vue:49 +#: src/views/tamper/TamperView.vue:216 +#: src/views/task/CronView.vue:23 +#: src/views/task/TaskView.vue:21 +#: src/views/website/EditModal.vue:333 +#: src/views/website/StatsView.vue:93 msgid "Cleared successfully" msgstr "清除成功" #: src/views/apps/apache/IndexView.vue:74 #: src/views/apps/codeserver/IndexView.vue:40 -#: src/views/apps/frp/IndexView.vue:88 src/views/apps/frp/IndexView.vue:121 #: src/views/apps/gitea/IndexView.vue:38 #: src/views/apps/mysql/MysqlIndex.vue:150 #: src/views/apps/nginx/NginxIndex.vue:501 @@ -2228,11 +2549,8 @@ msgstr "修改配置" #: src/views/apps/apache/IndexView.vue:78 #: src/views/apps/nginx/NginxIndex.vue:505 -msgid "" -"This modifies the %{name} main configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 %{name} 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "This modifies the %{name} main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 %{name} 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/apps/apache/IndexView.vue:97 #: src/views/apps/clickhouse/IndexView.vue:146 @@ -2248,7 +2566,8 @@ msgstr "" #: src/views/apps/prometheus/IndexView.vue:147 #: src/views/apps/redis/IndexView.vue:90 #: src/views/apps/rocketmq/IndexView.vue:93 -#: src/views/apps/valkey/IndexView.vue:90 src/views/environment/PHPView.vue:259 +#: src/views/apps/valkey/IndexView.vue:90 +#: src/views/environment/PHPView.vue:259 #: src/views/home/IndexView.vue:587 msgid "Load Status" msgstr "负载状态" @@ -2258,7 +2577,9 @@ msgstr "负载状态" #: src/views/apps/codeserver/IndexView.vue:62 #: src/views/apps/docker/IndexView.vue:477 #: src/views/apps/elasticsearch/IndexView.vue:100 -#: src/views/apps/fail2ban/IndexView.vue:280 +#: src/views/apps/fail2ban/IndexView.vue:328 +#: src/views/apps/frp/IndexView.vue:122 +#: src/views/apps/frp/IndexView.vue:180 #: src/views/apps/gitea/IndexView.vue:60 #: src/views/apps/grafana/IndexView.vue:130 #: src/views/apps/kafka/IndexView.vue:100 @@ -2273,8 +2594,8 @@ msgstr "负载状态" #: src/views/apps/prometheus/IndexView.vue:157 #: src/views/apps/redis/IndexView.vue:100 #: src/views/apps/rocketmq/IndexView.vue:103 -#: src/views/apps/rsync/IndexView.vue:247 -#: src/views/apps/supervisor/IndexView.vue:361 +#: src/views/apps/rsync/IndexView.vue:259 +#: src/views/apps/supervisor/IndexView.vue:413 #: src/views/apps/valkey/IndexView.vue:100 #: src/views/environment/PHPView.vue:269 msgid "Runtime Logs" @@ -2290,8 +2611,10 @@ msgstr "错误日志" #: src/views/apps/mongodb/MongoDBConfigTuneView.vue:88 #: src/views/container/ContainerCreate.vue:329 #: src/views/container/ContainerInfoModal.vue:132 -#: src/views/home/IndexView.vue:188 src/views/home/IndexView.vue:967 -#: src/views/monitor/SystemView.vue:914 src/views/toolbox/IndexView.vue:28 +#: src/views/home/IndexView.vue:188 +#: src/views/home/IndexView.vue:967 +#: src/views/monitor/SystemView.vue:914 +#: src/views/toolbox/IndexView.vue:28 msgid "Network" msgstr "网络" @@ -2361,13 +2684,20 @@ msgstr "日志级别(logger.level)" #: src/views/database/ServerList.vue:275 #: src/views/database/UpdateServerModal.vue:27 #: src/views/database/UpdateUserModal.vue:23 -#: src/views/database/UserList.vue:191 src/views/file/PermissionModal.vue:57 -#: src/views/firewall/RuleView.vue:29 src/views/setting/SettingUser.vue:161 -#: src/views/setting/SettingUser.vue:167 src/views/task/CreateModal.vue:121 -#: src/views/task/CronView.vue:189 src/views/task/CronView.vue:259 -#: src/views/toolbox/WebHookView.vue:200 src/views/toolbox/WebHookView.vue:278 -#: src/views/website/ListView.vue:360 src/views/website/ListView.vue:366 -#: src/views/website/SettingView.vue:47 src/views/website/SettingView.vue:58 +#: src/views/database/UserList.vue:191 +#: src/views/file/PermissionModal.vue:57 +#: src/views/firewall/RuleView.vue:29 +#: src/views/setting/SettingUser.vue:161 +#: src/views/setting/SettingUser.vue:167 +#: src/views/task/CreateModal.vue:121 +#: src/views/task/CronView.vue:189 +#: src/views/task/CronView.vue:259 +#: src/views/toolbox/WebHookView.vue:200 +#: src/views/toolbox/WebHookView.vue:278 +#: src/views/website/ListView.vue:360 +#: src/views/website/ListView.vue:366 +#: src/views/website/SettingView.vue:47 +#: src/views/website/SettingView.vue:58 #: src/views/website/SettingView.vue:89 msgid "Modified successfully" msgstr "修改成功" @@ -2377,23 +2707,26 @@ msgid "Default User Password" msgstr "默认用户密码" #: src/views/apps/clickhouse/IndexView.vue:92 -msgid "" -"The ClickHouse default user password is used to access the database. Keep it " -"safe!" +msgid "The ClickHouse default user password is used to access the database. Keep it safe!" msgstr "ClickHouse 默认用户密码用于访问数据库。请妥善保管!" #: src/views/apps/clickhouse/IndexView.vue:105 #: src/views/apps/mongodb/IndexView.vue:101 #: src/views/apps/mysql/MysqlIndex.vue:134 #: src/views/apps/postgresql/IndexView.vue:172 -#: src/views/database/ServerList.vue:106 src/views/database/UserList.vue:56 -#: src/views/file/ListView.vue:374 src/views/file/ListView.vue:408 -#: src/views/file/ListView.vue:1004 src/views/file/ToolBar.vue:187 +#: src/views/database/ServerList.vue:106 +#: src/views/database/UserList.vue:56 +#: src/views/file/ListView.vue:374 +#: src/views/file/ListView.vue:408 +#: src/views/file/ListView.vue:1004 +#: src/views/file/ToolBar.vue:187 msgid "Copy" msgstr "复制" #: src/views/apps/clickhouse/IndexView.vue:121 #: src/views/apps/elasticsearch/IndexView.vue:65 +#: src/views/apps/frp/IndexView.vue:83 +#: src/views/apps/frp/IndexView.vue:141 #: src/views/apps/grafana/IndexView.vue:92 #: src/views/apps/kafka/IndexView.vue:65 #: src/views/apps/mongodb/IndexView.vue:117 @@ -2402,21 +2735,21 @@ msgstr "复制" #: src/views/apps/prometheus/IndexView.vue:96 #: src/views/apps/redis/IndexView.vue:65 #: src/views/apps/rocketmq/IndexView.vue:68 -#: src/views/apps/rsync/IndexView.vue:225 -#: src/views/apps/supervisor/IndexView.vue:339 -#: src/views/apps/valkey/IndexView.vue:65 src/views/environment/PHPView.vue:223 +#: src/views/apps/rsync/IndexView.vue:237 +#: src/views/apps/supervisor/IndexView.vue:391 +#: src/views/apps/valkey/IndexView.vue:65 +#: src/views/environment/PHPView.vue:223 msgid "Main Configuration" msgstr "主配置" #: src/views/apps/clickhouse/IndexView.vue:125 -msgid "" -"This modifies the ClickHouse configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 ClickHouse 配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "This modifies the ClickHouse configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 ClickHouse 配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/clickhouse/IndexView.vue:143 #: src/views/apps/elasticsearch/IndexView.vue:87 +#: src/views/apps/frp/IndexView.vue:80 +#: src/views/apps/frp/IndexView.vue:132 #: src/views/apps/grafana/IndexView.vue:114 #: src/views/apps/kafka/IndexView.vue:87 #: src/views/apps/memcached/IndexView.vue:83 @@ -2429,16 +2762,14 @@ msgstr "" #: src/views/apps/pureftpd/IndexView.vue:215 #: src/views/apps/redis/IndexView.vue:87 #: src/views/apps/rocketmq/IndexView.vue:90 -#: src/views/apps/valkey/IndexView.vue:87 src/views/environment/PHPView.vue:220 +#: src/views/apps/valkey/IndexView.vue:87 +#: src/views/environment/PHPView.vue:220 msgid "Parameter Tuning" msgstr "参数调优" #: src/views/apps/codeserver/IndexView.vue:44 -msgid "" -"This modifies the Code Server configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 Code Server 配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "This modifies the Code Server configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 Code Server 配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/docker/IndexView.vue:63 #: src/views/apps/docker/IndexView.vue:70 @@ -2462,7 +2793,8 @@ msgstr "中国 - 腾讯(仅内网)" #: src/views/apps/docker/IndexView.vue:194 #: src/views/container/ContainerCreate.vue:309 -#: src/views/project/EditModal.vue:182 src/views/website/EditModal.vue:979 +#: src/views/project/EditModal.vue:182 +#: src/views/website/EditModal.vue:979 msgid "Basic Settings" msgstr "基本设置" @@ -2470,14 +2802,13 @@ msgstr "基本设置" msgid "Registry Mirrors" msgstr "注册表镜像" -#: src/views/apps/docker/IndexView.vue:203 src/views/website/EditModal.vue:1801 +#: src/views/apps/docker/IndexView.vue:203 +#: src/views/website/EditModal.vue:1801 msgid "Presets" msgstr "预设" #: src/views/apps/docker/IndexView.vue:226 -msgid "" -"Configure registry mirrors to speed up image downloads. Domestic users can " -"configure domestic mirrors." +msgid "Configure registry mirrors to speed up image downloads. Domestic users can configure domestic mirrors." msgstr "配置注册表镜像以加快镜像下载。国内用户可以配置国内镜像。" #: src/views/apps/docker/IndexView.vue:235 @@ -2488,7 +2819,8 @@ msgstr "输入镜像地址,例如 https://registry.example.com" #: src/views/apps/docker/IndexView.vue:392 #: src/views/apps/docker/IndexView.vue:420 #: src/views/apps/docker/IndexView.vue:445 -#: src/views/apps/nginx/NginxIndex.vue:743 src/views/toolbox/SystemView.vue:307 +#: src/views/apps/nginx/NginxIndex.vue:743 +#: src/views/toolbox/SystemView.vue:307 msgid "Add" msgstr "添加" @@ -2497,12 +2829,8 @@ msgid "Log Configuration" msgstr "日志配置" #: src/views/apps/docker/IndexView.vue:253 -msgid "" -"Configure log driver and rotation settings. Setting max-size and max-file " -"can prevent log files from growing indefinitely." -msgstr "" -"配置日志驱动程序和轮转设置。设置 max-size 和 max-file 可以防止日志文件无限增" -"长。" +msgid "Configure log driver and rotation settings. Setting max-size and max-file can prevent log files from growing indefinitely." +msgstr "配置日志驱动程序和轮转设置。设置 max-size 和 max-file 可以防止日志文件无限增长。" #: src/views/apps/docker/IndexView.vue:259 msgid "Log Driver" @@ -2575,9 +2903,7 @@ msgid "Firewall Configuration" msgstr "防火墙配置" #: src/views/apps/docker/IndexView.vue:347 -msgid "" -"Configure Docker firewall backend. nftables is experimental and does not " -"support Swarm mode." +msgid "Configure Docker firewall backend. nftables is experimental and does not support Swarm mode." msgstr "配置 Docker 防火墙后端。nftables 是实验性的,不支持 Swarm 模式。" #: src/views/apps/docker/IndexView.vue:353 @@ -2641,12 +2967,8 @@ msgid "Insecure Registries" msgstr "不安全的注册表" #: src/views/apps/docker/IndexView.vue:433 -msgid "" -"Insecure registries allow Docker to communicate with registries using HTTP " -"or self-signed certificates. Use with caution." -msgstr "" -"不安全的注册表允许 Docker 使用 HTTP 或自签名证书与注册表进行通信。请谨慎使" -"用。" +msgid "Insecure registries allow Docker to communicate with registries using HTTP or self-signed certificates. Use with caution." +msgstr "不安全的注册表允许 Docker 使用 HTTP 或自签名证书与注册表进行通信。请谨慎使用。" #: src/views/apps/docker/IndexView.vue:441 msgid "e.g., 192.168.1.100:5000" @@ -2701,9 +3023,7 @@ msgstr "路径和 JVM" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:106 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:106 -msgid "" -"Data paths and JVM heap memory settings. Heap size is recommended to be 50% " -"of system RAM, max 31g." +msgid "Data paths and JVM heap memory settings. Heap size is recommended to be 50% of system RAM, max 31g." msgstr "数据路径和 JVM 堆内存设置。建议堆大小为系统 RAM 的 50%,最大 31g。" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:112 @@ -2733,116 +3053,129 @@ msgid "Max Heap Size (-Xmx)" msgstr "最大堆大小(-Xmx)" #: src/views/apps/elasticsearch/IndexView.vue:69 -msgid "" -"This modifies the ElasticSearch main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 ElasticSearch 主配置文件。如果您不理解每个参数的含义,请不要随意修" -"改!" +msgid "This modifies the ElasticSearch main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 ElasticSearch 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" -#: src/views/apps/fail2ban/IndexView.vue:59 -#: src/views/apps/fail2ban/IndexView.vue:356 +#: src/views/apps/fail2ban/IndexView.vue:69 +#: src/views/apps/fail2ban/IndexView.vue:404 +#: src/views/apps/fail2ban/IndexView.vue:450 msgid "Max Retries" msgstr "最大重试次数" -#: src/views/apps/fail2ban/IndexView.vue:60 -#: src/views/apps/fail2ban/IndexView.vue:362 +#: src/views/apps/fail2ban/IndexView.vue:70 +#: src/views/apps/fail2ban/IndexView.vue:410 +#: src/views/apps/fail2ban/IndexView.vue:466 msgid "Ban Time" msgstr "封禁时间" -#: src/views/apps/fail2ban/IndexView.vue:61 -#: src/views/apps/fail2ban/IndexView.vue:359 +#: src/views/apps/fail2ban/IndexView.vue:71 +#: src/views/apps/fail2ban/IndexView.vue:407 +#: src/views/apps/fail2ban/IndexView.vue:458 msgid "Find Time" msgstr "查找时间" -#: src/views/apps/fail2ban/IndexView.vue:80 src/views/cert/CertView.vue:343 +#: src/views/apps/fail2ban/IndexView.vue:90 +#: src/views/cert/CertView.vue:343 #: src/views/database/ElasticsearchDataView.vue:186 #: src/views/database/RedisDataView.vue:141 msgid "View" msgstr "查看" -#: src/views/apps/fail2ban/IndexView.vue:89 +#: src/views/apps/fail2ban/IndexView.vue:108 +#: src/views/apps/frp/FrpProxyView.vue:89 +#: src/views/apps/frp/FrpVisitorView.vue:78 +#: src/views/apps/rsync/IndexView.vue:95 +#: src/views/apps/supervisor/IndexView.vue:140 +#: src/views/toolbox/network/InterfaceView.vue:212 +msgid "Configure" +msgstr "配置" + +#: src/views/apps/fail2ban/IndexView.vue:117 msgid "Are you sure you want to delete rule %{ name }?" msgstr "您确定要删除规则 %{ name } 吗?" -#: src/views/apps/fail2ban/IndexView.vue:124 +#: src/views/apps/fail2ban/IndexView.vue:152 msgid "Are you sure you want to unban %{ ip }?" msgstr "您确定要解封 %{ ip } 吗?" -#: src/views/apps/fail2ban/IndexView.vue:125 -#: src/views/apps/fail2ban/IndexView.vue:130 +#: src/views/apps/fail2ban/IndexView.vue:153 +#: src/views/apps/fail2ban/IndexView.vue:158 msgid "Unban" msgstr "解封" -#: src/views/apps/fail2ban/IndexView.vue:179 +#: src/views/apps/fail2ban/IndexView.vue:207 #: src/views/apps/pureftpd/IndexView.vue:130 -#: src/views/apps/rsync/IndexView.vue:149 src/views/apps/s3fs/IndexView.vue:77 -#: src/views/apps/supervisor/IndexView.vue:226 +#: src/views/apps/rsync/IndexView.vue:160 +#: src/views/apps/s3fs/IndexView.vue:77 +#: src/views/apps/supervisor/IndexView.vue:259 #: src/views/database/CreateServerModal.vue:79 msgid "Added successfully" msgstr "添加成功" -#: src/views/apps/fail2ban/IndexView.vue:203 +#: src/views/apps/fail2ban/IndexView.vue:251 msgid "Unbanned successfully" msgstr "解封成功" -#: src/views/apps/fail2ban/IndexView.vue:225 +#: src/views/apps/fail2ban/IndexView.vue:273 #: src/views/firewall/SettingView.vue:129 msgid "IP Whitelist" msgstr "IP 白名单" -#: src/views/apps/fail2ban/IndexView.vue:230 +#: src/views/apps/fail2ban/IndexView.vue:278 msgid "IP whitelist, separated by commas" msgstr "IP 白名单,用逗号分隔" -#: src/views/apps/fail2ban/IndexView.vue:240 +#: src/views/apps/fail2ban/IndexView.vue:288 msgid "Save Whitelist" msgstr "保存白名单" -#: src/views/apps/fail2ban/IndexView.vue:245 +#: src/views/apps/fail2ban/IndexView.vue:293 msgid "Rule Management" msgstr "规则管理" -#: src/views/apps/fail2ban/IndexView.vue:247 +#: src/views/apps/fail2ban/IndexView.vue:295 msgid "Rule List" msgstr "规则列表" -#: src/views/apps/fail2ban/IndexView.vue:275 -#: src/views/apps/fail2ban/IndexView.vue:285 -#: src/views/apps/fail2ban/IndexView.vue:289 -#: src/views/monitor/AlertRuleModal.vue:129 src/views/monitor/AlertView.vue:202 -#: src/views/tamper/RuleModal.vue:89 src/views/tamper/TamperView.vue:342 +#: src/views/apps/fail2ban/IndexView.vue:323 +#: src/views/apps/fail2ban/IndexView.vue:333 +#: src/views/apps/fail2ban/IndexView.vue:337 +#: src/views/monitor/AlertRuleModal.vue:129 +#: src/views/monitor/AlertView.vue:202 +#: src/views/tamper/RuleModal.vue:89 +#: src/views/tamper/TamperView.vue:342 msgid "Add Rule" msgstr "添加规则" -#: src/views/apps/fail2ban/IndexView.vue:295 -msgid "" -"If an IP exceeds the maximum retries within the find time (seconds), it will " -"be banned for the ban time (seconds)" -msgstr "" -"如果一个 IP 在查找时间(秒)内超过最大重试次数,它将被禁止访问指定的禁止时间" -"(秒)" +#: src/views/apps/fail2ban/IndexView.vue:343 +msgid "If an IP exceeds the maximum retries within the find time (seconds), it will be banned for the ban time (seconds)" +msgstr "如果一个 IP 在查找时间(秒)内超过最大重试次数,它将被禁止访问指定的禁止时间(秒)" -#: src/views/apps/fail2ban/IndexView.vue:302 -msgid "" -"Protected ports are automatically obtained. If you modify the port " -"corresponding to a rule, please delete and re-add the rule, otherwise " -"protection may not be effective" -msgstr "" -"受保护的端口会自动获取。如果您修改了某个规则对应的端口,请删除并重新添加该规" -"则,否则保护可能无效" +#: src/views/apps/fail2ban/IndexView.vue:350 +msgid "Protected ports are automatically obtained. If you modify the port corresponding to a rule, please delete and re-add the rule, otherwise protection may not be effective" +msgstr "受保护的端口会自动获取。如果您修改了某个规则对应的端口,请删除并重新添加该规则,否则保护可能无效" -#: src/views/apps/fail2ban/IndexView.vue:309 +#: src/views/apps/fail2ban/IndexView.vue:357 +#: src/views/apps/frp/FrpProxyModal.vue:263 +#: src/views/apps/frp/FrpProxyView.vue:29 +#: src/views/apps/frp/FrpVisitorModal.vue:130 +#: src/views/apps/frp/FrpVisitorView.vue:29 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:78 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:209 -#: src/views/backup/StorageView.vue:73 src/views/backup/StorageView.vue:233 -#: src/views/backup/StorageView.vue:395 src/views/cert/CertView.vue:169 -#: src/views/cert/DnsView.vue:43 src/views/container/ContainerInfoModal.vue:156 +#: src/views/backup/StorageView.vue:73 +#: src/views/backup/StorageView.vue:233 +#: src/views/backup/StorageView.vue:395 +#: src/views/cert/CertView.vue:169 +#: src/views/cert/DnsView.vue:43 +#: src/views/container/ContainerInfoModal.vue:156 #: src/views/database/CreateServerModal.vue:100 #: src/views/database/RedisDataView.vue:94 -#: src/views/database/RedisKeyModal.vue:99 src/views/file/PropertyModal.vue:33 -#: src/views/log/OperationLog.vue:74 src/views/monitor/ChannelModal.vue:93 -#: src/views/monitor/SettingView.vue:104 src/views/project/ListView.vue:51 +#: src/views/database/RedisKeyModal.vue:99 +#: src/views/file/PropertyModal.vue:33 +#: src/views/log/OperationLog.vue:74 +#: src/views/monitor/ChannelModal.vue:93 +#: src/views/monitor/SettingView.vue:104 +#: src/views/project/ListView.vue:51 #: src/views/toolbox/MigrationView.vue:126 #: src/views/toolbox/MigrationView.vue:202 #: src/views/toolbox/network/InterfaceView.vue:154 @@ -2850,97 +3183,866 @@ msgstr "" msgid "Type" msgstr "类型" -#: src/views/apps/fail2ban/IndexView.vue:314 -#: src/views/apps/fail2ban/IndexView.vue:345 +#: src/views/apps/fail2ban/IndexView.vue:362 +#: src/views/apps/fail2ban/IndexView.vue:393 msgid "Service" msgstr "服务" -#: src/views/apps/fail2ban/IndexView.vue:319 -#: src/views/apps/fail2ban/IndexView.vue:323 src/views/task/CreateModal.vue:479 +#: src/views/apps/fail2ban/IndexView.vue:367 +#: src/views/apps/fail2ban/IndexView.vue:371 +#: src/views/task/CreateModal.vue:479 #: src/views/task/CreateModal.vue:485 msgid "Select Website" msgstr "选择网站" -#: src/views/apps/fail2ban/IndexView.vue:326 +#: src/views/apps/fail2ban/IndexView.vue:374 #: src/views/tamper/TamperView.vue:251 msgid "Protection Mode" msgstr "保护模式" -#: src/views/apps/fail2ban/IndexView.vue:331 +#: src/views/apps/fail2ban/IndexView.vue:379 #: src/views/apps/pureftpd/IndexView.vue:46 -#: src/views/backup/StorageView.vue:277 src/views/backup/StorageView.vue:331 -#: src/views/backup/StorageView.vue:361 src/views/backup/StorageView.vue:433 -#: src/views/backup/StorageView.vue:487 src/views/backup/StorageView.vue:514 -#: src/views/log/HttpLog.vue:85 src/views/tamper/TamperView.vue:204 +#: src/views/backup/StorageView.vue:277 +#: src/views/backup/StorageView.vue:331 +#: src/views/backup/StorageView.vue:361 +#: src/views/backup/StorageView.vue:433 +#: src/views/backup/StorageView.vue:487 +#: src/views/backup/StorageView.vue:514 +#: src/views/log/HttpLog.vue:85 +#: src/views/tamper/TamperView.vue:204 msgid "Path" msgstr "路径" -#: src/views/apps/fail2ban/IndexView.vue:338 -#: src/views/apps/fail2ban/IndexView.vue:342 +#: src/views/apps/fail2ban/IndexView.vue:386 +#: src/views/apps/fail2ban/IndexView.vue:390 msgid "Protection Path" msgstr "保护路径" -#: src/views/apps/fail2ban/IndexView.vue:378 -#: src/views/apps/fail2ban/IndexView.vue:382 +#: src/views/apps/fail2ban/IndexView.vue:429 +msgid "Rule Configuration" +msgstr "规则配置" + +#: src/views/apps/fail2ban/IndexView.vue:438 +msgid "The protected port, filter and log path are derived when the rule is created and are kept as-is here. To change them, delete and re-add the rule." +msgstr "受保护端口、过滤条件和日志路径在创建规则时确定,此处保持不变。如需更改,请删除规则后重新添加。" + +#: src/views/apps/fail2ban/IndexView.vue:447 +#: src/views/apps/frp/FrpProxyModal.vue:266 +#: src/views/apps/frp/FrpProxyView.vue:43 +#: src/views/apps/frp/FrpVisitorModal.vue:133 +#: src/views/apps/frp/FrpVisitorView.vue:43 +#: src/views/apps/frp/options.ts:13 +#: src/views/monitor/AlertRuleModal.vue:180 +#: src/views/monitor/AlertView.vue:98 +#: src/views/monitor/ChannelModal.vue:142 +#: src/views/monitor/SettingView.vue:121 +#: src/views/tamper/RuleModal.vue:121 +#: src/views/tamper/TamperView.vue:136 +#: src/views/task/CronView.vue:76 +#: src/views/toolbox/WebHookView.vue:91 +#: src/views/toolbox/WebHookView.vue:386 +msgid "Enabled" +msgstr "已启用" + +#: src/views/apps/fail2ban/IndexView.vue:486 +#: src/views/apps/fail2ban/IndexView.vue:490 msgid "View Rule" msgstr "查看规则" -#: src/views/apps/fail2ban/IndexView.vue:386 +#: src/views/apps/fail2ban/IndexView.vue:494 msgid "Rule Information" msgstr "规则信息" -#: src/views/apps/fail2ban/IndexView.vue:389 +#: src/views/apps/fail2ban/IndexView.vue:497 msgid "Currently Banned" msgstr "当前已封禁" -#: src/views/apps/fail2ban/IndexView.vue:393 +#: src/views/apps/fail2ban/IndexView.vue:501 msgid "Total Bans" msgstr "总封禁次数" -#: src/views/apps/fail2ban/IndexView.vue:398 +#: src/views/apps/fail2ban/IndexView.vue:506 msgid "Ban List" msgstr "封禁列表" -#: src/views/apps/frp/IndexView.vue:68 src/views/apps/frp/IndexView.vue:101 -#: src/views/project/CreateModal.vue:622 src/views/project/EditModal.vue:237 -msgid "Run User" -msgstr "运行用户" +#: src/views/apps/frp/FrpcConfigTuneView.vue:74 +#: src/views/apps/frp/FrpsConfigTuneView.vue:74 +#: src/views/apps/mysql/MysqlConfigTuneView.vue:210 +#: src/views/apps/nginx/NginxConfigTuneView.vue:175 +#: src/views/apps/redis/RedisConfigTuneView.vue:119 +#: src/views/apps/valkey/ValkeyConfigTuneView.vue:113 +#: src/views/environment/PhpConfigTuneView.vue:248 +#: src/views/project/IndexView.vue:22 +#: src/views/project/ListView.vue:25 +msgid "General" +msgstr "通用" -#: src/views/apps/frp/IndexView.vue:80 src/views/apps/frp/IndexView.vue:81 -#: src/views/apps/frp/IndexView.vue:113 src/views/apps/frp/IndexView.vue:114 -#: src/views/apps/grafana/GrafanaDataSourcesView.vue:225 -#: src/views/apps/rsync/IndexView.vue:57 src/views/apps/rsync/IndexView.vue:279 -#: src/views/apps/rsync/IndexView.vue:340 src/views/database/IndexView.vue:131 -#: src/views/home/IndexView.vue:673 src/views/home/IndexView.vue:774 -#: src/views/log/SSHLog.vue:73 src/views/monitor/SystemView.vue:323 -#: src/views/monitor/SystemView.vue:335 src/views/setting/IndexView.vue:149 -#: src/views/toolbox/ProcessView.vue:128 src/views/toolbox/ProcessView.vue:396 -#: src/views/toolbox/WebHookView.vue:333 src/views/toolbox/WebHookView.vue:374 -msgid "User" -msgstr "用户" +#: src/views/apps/frp/FrpcConfigTuneView.vue:77 +msgid "Leave a field empty to comment out the option and use the frpc default." +msgstr "将字段留空可注释掉该选项并使用 frpc 默认值。" -#: src/views/apps/frp/IndexView.vue:83 src/views/apps/frp/IndexView.vue:84 -#: src/views/apps/frp/IndexView.vue:116 src/views/apps/frp/IndexView.vue:117 -#: src/views/file/PermissionModal.vue:128 -#: src/views/file/PermissionModal.vue:152 src/views/file/PropertyModal.vue:48 -msgid "Group" -msgstr "组" +#: src/views/apps/frp/FrpcConfigTuneView.vue:80 +msgid "Server Address (serverAddr)" +msgstr "服务器地址(serverAddr)" -#: src/views/apps/gitea/IndexView.vue:42 -msgid "" -"This modifies the Gitea configuration file. If you do not understand the " -"meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 Gitea 配置文件。如果您不理解每个参数的含义,请不要随意修改!" +#: src/views/apps/frp/FrpcConfigTuneView.vue:83 +msgid "Server Port (serverPort)" +msgstr "服务器端口(serverPort)" +#: src/views/apps/frp/FrpcConfigTuneView.vue:86 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:204 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:288 +msgid "User (user)" +msgstr "用户(user)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:89 +msgid "Proxy names will be prefixed with this user" +msgstr "代理名称将以此用户作为前缀" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:92 +msgid "Exit On Login Failure (loginFailExit)" +msgstr "登录失败时退出(loginFailExit)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:95 +msgid "STUN Server (natHoleStunServer)" +msgstr "STUN 服务器(natHoleStunServer)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:101 +msgid "DNS Server (dnsServer)" +msgstr "DNS 服务器(dnsServer)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:104 +#: src/views/apps/frp/FrpsConfigTuneView.vue:113 +msgid "UDP Packet Size (udpPacketSize)" +msgstr "UDP 数据包大小(udpPacketSize)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:120 +#: src/views/apps/frp/FrpsConfigTuneView.vue:136 +#: src/views/container/ImageView.vue:402 +msgid "Authentication" +msgstr "身份验证" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:123 +#: src/views/apps/frp/FrpsConfigTuneView.vue:139 +msgid "The token must be identical on frps and frpc, otherwise login will fail." +msgstr "frps 和 frpc 的令牌必须一致,否则登录将失败。" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:126 +#: src/views/apps/frp/FrpsConfigTuneView.vue:142 +msgid "Method (auth.method)" +msgstr "身份验证方式(auth.method)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:129 +#: src/views/apps/frp/FrpsConfigTuneView.vue:145 +msgid "Token (auth.token)" +msgstr "令牌(auth.token)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:134 +#: src/views/apps/frp/FrpsConfigTuneView.vue:150 +msgid "Leave empty for no authentication" +msgstr "留空表示不启用身份验证" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:150 +#: src/views/apps/frp/FrpProxyModal.vue:388 +#: src/views/apps/frp/FrpsConfigTuneView.vue:248 +#: src/views/apps/frp/FrpVisitorModal.vue:223 +msgid "Transport" +msgstr "传输" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:153 +#: src/views/apps/frp/FrpsConfigTuneView.vue:251 +msgid "Do not modify these options unless you know what they do." +msgstr "如果不了解用途,请勿修改这些选项。" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:156 +msgid "Protocol (transport.protocol)" +msgstr "传输协议(transport.protocol)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:163 +msgid "Pool Count (transport.poolCount)" +msgstr "连接池数量(transport.poolCount)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:166 +#: src/views/apps/frp/FrpsConfigTuneView.vue:257 +msgid "TCP Mux (transport.tcpMux)" +msgstr "TCP Mux(transport.tcpMux)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:170 +#: src/views/apps/frp/FrpsConfigTuneView.vue:261 +msgid "TCP Mux Keepalive Interval (transport.tcpMuxKeepaliveInterval)" +msgstr "TCP Mux 保活间隔(transport.tcpMuxKeepaliveInterval)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:174 +msgid "Dial Timeout (transport.dialServerTimeout)" +msgstr "拨号超时(transport.dialServerTimeout)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:177 +msgid "Dial Keepalive (transport.dialServerKeepalive)" +msgstr "拨号保活(transport.dialServerKeepalive)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:180 +msgid "Heartbeat Interval (transport.heartbeatInterval)" +msgstr "心跳间隔(transport.heartbeatInterval)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:183 +#: src/views/apps/frp/FrpsConfigTuneView.vue:268 +msgid "Heartbeat Timeout (transport.heartbeatTimeout)" +msgstr "心跳超时(transport.heartbeatTimeout)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:186 +msgid "Local IP (transport.connectServerLocalIP)" +msgstr "本地 IP(transport.connectServerLocalIP)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:192 +msgid "Proxy URL (transport.proxyURL)" +msgstr "代理 URL(transport.proxyURL)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:198 +msgid "Enable TLS (transport.tls.enable)" +msgstr "启用 TLS(transport.tls.enable)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:201 +#: src/views/apps/frp/FrpsConfigTuneView.vue:274 +msgid "TLS Certificate (transport.tls.certFile)" +msgstr "TLS 证书(transport.tls.certFile)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:204 +#: src/views/apps/frp/FrpsConfigTuneView.vue:277 +msgid "TLS Private Key (transport.tls.keyFile)" +msgstr "TLS 私钥(transport.tls.keyFile)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:207 +#: src/views/apps/frp/FrpsConfigTuneView.vue:280 +msgid "TLS CA (transport.tls.trustedCaFile)" +msgstr "TLS CA(transport.tls.trustedCaFile)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:210 +msgid "TLS Server Name (transport.tls.serverName)" +msgstr "TLS 服务器名称(transport.tls.serverName)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:226 +msgid "Admin API" +msgstr "管理 API" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:229 +msgid "The frpc admin API is available only when the port is set." +msgstr "仅设置端口后才可使用 frpc 管理 API。" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:232 +#: src/views/apps/frp/FrpsConfigTuneView.vue:209 +msgid "Listen Address (webServer.addr)" +msgstr "监听地址(webServer.addr)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:235 +#: src/views/apps/frp/FrpsConfigTuneView.vue:212 +msgid "Listen Port (webServer.port)" +msgstr "监听端口(webServer.port)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:238 +#: src/views/apps/frp/FrpsConfigTuneView.vue:215 +msgid "Username (webServer.user)" +msgstr "用户名(webServer.user)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:241 +#: src/views/apps/frp/FrpsConfigTuneView.vue:218 +msgid "Password (webServer.password)" +msgstr "密码(webServer.password)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:248 +#: src/views/apps/frp/FrpsConfigTuneView.vue:225 +msgid "Enable pprof (webServer.pprofEnable)" +msgstr "启用 pprof(webServer.pprofEnable)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:271 +#: src/views/apps/frp/FrpsConfigTuneView.vue:299 +msgid "Output (log.to)" +msgstr "日志输出(log.to)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:274 +#: src/views/apps/frp/FrpsConfigTuneView.vue:302 +msgid "Level (log.level)" +msgstr "日志级别(log.level)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:277 +#: src/views/apps/frp/FrpsConfigTuneView.vue:305 +msgid "Max Days (log.maxDays)" +msgstr "最大保留天数(log.maxDays)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:280 +#: src/views/apps/frp/FrpsConfigTuneView.vue:308 +msgid "Disable Colors (log.disablePrintColor)" +msgstr "禁用颜色(log.disablePrintColor)" + +#: src/views/apps/frp/FrpProxyModal.vue:90 +msgid "Client" +msgstr "客户端" + +#: src/views/apps/frp/FrpProxyModal.vue:91 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:149 #: src/views/apps/nginx/NginxIndex.vue:529 #: src/views/database/CreateDatabaseModal.vue:86 #: src/views/database/CreateUserModal.vue:104 -#: src/views/database/DatabaseList.vue:28 src/views/database/IndexView.vue:132 +#: src/views/database/DatabaseList.vue:28 +#: src/views/database/IndexView.vue:132 #: src/views/database/UserList.vue:73 msgid "Server" msgstr "服务器" +#: src/views/apps/frp/FrpProxyModal.vue:248 +msgid "Edit Proxy" +msgstr "编辑代理" + +#: src/views/apps/frp/FrpProxyModal.vue:248 +#: src/views/apps/frp/FrpProxyView.vue:150 +msgid "Add Proxy" +msgstr "添加代理" + +#: src/views/apps/frp/FrpProxyModal.vue:260 +#: src/views/apps/frp/FrpVisitorModal.vue:127 +msgid "Unique name, letters, digits, dot, underscore and hyphen only" +msgstr "名称必须唯一,只允许字母、数字、点、下划线和连字符" + +#: src/views/apps/frp/FrpProxyModal.vue:271 +msgid "Local Address (localIP)" +msgstr "本地地址(localIP)" + +#: src/views/apps/frp/FrpProxyModal.vue:274 +msgid "Local Port (localPort)" +msgstr "本地端口(localPort)" + +#: src/views/apps/frp/FrpProxyModal.vue:282 +msgid "Remote Port (remotePort)" +msgstr "远程端口(remotePort)" + +#: src/views/apps/frp/FrpProxyModal.vue:289 +msgid "0 means frps assigns a random port" +msgstr "0 表示由 frps 分配随机端口" + +#: src/views/apps/frp/FrpProxyModal.vue:294 +msgid "Custom Domains (customDomains)" +msgstr "自定义域名(customDomains)" + +#: src/views/apps/frp/FrpProxyModal.vue:301 +msgid "Subdomain (subdomain)" +msgstr "子域名(subdomain)" + +#: src/views/apps/frp/FrpProxyModal.vue:305 +msgid "Requires subDomainHost on frps" +msgstr "frps 需要配置 subDomainHost" + +#: src/views/apps/frp/FrpProxyModal.vue:311 +msgid "HTTP Username (httpUser)" +msgstr "HTTP 用户名(httpUser)" + +#: src/views/apps/frp/FrpProxyModal.vue:314 +msgid "HTTP Password (httpPassword)" +msgstr "HTTP 密码(httpPassword)" + +#: src/views/apps/frp/FrpProxyModal.vue:317 +msgid "Route By User (routeByHTTPUser)" +msgstr "按用户路由(routeByHTTPUser)" + +#: src/views/apps/frp/FrpProxyModal.vue:323 +msgid "Locations (locations)" +msgstr "路径(locations)" + +#: src/views/apps/frp/FrpProxyModal.vue:328 +#: src/views/apps/frp/FrpProxyModal.vue:522 +msgid "Host Header Rewrite (hostHeaderRewrite)" +msgstr "Host 请求头重写(hostHeaderRewrite)" + +#: src/views/apps/frp/FrpProxyModal.vue:336 +msgid "Request Headers (requestHeaders)" +msgstr "请求头(requestHeaders)" + +#: src/views/apps/frp/FrpProxyModal.vue:339 +#: src/views/apps/frp/FrpProxyModal.vue:352 +msgid "Header" +msgstr "请求头" + +#: src/views/apps/frp/FrpProxyModal.vue:340 +#: src/views/apps/frp/FrpProxyModal.vue:353 +#: src/views/database/RedisKeyModal.vue:109 +#: src/views/toolbox/disk/SmartView.vue:205 +#: src/views/toolbox/disk/SmartView.vue:232 +msgid "Value" +msgstr "值" + +#: src/views/apps/frp/FrpProxyModal.vue:341 +#: src/views/apps/frp/FrpProxyModal.vue:354 +msgid "Add Header" +msgstr "添加请求头" + +#: src/views/apps/frp/FrpProxyModal.vue:348 +msgid "Response Headers (responseHeaders)" +msgstr "响应头(responseHeaders)" + +#: src/views/apps/frp/FrpProxyModal.vue:364 +msgid "Multiplexer (multiplexer)" +msgstr "多路复用器(multiplexer)" + +#: src/views/apps/frp/FrpProxyModal.vue:370 +#: src/views/apps/frp/FrpVisitorModal.vue:150 +msgid "Secret Key (secretKey)" +msgstr "密钥(secretKey)" + +#: src/views/apps/frp/FrpProxyModal.vue:375 +msgid "Visitors must use the same secret key" +msgstr "访客必须使用相同的密钥" + +#: src/views/apps/frp/FrpProxyModal.vue:378 +msgid "Allowed Users (allowUsers)" +msgstr "允许的用户(allowUsers)" + +#: src/views/apps/frp/FrpProxyModal.vue:381 +msgid "* means all users" +msgstr "* 表示所有用户" + +#: src/views/apps/frp/FrpProxyModal.vue:389 +#: src/views/apps/frp/FrpVisitorModal.vue:224 +msgid "Encryption (transport.useEncryption)" +msgstr "加密(transport.useEncryption)" + +#: src/views/apps/frp/FrpProxyModal.vue:392 +#: src/views/apps/frp/FrpVisitorModal.vue:227 +msgid "Compression (transport.useCompression)" +msgstr "压缩(transport.useCompression)" + +#: src/views/apps/frp/FrpProxyModal.vue:395 +msgid "Bandwidth Limit (transport.bandwidthLimit)" +msgstr "带宽限制(transport.bandwidthLimit)" + +#: src/views/apps/frp/FrpProxyModal.vue:402 +msgid "Limit Side (transport.bandwidthLimitMode)" +msgstr "限制端(transport.bandwidthLimitMode)" + +#: src/views/apps/frp/FrpProxyModal.vue:411 +msgid "Proxy Protocol (transport.proxyProtocolVersion)" +msgstr "代理协议(transport.proxyProtocolVersion)" + +#: src/views/apps/frp/FrpProxyModal.vue:422 +msgid "Load Balancer" +msgstr "负载均衡" + +#: src/views/apps/frp/FrpProxyModal.vue:425 +msgid "Group (loadBalancer.group)" +msgstr "组(loadBalancer.group)" + +#: src/views/apps/frp/FrpProxyModal.vue:428 +msgid "Group Key (loadBalancer.groupKey)" +msgstr "组密钥(loadBalancer.groupKey)" + +#: src/views/apps/frp/FrpProxyModal.vue:432 +msgid "Health Check" +msgstr "健康检查" + +#: src/views/apps/frp/FrpProxyModal.vue:433 +msgid "Type (healthCheck.type)" +msgstr "类型(healthCheck.type)" + +#: src/views/apps/frp/FrpProxyModal.vue:441 +msgid "Timeout Seconds (healthCheck.timeoutSeconds)" +msgstr "超时秒数(healthCheck.timeoutSeconds)" + +#: src/views/apps/frp/FrpProxyModal.vue:446 +#: src/views/apps/frp/FrpProxyModal.vue:454 +#: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:209 +#: src/views/environment/PhpConfigTuneView.vue:463 +msgid "e.g. 3" +msgstr "例如 3" + +#: src/views/apps/frp/FrpProxyModal.vue:449 +msgid "Max Failed (healthCheck.maxFailed)" +msgstr "最大失败次数(healthCheck.maxFailed)" + +#: src/views/apps/frp/FrpProxyModal.vue:457 +msgid "Interval Seconds (healthCheck.intervalSeconds)" +msgstr "间隔秒数(healthCheck.intervalSeconds)" + +#: src/views/apps/frp/FrpProxyModal.vue:462 +#: src/views/apps/nginx/NginxConfigTuneView.vue:224 +#: src/views/environment/PhpConfigTuneView.vue:474 +msgid "e.g. 10" +msgstr "例如 10" + +#: src/views/apps/frp/FrpProxyModal.vue:467 +msgid "Path (healthCheck.path)" +msgstr "路径(healthCheck.path)" + +#: src/views/apps/frp/FrpProxyModal.vue:477 +msgid "Plugin" +msgstr "插件" + +#: src/views/apps/frp/FrpProxyModal.vue:479 +msgid "When a plugin is used, the local address and port are ignored." +msgstr "使用插件时,本地地址和端口将被忽略。" + +#: src/views/apps/frp/FrpProxyModal.vue:481 +msgid "Type (plugin.type)" +msgstr "类型(plugin.type)" + +#: src/views/apps/frp/FrpProxyModal.vue:486 +msgid "Socket Path (unixPath)" +msgstr "套接字路径(unixPath)" + +#: src/views/apps/frp/FrpProxyModal.vue:496 +msgid "Local Address (localAddr)" +msgstr "本地地址(localAddr)" + +#: src/views/apps/frp/FrpProxyModal.vue:506 +msgid "Local Path (localPath)" +msgstr "本地路径(localPath)" + +#: src/views/apps/frp/FrpProxyModal.vue:516 +msgid "Strip Prefix (stripPrefix)" +msgstr "移除前缀(stripPrefix)" + +#: src/views/apps/frp/FrpProxyModal.vue:526 +msgid "Certificate (crtPath)" +msgstr "证书(crtPath)" + +#: src/views/apps/frp/FrpProxyModal.vue:529 +msgid "Private Key (keyPath)" +msgstr "私钥(keyPath)" + +#: src/views/apps/frp/FrpProxyModal.vue:532 +msgid "Username (httpUser)" +msgstr "用户名(httpUser)" + +#: src/views/apps/frp/FrpProxyModal.vue:537 +msgid "Password (httpPassword)" +msgstr "密码(httpPassword)" + +#: src/views/apps/frp/FrpProxyModal.vue:545 +msgid "Username (username)" +msgstr "用户名(username)" + +#: src/views/apps/frp/FrpProxyModal.vue:548 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:207 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:291 +msgid "Password (password)" +msgstr "密码(password)" + +#: src/views/apps/frp/FrpProxyModal.vue:556 +msgid "Metadata" +msgstr "元数据" + +#: src/views/apps/frp/FrpProxyModal.vue:557 +msgid "Metadatas (metadatas)" +msgstr "元数据(metadatas)" + +#: src/views/apps/frp/FrpProxyModal.vue:560 +msgid "Add Metadata" +msgstr "添加元数据" + +#: src/views/apps/frp/FrpProxyModal.vue:564 +msgid "Annotations (annotations)" +msgstr "注解(annotations)" + +#: src/views/apps/frp/FrpProxyModal.vue:567 +msgid "Add Annotation" +msgstr "添加注解" + +#: src/views/apps/frp/FrpProxyView.vue:42 +#: src/views/apps/frp/FrpVisitorView.vue:42 +#: src/views/apps/frp/options.ts:14 +#: src/views/monitor/AlertView.vue:98 +#: src/views/monitor/SettingView.vue:121 +#: src/views/project/EditModal.vue:72 +#: src/views/setting/SettingBase.vue:187 +#: src/views/setting/SettingSafe.vue:246 +#: src/views/tamper/TamperView.vue:136 +#: src/views/toolbox/network/InterfaceView.vue:67 +#: src/views/website/EditModal.vue:850 +#: src/views/website/EditModal.vue:854 +#: src/views/website/EditModal.vue:1069 +msgid "Disabled" +msgstr "禁用" + +#: src/views/apps/frp/FrpProxyView.vue:53 +msgid "Plugin: %{ plugin }" +msgstr "插件:%{ plugin }" + +#: src/views/apps/frp/FrpProxyView.vue:59 +msgid "Remote" +msgstr "远程" + +#: src/views/apps/frp/FrpProxyView.vue:65 +msgid "Random" +msgstr "随机" + +#: src/views/apps/frp/FrpProxyView.vue:98 +msgid "Are you sure you want to delete proxy %{ name }?" +msgstr "确定要删除代理 %{ name } 吗?" + +#: src/views/apps/frp/FrpProxyView.vue:143 +msgid "Only proxies created by the panel under the conf.d directory are managed here. Proxies written directly in frpc.toml should be edited in the main configuration." +msgstr "此处只管理面板在 conf.d 目录下创建的代理。直接写入 frpc.toml 的代理应在主配置中编辑。" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:77 +msgid "Leave a field empty to comment out the option and use the frps default." +msgstr "将字段留空可注释掉该选项并使用 frps 默认值。" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:80 +#: src/views/apps/frp/FrpVisitorModal.vue:158 +msgid "Bind Address (bindAddr)" +msgstr "绑定地址(bindAddr)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:83 +#: src/views/apps/frp/FrpVisitorModal.vue:161 +msgid "Bind Port (bindPort)" +msgstr "绑定端口(bindPort)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:86 +msgid "KCP Bind Port (kcpBindPort)" +msgstr "KCP 绑定端口(kcpBindPort)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:89 +msgid "Leave empty to disable KCP" +msgstr "留空以禁用 KCP" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:92 +msgid "QUIC Bind Port (quicBindPort)" +msgstr "QUIC 绑定端口(quicBindPort)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:95 +msgid "Leave empty to disable QUIC" +msgstr "留空以禁用 QUIC" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:98 +msgid "Proxy Bind Address (proxyBindAddr)" +msgstr "代理绑定地址(proxyBindAddr)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:101 +msgid "Defaults to bindAddr" +msgstr "默认为 bindAddr" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:104 +msgid "Subdomain Host (subDomainHost)" +msgstr "子域名主机(subDomainHost)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:107 +msgid "Max Ports Per Client (maxPortsPerClient)" +msgstr "每个客户端的最大端口数(maxPortsPerClient)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:110 +#: src/views/project/EditModal.vue:476 +msgid "0 means no limit" +msgstr "0 表示无限制" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:116 +msgid "Detailed Errors To Client (detailedErrorsToClient)" +msgstr "向客户端显示详细错误(detailedErrorsToClient)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:166 +msgid "HTTP(S)" +msgstr "HTTP(S)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:169 +msgid "Required for http and https type proxies." +msgstr "http 和 https 类型代理必须设置。" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:172 +msgid "HTTP Port (vhostHTTPPort)" +msgstr "HTTP 端口(vhostHTTPPort)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:175 +msgid "HTTPS Port (vhostHTTPSPort)" +msgstr "HTTPS 端口(vhostHTTPSPort)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:178 +msgid "HTTP Response Timeout (vhostHTTPTimeout)" +msgstr "HTTP 响应超时(vhostHTTPTimeout)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:181 +msgid "TCPMux HTTP Connect Port (tcpmuxHTTPConnectPort)" +msgstr "TCPMux HTTP 连接端口(tcpmuxHTTPConnectPort)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:184 +msgid "Required for tcpmux type proxies" +msgstr "tcpmux 类型代理必须设置" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:187 +msgid "Custom 404 Page (custom404Page)" +msgstr "自定义 404 页面(custom404Page)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:203 +msgid "Dashboard" +msgstr "仪表盘" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:206 +msgid "The frps dashboard is available only when the port is set." +msgstr "仅设置端口后才可使用 frps 仪表盘。" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:232 +msgid "Enable Prometheus (enablePrometheus)" +msgstr "启用 Prometheus(enablePrometheus)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:254 +msgid "Max Pool Count (transport.maxPoolCount)" +msgstr "最大连接池数量(transport.maxPoolCount)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:265 +msgid "TCP Keepalive (transport.tcpKeepalive)" +msgstr "TCP 保活(transport.tcpKeepalive)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:271 +msgid "Force TLS (transport.tls.force)" +msgstr "强制 TLS(transport.tls.force)" + +#: src/views/apps/frp/FrpVisitorModal.vue:115 +msgid "Edit Visitor" +msgstr "编辑访客" + +#: src/views/apps/frp/FrpVisitorModal.vue:115 +#: src/views/apps/frp/FrpVisitorView.vue:139 +msgid "Add Visitor" +msgstr "添加访客" + +#: src/views/apps/frp/FrpVisitorModal.vue:136 +msgid "Target Proxy (serverName)" +msgstr "目标代理(serverName)" + +#: src/views/apps/frp/FrpVisitorModal.vue:140 +msgid "Name of the proxy to visit" +msgstr "要访问的代理名称" + +#: src/views/apps/frp/FrpVisitorModal.vue:143 +msgid "Target User (serverUser)" +msgstr "目标用户(serverUser)" + +#: src/views/apps/frp/FrpVisitorModal.vue:147 +msgid "Defaults to the current user" +msgstr "默认为当前用户" + +#: src/views/apps/frp/FrpVisitorModal.vue:155 +msgid "Must match the target proxy" +msgstr "必须与目标代理匹配" + +#: src/views/apps/frp/FrpVisitorModal.vue:167 +msgid "-1 means do not bind, only accept redirected connections" +msgstr "-1 表示不绑定,仅接受重定向连接" + +#: src/views/apps/frp/FrpVisitorModal.vue:172 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:173 +msgid "Protocol (protocol)" +msgstr "协议(protocol)" + +#: src/views/apps/frp/FrpVisitorModal.vue:175 +msgid "Keep Tunnel Open (keepTunnelOpen)" +msgstr "保持隧道打开(keepTunnelOpen)" + +#: src/views/apps/frp/FrpVisitorModal.vue:181 +msgid "Max Retries Per Hour (maxRetriesAnHour)" +msgstr "每小时最大重试次数(maxRetriesAnHour)" + +#: src/views/apps/frp/FrpVisitorModal.vue:187 +#: src/views/apps/mysql/MysqlConfigTuneView.vue:304 +#: src/views/apps/mysql/MysqlConfigTuneView.vue:428 +#: src/views/apps/pureftpd/PureftpdConfigTuneView.vue:80 +msgid "e.g. 8" +msgstr "例如 8" + +#: src/views/apps/frp/FrpVisitorModal.vue:192 +msgid "Min Retry Interval (minRetryInterval)" +msgstr "最小重试间隔(minRetryInterval)" + +#: src/views/apps/frp/FrpVisitorModal.vue:198 +#: src/views/apps/mysql/MysqlConfigTuneView.vue:511 +msgid "e.g. 90" +msgstr "例如 90" + +#: src/views/apps/frp/FrpVisitorModal.vue:202 +msgid "Fallback To (fallbackTo)" +msgstr "回退到(fallbackTo)" + +#: src/views/apps/frp/FrpVisitorModal.vue:206 +msgid "Name of the visitor to fall back to" +msgstr "要回退到的访客名称" + +#: src/views/apps/frp/FrpVisitorModal.vue:211 +msgid "Fallback Timeout (fallbackTimeoutMs)" +msgstr "回退超时(fallbackTimeoutMs)" + +#: src/views/apps/frp/FrpVisitorModal.vue:217 +msgid "e.g. 500" +msgstr "例如 500" + +#: src/views/apps/frp/FrpVisitorView.vue:47 +msgid "Target Proxy" +msgstr "目标代理" + +#: src/views/apps/frp/FrpVisitorView.vue:53 +msgid "Local Listen" +msgstr "本地监听" + +#: src/views/apps/frp/FrpVisitorView.vue:87 +msgid "Are you sure you want to delete visitor %{ name }?" +msgstr "确定要删除访客 %{ name } 吗?" + +#: src/views/apps/frp/FrpVisitorView.vue:132 +msgid "Visitors are used to access stcp, sudp and xtcp proxies. They must be configured on the client that initiates the access." +msgstr "访客用于访问 stcp、sudp 和 xtcp 代理,必须在发起访问的客户端上配置。" + +#: src/views/apps/frp/IndexView.vue:87 +msgid "This modifies the Frps main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这会修改 Frps 主配置文件。如果不了解各参数的含义,请勿随意修改!" + +#: src/views/apps/frp/IndexView.vue:100 +#: src/views/apps/frp/IndexView.vue:158 +#: src/views/project/CreateModal.vue:622 +#: src/views/project/EditModal.vue:237 +msgid "Run User" +msgstr "运行用户" + +#: src/views/apps/frp/IndexView.vue:103 +#: src/views/apps/frp/IndexView.vue:104 +#: src/views/apps/frp/IndexView.vue:161 +#: src/views/apps/frp/IndexView.vue:162 +#: src/views/apps/grafana/GrafanaDataSourcesView.vue:225 +#: src/views/apps/rsync/IndexView.vue:59 +#: src/views/apps/rsync/IndexView.vue:291 +#: src/views/apps/rsync/IndexView.vue:355 +#: src/views/database/IndexView.vue:131 +#: src/views/home/IndexView.vue:673 +#: src/views/home/IndexView.vue:774 +#: src/views/log/SSHLog.vue:73 +#: src/views/monitor/SystemView.vue:323 +#: src/views/monitor/SystemView.vue:335 +#: src/views/setting/IndexView.vue:149 +#: src/views/toolbox/ProcessView.vue:128 +#: src/views/toolbox/ProcessView.vue:396 +#: src/views/toolbox/WebHookView.vue:333 +#: src/views/toolbox/WebHookView.vue:374 +msgid "User" +msgstr "用户" + +#: src/views/apps/frp/IndexView.vue:106 +#: src/views/apps/frp/IndexView.vue:107 +#: src/views/apps/frp/IndexView.vue:164 +#: src/views/apps/frp/IndexView.vue:165 +#: src/views/file/PermissionModal.vue:128 +#: src/views/file/PermissionModal.vue:152 +#: src/views/file/PropertyModal.vue:48 +msgid "Group" +msgstr "组" + +#: src/views/apps/frp/IndexView.vue:135 +msgid "Proxy Management" +msgstr "代理管理" + +#: src/views/apps/frp/IndexView.vue:138 +msgid "Visitor Management" +msgstr "访客管理" + +#: src/views/apps/frp/IndexView.vue:145 +msgid "This modifies the Frpc main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这会修改 Frpc 主配置文件。如果不了解各参数的含义,请勿随意修改!" + +#: src/views/apps/gitea/IndexView.vue:42 +msgid "This modifies the Gitea configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 Gitea 配置文件。如果您不理解每个参数的含义,请不要随意修改!" + #: src/views/apps/grafana/GrafanaConfigTuneView.vue:152 msgid "Grafana server settings." msgstr "Grafana 服务器设置。" @@ -2969,10 +4071,6 @@ msgstr "根 URL(root_url)" msgid "e.g. %(protocol)s://%(domain)s:%(http_port)s/" msgstr "例如 %(protocol)s://%(domain)s:%(http_port)s/" -#: src/views/apps/grafana/GrafanaConfigTuneView.vue:173 -msgid "Protocol (protocol)" -msgstr "协议(protocol)" - #: src/views/apps/grafana/GrafanaConfigTuneView.vue:192 msgid "Grafana database settings." msgstr "Grafana 数据库设置。" @@ -2998,16 +4096,6 @@ msgstr "名称(name)" msgid "e.g. grafana" msgstr "例如 grafana" -#: src/views/apps/grafana/GrafanaConfigTuneView.vue:204 -#: src/views/apps/grafana/GrafanaConfigTuneView.vue:288 -msgid "User (user)" -msgstr "用户(user)" - -#: src/views/apps/grafana/GrafanaConfigTuneView.vue:207 -#: src/views/apps/grafana/GrafanaConfigTuneView.vue:291 -msgid "Password (password)" -msgstr "密码(password)" - #: src/views/apps/grafana/GrafanaConfigTuneView.vue:226 msgid "Grafana security settings." msgstr "Grafana 安全设置。" @@ -3086,13 +4174,19 @@ msgstr "浏览器(直连)" #: src/views/apps/grafana/GrafanaDataSourcesView.vue:111 #: src/views/apps/nginx/NginxIndex.vue:202 -#: src/views/apps/nginx/NginxIndex.vue:266 src/views/backup/StorageView.vue:111 +#: src/views/apps/nginx/NginxIndex.vue:266 +#: src/views/backup/StorageView.vue:111 #: src/views/container/ComposeView.vue:123 -#: src/views/container/ContainerView.vue:177 src/views/file/ListView.vue:399 -#: src/views/file/ListView.vue:1666 src/views/monitor/AlertView.vue:110 -#: src/views/monitor/SettingView.vue:143 src/views/project/ListView.vue:177 -#: src/views/ssh/IndexView.vue:613 src/views/tamper/TamperView.vue:148 -#: src/views/task/CronView.vue:155 src/views/toolbox/WebHookView.vue:158 +#: src/views/container/ContainerView.vue:177 +#: src/views/file/ListView.vue:399 +#: src/views/file/ListView.vue:1666 +#: src/views/monitor/AlertView.vue:110 +#: src/views/monitor/SettingView.vue:143 +#: src/views/project/ListView.vue:177 +#: src/views/ssh/IndexView.vue:613 +#: src/views/tamper/TamperView.vue:148 +#: src/views/task/CronView.vue:155 +#: src/views/toolbox/WebHookView.vue:158 #: src/views/website/ListView.vue:259 msgid "Edit" msgstr "编辑" @@ -3121,21 +4215,29 @@ msgstr "访问" #: src/views/apps/grafana/GrafanaDataSourcesView.vue:228 #: src/views/apps/pureftpd/IndexView.vue:239 #: src/views/apps/pureftpd/IndexView.vue:278 -#: src/views/apps/rsync/IndexView.vue:287 -#: src/views/apps/rsync/IndexView.vue:348 src/views/backup/StorageView.vue:35 -#: src/views/backup/StorageView.vue:309 src/views/backup/StorageView.vue:353 -#: src/views/backup/StorageView.vue:465 src/views/backup/StorageView.vue:506 +#: src/views/apps/rsync/IndexView.vue:299 +#: src/views/apps/rsync/IndexView.vue:363 +#: src/views/backup/StorageView.vue:35 +#: src/views/backup/StorageView.vue:309 +#: src/views/backup/StorageView.vue:353 +#: src/views/backup/StorageView.vue:465 +#: src/views/backup/StorageView.vue:506 #: src/views/container/ImageView.vue:419 #: src/views/database/CreateDatabaseModal.vue:125 #: src/views/database/CreateServerModal.vue:179 #: src/views/database/CreateUserModal.vue:120 #: src/views/database/ServerList.vue:82 #: src/views/database/UpdateServerModal.vue:105 -#: src/views/database/UpdateUserModal.vue:63 src/views/database/UserList.vue:32 -#: src/views/login/IndexView.vue:261 src/views/monitor/ChannelModal.vue:119 -#: src/views/setting/CreateModal.vue:53 src/views/setting/PasswordModal.vue:42 -#: src/views/ssh/CreateModal.vue:80 src/views/ssh/CreateModal.vue:89 -#: src/views/ssh/UpdateModal.vue:86 src/views/ssh/UpdateModal.vue:95 +#: src/views/database/UpdateUserModal.vue:63 +#: src/views/database/UserList.vue:32 +#: src/views/login/IndexView.vue:261 +#: src/views/monitor/ChannelModal.vue:119 +#: src/views/setting/CreateModal.vue:53 +#: src/views/setting/PasswordModal.vue:42 +#: src/views/ssh/CreateModal.vue:80 +#: src/views/ssh/CreateModal.vue:89 +#: src/views/ssh/UpdateModal.vue:86 +#: src/views/ssh/UpdateModal.vue:95 #: src/views/website/EditModal.vue:2099 msgid "Password" msgstr "密码" @@ -3153,30 +4255,20 @@ msgid "Import dashboards in Grafana via Dashboard ID:" msgstr "通过 Dashboard ID 在 Grafana 中导入仪表盘:" #: src/views/apps/grafana/IndexView.vue:83 -msgid "" -"Go to Grafana → Dashboards → New → Import, enter the ID above and select the " -"Prometheus data source." -msgstr "" -"前往 Grafana → Dashboards → New → Import,输入上方 ID 并选择 Prometheus 数据" -"源。" +msgid "Go to Grafana → Dashboards → New → Import, enter the ID above and select the Prometheus data source." +msgstr "前往 Grafana → Dashboards → New → Import,输入上方 ID 并选择 Prometheus 数据源。" #: src/views/apps/grafana/IndexView.vue:96 -msgid "" -"This modifies the Grafana main configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 Grafana 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "This modifies the Grafana main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 Grafana 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/grafana/IndexView.vue:117 msgid "Data Sources" msgstr "数据源" #: src/views/apps/kafka/IndexView.vue:69 -msgid "" -"This modifies the Kafka main configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 Kafka 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "This modifies the Kafka main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 Kafka 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/kafka/KafkaConfigTuneView.vue:60 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:83 @@ -3283,33 +4375,25 @@ msgid "e.g. 4" msgstr "例如 4" #: src/views/apps/minio/IndexView.vue:42 -msgid "" -"This is modifying the MinIO environment variable file /etc/default/minio. If " -"you do not understand the meaning of each parameter, please do not modify it " -"arbitrarily!" -msgstr "" -"这将修改 MinIO 环境变量文件 /etc/default/minio。如果您不了解每个参数的含义," -"请不要随意修改!" +msgid "This is modifying the MinIO environment variable file /etc/default/minio. If you do not understand the meaning of each parameter, please do not modify it arbitrarily!" +msgstr "这将修改 MinIO 环境变量文件 /etc/default/minio。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/apps/mongodb/IndexView.vue:88 msgid "Admin Password" msgstr "管理员密码" #: src/views/apps/mongodb/IndexView.vue:92 -msgid "" -"The MongoDB admin password is used to manage the database. Keep it safe!" +msgid "The MongoDB admin password is used to manage the database. Keep it safe!" msgstr "MongoDB 管理员密码用于管理数据库。请妥善保管!" #: src/views/apps/mongodb/IndexView.vue:121 -msgid "" -"This modifies the MongoDB configuration file. If you do not understand the " -"meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 MongoDB 配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "This modifies the MongoDB configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 MongoDB 配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/mongodb/MongoDBConfigTuneView.vue:59 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:117 -#: src/views/backup/IndexView.vue:59 src/views/task/CreateModal.vue:538 +#: src/views/backup/IndexView.vue:59 +#: src/views/task/CreateModal.vue:538 msgid "Storage" msgstr "存储" @@ -3345,15 +4429,6 @@ msgstr "授权(security.authorization)" msgid "System Log Path (systemLog.path)" msgstr "系统日志路径(systemLog.path)" -#: src/views/apps/mysql/MysqlConfigTuneView.vue:210 -#: src/views/apps/nginx/NginxConfigTuneView.vue:175 -#: src/views/apps/redis/RedisConfigTuneView.vue:119 -#: src/views/apps/valkey/ValkeyConfigTuneView.vue:113 -#: src/views/environment/PhpConfigTuneView.vue:248 -#: src/views/project/IndexView.vue:22 src/views/project/ListView.vue:25 -msgid "General" -msgstr "通用" - #: src/views/apps/mysql/MysqlConfigTuneView.vue:213 msgid "Common MySQL general settings." msgstr "MySQL 通用设置。" @@ -3435,12 +4510,6 @@ msgstr "MySQL 性能缓冲区和缓存设置。" msgid "Key Buffer Size (key_buffer_size)" msgstr "键缓冲区大小(key_buffer_size)" -#: src/views/apps/mysql/MysqlConfigTuneView.vue:304 -#: src/views/apps/mysql/MysqlConfigTuneView.vue:428 -#: src/views/apps/pureftpd/PureftpdConfigTuneView.vue:80 -msgid "e.g. 8" -msgstr "例如 8" - #: src/views/apps/mysql/MysqlConfigTuneView.vue:311 msgid "Sort Buffer Size (sort_buffer_size)" msgstr "排序缓冲区大小(sort_buffer_size)" @@ -3528,10 +4597,6 @@ msgstr "锁等待超时(innodb_lock_wait_timeout)" msgid "Max Dirty Pages Pct (innodb_max_dirty_pages_pct)" msgstr "最大脏页百分比(innodb_max_dirty_pages_pct)" -#: src/views/apps/mysql/MysqlConfigTuneView.vue:511 -msgid "e.g. 90" -msgstr "例如 90" - #: src/views/apps/mysql/MysqlConfigTuneView.vue:516 msgid "Read IO Threads (innodb_read_io_threads)" msgstr "读取 IO 线程(innodb_read_io_threads)" @@ -3561,17 +4626,12 @@ msgid "Root Password" msgstr "Root 密码" #: src/views/apps/mysql/MysqlIndex.vue:125 -msgid "" -"The \"root\" user password is used to manage the database system. Keep it " -"safe!" +msgid "The \"root\" user password is used to manage the database system. Keep it safe!" msgstr "\"root\" 用户密码用于管理数据库系统。请妥善保管!" #: src/views/apps/mysql/MysqlIndex.vue:154 -msgid "" -"This modifies the %{ name } main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 %{ name } 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "This modifies the %{ name } main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 %{ name } 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/apps/mysql/MysqlIndex.vue:201 msgid "Slow Query Log" @@ -3621,11 +4681,6 @@ msgstr "例如 200" msgid "Client Body Buffer Size (client_body_buffer_size)" msgstr "客户端请求体缓冲区大小(client_body_buffer_size)" -#: src/views/apps/nginx/NginxConfigTuneView.vue:224 -#: src/views/environment/PhpConfigTuneView.vue:474 -msgid "e.g. 10" -msgstr "例如 10" - #: src/views/apps/nginx/NginxConfigTuneView.vue:235 msgid "Client Header Buffer Size (client_header_buffer_size)" msgstr "客户端请求头缓冲区大小(client_header_buffer_size)" @@ -3647,9 +4702,7 @@ msgid "Server Tokens (server_tokens)" msgstr "服务器标识(server_tokens)" #: src/views/apps/nginx/NginxConfigTuneView.vue:281 -msgid "" -"Gzip compression settings. Gzip is the most widely supported compression " -"method." +msgid "Gzip compression settings. Gzip is the most widely supported compression method." msgstr "Gzip 压缩设置。Gzip 是支持最广泛的压缩方法。" #: src/views/apps/nginx/NginxConfigTuneView.vue:287 @@ -3687,9 +4740,7 @@ msgid "e.g. any" msgstr "例如 any" #: src/views/apps/nginx/NginxConfigTuneView.vue:331 -msgid "" -"Brotli compression settings. Brotli provides better compression ratio than " -"Gzip." +msgid "Brotli compression settings. Brotli provides better compression ratio than Gzip." msgstr "Brotli 压缩设置。Brotli 提供比 Gzip 更好的压缩率。" #: src/views/apps/nginx/NginxConfigTuneView.vue:337 @@ -3713,8 +4764,7 @@ msgid "Static (brotli_static)" msgstr "静态(brotli_static)" #: src/views/apps/nginx/NginxConfigTuneView.vue:382 -msgid "" -"Zstd compression settings. Zstd provides fast compression with high ratio." +msgid "Zstd compression settings. Zstd provides fast compression with high ratio." msgstr "Zstd 压缩设置。Zstd 提供快速压缩和高压缩率。" #: src/views/apps/nginx/NginxConfigTuneView.vue:386 @@ -3741,13 +4791,15 @@ msgstr "静态(zstd_static)" msgid "Listen" msgstr "监听" -#: src/views/apps/nginx/NginxIndex.vue:167 src/views/firewall/ScanView.vue:301 +#: src/views/apps/nginx/NginxIndex.vue:167 +#: src/views/firewall/ScanView.vue:301 #: src/views/firewall/ScanView.vue:317 msgid "Protocol" msgstr "协议" #: src/views/apps/nginx/NginxIndex.vue:175 -#: src/views/apps/nginx/NginxIndex.vue:635 src/views/website/EditModal.vue:1176 +#: src/views/apps/nginx/NginxIndex.vue:635 +#: src/views/website/EditModal.vue:1176 msgid "Proxy Pass" msgstr "代理目标" @@ -3798,15 +4850,18 @@ msgstr "Stream" #: src/views/apps/nginx/NginxIndex.vue:533 #: src/views/database/CreateServerModal.vue:92 -#: src/views/database/IndexView.vue:189 src/views/website/EditModal.vue:1113 +#: src/views/database/IndexView.vue:189 +#: src/views/website/EditModal.vue:1113 msgid "Add Server" msgstr "添加服务器" -#: src/views/apps/nginx/NginxIndex.vue:546 src/views/website/EditModal.vue:1032 +#: src/views/apps/nginx/NginxIndex.vue:546 +#: src/views/website/EditModal.vue:1032 msgid "Upstream" msgstr "上游" -#: src/views/apps/nginx/NginxIndex.vue:550 src/views/website/EditModal.vue:1129 +#: src/views/apps/nginx/NginxIndex.vue:550 +#: src/views/website/EditModal.vue:1129 msgid "Add Upstream" msgstr "添加上游" @@ -3863,7 +4918,8 @@ msgstr "SSL 私钥路径" msgid "e.g. /path/to/key.pem" msgstr "例如 /path/to/key.pem" -#: src/views/apps/nginx/NginxIndex.vue:713 src/views/website/EditModal.vue:1043 +#: src/views/apps/nginx/NginxIndex.vue:713 +#: src/views/website/EditModal.vue:1043 msgid "Load Balancing Algorithm" msgstr "负载均衡算法" @@ -3885,7 +4941,8 @@ msgstr "地址" #: src/views/apps/nginx/NginxIndex.vue:750 #: src/views/container/NetworkView.vue:331 -#: src/views/container/VolumeView.vue:223 src/views/toolbox/DiskView.vue:606 +#: src/views/container/VolumeView.vue:223 +#: src/views/toolbox/DiskView.vue:606 msgid "Options" msgstr "选项" @@ -3893,27 +4950,27 @@ msgstr "选项" msgid "No servers added yet" msgstr "尚未添加服务器" -#: src/views/apps/nginx/NginxIndex.vue:777 src/views/website/EditModal.vue:1073 +#: src/views/apps/nginx/NginxIndex.vue:777 +#: src/views/website/EditModal.vue:1073 #: src/views/website/EditModal.vue:1210 msgid "DNS Resolver" msgstr "DNS 解析器" -#: src/views/apps/nginx/NginxIndex.vue:780 src/views/website/EditModal.vue:1076 +#: src/views/apps/nginx/NginxIndex.vue:780 +#: src/views/website/EditModal.vue:1076 #: src/views/website/EditModal.vue:1213 msgid "e.g., 8.8.8.8" msgstr "例如 8.8.8.8" -#: src/views/apps/nginx/NginxIndex.vue:786 src/views/website/EditModal.vue:1082 +#: src/views/apps/nginx/NginxIndex.vue:786 +#: src/views/website/EditModal.vue:1082 #: src/views/website/EditModal.vue:1219 msgid "Resolver Timeout" msgstr "解析超时" #: src/views/apps/opensearch/IndexView.vue:69 -msgid "" -"This modifies the OpenSearch main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 OpenSearch 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "This modifies the OpenSearch main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 OpenSearch 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:71 msgid "OpenSearch cluster and network settings." @@ -3942,9 +4999,7 @@ msgid "Login Password" msgstr "登录密码" #: src/views/apps/pgadmin/IndexView.vue:95 -msgid "" -"If the password has been changed in pgAdmin, the actual password shall " -"prevail." +msgid "If the password has been changed in pgAdmin, the actual password shall prevail." msgstr "若已在 pgAdmin 中修改过密码,以实际密码为准。" #: src/views/apps/pgadmin/IndexView.vue:102 @@ -3961,9 +5016,7 @@ msgid "Modify Username" msgstr "修改用户名" #: src/views/apps/pgadmin/IndexView.vue:129 -msgid "" -"Modify the login email of the pgAdmin administrator account, server " -"configurations will be migrated automatically" +msgid "Modify the login email of the pgAdmin administrator account, server configurations will be migrated automatically" msgstr "修改 pgAdmin 管理员帐户的登录邮箱,服务器配置将自动迁移" #: src/views/apps/pgadmin/IndexView.vue:134 @@ -3975,7 +5028,8 @@ msgid "New password" msgstr "新密码" #: src/views/apps/pgadmin/IndexView.vue:149 -#: src/views/toolbox/MigrationView.vue:415 src/views/toolbox/SshView.vue:314 +#: src/views/toolbox/MigrationView.vue:415 +#: src/views/toolbox/SshView.vue:314 msgid "Reset" msgstr "重置" @@ -3988,28 +5042,19 @@ msgid "Modify phpMyAdmin access port" msgstr "修改 phpMyAdmin 访问端口" #: src/views/apps/phpmyadmin/IndexView.vue:94 -msgid "" -"This modifies the OpenResty configuration file for phpMyAdmin. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 phpMyAdmin 的 OpenResty 配置文件。如果您不了解每个参数的含义,请不要" -"随意修改!" +msgid "This modifies the OpenResty configuration file for phpMyAdmin. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 phpMyAdmin 的 OpenResty 配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/apps/podman/IndexView.vue:55 -msgid "" -"Podman is a daemonless container management tool. Being in a stopped state " -"is normal and does not affect usage!" -msgstr "" -"Podman 是一个无守护进程的容器管理工具。处于停止状态是正常的,不影响使用!" +msgid "Podman is a daemonless container management tool. Being in a stopped state is normal and does not affect usage!" +msgstr "Podman 是一个无守护进程的容器管理工具。处于停止状态是正常的,不影响使用!" #: src/views/apps/podman/IndexView.vue:63 msgid "Registry Configuration" msgstr "注册表配置" #: src/views/apps/podman/IndexView.vue:67 -msgid "" -"This modifies the Podman registry configuration file (/etc/containers/" -"registries.conf)" +msgid "This modifies the Podman registry configuration file (/etc/containers/registries.conf)" msgstr "这会修改 Podman 注册表配置文件 (/etc/containers/registries.conf)" #: src/views/apps/podman/IndexView.vue:85 @@ -4017,9 +5062,7 @@ msgid "Storage Configuration" msgstr "存储配置" #: src/views/apps/podman/IndexView.vue:89 -msgid "" -"This modifies the Podman storage configuration file (/etc/containers/storage." -"conf)" +msgid "This modifies the Podman storage configuration file (/etc/containers/storage.conf)" msgstr "这会修改 Podman 存储配置文件 (/etc/containers/storage.conf)" #: src/views/apps/postgresql/IndexView.vue:155 @@ -4027,29 +5070,20 @@ msgid "Super Password" msgstr "超级密码" #: src/views/apps/postgresql/IndexView.vue:159 -msgid "" -"The \"postgres\" superuser password is used to manage the database system. " -"Keep it safe!" +msgid "The \"postgres\" superuser password is used to manage the database system. Keep it safe!" msgstr "\"postgres\" 超级用户密码用于管理数据库系统。请妥善保管!" #: src/views/apps/postgresql/IndexView.vue:192 -msgid "" -"This modifies the PostgreSQL main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 PostgreSQL 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "This modifies the PostgreSQL main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 PostgreSQL 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/apps/postgresql/IndexView.vue:213 msgid "User Configuration" msgstr "用户配置" #: src/views/apps/postgresql/IndexView.vue:217 -msgid "" -"This modifies the PostgreSQL user configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 PostgreSQL 用户配置文件。如果您不了解每个参数的含义,请不要随意修" -"改!" +msgid "This modifies the PostgreSQL user configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 PostgreSQL 用户配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/apps/postgresql/IndexView.vue:260 msgid "Application Logs" @@ -4079,19 +5113,19 @@ msgstr "例如 5432" msgid "Superuser Reserved Connections (superuser_reserved_connections)" msgstr "超级用户保留连接数(superuser_reserved_connections)" -#: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:209 -#: src/views/environment/PhpConfigTuneView.vue:463 -msgid "e.g. 3" -msgstr "例如 3" - #: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:226 #: src/views/apps/redis/RedisConfigTuneView.vue:182 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:176 -#: src/views/container/ContainerCreate.vue:542 src/views/home/IndexView.vue:700 -#: src/views/home/IndexView.vue:773 src/views/monitor/SystemView.vue:520 -#: src/views/monitor/SystemView.vue:527 src/views/monitor/SystemView.vue:543 -#: src/views/monitor/SystemView.vue:791 src/views/toolbox/BenchmarkView.vue:178 -#: src/views/toolbox/PanelView.vue:122 src/views/toolbox/ProcessView.vue:152 +#: src/views/container/ContainerCreate.vue:542 +#: src/views/home/IndexView.vue:700 +#: src/views/home/IndexView.vue:773 +#: src/views/monitor/SystemView.vue:520 +#: src/views/monitor/SystemView.vue:527 +#: src/views/monitor/SystemView.vue:543 +#: src/views/monitor/SystemView.vue:791 +#: src/views/toolbox/BenchmarkView.vue:178 +#: src/views/toolbox/PanelView.vue:122 +#: src/views/toolbox/ProcessView.vue:152 msgid "Memory" msgstr "内存" @@ -4221,33 +5255,20 @@ msgid "IO Method (io_method)" msgstr "IO 方法(io_method)" #: src/views/apps/prometheus/IndexView.vue:89 -msgid "" -"By default, the firewall does not allow access to the Prometheus port " -"(9090). If you need external access, please manually open the port in the " -"firewall settings." -msgstr "" -"默认情况下,防火墙不允许访问 Prometheus 端口(9090)。如果您需要外部访问,请" -"在防火墙设置中手动开放该端口。" +msgid "By default, the firewall does not allow access to the Prometheus port (9090). If you need external access, please manually open the port in the firewall settings." +msgstr "默认情况下,防火墙不允许访问 Prometheus 端口(9090)。如果您需要外部访问,请在防火墙设置中手动开放该端口。" #: src/views/apps/prometheus/IndexView.vue:100 -msgid "" -"This modifies the Prometheus main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 Prometheus 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "This modifies the Prometheus main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 Prometheus 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/prometheus/IndexView.vue:121 msgid "Alertmanager" msgstr "Alertmanager" #: src/views/apps/prometheus/IndexView.vue:126 -msgid "" -"Configure Alertmanager notification channels (email, webhook, Slack, etc). " -"To enable alert rules, uncomment the rule_files section in the main " -"configuration and create rule files in the rules directory." -msgstr "" -"配置 Alertmanager 通知渠道(邮件、webhook、Slack 等)。要启用告警规则,请在主" -"配置中取消注释 rule_files 部分,并在 rules 目录中创建规则文件。" +msgid "Configure Alertmanager notification channels (email, webhook, Slack, etc). To enable alert rules, uncomment the rule_files section in the main configuration and create rule files in the rules directory." +msgstr "配置 Alertmanager 通知渠道(邮件、webhook、Slack 等)。要启用告警规则,请在主配置中取消注释 rule_files 部分,并在 rules 目录中创建规则文件。" #: src/views/apps/prometheus/IndexView.vue:144 msgid "Exporters" @@ -4300,14 +5321,14 @@ msgstr "您确定要卸载 %{ name } 吗?" #: src/views/apps/prometheus/PrometheusExportersView.vue:146 #: src/views/apps/prometheus/PrometheusExportersView.vue:153 #: src/views/container/ContainerCreate.vue:120 -#: src/views/container/ImageView.vue:186 src/views/environment/PHPView.vue:175 +#: src/views/container/ImageView.vue:186 +#: src/views/environment/PHPView.vue:175 #: src/views/environment/PHPView.vue:181 msgid "Task submitted, please check progress in background tasks" msgstr "任务已提交,请在后台任务中查看进度" #: src/views/apps/prometheus/PrometheusExportersView.vue:204 -msgid "" -"Manage Prometheus exporters. Exporters collect metrics from various services." +msgid "Manage Prometheus exporters. Exporters collect metrics from various services." msgstr "管理 Prometheus exporters。Exporters 从各种服务中收集指标。" #: src/views/apps/prometheus/PrometheusExportersView.vue:211 @@ -4320,18 +5341,24 @@ msgstr "修改 exporter 配置将重启 exporter 服务。" #: src/views/apps/pureftpd/IndexView.vue:39 #: src/views/apps/pureftpd/IndexView.vue:231 -#: src/views/backup/StorageView.vue:298 src/views/backup/StorageView.vue:347 -#: src/views/backup/StorageView.vue:454 src/views/backup/StorageView.vue:500 +#: src/views/backup/StorageView.vue:298 +#: src/views/backup/StorageView.vue:347 +#: src/views/backup/StorageView.vue:454 +#: src/views/backup/StorageView.vue:500 #: src/views/container/ImageView.vue:411 #: src/views/database/CreateDatabaseModal.vue:117 #: src/views/database/CreateServerModal.vue:167 #: src/views/database/CreateUserModal.vue:112 #: src/views/database/ServerList.vue:73 #: src/views/database/UpdateServerModal.vue:97 -#: src/views/database/UserList.vue:22 src/views/login/IndexView.vue:252 -#: src/views/monitor/ChannelModal.vue:116 src/views/setting/CreateModal.vue:46 -#: src/views/setting/SettingUser.vue:24 src/views/ssh/CreateModal.vue:86 -#: src/views/ssh/UpdateModal.vue:92 src/views/website/EditModal.vue:2098 +#: src/views/database/UserList.vue:22 +#: src/views/login/IndexView.vue:252 +#: src/views/monitor/ChannelModal.vue:116 +#: src/views/setting/CreateModal.vue:46 +#: src/views/setting/SettingUser.vue:24 +#: src/views/ssh/CreateModal.vue:86 +#: src/views/ssh/UpdateModal.vue:92 +#: src/views/website/EditModal.vue:2098 msgid "Username" msgstr "用户名" @@ -4364,14 +5391,17 @@ msgstr "运行日志" #: src/views/apps/pureftpd/IndexView.vue:227 #: src/views/database/CreateDatabaseModal.vue:102 #: src/views/database/CreateUserModal.vue:90 -#: src/views/database/IndexView.vue:182 src/views/setting/CreateModal.vue:38 +#: src/views/database/IndexView.vue:182 +#: src/views/setting/CreateModal.vue:38 #: src/views/setting/IndexView.vue:155 msgid "Create User" msgstr "创建用户" #: src/views/apps/pureftpd/IndexView.vue:236 -#: src/views/backup/StorageView.vue:301 src/views/backup/StorageView.vue:350 -#: src/views/backup/StorageView.vue:457 src/views/backup/StorageView.vue:503 +#: src/views/backup/StorageView.vue:301 +#: src/views/backup/StorageView.vue:350 +#: src/views/backup/StorageView.vue:457 +#: src/views/backup/StorageView.vue:503 #: src/views/container/ImageView.vue:416 #: src/views/database/CreateDatabaseModal.vue:122 #: src/views/database/CreateUserModal.vue:117 @@ -4384,11 +5414,15 @@ msgid "It is recommended to use the generator to generate a random password" msgstr "建议使用生成器生成随机密码" #: src/views/apps/pureftpd/IndexView.vue:250 -#: src/views/apps/rsync/IndexView.vue:50 src/views/apps/rsync/IndexView.vue:271 -#: src/views/apps/rsync/IndexView.vue:332 -#: src/views/container/ComposeView.vue:66 src/views/file/PropertyModal.vue:34 -#: src/views/project/ListView.vue:97 src/views/task/CreateModal.vue:461 -#: src/views/website/CreateModal.vue:305 src/views/website/ListView.vue:148 +#: src/views/apps/rsync/IndexView.vue:52 +#: src/views/apps/rsync/IndexView.vue:283 +#: src/views/apps/rsync/IndexView.vue:347 +#: src/views/container/ComposeView.vue:66 +#: src/views/file/PropertyModal.vue:34 +#: src/views/project/ListView.vue:97 +#: src/views/task/CreateModal.vue:461 +#: src/views/website/CreateModal.vue:305 +#: src/views/website/ListView.vue:148 msgid "Directory" msgstr "目录" @@ -4445,11 +5479,8 @@ msgid "e.g. 99" msgstr "例如 99" #: src/views/apps/redis/IndexView.vue:69 -msgid "" -"This modifies the Redis main configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 Redis 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "This modifies the Redis main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 Redis 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/apps/redis/RedisConfigTuneView.vue:122 msgid "Common Redis general settings." @@ -4534,12 +5565,8 @@ msgid "Append Fsync (appendfsync)" msgstr "追加同步(appendfsync)" #: src/views/apps/rocketmq/IndexView.vue:72 -msgid "" -"This modifies the RocketMQ broker configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 RocketMQ broker 配置文件。如果您不理解每个参数的含义,请不要随意修" -"改!" +msgid "This modifies the RocketMQ broker configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 RocketMQ broker 配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:86 msgid "RocketMQ broker basic settings." @@ -4589,90 +5616,96 @@ msgstr "JVM" msgid "JVM heap memory settings for NameServer and Broker." msgstr "NameServer 和 Broker 的 JVM 堆内存设置。" -#: src/views/apps/rsync/IndexView.vue:64 src/views/apps/rsync/IndexView.vue:295 -#: src/views/apps/rsync/IndexView.vue:357 src/views/backup/StorageView.vue:287 +#: src/views/apps/rsync/IndexView.vue:66 +#: src/views/apps/rsync/IndexView.vue:307 +#: src/views/apps/rsync/IndexView.vue:372 +#: src/views/backup/StorageView.vue:287 #: src/views/backup/StorageView.vue:443 #: src/views/database/CreateDatabaseModal.vue:142 #: src/views/database/CreateServerModal.vue:143 #: src/views/database/CreateUserModal.vue:137 #: src/views/database/ServerList.vue:113 #: src/views/database/UpdateServerModal.vue:76 -#: src/views/database/UserList.vue:63 src/views/ssh/CreateModal.vue:65 -#: src/views/ssh/UpdateModal.vue:71 src/views/toolbox/SystemView.vue:176 +#: src/views/database/UserList.vue:63 +#: src/views/ssh/CreateModal.vue:65 +#: src/views/ssh/UpdateModal.vue:71 +#: src/views/toolbox/SystemView.vue:176 msgid "Host" msgstr "主机" -#: src/views/apps/rsync/IndexView.vue:70 src/views/apps/rsync/IndexView.vue:303 -#: src/views/apps/rsync/IndexView.vue:365 +#: src/views/apps/rsync/IndexView.vue:73 +#: src/views/apps/rsync/IndexView.vue:315 +#: src/views/apps/rsync/IndexView.vue:380 +msgid "Read Only" +msgstr "只读" + +#: src/views/apps/rsync/IndexView.vue:80 +#: src/views/apps/rsync/IndexView.vue:318 +#: src/views/apps/rsync/IndexView.vue:383 #: src/views/database/CreateServerModal.vue:190 #: src/views/database/CreateUserModal.vue:164 -#: src/views/database/DatabaseList.vue:49 src/views/database/ServerList.vue:123 +#: src/views/database/DatabaseList.vue:49 +#: src/views/database/ServerList.vue:123 #: src/views/database/UpdateServerModal.vue:114 -#: src/views/database/UpdateUserModal.vue:78 src/views/database/UserList.vue:96 +#: src/views/database/UpdateUserModal.vue:78 +#: src/views/database/UserList.vue:96 msgid "Comment" msgstr "注释" -#: src/views/apps/rsync/IndexView.vue:85 -#: src/views/apps/supervisor/IndexView.vue:107 -#: src/views/toolbox/network/InterfaceView.vue:212 -msgid "Configure" -msgstr "配置" - -#: src/views/apps/rsync/IndexView.vue:94 +#: src/views/apps/rsync/IndexView.vue:104 msgid "Are you sure you want to delete module %{ name }?" msgstr "确定要删除模块 %{ name } 吗?" -#: src/views/apps/rsync/IndexView.vue:197 src/views/environment/PHPView.vue:207 +#: src/views/apps/rsync/IndexView.vue:209 +#: src/views/environment/PHPView.vue:207 msgid "Module Management" msgstr "模块管理" -#: src/views/apps/rsync/IndexView.vue:201 -#: src/views/apps/rsync/IndexView.vue:255 +#: src/views/apps/rsync/IndexView.vue:213 +#: src/views/apps/rsync/IndexView.vue:267 msgid "Add Module" msgstr "添加模块" -#: src/views/apps/rsync/IndexView.vue:229 -msgid "" -"This modifies the Rsync main configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 Rsync 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +#: src/views/apps/rsync/IndexView.vue:241 +msgid "This modifies the Rsync main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 Rsync 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" -#: src/views/apps/rsync/IndexView.vue:268 -#: src/views/apps/supervisor/IndexView.vue:397 +#: src/views/apps/rsync/IndexView.vue:280 +#: src/views/apps/supervisor/IndexView.vue:449 msgid "Name cannot contain Chinese characters" msgstr "名称不能包含中文字符" -#: src/views/apps/rsync/IndexView.vue:276 -#: src/views/apps/rsync/IndexView.vue:337 +#: src/views/apps/rsync/IndexView.vue:288 +#: src/views/apps/rsync/IndexView.vue:352 msgid "Please enter absolute path" msgstr "请输入绝对路径" -#: src/views/apps/rsync/IndexView.vue:284 -#: src/views/apps/rsync/IndexView.vue:345 +#: src/views/apps/rsync/IndexView.vue:296 +#: src/views/apps/rsync/IndexView.vue:360 msgid "Enter module username" msgstr "输入模块用户名" -#: src/views/apps/rsync/IndexView.vue:292 -#: src/views/apps/rsync/IndexView.vue:354 +#: src/views/apps/rsync/IndexView.vue:304 +#: src/views/apps/rsync/IndexView.vue:369 msgid "Enter module password" msgstr "输入模块密码" -#: src/views/apps/rsync/IndexView.vue:300 -#: src/views/apps/rsync/IndexView.vue:362 +#: src/views/apps/rsync/IndexView.vue:312 +#: src/views/apps/rsync/IndexView.vue:377 msgid "Enter allowed hosts, separate multiple hosts with spaces" msgstr "输入允许的主机,多个主机用空格分隔" -#: src/views/apps/rsync/IndexView.vue:308 -#: src/views/apps/rsync/IndexView.vue:370 +#: src/views/apps/rsync/IndexView.vue:323 +#: src/views/apps/rsync/IndexView.vue:388 msgid "Enter comments" msgstr "输入注释" -#: src/views/apps/rsync/IndexView.vue:325 +#: src/views/apps/rsync/IndexView.vue:340 msgid "Module Configuration" msgstr "模块配置" -#: src/views/apps/s3fs/IndexView.vue:27 src/views/toolbox/DiskView.vue:696 +#: src/views/apps/s3fs/IndexView.vue:27 +#: src/views/toolbox/DiskView.vue:696 msgid "Mount Path" msgstr "挂载路径" @@ -4680,12 +5713,14 @@ msgstr "挂载路径" msgid "Are you sure you want to delete mount %{ path }?" msgstr "您确定要删除挂载 %{ path } 吗?" -#: src/views/apps/s3fs/IndexView.vue:50 src/views/apps/s3fs/IndexView.vue:55 +#: src/views/apps/s3fs/IndexView.vue:50 +#: src/views/apps/s3fs/IndexView.vue:55 #: src/views/toolbox/DiskView.vue:312 msgid "Unmount" msgstr "卸载" -#: src/views/apps/s3fs/IndexView.vue:101 src/views/apps/s3fs/IndexView.vue:125 +#: src/views/apps/s3fs/IndexView.vue:101 +#: src/views/apps/s3fs/IndexView.vue:125 #: src/views/apps/s3fs/IndexView.vue:129 msgid "Add Mount" msgstr "添加挂载" @@ -4707,9 +5742,7 @@ msgid "Region Endpoint" msgstr "区域端点" #: src/views/apps/s3fs/IndexView.vue:163 -msgid "" -"Enter complete URL of region endpoint (e.g., https://oss-cn-beijing.aliyuncs." -"com)" +msgid "Enter complete URL of region endpoint (e.g., https://oss-cn-beijing.aliyuncs.com)" msgstr "输入完整的区域端点 URL(例如:https://oss-cn-beijing.aliyuncs.com)" #: src/views/apps/s3fs/IndexView.vue:169 @@ -4720,84 +5753,178 @@ msgstr "挂载目录" msgid "Enter mount directory (e.g., /oss)" msgstr "输入挂载目录(例如,/oss)" -#: src/views/apps/supervisor/IndexView.vue:77 +#: src/views/apps/supervisor/IndexView.vue:80 +#: src/views/container/ContainerCreate.vue:58 +msgid "Always" +msgstr "总是" + +#: src/views/apps/supervisor/IndexView.vue:81 +#: src/views/setting/PasskeyModal.vue:47 +msgid "Never" +msgstr "从未" + +#: src/views/apps/supervisor/IndexView.vue:82 +msgid "On Unexpected Exit" +msgstr "意外退出时" + +#: src/views/apps/supervisor/IndexView.vue:110 #: src/views/toolbox/PanelView.vue:104 msgid "Uptime" msgstr "运行时间" -#: src/views/apps/supervisor/IndexView.vue:134 +#: src/views/apps/supervisor/IndexView.vue:167 msgid "Are you sure you want to stop process %{ name }?" msgstr "您确定要停止进程 %{ name } 吗?" -#: src/views/apps/supervisor/IndexView.vue:152 +#: src/views/apps/supervisor/IndexView.vue:185 msgid "Are you sure you want to restart process %{ name }?" msgstr "您确定要重启进程 %{ name } 吗?" -#: src/views/apps/supervisor/IndexView.vue:171 +#: src/views/apps/supervisor/IndexView.vue:204 msgid "Are you sure you want to delete process %{ name }?" msgstr "您确定要删除进程 %{ name } 吗?" -#: src/views/apps/supervisor/IndexView.vue:311 +#: src/views/apps/supervisor/IndexView.vue:363 msgid "Process Management" msgstr "进程管理" -#: src/views/apps/supervisor/IndexView.vue:315 -#: src/views/apps/supervisor/IndexView.vue:384 +#: src/views/apps/supervisor/IndexView.vue:367 +#: src/views/apps/supervisor/IndexView.vue:436 msgid "Add Process" msgstr "添加进程" -#: src/views/apps/supervisor/IndexView.vue:343 -msgid "" -"This modifies the Supervisor main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 Supervisor 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" +#: src/views/apps/supervisor/IndexView.vue:395 +msgid "This modifies the Supervisor main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 Supervisor 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" -#: src/views/apps/supervisor/IndexView.vue:364 +#: src/views/apps/supervisor/IndexView.vue:416 msgid "Daemon Logs" msgstr "守护进程日志" -#: src/views/apps/supervisor/IndexView.vue:400 -#: src/views/project/CreateModal.vue:641 src/views/project/EditModal.vue:257 +#: src/views/apps/supervisor/IndexView.vue:452 +#: src/views/project/CreateModal.vue:641 +#: src/views/project/EditModal.vue:257 msgid "Start Command" msgstr "启动命令" -#: src/views/apps/supervisor/IndexView.vue:405 +#: src/views/apps/supervisor/IndexView.vue:457 msgid "Please enter absolute path for files in start command" msgstr "请在启动命令中输入文件的绝对路径" -#: src/views/apps/supervisor/IndexView.vue:408 -#: src/views/project/EditModal.vue:219 src/views/toolbox/ProcessView.vue:431 +#: src/views/apps/supervisor/IndexView.vue:460 +#: src/views/project/EditModal.vue:219 +#: src/views/toolbox/ProcessView.vue:431 msgid "Working Directory" msgstr "工作目录" -#: src/views/apps/supervisor/IndexView.vue:413 +#: src/views/apps/supervisor/IndexView.vue:465 msgid "Please enter absolute path for working directory" msgstr "请输入工作目录的绝对路径" -#: src/views/apps/supervisor/IndexView.vue:416 +#: src/views/apps/supervisor/IndexView.vue:468 #: src/views/toolbox/WebHookView.vue:63 msgid "Run As User" msgstr "运行用户" -#: src/views/apps/supervisor/IndexView.vue:421 +#: src/views/apps/supervisor/IndexView.vue:473 msgid "Usually www is sufficient" msgstr "通常使用 www 即可" -#: src/views/apps/supervisor/IndexView.vue:424 +#: src/views/apps/supervisor/IndexView.vue:476 msgid "Number of Processes" msgstr "进程数量" -#: src/views/apps/supervisor/IndexView.vue:448 +#: src/views/apps/supervisor/IndexView.vue:500 msgid "Process Configuration" msgstr "进程配置" +#: src/views/apps/supervisor/IndexView.vue:507 +msgid "Parameter Settings" +msgstr "参数设置" + +#: src/views/apps/supervisor/IndexView.vue:510 +msgid "Leave a field empty to comment out the option and use the default." +msgstr "将字段留空可注释掉该选项并使用默认值。" + +#: src/views/apps/supervisor/IndexView.vue:513 +msgid "Start Command (command)" +msgstr "启动命令(command)" + +#: src/views/apps/supervisor/IndexView.vue:516 +msgid "Working Directory (directory)" +msgstr "工作目录(directory)" + +#: src/views/apps/supervisor/IndexView.vue:519 +msgid "Run As User (user)" +msgstr "运行用户(user)" + +#: src/views/apps/supervisor/IndexView.vue:522 +msgid "Number of Processes (numprocs)" +msgstr "进程数量(numprocs)" + +#: src/views/apps/supervisor/IndexView.vue:525 +msgid "Priority (priority)" +msgstr "优先级(priority)" + +#: src/views/apps/supervisor/IndexView.vue:528 +msgid "Start On Boot (autostart)" +msgstr "开机启动(autostart)" + +#: src/views/apps/supervisor/IndexView.vue:531 +msgid "Auto Restart (autorestart)" +msgstr "自动重启(autorestart)" + +#: src/views/apps/supervisor/IndexView.vue:538 +msgid "Seconds Before Considered Started (startsecs)" +msgstr "认定启动成功前的等待秒数(startsecs)" + +#: src/views/apps/supervisor/IndexView.vue:541 +msgid "Start Retries (startretries)" +msgstr "启动重试次数(startretries)" + +#: src/views/apps/supervisor/IndexView.vue:544 +msgid "Seconds To Wait On Stop (stopwaitsecs)" +msgstr "停止等待秒数(stopwaitsecs)" + +#: src/views/apps/supervisor/IndexView.vue:547 +msgid "Stop Whole Process Group (stopasgroup)" +msgstr "停止整个进程组(stopasgroup)" + +#: src/views/apps/supervisor/IndexView.vue:550 +msgid "Kill Whole Process Group (killasgroup)" +msgstr "终止整个进程组(killasgroup)" + +#: src/views/apps/supervisor/IndexView.vue:553 +msgid "Merge Stderr Into Stdout (redirect_stderr)" +msgstr "将标准错误合并到标准输出(redirect_stderr)" + +#: src/views/apps/supervisor/IndexView.vue:560 +msgid "Log File (stdout_logfile)" +msgstr "日志文件(stdout_logfile)" + +#: src/views/apps/supervisor/IndexView.vue:563 +msgid "Log Rotate Size (stdout_logfile_maxbytes)" +msgstr "日志轮转大小(stdout_logfile_maxbytes)" + +#: src/views/apps/supervisor/IndexView.vue:566 +msgid "Log Backups (stdout_logfile_backups)" +msgstr "日志备份数量(stdout_logfile_backups)" + +#: src/views/apps/supervisor/IndexView.vue:569 +msgid "Environment Variables (environment)" +msgstr "环境变量(environment)" + +#: src/views/apps/supervisor/IndexView.vue:572 +msgid "e.g. KEY="value",FOO="bar"" +msgstr "例如 KEY="value",FOO="bar"" + +#: src/views/apps/supervisor/IndexView.vue:587 +msgid "Raw Configuration" +msgstr "原始配置" + #: src/views/apps/valkey/IndexView.vue:69 -msgid "" -"This modifies the Valkey main configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 Valkey 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "This modifies the Valkey main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 Valkey 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/valkey/ValkeyConfigTuneView.vue:116 msgid "Common Valkey general settings." @@ -4815,7 +5942,8 @@ msgstr "Valkey AOF 持久化设置。" msgid "Filename" msgstr "文件名" -#: src/views/backup/ListView.vue:54 src/views/database/ServerList.vue:152 +#: src/views/backup/ListView.vue:54 +#: src/views/database/ServerList.vue:152 #: src/views/database/UserList.vue:125 msgid "Update Date" msgstr "更新日期" @@ -4833,31 +5961,34 @@ msgid "Restore task created, please check the progress in background tasks" msgstr "恢复任务已创建,请在后台任务中查看进度" #: src/views/backup/ListView.vue:232 -msgid "" -"Only local backups are displayed here. Remote backups are stored in the " -"corresponding backup storage." +msgid "Only local backups are displayed here. Remote backups are stored in the corresponding backup storage." msgstr "此处仅显示本地备份。远程备份存储在相应的备份存储中。" -#: src/views/backup/ListView.vue:239 src/views/backup/ListView.vue:268 +#: src/views/backup/ListView.vue:239 +#: src/views/backup/ListView.vue:268 msgid "Create Backup" msgstr "创建备份" -#: src/views/backup/ListView.vue:242 src/views/backup/UploadModal.vue:38 +#: src/views/backup/ListView.vue:242 +#: src/views/backup/UploadModal.vue:38 msgid "Upload Backup" msgstr "上传备份" -#: src/views/backup/ListView.vue:280 src/views/backup/ListView.vue:328 +#: src/views/backup/ListView.vue:280 +#: src/views/backup/ListView.vue:328 msgid "Select website" msgstr "选择网站" #: src/views/backup/ListView.vue:286 #: src/views/database/CreateDatabaseModal.vue:94 -#: src/views/database/DatabaseList.vue:21 src/views/website/CreateModal.vue:269 +#: src/views/database/DatabaseList.vue:21 +#: src/views/website/CreateModal.vue:269 #: src/views/website/CreateModal.vue:274 msgid "Database Name" msgstr "数据库名称" -#: src/views/backup/ListView.vue:292 src/views/backup/ListView.vue:340 +#: src/views/backup/ListView.vue:292 +#: src/views/backup/ListView.vue:340 msgid "Select database" msgstr "选择数据库" @@ -4873,12 +6004,18 @@ msgstr "选择备份存储" msgid "Restore Backup" msgstr "恢复备份" -#: src/views/backup/StorageView.vue:36 src/views/backup/StorageView.vue:321 -#: src/views/backup/StorageView.vue:477 src/views/cert/CertView.vue:619 -#: src/views/cert/CertView.vue:719 src/views/cert/UploadCertModal.vue:54 -#: src/views/setting/SettingSafe.vue:282 src/views/ssh/CreateModal.vue:81 -#: src/views/ssh/CreateModal.vue:92 src/views/ssh/UpdateModal.vue:87 -#: src/views/ssh/UpdateModal.vue:98 src/views/website/EditModal.vue:1784 +#: src/views/backup/StorageView.vue:36 +#: src/views/backup/StorageView.vue:321 +#: src/views/backup/StorageView.vue:477 +#: src/views/cert/CertView.vue:619 +#: src/views/cert/CertView.vue:719 +#: src/views/cert/UploadCertModal.vue:54 +#: src/views/setting/SettingSafe.vue:282 +#: src/views/ssh/CreateModal.vue:81 +#: src/views/ssh/CreateModal.vue:92 +#: src/views/ssh/UpdateModal.vue:87 +#: src/views/ssh/UpdateModal.vue:98 +#: src/views/website/EditModal.vue:1784 msgid "Private Key" msgstr "私钥" @@ -4893,40 +6030,50 @@ msgstr "您确定要删除此存储吗?" #: src/views/backup/StorageView.vue:173 #: src/views/container/ContainerCreate.vue:124 -#: src/views/setting/PasswordModal.vue:21 src/views/setting/TokenModal.vue:178 -#: src/views/setting/TwoFaModal.vue:28 src/views/ssh/UpdateModal.vue:32 +#: src/views/setting/PasswordModal.vue:21 +#: src/views/setting/TokenModal.vue:178 +#: src/views/setting/TwoFaModal.vue:28 +#: src/views/ssh/UpdateModal.vue:32 msgid "Updated successfully" msgstr "更新成功" -#: src/views/backup/StorageView.vue:195 src/views/backup/StorageView.vue:222 +#: src/views/backup/StorageView.vue:195 +#: src/views/backup/StorageView.vue:222 msgid "Add Storage" msgstr "添加存储" -#: src/views/backup/StorageView.vue:231 src/views/backup/StorageView.vue:393 +#: src/views/backup/StorageView.vue:231 +#: src/views/backup/StorageView.vue:393 msgid "Enter storage name" msgstr "输入存储名称" -#: src/views/backup/StorageView.vue:239 src/views/backup/StorageView.vue:401 +#: src/views/backup/StorageView.vue:239 +#: src/views/backup/StorageView.vue:401 msgid "Access Key" msgstr "Access Key" -#: src/views/backup/StorageView.vue:242 src/views/backup/StorageView.vue:404 +#: src/views/backup/StorageView.vue:242 +#: src/views/backup/StorageView.vue:404 msgid "Enter access key" msgstr "输入 Access Key" -#: src/views/backup/StorageView.vue:245 src/views/backup/StorageView.vue:407 +#: src/views/backup/StorageView.vue:245 +#: src/views/backup/StorageView.vue:407 msgid "Secret Key" msgstr "Secret Key" -#: src/views/backup/StorageView.vue:250 src/views/backup/StorageView.vue:412 +#: src/views/backup/StorageView.vue:250 +#: src/views/backup/StorageView.vue:412 msgid "Enter secret key" msgstr "输入 Secret Key" -#: src/views/backup/StorageView.vue:253 src/views/backup/StorageView.vue:415 +#: src/views/backup/StorageView.vue:253 +#: src/views/backup/StorageView.vue:415 msgid "Style" msgstr "风格" -#: src/views/backup/StorageView.vue:256 src/views/website/stats/GeoTab.vue:91 +#: src/views/backup/StorageView.vue:256 +#: src/views/website/stats/GeoTab.vue:91 #: src/views/website/stats/GeoTab.vue:248 msgid "Region" msgstr "区域" @@ -4935,57 +6082,75 @@ msgstr "区域" msgid "Enter region (e.g., us-east-1)" msgstr "输入区域(例如 us-east-1)" -#: src/views/backup/StorageView.vue:262 src/views/backup/StorageView.vue:418 +#: src/views/backup/StorageView.vue:262 +#: src/views/backup/StorageView.vue:418 msgid "Endpoint" msgstr "端点" -#: src/views/backup/StorageView.vue:265 src/views/backup/StorageView.vue:421 +#: src/views/backup/StorageView.vue:265 +#: src/views/backup/StorageView.vue:421 msgid "Enter endpoint URL" msgstr "输入端点 URL" -#: src/views/backup/StorageView.vue:268 src/views/backup/StorageView.vue:424 +#: src/views/backup/StorageView.vue:268 +#: src/views/backup/StorageView.vue:424 msgid "Scheme" msgstr "协议" -#: src/views/backup/StorageView.vue:271 src/views/backup/StorageView.vue:427 +#: src/views/backup/StorageView.vue:271 +#: src/views/backup/StorageView.vue:427 msgid "Bucket" msgstr "存储桶" -#: src/views/backup/StorageView.vue:274 src/views/backup/StorageView.vue:430 +#: src/views/backup/StorageView.vue:274 +#: src/views/backup/StorageView.vue:430 msgid "Enter bucket name" msgstr "输入存储桶名称" -#: src/views/backup/StorageView.vue:280 src/views/backup/StorageView.vue:364 -#: src/views/backup/StorageView.vue:436 src/views/backup/StorageView.vue:517 +#: src/views/backup/StorageView.vue:280 +#: src/views/backup/StorageView.vue:364 +#: src/views/backup/StorageView.vue:436 +#: src/views/backup/StorageView.vue:517 msgid "Enter path (optional)" msgstr "输入路径(可选)" -#: src/views/backup/StorageView.vue:288 src/views/backup/StorageView.vue:444 +#: src/views/backup/StorageView.vue:288 +#: src/views/backup/StorageView.vue:444 msgid "Enter host" msgstr "输入主机" -#: src/views/backup/StorageView.vue:290 src/views/backup/StorageView.vue:446 +#: src/views/backup/StorageView.vue:290 +#: src/views/backup/StorageView.vue:446 #: src/views/database/CreateServerModal.vue:154 #: src/views/database/UpdateServerModal.vue:87 -#: src/views/firewall/CreateModal.vue:159 src/views/firewall/ForwardView.vue:33 -#: src/views/firewall/RuleView.vue:90 src/views/firewall/ScanView.vue:300 -#: src/views/firewall/ScanView.vue:316 src/views/firewall/ScanView.vue:380 -#: src/views/log/SSHLog.vue:83 src/views/setting/SettingBase.vue:137 -#: src/views/ssh/CreateModal.vue:71 src/views/ssh/UpdateModal.vue:77 +#: src/views/firewall/CreateModal.vue:159 +#: src/views/firewall/ForwardView.vue:33 +#: src/views/firewall/RuleView.vue:90 +#: src/views/firewall/ScanView.vue:300 +#: src/views/firewall/ScanView.vue:316 +#: src/views/firewall/ScanView.vue:380 +#: src/views/log/SSHLog.vue:83 +#: src/views/setting/SettingBase.vue:137 +#: src/views/ssh/CreateModal.vue:71 +#: src/views/ssh/UpdateModal.vue:77 #: src/views/website/CreateModal.vue:224 msgid "Port" msgstr "端口" -#: src/views/backup/StorageView.vue:295 src/views/backup/StorageView.vue:451 +#: src/views/backup/StorageView.vue:295 +#: src/views/backup/StorageView.vue:451 msgid "Enter port" msgstr "输入端口" -#: src/views/backup/StorageView.vue:304 src/views/backup/StorageView.vue:460 +#: src/views/backup/StorageView.vue:304 +#: src/views/backup/StorageView.vue:460 msgid "Auth Type" msgstr "认证类型" -#: src/views/backup/StorageView.vue:316 src/views/backup/StorageView.vue:358 -#: src/views/backup/StorageView.vue:472 src/views/backup/StorageView.vue:511 +#: src/views/backup/StorageView.vue:316 +#: src/views/backup/StorageView.vue:358 +#: src/views/backup/StorageView.vue:472 +#: src/views/backup/StorageView.vue:511 #: src/views/container/ImageView.vue:425 #: src/views/database/CreateDatabaseModal.vue:132 #: src/views/database/CreateUserModal.vue:127 @@ -4993,19 +6158,23 @@ msgstr "认证类型" msgid "Enter password" msgstr "输入密码" -#: src/views/backup/StorageView.vue:328 src/views/backup/StorageView.vue:484 +#: src/views/backup/StorageView.vue:328 +#: src/views/backup/StorageView.vue:484 msgid "Enter private key" msgstr "输入私钥" -#: src/views/backup/StorageView.vue:334 src/views/backup/StorageView.vue:490 +#: src/views/backup/StorageView.vue:334 +#: src/views/backup/StorageView.vue:490 msgid "Enter remote path" msgstr "输入远程路径" -#: src/views/backup/StorageView.vue:341 src/views/backup/StorageView.vue:497 +#: src/views/backup/StorageView.vue:341 +#: src/views/backup/StorageView.vue:497 msgid "URL" msgstr "URL" -#: src/views/backup/StorageView.vue:344 src/views/backup/StorageView.vue:498 +#: src/views/backup/StorageView.vue:344 +#: src/views/backup/StorageView.vue:498 msgid "Enter WebDAV URL" msgstr "输入 WebDAV URL" @@ -5017,30 +6186,37 @@ msgstr "编辑存储" msgid "Upload %{ filename } successfully" msgstr "上传 %{ filename } 成功" -#: src/views/backup/UploadModal.vue:50 src/views/file/UploadModal.vue:710 +#: src/views/backup/UploadModal.vue:50 +#: src/views/file/UploadModal.vue:710 msgid "Click or drag files to this area to upload" msgstr "点击或将文件拖到此区域上传" #: src/views/backup/UploadModal.vue:52 -msgid "" -"For large files, it is recommended to use SFTP or other methods to upload" +msgid "For large files, it is recommended to use SFTP or other methods to upload" msgstr "对于大文件,建议使用 SFTP 或其他方法上传" -#: src/views/cert/AccountView.vue:39 src/views/cert/AccountView.vue:226 +#: src/views/cert/AccountView.vue:39 +#: src/views/cert/AccountView.vue:226 #: src/views/cert/CreateAccountModal.vue:104 -#: src/views/setting/CreateModal.vue:62 src/views/setting/SettingUser.vue:40 +#: src/views/setting/CreateModal.vue:62 +#: src/views/setting/SettingUser.vue:40 msgid "Email" msgstr "邮箱" -#: src/views/cert/AccountView.vue:67 src/views/cert/AccountView.vue:218 -#: src/views/cert/CertView.vue:542 src/views/cert/CreateAccountModal.vue:96 +#: src/views/cert/AccountView.vue:67 +#: src/views/cert/AccountView.vue:218 +#: src/views/cert/CertView.vue:542 +#: src/views/cert/CreateAccountModal.vue:96 #: src/views/cert/CreateCertModal.vue:110 msgid "Key Type" msgstr "密钥类型" -#: src/views/cert/AccountView.vue:95 src/views/cert/CertView.vue:372 -#: src/views/cert/DnsView.vue:91 src/views/database/ServerList.vue:214 -#: src/views/database/UserList.vue:150 src/views/file/PermissionModal.vue:156 +#: src/views/cert/AccountView.vue:95 +#: src/views/cert/CertView.vue:372 +#: src/views/cert/DnsView.vue:91 +#: src/views/database/ServerList.vue:214 +#: src/views/database/UserList.vue:150 +#: src/views/file/PermissionModal.vue:156 #: src/views/setting/TokenModal.vue:73 msgid "Modify" msgstr "修改" @@ -5049,12 +6225,14 @@ msgstr "修改" msgid "Are you sure you want to delete the account?" msgstr "您确定要删除该账户吗?" -#: src/views/cert/AccountView.vue:108 src/views/cert/CertView.vue:386 +#: src/views/cert/AccountView.vue:108 +#: src/views/cert/CertView.vue:386 #: src/views/cert/DnsView.vue:105 msgid "Deletion successful" msgstr "删除成功" -#: src/views/cert/AccountView.vue:133 src/views/cert/CreateAccountModal.vue:42 +#: src/views/cert/AccountView.vue:133 +#: src/views/cert/CreateAccountModal.vue:42 msgid "Registering account with CA, please wait patiently" msgstr "正在向 CA 注册账户,请耐心等待" @@ -5062,43 +6240,45 @@ msgstr "正在向 CA 注册账户,请耐心等待" msgid "Modify Account" msgstr "修改账户" -#: src/views/cert/AccountView.vue:198 src/views/cert/CreateAccountModal.vue:76 -msgid "" -"LiteSSL, Google and SSL.com require obtaining EAB (KID and HMAC) from their " -"official websites first" +#: src/views/cert/AccountView.vue:198 +#: src/views/cert/CreateAccountModal.vue:76 +msgid "LiteSSL, Google and SSL.com require obtaining EAB (KID and HMAC) from their official websites first" msgstr "LiteSSL、Google 和 SSL.com 需要先从其官网获取 EAB(KID 和 HMAC)" -#: src/views/cert/AccountView.vue:204 src/views/cert/CreateAccountModal.vue:82 -msgid "" -"Google is not accessible in mainland China, other CAs depend on network " -"conditions, recommend using Let's Encrypt or LiteSSL" -msgstr "" -"Google 在中国大陆无法访问,其他 CA 取决于网络条件,建议使用 Let's Encrypt 或 " -"LiteSSL" +#: src/views/cert/AccountView.vue:204 +#: src/views/cert/CreateAccountModal.vue:82 +msgid "Google is not accessible in mainland China, other CAs depend on network conditions, recommend using Let's Encrypt or LiteSSL" +msgstr "Google 在中国大陆无法访问,其他 CA 取决于网络条件,建议使用 Let's Encrypt 或 LiteSSL" -#: src/views/cert/AccountView.vue:210 src/views/cert/CreateAccountModal.vue:88 +#: src/views/cert/AccountView.vue:210 +#: src/views/cert/CreateAccountModal.vue:88 msgid "CA" msgstr "CA" -#: src/views/cert/AccountView.vue:213 src/views/cert/CreateAccountModal.vue:91 +#: src/views/cert/AccountView.vue:213 +#: src/views/cert/CreateAccountModal.vue:91 msgid "Select CA" msgstr "选择 CA" -#: src/views/cert/AccountView.vue:221 src/views/cert/CertView.vue:545 +#: src/views/cert/AccountView.vue:221 +#: src/views/cert/CertView.vue:545 #: src/views/cert/CreateAccountModal.vue:99 #: src/views/cert/CreateCertModal.vue:113 msgid "Select key type" msgstr "选择密钥类型" -#: src/views/cert/AccountView.vue:231 src/views/cert/CreateAccountModal.vue:109 +#: src/views/cert/AccountView.vue:231 +#: src/views/cert/CreateAccountModal.vue:109 msgid "Enter email address" msgstr "输入电子邮件地址" -#: src/views/cert/AccountView.vue:239 src/views/cert/CreateAccountModal.vue:117 +#: src/views/cert/AccountView.vue:239 +#: src/views/cert/CreateAccountModal.vue:117 msgid "Enter KID" msgstr "输入 KID" -#: src/views/cert/AccountView.vue:247 src/views/cert/CreateAccountModal.vue:125 +#: src/views/cert/AccountView.vue:247 +#: src/views/cert/CreateAccountModal.vue:125 msgid "Enter HMAC" msgstr "输入 HMAC" @@ -5106,14 +6286,19 @@ msgstr "输入 HMAC" msgid "No matching websites found" msgstr "未找到匹配的网站" -#: src/views/cert/CertView.vue:146 src/views/cert/CertView.vue:534 -#: src/views/cert/CreateCertModal.vue:102 src/views/project/CreateModal.vue:661 -#: src/views/website/CreateModal.vue:201 src/views/website/EditModal.vue:938 +#: src/views/cert/CertView.vue:146 +#: src/views/cert/CertView.vue:534 +#: src/views/cert/CreateCertModal.vue:102 +#: src/views/project/CreateModal.vue:661 +#: src/views/website/CreateModal.vue:201 +#: src/views/website/EditModal.vue:938 msgid "Domain" msgstr "域名" -#: src/views/cert/CertView.vue:191 src/views/file/ToolBar.vue:154 -#: src/views/file/UploadModal.vue:674 src/views/monitor/SystemView.vue:584 +#: src/views/cert/CertView.vue:191 +#: src/views/file/ToolBar.vue:154 +#: src/views/file/UploadModal.vue:674 +#: src/views/monitor/SystemView.vue:584 msgid "Upload" msgstr "上传" @@ -5122,16 +6307,18 @@ msgid "Associated Account" msgstr "关联账户" #: src/views/cert/CertView.vue:212 -#, fuzzy msgid "Associated Website" -msgstr "创建网站" +msgstr "关联网站" -#: src/views/cert/CertView.vue:236 src/views/website/EditModal.vue:1711 +#: src/views/cert/CertView.vue:236 +#: src/views/website/EditModal.vue:1711 msgid "Issuer" msgstr "颁发者" -#: src/views/cert/CertView.vue:245 src/views/setting/TokenModal.vue:48 -#: src/views/setting/TokenModal.vue:255 src/views/setting/TokenModal.vue:293 +#: src/views/cert/CertView.vue:245 +#: src/views/setting/TokenModal.vue:48 +#: src/views/setting/TokenModal.vue:255 +#: src/views/setting/TokenModal.vue:293 msgid "Expiration Time" msgstr "过期时间" @@ -5143,7 +6330,8 @@ msgstr "下次续签时间" msgid "Auto Renewal" msgstr "自动续签" -#: src/views/cert/CertView.vue:296 src/views/website/EditModal.vue:2289 +#: src/views/cert/CertView.vue:296 +#: src/views/website/EditModal.vue:2289 msgid "Issue" msgstr "签发" @@ -5164,58 +6352,63 @@ msgid "Modify Certificate" msgstr "修改证书" #: src/views/cert/CertView.vue:528 -msgid "" -"You can automatically issue and deploy certificates by selecting any website/" -"DNS, or manually enter domain names and set DNS resolution to issue " -"certificates, or fill in deployment scripts to automatically deploy " -"certificates." -msgstr "" -"您可以通过选择任何网站 / DNS 自动颁发和部署证书,或手动输入域名并设置 DNS 解" -"析以颁发证书,或填写部署脚本以自动部署证书。" +msgid "You can automatically issue and deploy certificates by selecting any website/DNS, or manually enter domain names and set DNS resolution to issue certificates, or fill in deployment scripts to automatically deploy certificates." +msgstr "您可以通过选择任何网站 / DNS 自动颁发和部署证书,或手动输入域名并设置 DNS 解析以颁发证书,或填写部署脚本以自动部署证书。" -#: src/views/cert/CertView.vue:553 src/views/cert/CreateCertModal.vue:121 -#, fuzzy +#: src/views/cert/CertView.vue:553 +#: src/views/cert/CreateCertModal.vue:121 msgid "Select websites for certificate deployment" msgstr "选择要部署证书的网站" -#: src/views/cert/CertView.vue:562 src/views/cert/CreateCertModal.vue:127 +#: src/views/cert/CertView.vue:562 +#: src/views/cert/CreateCertModal.vue:127 #: src/views/cert/IndexView.vue:98 msgid "Account" msgstr "账户" -#: src/views/cert/CertView.vue:566 src/views/cert/CreateCertModal.vue:130 +#: src/views/cert/CertView.vue:566 +#: src/views/cert/CreateCertModal.vue:130 msgid "Select account for certificate issuance" msgstr "选择用于证书颁发的账户" -#: src/views/cert/CertView.vue:571 src/views/cert/CreateCertModal.vue:135 -#: src/views/cert/CreateDnsModal.vue:71 src/views/cert/DnsView.vue:196 -#: src/views/cert/IndexView.vue:99 src/views/website/EditModal.vue:2280 +#: src/views/cert/CertView.vue:571 +#: src/views/cert/CreateCertModal.vue:135 +#: src/views/cert/CreateDnsModal.vue:71 +#: src/views/cert/DnsView.vue:196 +#: src/views/cert/IndexView.vue:99 +#: src/views/website/EditModal.vue:2280 msgid "DNS" msgstr "DNS" -#: src/views/cert/CertView.vue:574 src/views/cert/CreateCertModal.vue:138 +#: src/views/cert/CertView.vue:574 +#: src/views/cert/CreateCertModal.vue:138 #: src/views/website/EditModal.vue:2283 msgid "Select DNS for certificate issuance" msgstr "选择用于证书颁发的 DNS" -#: src/views/cert/CertView.vue:581 src/views/cert/CreateCertModal.vue:143 +#: src/views/cert/CertView.vue:581 +#: src/views/cert/CreateCertModal.vue:143 msgid "DNS Alias" msgstr "DNS 别名" -#: src/views/cert/CertView.vue:591 src/views/cert/CreateCertModal.vue:149 +#: src/views/cert/CertView.vue:591 +#: src/views/cert/CreateCertModal.vue:149 msgid "Original domain, e.g. example.com" msgstr "原始域名,例如 example.com" -#: src/views/cert/CertView.vue:597 src/views/cert/CreateCertModal.vue:155 +#: src/views/cert/CertView.vue:597 +#: src/views/cert/CreateCertModal.vue:155 msgid "Alias record, e.g. _acme-challenge.delegated.com" msgstr "别名记录,例如 _acme-challenge.delegated.com" -#: src/views/cert/CertView.vue:612 src/views/cert/UploadCertModal.vue:50 +#: src/views/cert/CertView.vue:612 +#: src/views/cert/UploadCertModal.vue:50 #: src/views/website/EditModal.vue:1778 msgid "Enter the content of the PEM certificate file" msgstr "输入 PEM 证书文件的内容" -#: src/views/cert/CertView.vue:624 src/views/cert/UploadCertModal.vue:58 +#: src/views/cert/CertView.vue:624 +#: src/views/cert/UploadCertModal.vue:58 #: src/views/website/EditModal.vue:1788 msgid "Enter the content of the KEY private key file" msgstr "输入 KEY 私钥文件的内容" @@ -5225,9 +6418,7 @@ msgid "Deployment Script" msgstr "部署脚本" #: src/views/cert/CertView.vue:637 -msgid "" -"The {cert} and {key} in the script will be replaced with the certificate and " -"private key content" +msgid "The {cert} and {key} in the script will be replaced with the certificate and private key content" msgstr "脚本中的 {cert} 和 {key} 将被替换为证书和私钥内容" #: src/views/cert/CertView.vue:659 @@ -5238,7 +6429,8 @@ msgstr "部署证书" msgid "Match Websites" msgstr "匹配网站" -#: src/views/cert/CertView.vue:682 src/views/tamper/TamperView.vue:313 +#: src/views/cert/CertView.vue:682 +#: src/views/tamper/TamperView.vue:313 #: src/views/toolbox/DiskView.vue:250 msgid "Available" msgstr "可用" @@ -5255,24 +6447,22 @@ msgstr "启用 HTTPS" msgid "View Certificate" msgstr "查看证书" -#: src/views/cert/CreateAccountModal.vue:68 src/views/cert/IndexView.vue:111 +#: src/views/cert/CreateAccountModal.vue:68 +#: src/views/cert/IndexView.vue:111 msgid "Create Account" msgstr "创建账户" -#: src/views/cert/CreateCertModal.vue:87 src/views/cert/IndexView.vue:108 +#: src/views/cert/CreateCertModal.vue:87 +#: src/views/cert/IndexView.vue:108 msgid "Create Certificate" msgstr "创建证书" #: src/views/cert/CreateCertModal.vue:96 -msgid "" -"You can automatically issue and deploy certificates by selecting either " -"Website or DNS, or you can manually enter domain names and set up DNS " -"resolution to issue certificates" -msgstr "" -"您可以通过选择网站或 DNS 来自动颁发和部署证书,或者手动输入域名并设置 DNS 解" -"析以颁发证书" +msgid "You can automatically issue and deploy certificates by selecting either Website or DNS, or you can manually enter domain names and set up DNS resolution to issue certificates" +msgstr "您可以通过选择网站或 DNS 来自动颁发和部署证书,或者手动输入域名并设置 DNS 解析以颁发证书" -#: src/views/cert/CreateDnsModal.vue:56 src/views/cert/IndexView.vue:114 +#: src/views/cert/CreateDnsModal.vue:56 +#: src/views/cert/IndexView.vue:114 msgid "Create DNS" msgstr "创建 DNS" @@ -5284,87 +6474,108 @@ msgstr "备注名称" msgid "Enter comment name" msgstr "输入备注名称" -#: src/views/cert/CreateDnsModal.vue:74 src/views/cert/DnsView.vue:199 +#: src/views/cert/CreateDnsModal.vue:74 +#: src/views/cert/DnsView.vue:199 msgid "Select DNS" msgstr "选择 DNS" -#: src/views/cert/CreateDnsModal.vue:83 src/views/cert/DnsView.vue:208 +#: src/views/cert/CreateDnsModal.vue:83 +#: src/views/cert/DnsView.vue:208 msgid "Enter Aliyun Access Key" msgstr "输入阿里云 Access Key" -#: src/views/cert/CreateDnsModal.vue:90 src/views/cert/DnsView.vue:215 +#: src/views/cert/CreateDnsModal.vue:90 +#: src/views/cert/DnsView.vue:215 msgid "Enter Aliyun Secret Key" msgstr "输入阿里云 Secret Key" -#: src/views/cert/CreateDnsModal.vue:97 src/views/cert/DnsView.vue:222 +#: src/views/cert/CreateDnsModal.vue:97 +#: src/views/cert/DnsView.vue:222 msgid "Enter Tencent Cloud SecretId" msgstr "输入腾讯云 SecretId" -#: src/views/cert/CreateDnsModal.vue:104 src/views/cert/DnsView.vue:229 +#: src/views/cert/CreateDnsModal.vue:104 +#: src/views/cert/DnsView.vue:229 msgid "Enter Tencent Cloud SecretKey" msgstr "输入腾讯云 SecretKey" -#: src/views/cert/CreateDnsModal.vue:111 src/views/cert/DnsView.vue:236 +#: src/views/cert/CreateDnsModal.vue:111 +#: src/views/cert/DnsView.vue:236 msgid "Enter Huawei Cloud AccessKeyId" msgstr "输入华为云 AccessKeyId" -#: src/views/cert/CreateDnsModal.vue:118 src/views/cert/DnsView.vue:243 +#: src/views/cert/CreateDnsModal.vue:118 +#: src/views/cert/DnsView.vue:243 msgid "Enter Huawei Cloud SecretAccessKey" msgstr "输入华为云 SecretAccessKey" -#: src/views/cert/CreateDnsModal.vue:125 src/views/cert/DnsView.vue:250 +#: src/views/cert/CreateDnsModal.vue:125 +#: src/views/cert/DnsView.vue:250 msgid "Enter West.cn Username" msgstr "输入西部数码用户名" -#: src/views/cert/CreateDnsModal.vue:132 src/views/cert/DnsView.vue:257 +#: src/views/cert/CreateDnsModal.vue:132 +#: src/views/cert/DnsView.vue:257 msgid "Enter West.cn API Password" msgstr "输入西部数码 API 密码" -#: src/views/cert/CreateDnsModal.vue:139 src/views/cert/DnsView.vue:264 +#: src/views/cert/CreateDnsModal.vue:139 +#: src/views/cert/DnsView.vue:264 msgid "Enter Cloudflare API Key" msgstr "输入 Cloudflare API 密钥" -#: src/views/cert/CreateDnsModal.vue:146 src/views/cert/DnsView.vue:271 +#: src/views/cert/CreateDnsModal.vue:146 +#: src/views/cert/DnsView.vue:271 msgid "Enter G-Core API Key" msgstr "输入 G-Core API 密钥" -#: src/views/cert/CreateDnsModal.vue:153 src/views/cert/DnsView.vue:278 +#: src/views/cert/CreateDnsModal.vue:153 +#: src/views/cert/DnsView.vue:278 msgid "Enter Porkbun API Key" msgstr "输入 Porkbun API 密钥" -#: src/views/cert/CreateDnsModal.vue:160 src/views/cert/DnsView.vue:285 +#: src/views/cert/CreateDnsModal.vue:160 +#: src/views/cert/DnsView.vue:285 msgid "Enter Porkbun Secret Key" msgstr "输入 Porkbun 密钥" -#: src/views/cert/CreateDnsModal.vue:167 src/views/cert/DnsView.vue:292 +#: src/views/cert/CreateDnsModal.vue:167 +#: src/views/cert/DnsView.vue:292 msgid "Enter NameSilo API Token" msgstr "输入 NameSilo API 令牌" -#: src/views/cert/CreateDnsModal.vue:174 src/views/cert/DnsView.vue:299 +#: src/views/cert/CreateDnsModal.vue:174 +#: src/views/cert/DnsView.vue:299 msgid "Enter ClouDNS Auth ID (use Sub Auth ID by adding sub-prefix)" msgstr "输入 ClouDNS 认证 ID(使用子认证 ID 时添加 sub- 前缀)" -#: src/views/cert/CreateDnsModal.vue:181 src/views/cert/DnsView.vue:306 +#: src/views/cert/CreateDnsModal.vue:181 +#: src/views/cert/DnsView.vue:306 msgid "Enter ClouDNS Auth Password" msgstr "输入 ClouDNS 认证密码" -#: src/views/cert/CreateDnsModal.vue:184 src/views/cert/DnsView.vue:309 +#: src/views/cert/CreateDnsModal.vue:184 +#: src/views/cert/DnsView.vue:309 msgid "DNS Server" msgstr "DNS 服务器" -#: src/views/cert/CreateDnsModal.vue:188 src/views/cert/DnsView.vue:313 +#: src/views/cert/CreateDnsModal.vue:188 +#: src/views/cert/DnsView.vue:313 msgid "DNS server for propagation check, e.g. 8.8.8.8" msgstr "用于生效检查的 DNS 服务器,例如 8.8.8.8" -#: src/views/cert/CreateDnsModal.vue:191 src/views/cert/DnsView.vue:316 +#: src/views/cert/CreateDnsModal.vue:191 +#: src/views/cert/DnsView.vue:316 msgid "Skip DNS Verification" msgstr "跳过 DNS 验证" -#: src/views/cert/CreateDnsModal.vue:194 src/views/cert/DnsView.vue:319 +#: src/views/cert/CreateDnsModal.vue:194 +#: src/views/cert/DnsView.vue:319 msgid "For intranet environments, will wait 60s instead of polling DNS" msgstr "在内网环境中,将等待 60 秒而不是轮询 DNS" -#: src/views/cert/DnsView.vue:36 src/views/cert/DnsView.vue:189 +#: src/views/cert/DnsView.vue:36 +#: src/views/cert/DnsView.vue:189 msgid "Note Name" msgstr "备注名称" @@ -5380,7 +6591,8 @@ msgstr "修改 DNS" msgid "Enter note name" msgstr "输入备注名称" -#: src/views/cert/IndexView.vue:105 src/views/cert/UploadCertModal.vue:38 +#: src/views/cert/IndexView.vue:105 +#: src/views/cert/UploadCertModal.vue:38 msgid "Upload Certificate" msgstr "上传证书" @@ -5393,17 +6605,21 @@ msgstr "自动" msgid "Self-signed" msgstr "自签名" -#: src/views/cert/ObtainModal.vue:67 src/views/cert/ObtainModal.vue:167 +#: src/views/cert/ObtainModal.vue:67 +#: src/views/cert/ObtainModal.vue:167 msgid "Renewal successful" msgstr "续签成功" -#: src/views/cert/ObtainModal.vue:68 src/views/cert/ObtainModal.vue:110 +#: src/views/cert/ObtainModal.vue:68 +#: src/views/cert/ObtainModal.vue:110 #: src/views/cert/ObtainModal.vue:167 msgid "Issuance successful" msgstr "签发成功" -#: src/views/cert/ObtainModal.vue:84 src/views/cert/ObtainModal.vue:90 -#: src/views/home/UpdateView.vue:106 src/views/home/UpdateView.vue:111 +#: src/views/cert/ObtainModal.vue:84 +#: src/views/cert/ObtainModal.vue:90 +#: src/views/home/UpdateView.vue:106 +#: src/views/home/UpdateView.vue:111 msgid "WebSocket connection failed" msgstr "WebSocket 连接失败" @@ -5419,11 +6635,15 @@ msgstr "签发证书" msgid "Issuance Mode" msgstr "签发模式" -#: src/views/container/ComposeView.vue:93 src/views/container/ImageView.vue:88 +#: src/views/container/ComposeView.vue:93 +#: src/views/container/ImageView.vue:88 #: src/views/container/NetworkView.vue:103 -#: src/views/container/VolumeView.vue:57 src/views/setting/PasskeyModal.vue:33 -#: src/views/setting/SettingUser.vue:79 src/views/setting/TokenModal.vue:39 -#: src/views/task/CronView.vue:100 src/views/task/TaskView.vue:51 +#: src/views/container/VolumeView.vue:57 +#: src/views/setting/PasskeyModal.vue:33 +#: src/views/setting/SettingUser.vue:79 +#: src/views/setting/TokenModal.vue:39 +#: src/views/task/CronView.vue:100 +#: src/views/task/TaskView.vue:51 #: src/views/toolbox/WebHookView.vue:125 msgid "Creation Time" msgstr "创建时间" @@ -5470,7 +6690,8 @@ msgid "Are you sure you want to delete the selected composes?" msgstr "您确定要删除所选的编排吗?" #: src/views/container/ComposeView.vue:328 -#: src/views/container/ComposeView.vue:354 src/views/container/IndexView.vue:23 +#: src/views/container/ComposeView.vue:354 +#: src/views/container/IndexView.vue:23 msgid "Compose" msgstr "编排" @@ -5478,10 +6699,6 @@ msgstr "编排" msgid "Edit Compose" msgstr "编辑编排" -#: src/views/container/ContainerCreate.vue:58 -msgid "Always" -msgstr "总是" - #: src/views/container/ContainerCreate.vue:59 msgid "On failure (default 5 retries)" msgstr "失败时(默认重试 5 次)" @@ -5506,15 +6723,13 @@ msgid "Please enter image name" msgstr "请输入镜像名" #: src/views/container/ContainerCreate.vue:158 -msgid "" -"Updating will remove the current container and recreate it with the new " -"configuration. Data not stored in mounted volumes will be lost. Continue?" -msgstr "" -"更新将移除当前容器并使用新配置重新创建,未存储在挂载卷中的数据将丢失,是否继" -"续?" +msgid "Updating will remove the current container and recreate it with the new configuration. Data not stored in mounted volumes will be lost. Continue?" +msgstr "更新将移除当前容器并使用新配置重新创建,未存储在挂载卷中的数据将丢失,是否继续?" -#: src/views/container/ContainerCreate.vue:161 src/views/file/ListView.vue:311 -#: src/views/file/UploadModal.vue:504 src/views/file/UploadModal.vue:639 +#: src/views/container/ContainerCreate.vue:161 +#: src/views/file/ListView.vue:311 +#: src/views/file/UploadModal.vue:504 +#: src/views/file/UploadModal.vue:639 #: src/views/tamper/TamperView.vue:70 msgid "Continue" msgstr "继续" @@ -5622,9 +6837,7 @@ msgid "Container End" msgstr "容器结束" #: src/views/container/ContainerCreate.vue:447 -msgid "" -"All exposed ports in the image will be automatically mapped to random host " -"ports." +msgid "All exposed ports in the image will be automatically mapped to random host ports." msgstr "镜像中的所有暴露端口将自动映射到随机主机端口。" #: src/views/container/ContainerCreate.vue:456 @@ -5645,9 +6858,7 @@ msgid "Container path" msgstr "容器路径" #: src/views/container/ContainerCreate.vue:485 -msgid "" -"Mount host directories or volumes into the container. Use absolute paths for " -"host directories." +msgid "Mount host directories or volumes into the container. Use absolute paths for host directories." msgstr "将主机目录或卷挂载到容器中。主机目录需使用绝对路径。" #: src/views/container/ContainerCreate.vue:494 @@ -5656,9 +6867,7 @@ msgid "Resource Limits" msgstr "资源限制" #: src/views/container/ContainerCreate.vue:498 -msgid "" -"Set resource limits to prevent the container from consuming too many system " -"resources. Set to 0 for no limit." +msgid "Set resource limits to prevent the container from consuming too many system resources. Set to 0 for no limit." msgstr "设置资源限制以防止容器消耗过多系统资源。设置为 0 表示无限制。" #: src/views/container/ContainerCreate.vue:506 @@ -5690,17 +6899,12 @@ msgid "Maximum memory the container can use, in MB. 0 means no limit." msgstr "容器可以使用的最大内存,单位为 MB。0 表示无限制。" #: src/views/container/ContainerCreate.vue:547 -msgid "" -"Number of CPU cores the container can use. 0.5 means half a core, 2 means 2 " -"cores." +msgid "Number of CPU cores the container can use. 0.5 means half a core, 2 means 2 cores." msgstr "容器可以使用的 CPU 核心数。0.5 意味着半个核心,2 意味着 2 个核心。" #: src/views/container/ContainerCreate.vue:554 -msgid "" -"Relative CPU weight. Default is 1024. Higher values get more CPU time when " -"competing." -msgstr "" -"相对 CPU 权重。默认值为 1024。当竞争时,更高的值会获得更多的 CPU 时间。" +msgid "Relative CPU weight. Default is 1024. Higher values get more CPU time when competing." +msgstr "相对 CPU 权重。默认值为 1024。当竞争时,更高的值会获得更多的 CPU 时间。" #: src/views/container/ContainerCreate.vue:566 msgid "Environment" @@ -5722,8 +6926,10 @@ msgstr "启动命令" #: src/views/container/ContainerCreate.vue:594 #: src/views/container/ContainerInfoModal.vue:146 -#: src/views/home/IndexView.vue:674 src/views/home/IndexView.vue:775 -#: src/views/monitor/SystemView.vue:323 src/views/monitor/SystemView.vue:335 +#: src/views/home/IndexView.vue:674 +#: src/views/home/IndexView.vue:775 +#: src/views/monitor/SystemView.vue:323 +#: src/views/monitor/SystemView.vue:335 msgid "Command" msgstr "命令" @@ -5771,7 +6977,8 @@ msgid "Container Info" msgstr "容器信息" #: src/views/container/ContainerInfoModal.vue:100 -#: src/views/toolbox/disk/SmartView.vue:280 src/views/toolbox/PanelView.vue:98 +#: src/views/toolbox/disk/SmartView.vue:280 +#: src/views/toolbox/PanelView.vue:98 msgid "Basic Info" msgstr "基本信息" @@ -5814,7 +7021,8 @@ msgid "No environment variables" msgstr "无环境变量" #: src/views/container/ContainerInfoModal.vue:214 -#: src/views/toolbox/WebHookView.vue:73 src/views/toolbox/WebHookView.vue:339 +#: src/views/toolbox/WebHookView.vue:73 +#: src/views/toolbox/WebHookView.vue:339 #: src/views/toolbox/WebHookView.vue:380 msgid "Raw Output" msgstr "原始输出" @@ -5838,7 +7046,8 @@ msgstr "暂停" msgid "Resume" msgstr "恢复" -#: src/views/container/ContainerView.vue:254 src/views/file/ListView.vue:1695 +#: src/views/container/ContainerView.vue:254 +#: src/views/file/ListView.vue:1695 msgid "More" msgstr "更多" @@ -5909,7 +7118,8 @@ msgid "Pull completed" msgstr "拉取完成" #: src/views/container/ImagePullModal.vue:152 -#: src/views/container/ImageView.vue:279 src/views/container/ImageView.vue:325 +#: src/views/container/ImageView.vue:279 +#: src/views/container/ImageView.vue:325 msgid "Pull Image" msgstr "拉取镜像" @@ -5949,8 +7159,10 @@ msgstr "容器数量" #: src/views/container/ImageView.vue:109 #: src/views/container/NetworkView.vue:125 -#: src/views/container/VolumeView.vue:78 src/views/firewall/ForwardView.vue:93 -#: src/views/firewall/IpRuleView.vue:135 src/views/firewall/RuleView.vue:275 +#: src/views/container/VolumeView.vue:78 +#: src/views/firewall/ForwardView.vue:93 +#: src/views/firewall/IpRuleView.vue:135 +#: src/views/firewall/RuleView.vue:275 #: src/views/task/TaskView.vue:122 msgid "Are you sure you want to delete?" msgstr "您确定要删除吗?" @@ -5971,10 +7183,6 @@ msgstr "您确定要删除所选镜像吗?" msgid "docker.io/php:8.3-fpm" msgstr "docker.io/php:8.3-fpm" -#: src/views/container/ImageView.vue:402 -msgid "Authentication" -msgstr "身份验证" - #: src/views/container/IndexView.vue:22 msgid "Containers" msgstr "容器" @@ -5989,11 +7197,13 @@ msgstr "网络" #: src/views/container/NetworkView.vue:55 #: src/views/container/NetworkView.vue:260 -#: src/views/container/VolumeView.vue:36 src/views/container/VolumeView.vue:206 +#: src/views/container/VolumeView.vue:36 +#: src/views/container/VolumeView.vue:206 msgid "Driver" msgstr "驱动" -#: src/views/container/NetworkView.vue:62 src/views/container/VolumeView.vue:43 +#: src/views/container/NetworkView.vue:62 +#: src/views/container/VolumeView.vue:43 #: src/views/website/EditModal.vue:2148 msgid "Scope" msgstr "范围" @@ -6073,8 +7283,10 @@ msgstr "选项名称" msgid "Option Value" msgstr "选项值" -#: src/views/container/VolumeView.vue:50 src/views/home/IndexView.vue:818 -#: src/views/toolbox/DiskView.vue:282 src/views/toolbox/DiskView.vue:604 +#: src/views/container/VolumeView.vue:50 +#: src/views/home/IndexView.vue:818 +#: src/views/toolbox/DiskView.vue:282 +#: src/views/toolbox/DiskView.vue:604 msgid "Mount Point" msgstr "挂载点" @@ -6202,12 +7414,12 @@ msgstr "输入数据库服务器备注" #: src/views/database/CreateUserModal.vue:100 #: src/views/database/UpdateUserModal.vue:59 -msgid "" -"If the privilege databases does not exist, it will be created automatically." +msgid "If the privilege databases does not exist, it will be created automatically." msgstr "如果特权数据库不存在,将会自动创建。" #: src/views/database/CreateUserModal.vue:158 -#: src/views/database/UpdateUserModal.vue:72 src/views/database/UserList.vue:81 +#: src/views/database/UpdateUserModal.vue:72 +#: src/views/database/UserList.vue:81 msgid "Privileges" msgstr "权限" @@ -6357,7 +7569,8 @@ msgstr "新键名" msgid "Enter new key name" msgstr "输入新的键名称" -#: src/views/database/RedisKeyModal.vue:90 src/views/toolbox/SshView.vue:339 +#: src/views/database/RedisKeyModal.vue:90 +#: src/views/toolbox/SshView.vue:339 msgid "View Key" msgstr "查看密钥" @@ -6369,12 +7582,6 @@ msgstr "键" msgid "Enter key name" msgstr "输入键名称" -#: src/views/database/RedisKeyModal.vue:109 -#: src/views/toolbox/disk/SmartView.vue:205 -#: src/views/toolbox/disk/SmartView.vue:232 -msgid "Value" -msgstr "值" - #: src/views/database/RedisKeyModal.vue:115 msgid "Enter value" msgstr "输入值" @@ -6387,11 +7594,13 @@ msgstr "输入 JSON 值" msgid "Unsupported database type" msgstr "不支持的数据库类型" -#: src/views/database/ServerList.vue:147 src/views/database/UserList.vue:120 +#: src/views/database/ServerList.vue:147 +#: src/views/database/UserList.vue:120 msgid "Valid" msgstr "有效" -#: src/views/database/ServerList.vue:147 src/views/database/UserList.vue:120 +#: src/views/database/ServerList.vue:147 +#: src/views/database/UserList.vue:120 msgid "Invalid" msgstr "无效" @@ -6400,12 +7609,11 @@ msgid "Confirm Sync" msgstr "确认同步" #: src/views/database/ServerList.vue:188 -msgid "" -"Are you sure you want to synchronize database users (excluding password) to " -"the panel?" +msgid "Are you sure you want to synchronize database users (excluding password) to the panel?" msgstr "您确定要将数据库用户(不包括密码)同步到面板吗?" -#: src/views/database/ServerList.vue:195 src/views/toolbox/SystemView.vue:101 +#: src/views/database/ServerList.vue:195 +#: src/views/toolbox/SystemView.vue:101 msgid "Synchronized successfully" msgstr "同步成功" @@ -6414,9 +7622,7 @@ msgid "Sync" msgstr "同步" #: src/views/database/ServerList.vue:234 -msgid "" -"Built-in servers cannot be deleted. If you need to delete them, please " -"uninstall the corresponding app" +msgid "Built-in servers cannot be deleted. If you need to delete them, please uninstall the corresponding app" msgstr "内置服务器无法删除。如果需要删除它们,请卸载相应的应用" #: src/views/database/ServerList.vue:241 @@ -6439,7 +7645,8 @@ msgstr "未保存" msgid "Are you sure you want to delete the user?" msgstr "您确定要删除该用户吗?" -#: src/views/environment/DotnetView.vue:13 src/views/environment/GoView.vue:46 +#: src/views/environment/DotnetView.vue:13 +#: src/views/environment/GoView.vue:46 #: src/views/environment/JavaView.vue:13 #: src/views/environment/NodejsView.vue:49 #: src/views/environment/PHPView.vue:131 @@ -6447,7 +7654,8 @@ msgstr "您确定要删除该用户吗?" msgid "Set successfully" msgstr "设置成功" -#: src/views/environment/DotnetView.vue:25 src/views/environment/GoView.vue:64 +#: src/views/environment/DotnetView.vue:25 +#: src/views/environment/GoView.vue:64 #: src/views/environment/JavaView.vue:25 #: src/views/environment/NodejsView.vue:67 #: src/views/environment/PHPView.vue:196 @@ -6456,11 +7664,8 @@ msgid "Set as CLI Default Version" msgstr "设置为 CLI 默认版本" #: src/views/environment/DotnetView.vue:30 -msgid "" -".NET is a free, open-source, cross-platform framework for building modern " -"apps and powerful cloud services." -msgstr "" -".NET 是一个免费、开源、跨平台的框架,用于构建现代应用程序和强大的云服务。" +msgid ".NET is a free, open-source, cross-platform framework for building modern apps and powerful cloud services." +msgstr ".NET 是一个免费、开源、跨平台的框架,用于构建现代应用程序和强大的云服务。" #: src/views/environment/GoView.vue:16 msgid "Official (proxy.golang.org)" @@ -6470,11 +7675,13 @@ msgstr "官方(proxy.golang.org)" msgid "China - Qiniu (goproxy.cn)" msgstr "中国 - 七牛云(goproxy.cn)" -#: src/views/environment/GoView.vue:19 src/views/environment/PythonView.vue:18 +#: src/views/environment/GoView.vue:19 +#: src/views/environment/PythonView.vue:18 msgid "China - Alibaba (mirrors.aliyun.com)" msgstr "中国 - 阿里巴巴(mirrors.aliyun.com)" -#: src/views/environment/GoView.vue:23 src/views/environment/NodejsView.vue:22 +#: src/views/environment/GoView.vue:23 +#: src/views/environment/NodejsView.vue:22 #: src/views/environment/PythonView.vue:22 msgid "China - Tencent (mirrors.tencent.com)" msgstr "中国 - 腾讯(mirrors.tencent.com)" @@ -6484,9 +7691,7 @@ msgid "Proxy Settings" msgstr "代理设置" #: src/views/environment/GoView.vue:74 -msgid "" -"GOPROXY is used to configure the Go module proxy. Using a domestic mirror " -"can speed up dependency downloads." +msgid "GOPROXY is used to configure the Go module proxy. Using a domestic mirror can speed up dependency downloads." msgstr "GOPROXY 用于配置 Go 模块代理。使用国内镜像可以加快依赖项下载速度。" #: src/views/environment/GoView.vue:79 @@ -6498,12 +7703,8 @@ msgid "Select or enter proxy address" msgstr "选择或输入代理地址" #: src/views/environment/JavaView.vue:30 -msgid "" -"Amazon Corretto is a no-cost, multiplatform, production-ready distribution " -"of the Open Java Development Kit (OpenJDK)." -msgstr "" -"Amazon Corretto 是一个无成本、多平台、生产就绪的 Open Java Development Kit" -"(OpenJDK)发行版。" +msgid "Amazon Corretto is a no-cost, multiplatform, production-ready distribution of the Open Java Development Kit (OpenJDK)." +msgstr "Amazon Corretto 是一个无成本、多平台、生产就绪的 Open Java Development Kit(OpenJDK)发行版。" #: src/views/environment/NodejsView.vue:16 msgid "Official (registry.npmjs.org)" @@ -6522,9 +7723,7 @@ msgid "Registry Settings" msgstr "注册表设置" #: src/views/environment/NodejsView.vue:77 -msgid "" -"npm registry is used to configure the npm package source. Using a domestic " -"mirror can speed up package downloads." +msgid "npm registry is used to configure the npm package source. Using a domestic mirror can speed up package downloads." msgstr "npm 注册表用于配置 npm 包源。使用国内镜像可以加速包下载。" #: src/views/environment/NodejsView.vue:82 @@ -6569,12 +7768,8 @@ msgid "Disabled Functions" msgstr "禁用函数" #: src/views/environment/PhpConfigTuneView.vue:283 -msgid "" -"Enter the PHP functions to disable, separated by commas. Common dangerous " -"functions include: exec, shell_exec, system, passthru, proc_open, popen, etc." -msgstr "" -"输入要禁用的 PHP 函数,用逗号分隔。常见的危险函数包括:exec、shell_exec、" -"system、passthru、proc_open、popen 等。" +msgid "Enter the PHP functions to disable, separated by commas. Common dangerous functions include: exec, shell_exec, system, passthru, proc_open, popen, etc." +msgstr "输入要禁用的 PHP 函数,用逗号分隔。常见的危险函数包括:exec、shell_exec、system、passthru、proc_open、popen 等。" #: src/views/environment/PhpConfigTuneView.vue:294 msgid "e.g. exec,shell_exec,system,passthru" @@ -6585,9 +7780,7 @@ msgid "Upload Limits" msgstr "上传限制" #: src/views/environment/PhpConfigTuneView.vue:314 -msgid "" -"Adjust PHP file upload limits. post_max_size should be greater than " -"upload_max_filesize." +msgid "Adjust PHP file upload limits. post_max_size should be greater than upload_max_filesize." msgstr "调整 PHP 文件上传限制。post_max_size 应大于 upload_max_filesize。" #: src/views/environment/PhpConfigTuneView.vue:320 @@ -6615,8 +7808,7 @@ msgid "Timeout Limits" msgstr "超时限制" #: src/views/environment/PhpConfigTuneView.vue:385 -msgid "" -"Adjust PHP script timeout limits. Values are in seconds, -1 means no limit." +msgid "Adjust PHP script timeout limits. Values are in seconds, -1 means no limit." msgstr "调整 PHP 脚本超时限制。值以秒为单位,-1 表示无限制。" #: src/views/environment/PhpConfigTuneView.vue:389 @@ -6641,8 +7833,7 @@ msgid "e.g. 1000" msgstr "例如 1000" #: src/views/environment/PhpConfigTuneView.vue:430 -msgid "" -"Adjust PHP-FPM process manager settings. These settings are in php-fpm.conf." +msgid "Adjust PHP-FPM process manager settings. These settings are in php-fpm.conf." msgstr "调整 PHP-FPM 进程管理器设置。这些设置在 php-fpm.conf 中。" #: src/views/environment/PhpConfigTuneView.vue:434 @@ -6670,12 +7861,8 @@ msgid "Max Spare Servers (pm.max_spare_servers)" msgstr "最大空闲服务器数(pm.max_spare_servers)" #: src/views/environment/PhpConfigTuneView.vue:495 -msgid "" -"Adjust PHP session settings. When using redis or memcached, make sure the " -"corresponding extension is installed and the service is running." -msgstr "" -"调整 PHP 会话设置。使用 redis 或 memcached 时,请确保已安装相应扩展且服务正在" -"运行。" +msgid "Adjust PHP session settings. When using redis or memcached, make sure the corresponding extension is installed and the service is running." +msgstr "调整 PHP 会话设置。使用 redis 或 memcached 时,请确保已安装相应扩展且服务正在运行。" #: src/views/environment/PhpConfigTuneView.vue:501 msgid "Save Handler (session.save_handler)" @@ -6746,24 +7933,16 @@ msgid "View PHPInfo" msgstr "查看 PHPInfo" #: src/views/environment/PHPView.vue:227 -msgid "" -"This modifies the PHP %{ version } main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 PHP %{ version } 的主配置文件。如果您不了解每个参数的含义,请不要随" -"意修改!" +msgid "This modifies the PHP %{ version } main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 PHP %{ version } 的主配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/environment/PHPView.vue:241 msgid "FPM Configuration" msgstr "FPM 配置" #: src/views/environment/PHPView.vue:245 -msgid "" -"This modifies the PHP %{ version } FPM configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"这将修改 PHP %{ version } 的 FPM 配置文件。如果您不了解每个参数的含义,请不要" -"随意修改!" +msgid "This modifies the PHP %{ version } FPM configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "这将修改 PHP %{ version } 的 FPM 配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/environment/PHPView.vue:282 msgid "Slow Logs" @@ -6790,9 +7969,7 @@ msgid "Mirror Settings" msgstr "镜像设置" #: src/views/environment/PythonView.vue:81 -msgid "" -"pip mirror is used to configure the Python package source. Using a domestic " -"mirror can speed up package downloads." +msgid "pip mirror is used to configure the Python package source. Using a domestic mirror can speed up package downloads." msgstr "pip 镜像用于配置 Python 包源。使用国内镜像可以加速包下载。" #: src/views/environment/PythonView.vue:86 @@ -6833,12 +8010,15 @@ msgid "Name cannot be empty" msgstr "名称不能为空" #: src/views/file/composables/usePaste.ts:96 -#: src/views/file/composables/usePaste.ts:150 src/views/task/TaskView.vue:46 +#: src/views/file/composables/usePaste.ts:150 +#: src/views/task/TaskView.vue:46 msgid "Canceled" msgstr "已取消" -#: src/views/file/composables/usePaste.ts:138 src/views/file/ListView.vue:306 -#: src/views/file/ListView.vue:848 src/views/file/ListView.vue:897 +#: src/views/file/composables/usePaste.ts:138 +#: src/views/file/ListView.vue:306 +#: src/views/file/ListView.vue:848 +#: src/views/file/ListView.vue:897 msgid "Warning" msgstr "警告" @@ -6846,19 +8026,23 @@ msgstr "警告" msgid "There are items with the same name %{ items } Do you want to overwrite?" msgstr "存在同名项目 %{ items } 是否要覆盖?" -#: src/views/file/composables/usePaste.ts:175 src/views/file/ListView.vue:850 -#: src/views/file/UploadModal.vue:750 src/views/file/UploadModal.vue:777 +#: src/views/file/composables/usePaste.ts:175 +#: src/views/file/ListView.vue:850 +#: src/views/file/UploadModal.vue:750 +#: src/views/file/UploadModal.vue:777 msgid "Overwrite" msgstr "覆盖" #: src/views/file/CompressModal.vue:52 -msgid "" -"Compress task created successfully, please check the task list for progress" +msgid "Compress task created successfully, please check the task list for progress" msgstr "压缩任务创建成功,请在任务列表中查看进度" -#: src/views/file/CompressModal.vue:97 src/views/file/CompressModal.vue:120 -#: src/views/file/ListView.vue:376 src/views/file/ListView.vue:412 -#: src/views/file/ListView.vue:1007 src/views/file/ListView.vue:1660 +#: src/views/file/CompressModal.vue:97 +#: src/views/file/CompressModal.vue:120 +#: src/views/file/ListView.vue:376 +#: src/views/file/ListView.vue:412 +#: src/views/file/ListView.vue:1007 +#: src/views/file/ListView.vue:1660 #: src/views/file/ToolBar.vue:189 msgid "Compress" msgstr "压缩" @@ -6891,12 +8075,14 @@ msgstr "文件编辑器" msgid "Drop files to upload" msgstr "拖放文件以上传" -#: src/views/file/ListView.vue:262 src/views/file/ListView.vue:429 +#: src/views/file/ListView.vue:262 +#: src/views/file/ListView.vue:429 #: src/views/file/ListView.vue:1030 msgid "Add Protection" msgstr "添加保护" -#: src/views/file/ListView.vue:262 src/views/file/ListView.vue:428 +#: src/views/file/ListView.vue:262 +#: src/views/file/ListView.vue:428 #: src/views/file/ListView.vue:1030 msgid "Remove Protection" msgstr "移除保护" @@ -6906,9 +8092,7 @@ msgid "Add tamper protection for %{ name }?" msgstr "为 %{ name } 添加防篡改保护?" #: src/views/file/ListView.vue:265 -msgid "" -"Remove tamper protection for %{ name }? The matching rule or exclusions will " -"be adjusted accordingly." +msgid "Remove tamper protection for %{ name }? The matching rule or exclusions will be adjusted accordingly." msgstr "移除 %{ name } 的防篡改保护?匹配的规则或排除项将相应调整。" #: src/views/file/ListView.vue:273 @@ -6916,49 +8100,56 @@ msgid "Operation successful" msgstr "操作成功" #: src/views/file/ListView.vue:307 -msgid "" -"%{ name } has immutable attribute. The panel will temporarily remove the " -"immutable attribute, perform the operation, and then restore the immutable " -"attribute. Do you want to continue?" -msgstr "" -"%{ name } 具有不可变属性。面板将暂时移除不可变属性,执行操作,然后恢复不可变" -"属性。您要继续吗?" +msgid "%{ name } has immutable attribute. The panel will temporarily remove the immutable attribute, perform the operation, and then restore the immutable attribute. Do you want to continue?" +msgstr "%{ name } 具有不可变属性。面板将暂时移除不可变属性,执行操作,然后恢复不可变属性。您要继续吗?" -#: src/views/file/ListView.vue:364 src/views/file/ListView.vue:382 -#: src/views/file/ListView.vue:438 src/views/file/ToolBar.vue:184 +#: src/views/file/ListView.vue:364 +#: src/views/file/ListView.vue:382 +#: src/views/file/ListView.vue:438 +#: src/views/file/ToolBar.vue:184 msgid "Paste" msgstr "粘贴" -#: src/views/file/ListView.vue:375 src/views/file/ListView.vue:409 -#: src/views/file/ListView.vue:1005 src/views/file/ToolBar.vue:188 +#: src/views/file/ListView.vue:375 +#: src/views/file/ListView.vue:409 +#: src/views/file/ListView.vue:1005 +#: src/views/file/ToolBar.vue:188 msgid "Move" msgstr "移动" -#: src/views/file/ListView.vue:377 src/views/file/ListView.vue:410 -#: src/views/file/ListView.vue:1006 src/views/file/ListView.vue:1454 -#: src/views/file/PermissionModal.vue:146 src/views/file/PropertyModal.vue:42 +#: src/views/file/ListView.vue:377 +#: src/views/file/ListView.vue:410 +#: src/views/file/ListView.vue:1006 +#: src/views/file/ListView.vue:1454 +#: src/views/file/PermissionModal.vue:146 +#: src/views/file/PropertyModal.vue:42 #: src/views/file/ToolBar.vue:190 msgid "Permission" msgstr "权限" -#: src/views/file/ListView.vue:394 src/views/file/ListView.vue:1647 +#: src/views/file/ListView.vue:394 +#: src/views/file/ListView.vue:1647 msgid "Open" msgstr "打开" -#: src/views/file/ListView.vue:396 src/views/file/ListView.vue:1666 +#: src/views/file/ListView.vue:396 +#: src/views/file/ListView.vue:1666 msgid "Preview" msgstr "预览" -#: src/views/file/ListView.vue:398 src/views/file/ListView.vue:1012 +#: src/views/file/ListView.vue:398 +#: src/views/file/ListView.vue:1012 #: src/views/file/ListView.vue:1769 msgid "Uncompress" msgstr "解压" -#: src/views/file/ListView.vue:416 src/views/file/ListView.vue:1017 +#: src/views/file/ListView.vue:416 +#: src/views/file/ListView.vue:1017 msgid "Share" msgstr "分享" -#: src/views/file/ListView.vue:433 src/views/file/ListView.vue:1035 +#: src/views/file/ListView.vue:433 +#: src/views/file/ListView.vue:1035 #: src/views/file/PropertyModal.vue:11 msgid "Properties" msgstr "属性" @@ -6979,7 +8170,8 @@ msgstr "某些文件是不可变的,无法删除" msgid "Are you sure you want to delete %{count} items?" msgstr "您确定要删除 %{count} 项吗?" -#: src/views/file/ListView.vue:908 src/views/file/PathInput.vue:34 +#: src/views/file/ListView.vue:908 +#: src/views/file/PathInput.vue:34 msgid "Path copied to clipboard" msgstr "路径已复制到剪贴板" @@ -6988,8 +8180,7 @@ msgid "Copy Path" msgstr "复制路径" #: src/views/file/ListView.vue:1291 -msgid "" -"Uncompress task created successfully, please check the task list for progress" +msgid "Uncompress task created successfully, please check the task list for progress" msgstr "解压任务创建成功,请在任务列表中查看进度" #: src/views/file/ListView.vue:1706 @@ -7016,7 +8207,8 @@ msgstr "解压 - %{ file }" msgid "Uncompress to" msgstr "解压到" -#: src/views/file/ListView.vue:1779 src/views/file/ToolBar.vue:237 +#: src/views/file/ListView.vue:1779 +#: src/views/file/ToolBar.vue:237 msgid "Terminal - %{ path }" msgstr "终端 - %{ path }" @@ -7024,7 +8216,8 @@ msgstr "终端 - %{ path }" msgid "Failed to copy path" msgstr "路径复制失败" -#: src/views/file/PathInput.vue:109 src/views/home/UpdateView.vue:176 +#: src/views/file/PathInput.vue:109 +#: src/views/home/UpdateView.vue:176 #: src/views/toolbox/MigrationView.vue:589 msgid "Back" msgstr "返回" @@ -7067,22 +8260,27 @@ msgid "Modify permissions - %{ path }" msgstr "修改权限 - %{ path }" #: src/views/file/PermissionModal.vue:119 -#: src/views/file/PermissionModal.vue:149 src/views/file/PropertyModal.vue:45 +#: src/views/file/PermissionModal.vue:149 +#: src/views/file/PropertyModal.vue:45 msgid "Owner" msgstr "所有者" #: src/views/file/PermissionModal.vue:121 #: src/views/file/PermissionModal.vue:130 -#: src/views/file/PermissionModal.vue:139 src/views/home/IndexView.vue:212 -#: src/views/home/IndexView.vue:228 src/views/home/IndexView.vue:1012 +#: src/views/file/PermissionModal.vue:139 +#: src/views/home/IndexView.vue:212 +#: src/views/home/IndexView.vue:228 +#: src/views/home/IndexView.vue:1012 #: src/views/monitor/SystemView.vue:627 msgid "Read" msgstr "读取" #: src/views/file/PermissionModal.vue:122 #: src/views/file/PermissionModal.vue:131 -#: src/views/file/PermissionModal.vue:140 src/views/home/IndexView.vue:212 -#: src/views/home/IndexView.vue:252 src/views/home/IndexView.vue:1013 +#: src/views/file/PermissionModal.vue:140 +#: src/views/home/IndexView.vue:212 +#: src/views/home/IndexView.vue:252 +#: src/views/home/IndexView.vue:1013 #: src/views/monitor/SystemView.vue:636 msgid "Write" msgstr "写入" @@ -7141,7 +8339,8 @@ msgstr "30 天" msgid "Share link created successfully" msgstr "分享链接创建成功" -#: src/views/file/ShareModal.vue:55 src/views/file/ShareModal.vue:64 +#: src/views/file/ShareModal.vue:55 +#: src/views/file/ShareModal.vue:64 msgid "Link copied to clipboard" msgstr "链接已复制到剪贴板" @@ -7185,9 +8384,12 @@ msgstr "有效期" msgid "Download Limit" msgstr "下载次数限制" -#: src/views/file/ShareModal.vue:162 src/views/website/EditModal.vue:1564 -#: src/views/website/EditModal.vue:1579 src/views/website/EditModal.vue:2001 -#: src/views/website/EditModal.vue:2014 src/views/website/EditModal.vue:2027 +#: src/views/file/ShareModal.vue:162 +#: src/views/website/EditModal.vue:1564 +#: src/views/website/EditModal.vue:1579 +#: src/views/website/EditModal.vue:2001 +#: src/views/website/EditModal.vue:2014 +#: src/views/website/EditModal.vue:2027 msgid "Unlimited" msgstr "无限制" @@ -7196,8 +8398,7 @@ msgid "Create Share Link" msgstr "创建分享链接" #: src/views/file/ToolBar.vue:57 -msgid "" -"Download task created successfully, please check the task list for progress" +msgid "Download task created successfully, please check the task list for progress" msgstr "下载任务创建成功,请在任务列表中查看进度" #: src/views/file/ToolBar.vue:67 @@ -7212,7 +8413,8 @@ msgstr "请选择要移动的文件/文件夹" msgid "Sort" msgstr "排序" -#: src/views/file/ToolBar.vue:155 src/views/file/ToolBar.vue:209 +#: src/views/file/ToolBar.vue:155 +#: src/views/file/ToolBar.vue:209 msgid "Remote Download" msgstr "远程下载" @@ -7248,18 +8450,19 @@ msgstr "无效的新名称「%{name}」" msgid "Duplicate new name \"%{name}\"" msgstr "重复的新名称「%{name}」" -#: src/views/file/UploadModal.vue:471 src/views/file/UploadModal.vue:591 +#: src/views/file/UploadModal.vue:471 +#: src/views/file/UploadModal.vue:591 msgid "Upload %{ fileName } successful" msgstr "上传 %{ fileName } 成功" -#: src/views/file/UploadModal.vue:499 src/views/file/UploadModal.vue:634 +#: src/views/file/UploadModal.vue:499 +#: src/views/file/UploadModal.vue:634 msgid "Confirm Upload" msgstr "确认上传" -#: src/views/file/UploadModal.vue:500 src/views/file/UploadModal.vue:635 -msgid "" -"You are about to upload %{count} files. This may take a while. Do you want " -"to continue?" +#: src/views/file/UploadModal.vue:500 +#: src/views/file/UploadModal.vue:635 +msgid "You are about to upload %{count} files. This may take a while. Do you want to continue?" msgstr "您即将上传 %{count} 个文件。这可能需要一些时间。您想继续吗?" #: src/views/file/UploadModal.vue:683 @@ -7271,8 +8474,7 @@ msgid "Preparing..." msgstr "准备中……" #: src/views/file/UploadModal.vue:713 -msgid "" -"For large files, it is recommended to use SFTP and other methods to upload" +msgid "For large files, it is recommended to use SFTP and other methods to upload" msgstr "对于大文件,建议使用 SFTP 等方法上传" #: src/views/file/UploadModal.vue:725 @@ -7280,16 +8482,15 @@ msgid "Files already exist" msgstr "文件已存在" #: src/views/file/UploadModal.vue:736 -msgid "" -"The following files already exist in the target directory. Choose an action " -"for each." +msgid "The following files already exist in the target directory. Choose an action for each." msgstr "目标目录中已存在以下文件。请为每个文件选择一个操作。" #: src/views/file/UploadModal.vue:742 msgid "Apply to all:" msgstr "应用于所有:" -#: src/views/file/UploadModal.vue:744 src/views/file/UploadModal.vue:775 +#: src/views/file/UploadModal.vue:744 +#: src/views/file/UploadModal.vue:775 msgid "Skip" msgstr "跳过" @@ -7304,8 +8505,10 @@ msgstr "创建转发" #: src/views/firewall/CreateForwardModal.vue:64 #: src/views/firewall/CreateIpModal.vue:104 -#: src/views/firewall/CreateModal.vue:144 src/views/firewall/ForwardView.vue:16 -#: src/views/firewall/IpRuleView.vue:16 src/views/firewall/RuleView.vue:56 +#: src/views/firewall/CreateModal.vue:144 +#: src/views/firewall/ForwardView.vue:16 +#: src/views/firewall/IpRuleView.vue:16 +#: src/views/firewall/RuleView.vue:56 msgid "Transport Protocol" msgstr "传输协议" @@ -7324,25 +8527,29 @@ msgid "Target Port" msgstr "目标端口" #: src/views/firewall/CreateIpModal.vue:39 -#: src/views/firewall/CreateModal.vue:42 src/views/firewall/IpRuleView.vue:70 +#: src/views/firewall/CreateModal.vue:42 +#: src/views/firewall/IpRuleView.vue:70 #: src/views/firewall/RuleView.vue:15 msgid "Accept" msgstr "接受" #: src/views/firewall/CreateIpModal.vue:43 -#: src/views/firewall/CreateModal.vue:46 src/views/firewall/IpRuleView.vue:72 +#: src/views/firewall/CreateModal.vue:46 +#: src/views/firewall/IpRuleView.vue:72 #: src/views/firewall/RuleView.vue:16 msgid "Drop" msgstr "丢弃" #: src/views/firewall/CreateIpModal.vue:47 -#: src/views/firewall/CreateModal.vue:50 src/views/firewall/IpRuleView.vue:74 +#: src/views/firewall/CreateModal.vue:50 +#: src/views/firewall/IpRuleView.vue:74 #: src/views/firewall/RuleView.vue:17 msgid "Reject" msgstr "拒绝" #: src/views/firewall/CreateIpModal.vue:54 -#: src/views/firewall/CreateModal.vue:57 src/views/firewall/IpRuleView.vue:99 +#: src/views/firewall/CreateModal.vue:57 +#: src/views/firewall/IpRuleView.vue:99 #: src/views/firewall/RuleView.vue:236 #: src/views/website/stats/OverviewTab.vue:390 #: src/views/website/stats/OverviewTab.vue:424 @@ -7352,7 +8559,8 @@ msgid "Inbound" msgstr "入站" #: src/views/firewall/CreateIpModal.vue:58 -#: src/views/firewall/CreateModal.vue:61 src/views/firewall/IpRuleView.vue:101 +#: src/views/firewall/CreateModal.vue:61 +#: src/views/firewall/IpRuleView.vue:101 #: src/views/firewall/RuleView.vue:238 #: src/views/website/stats/OverviewTab.vue:388 #: src/views/website/stats/OverviewTab.vue:389 @@ -7368,13 +8576,15 @@ msgid "%{ address } created successfully" msgstr "%{ address } 创建成功" #: src/views/firewall/CreateIpModal.vue:96 -#: src/views/firewall/CreateModal.vue:136 src/views/firewall/IpRuleView.vue:195 +#: src/views/firewall/CreateModal.vue:136 +#: src/views/firewall/IpRuleView.vue:195 #: src/views/firewall/RuleView.vue:352 msgid "Create Rule" msgstr "创建规则" #: src/views/firewall/CreateIpModal.vue:107 -#: src/views/firewall/CreateModal.vue:147 src/views/firewall/IpRuleView.vue:33 +#: src/views/firewall/CreateModal.vue:147 +#: src/views/firewall/IpRuleView.vue:33 #: src/views/firewall/RuleView.vue:73 msgid "Network Protocol" msgstr "网络协议" @@ -7389,13 +8599,15 @@ msgid "IP or IP range: 172.16.0.1 or 172.16.0.0/16" msgstr "IP 或 IP 范围:172.16.0.1 或 172.16.0.0/16" #: src/views/firewall/CreateIpModal.vue:117 -#: src/views/firewall/CreateModal.vue:197 src/views/firewall/IpRuleView.vue:50 +#: src/views/firewall/CreateModal.vue:197 +#: src/views/firewall/IpRuleView.vue:50 #: src/views/firewall/RuleView.vue:178 msgid "Strategy" msgstr "策略" #: src/views/firewall/CreateIpModal.vue:120 -#: src/views/firewall/CreateModal.vue:200 src/views/firewall/IpRuleView.vue:86 +#: src/views/firewall/CreateModal.vue:200 +#: src/views/firewall/IpRuleView.vue:86 #: src/views/firewall/RuleView.vue:223 msgid "Direction" msgstr "方向" @@ -7420,18 +8632,23 @@ msgstr "起始端口" msgid "End Port" msgstr "结束端口" -#: src/views/firewall/CreateModal.vue:190 src/views/firewall/IpRuleView.vue:111 -#: src/views/firewall/RuleView.vue:248 src/views/monitor/AlertRuleModal.vue:148 -#: src/views/toolbox/MigrationView.vue:159 src/views/website/EditModal.vue:1869 +#: src/views/firewall/CreateModal.vue:190 +#: src/views/firewall/IpRuleView.vue:111 +#: src/views/firewall/RuleView.vue:248 +#: src/views/monitor/AlertRuleModal.vue:148 +#: src/views/toolbox/MigrationView.vue:159 +#: src/views/website/EditModal.vue:1869 msgid "Target" msgstr "目标" -#: src/views/firewall/ForwardView.vue:125 src/views/firewall/IpRuleView.vue:167 +#: src/views/firewall/ForwardView.vue:125 +#: src/views/firewall/IpRuleView.vue:167 #: src/views/firewall/RuleView.vue:328 msgid "Please select rules to delete" msgstr "请选择要删除的规则" -#: src/views/firewall/ForwardView.vue:157 src/views/firewall/IpRuleView.vue:199 +#: src/views/firewall/ForwardView.vue:157 +#: src/views/firewall/IpRuleView.vue:199 #: src/views/firewall/RuleView.vue:356 msgid "Are you sure you want to delete the selected rules?" msgstr "您确定要删除所选规则吗?" @@ -7448,7 +8665,8 @@ msgstr "IP 规则" msgid "Port Forwarding" msgstr "端口转发" -#: src/views/firewall/IndexView.vue:26 src/views/firewall/SettingView.vue:96 +#: src/views/firewall/IndexView.vue:26 +#: src/views/firewall/SettingView.vue:96 msgid "Scan Awareness" msgstr "扫描感知" @@ -7456,7 +8674,8 @@ msgstr "扫描感知" msgid "Tamper Protection" msgstr "防篡改" -#: src/views/firewall/IpRuleView.vue:76 src/views/firewall/RuleView.vue:213 +#: src/views/firewall/IpRuleView.vue:76 +#: src/views/firewall/RuleView.vue:213 msgid "Mark" msgstr "标记" @@ -7464,7 +8683,8 @@ msgstr "标记" msgid "Not Used" msgstr "未使用" -#: src/views/firewall/RuleView.vue:129 src/views/toolbox/PanelView.vue:154 +#: src/views/firewall/RuleView.vue:129 +#: src/views/toolbox/PanelView.vue:154 msgid "In Use" msgstr "使用中" @@ -7484,14 +8704,19 @@ msgstr "导出" msgid "Import" msgstr "导入" -#: src/views/firewall/ScanView.vue:193 src/views/firewall/ScanView.vue:211 -#: src/views/firewall/ScanView.vue:223 src/views/firewall/ScanView.vue:288 -#: src/views/firewall/ScanView.vue:302 src/views/firewall/ScanView.vue:318 +#: src/views/firewall/ScanView.vue:193 +#: src/views/firewall/ScanView.vue:211 +#: src/views/firewall/ScanView.vue:223 +#: src/views/firewall/ScanView.vue:288 +#: src/views/firewall/ScanView.vue:302 +#: src/views/firewall/ScanView.vue:318 msgid "Scan Count" msgstr "扫描次数" -#: src/views/firewall/ScanView.vue:193 src/views/firewall/ScanView.vue:216 -#: src/views/firewall/ScanView.vue:229 src/views/firewall/ScanView.vue:440 +#: src/views/firewall/ScanView.vue:193 +#: src/views/firewall/ScanView.vue:216 +#: src/views/firewall/ScanView.vue:229 +#: src/views/firewall/ScanView.vue:440 msgid "Source IPs" msgstr "源 IP 数" @@ -7514,13 +8739,16 @@ msgctxt "firewall" msgid "Block" msgstr "阻止" -#: src/views/firewall/ScanView.vue:279 src/views/firewall/ScanView.vue:307 +#: src/views/firewall/ScanView.vue:279 +#: src/views/firewall/ScanView.vue:307 #: src/views/log/SSHLog.vue:78 msgid "Source IP" msgstr "源 IP" -#: src/views/firewall/ScanView.vue:281 src/views/firewall/ScanView.vue:309 -#: src/views/firewall/ScanView.vue:390 src/views/website/stats/IPsTab.vue:122 +#: src/views/firewall/ScanView.vue:281 +#: src/views/firewall/ScanView.vue:309 +#: src/views/firewall/ScanView.vue:390 +#: src/views/website/stats/IPsTab.vue:122 msgid "Location" msgstr "位置" @@ -7528,7 +8756,8 @@ msgstr "位置" msgid "Port Count" msgstr "端口数" -#: src/views/firewall/ScanView.vue:291 src/views/firewall/ScanView.vue:326 +#: src/views/firewall/ScanView.vue:291 +#: src/views/firewall/ScanView.vue:326 msgid "Last Seen" msgstr "最后记录" @@ -7545,11 +8774,11 @@ msgid "Scan Awareness Disabled" msgstr "扫描感知已禁用" #: src/views/firewall/ScanView.vue:348 -msgid "" -"Enable scan awareness in the Settings tab to start detecting port scans." +msgid "Enable scan awareness in the Settings tab to start detecting port scans." msgstr "在设置标签页中启用扫描感知以开始检测端口扫描。" -#: src/views/firewall/ScanView.vue:356 src/views/website/StatsView.vue:194 +#: src/views/firewall/ScanView.vue:356 +#: src/views/website/StatsView.vue:194 msgid "Overview" msgstr "概览" @@ -7565,7 +8794,8 @@ msgstr "搜索 IP" msgid "Are you sure you want to clear all scan data?" msgstr "您确定要清除所有扫描数据吗?" -#: src/views/firewall/ScanView.vue:403 src/views/website/StatsView.vue:185 +#: src/views/firewall/ScanView.vue:403 +#: src/views/website/StatsView.vue:185 msgid "Clear Data" msgstr "清除数据" @@ -7590,14 +8820,11 @@ msgid "Top 10 Scanned Ports" msgstr "扫描端口前 10" #: src/views/firewall/ScanView.vue:489 -msgid "" -"Scan awareness runs before the system firewall, so it is normal for blocked " -"IPs to continue generating scan records." -msgstr "" -"扫描感知运行在系统防火墙之前,因此被拉黑的 IP 仍继续产生扫描记录属于正常现" -"象。" +msgid "Scan awareness runs before the system firewall, so it is normal for blocked IPs to continue generating scan records." +msgstr "扫描感知运行在系统防火墙之前,因此被拉黑的 IP 仍继续产生扫描记录属于正常现象。" -#: src/views/firewall/SettingView.vue:22 src/views/firewall/SettingView.vue:28 +#: src/views/firewall/SettingView.vue:22 +#: src/views/firewall/SettingView.vue:28 #: src/views/firewall/SettingView.vue:79 msgid "Settings saved successfully" msgstr "设置保存成功" @@ -7658,17 +8885,22 @@ msgstr "运行正常" msgid "Running smoothly" msgstr "运行流畅" -#: src/views/home/IndexView.vue:188 src/views/home/IndexView.vue:968 -#: src/views/home/IndexView.vue:988 src/views/toolbox/BenchmarkView.vue:204 -#: src/views/toolbox/DiskView.vue:758 src/views/toolbox/IndexView.vue:31 +#: src/views/home/IndexView.vue:188 +#: src/views/home/IndexView.vue:968 +#: src/views/home/IndexView.vue:988 +#: src/views/toolbox/BenchmarkView.vue:204 +#: src/views/toolbox/DiskView.vue:758 +#: src/views/toolbox/IndexView.vue:31 msgid "Disk" msgstr "磁盘" -#: src/views/home/IndexView.vue:211 src/views/home/IndexView.vue:228 +#: src/views/home/IndexView.vue:211 +#: src/views/home/IndexView.vue:228 msgid "Send" msgstr "发送" -#: src/views/home/IndexView.vue:211 src/views/home/IndexView.vue:252 +#: src/views/home/IndexView.vue:211 +#: src/views/home/IndexView.vue:252 msgid "Receive" msgstr "接收" @@ -7676,20 +8908,26 @@ msgstr "接收" msgid "Unit %{unit}" msgstr "单位 %{unit}" -#: src/views/home/IndexView.vue:234 src/views/home/IndexView.vue:258 -#: src/views/monitor/SystemView.vue:421 src/views/monitor/SystemView.vue:490 +#: src/views/home/IndexView.vue:234 +#: src/views/home/IndexView.vue:258 +#: src/views/monitor/SystemView.vue:421 +#: src/views/monitor/SystemView.vue:490 #: src/views/monitor/SystemView.vue:552 msgid "Maximum" msgstr "最大值" -#: src/views/home/IndexView.vue:235 src/views/home/IndexView.vue:259 -#: src/views/monitor/SystemView.vue:422 src/views/monitor/SystemView.vue:491 +#: src/views/home/IndexView.vue:235 +#: src/views/home/IndexView.vue:259 +#: src/views/monitor/SystemView.vue:422 +#: src/views/monitor/SystemView.vue:491 #: src/views/monitor/SystemView.vue:553 msgid "Minimum" msgstr "最小值" -#: src/views/home/IndexView.vue:239 src/views/home/IndexView.vue:263 -#: src/views/monitor/SystemView.vue:426 src/views/monitor/SystemView.vue:495 +#: src/views/home/IndexView.vue:239 +#: src/views/home/IndexView.vue:263 +#: src/views/monitor/SystemView.vue:426 +#: src/views/monitor/SystemView.vue:495 #: src/views/monitor/SystemView.vue:557 msgid "Average" msgstr "平均值" @@ -7710,7 +8948,8 @@ msgstr "服务器重启中……" msgid "Restart Panel" msgstr "重启面板" -#: src/views/home/IndexView.vue:394 src/views/home/IndexView.vue:1037 +#: src/views/home/IndexView.vue:394 +#: src/views/home/IndexView.vue:1037 msgid "Restart Server" msgstr "重启服务器" @@ -7719,24 +8958,15 @@ msgid "Current version is the latest" msgstr "当前版本是最新版本" #: src/views/home/IndexView.vue:513 -msgid "" -"Your operating system %{ os_name } has reached its end-of-life. Please " -"consider upgrading to a supported version to ensure optimal performance and " -"security." -msgstr "" -"您的操作系统 %{ os_name } 已经结束生命周期。请考虑升级到受支持的版本,以确保" -"最佳的性能和安全性。" +msgid "Your operating system %{ os_name } has reached its end-of-life. Please consider upgrading to a supported version to ensure optimal performance and security." +msgstr "您的操作系统 %{ os_name } 已经结束生命周期。请考虑升级到受支持的版本,以确保最佳的性能和安全性。" #: src/views/home/IndexView.vue:524 -msgid "" -"Your operating system %{ os_name } is not officially supported. Some " -"features may not work as expected. Please consider using a supported " -"operating system for the best experience." -msgstr "" -"您的操作系统 %{ os_name } 不受官方支持。某些功能可能无法按预期工作。请考虑使" -"用受支持的操作系统以获得最佳体验。" +msgid "Your operating system %{ os_name } is not officially supported. Some features may not work as expected. Please consider using a supported operating system for the best experience." +msgstr "您的操作系统 %{ os_name } 不受官方支持。某些功能可能无法按预期工作。请考虑使用受支持的操作系统以获得最佳体验。" -#: src/views/home/IndexView.vue:555 src/views/task/IndexView.vue:25 +#: src/views/home/IndexView.vue:555 +#: src/views/task/IndexView.vue:25 msgid "Scheduled Tasks" msgstr "计划任务" @@ -7764,7 +8994,8 @@ msgstr "最近 15 分钟" msgid "cores" msgstr "核心" -#: src/views/home/IndexView.vue:629 src/views/toolbox/disk/RaidView.vue:111 +#: src/views/home/IndexView.vue:629 +#: src/views/toolbox/disk/RaidView.vue:111 #: src/views/toolbox/disk/RaidView.vue:142 #: src/views/toolbox/disk/SmartView.vue:104 msgid "Model" @@ -7798,7 +9029,8 @@ msgstr "已用物理内存" msgid "Physical Memory Available" msgstr "可用物理内存" -#: src/views/home/IndexView.vue:721 src/views/toolbox/DiskView.vue:218 +#: src/views/home/IndexView.vue:721 +#: src/views/toolbox/DiskView.vue:218 msgid "Free" msgstr "空闲" @@ -7806,7 +9038,8 @@ msgstr "空闲" msgid "Active" msgstr "活跃" -#: src/views/home/IndexView.vue:727 src/views/project/ListView.vue:76 +#: src/views/home/IndexView.vue:727 +#: src/views/project/ListView.vue:76 msgid "Inactive" msgstr "非活跃" @@ -7866,7 +9099,8 @@ msgstr "您尚未设置任何要在此处显示的应用!" msgid "Environment Information" msgstr "环境信息" -#: src/views/home/IndexView.vue:901 src/views/toolbox/SystemView.vue:178 +#: src/views/home/IndexView.vue:901 +#: src/views/toolbox/SystemView.vue:178 msgid "System Hostname" msgstr "系统主机名" @@ -7927,9 +9161,7 @@ msgid "Read/Write Latency" msgstr "读/写延迟" #: src/views/home/IndexView.vue:1039 -msgid "" -"Are you sure you want to restart the server? This will disconnect all " -"connections." +msgid "Are you sure you want to restart the server? This will disconnect all connections." msgstr "您确定要重启服务器吗?这将断开所有连接。" #: src/views/home/UpdateView.vue:117 @@ -7957,8 +9189,7 @@ msgid "Panel is restarting, please wait..." msgstr "正在重启面板,请稍候……" #: src/views/home/UpdateView.vue:164 -msgid "" -"Update may have failed, please check the panel logs and refresh manually." +msgid "Update may have failed, please check the panel logs and refresh manually." msgstr "更新可能失败,请检查面板日志并手动刷新。" #: src/views/home/UpdateView.vue:170 @@ -7973,7 +9204,8 @@ msgstr "有一个新版本可用" msgid "Current" msgstr "当前" -#: src/views/home/UpdateView.vue:201 src/views/home/UpdateView.vue:223 +#: src/views/home/UpdateView.vue:201 +#: src/views/home/UpdateView.vue:223 msgid "Latest" msgstr "最新" @@ -7985,23 +9217,31 @@ msgstr "立即更新" msgid "Changelog" msgstr "更新日志" -#: src/views/log/DatabaseLog.vue:30 src/views/log/HttpLog.vue:30 -#: src/views/log/OperationLog.vue:33 src/views/monitor/SystemView.vue:697 -#: src/views/monitor/SystemView.vue:751 src/views/monitor/SystemView.vue:803 -#: src/views/monitor/SystemView.vue:859 src/views/monitor/SystemView.vue:926 +#: src/views/log/DatabaseLog.vue:30 +#: src/views/log/HttpLog.vue:30 +#: src/views/log/OperationLog.vue:33 +#: src/views/monitor/SystemView.vue:697 +#: src/views/monitor/SystemView.vue:751 +#: src/views/monitor/SystemView.vue:803 +#: src/views/monitor/SystemView.vue:859 +#: src/views/monitor/SystemView.vue:926 #: src/views/website/StatsView.vue:138 msgid "Today" msgstr "今天" -#: src/views/log/DatabaseLog.vue:48 src/views/log/HttpLog.vue:56 -#: src/views/log/OperationLog.vue:51 src/views/log/SSHLog.vue:58 -#: src/views/monitor/AlertView.vue:145 src/views/tamper/TamperView.vue:191 +#: src/views/log/DatabaseLog.vue:48 +#: src/views/log/HttpLog.vue:56 +#: src/views/log/OperationLog.vue:51 +#: src/views/log/SSHLog.vue:58 +#: src/views/monitor/AlertView.vue:145 +#: src/views/tamper/TamperView.vue:191 #: src/views/toolbox/SystemView.vue:197 #: src/views/website/stats/ErrorsTab.vue:87 msgid "Time" msgstr "时间" -#: src/views/log/DatabaseLog.vue:57 src/views/log/OperationLog.vue:60 +#: src/views/log/DatabaseLog.vue:57 +#: src/views/log/OperationLog.vue:60 msgid "Level" msgstr "级别" @@ -8009,7 +9249,8 @@ msgstr "级别" msgid "Query" msgstr "查询" -#: src/views/log/DatabaseLog.vue:81 src/views/log/HttpLog.vue:107 +#: src/views/log/DatabaseLog.vue:81 +#: src/views/log/HttpLog.vue:107 #: src/views/toolbox/MigrationView.vue:222 msgid "Duration" msgstr "持续时间" @@ -8018,17 +9259,21 @@ msgstr "持续时间" msgid "Rows" msgstr "行" -#: src/views/log/DatabaseLog.vue:112 src/views/log/HttpLog.vue:141 +#: src/views/log/DatabaseLog.vue:112 +#: src/views/log/HttpLog.vue:141 #: src/views/log/OperationLog.vue:164 msgid "Date" msgstr "日期" -#: src/views/log/DatabaseLog.vue:119 src/views/log/HttpLog.vue:148 -#: src/views/log/OperationLog.vue:171 src/views/log/SSHLog.vue:102 +#: src/views/log/DatabaseLog.vue:119 +#: src/views/log/HttpLog.vue:148 +#: src/views/log/OperationLog.vue:171 +#: src/views/log/SSHLog.vue:102 msgid "Show entries" msgstr "显示条目" -#: src/views/log/HttpLog.vue:65 src/views/website/stats/ErrorsTab.vue:94 +#: src/views/log/HttpLog.vue:65 +#: src/views/website/stats/ErrorsTab.vue:94 msgid "Method" msgstr "方法" @@ -8056,8 +9301,10 @@ msgstr "SSH 日志" msgid "Operator" msgstr "操作员" -#: src/views/log/OperationLog.vue:87 src/views/monitor/IndexView.vue:20 -#: src/views/toolbox/IndexView.vue:29 src/views/toolbox/PanelView.vue:129 +#: src/views/log/OperationLog.vue:87 +#: src/views/monitor/IndexView.vue:20 +#: src/views/toolbox/IndexView.vue:29 +#: src/views/toolbox/PanelView.vue:129 #: src/views/toolbox/PanelView.vue:148 msgid "System" msgstr "系统" @@ -8078,8 +9325,10 @@ msgstr "%{count} 个字段" msgid "Accepted" msgstr "已接受" -#: src/views/log/SSHLog.vue:46 src/views/project/ListView.vue:74 -#: src/views/task/TaskView.vue:44 src/views/toolbox/MigrationView.vue:86 +#: src/views/log/SSHLog.vue:46 +#: src/views/project/ListView.vue:74 +#: src/views/task/TaskView.vue:44 +#: src/views/toolbox/MigrationView.vue:86 msgid "Failed" msgstr "失败" @@ -8108,8 +9357,7 @@ msgid "Please enter captcha code" msgstr "请输入验证码" #: src/views/login/IndexView.vue:153 -msgid "" -"Failed to get encryption public key, please refresh the page and try again" +msgid "Failed to get encryption public key, please refresh the page and try again" msgstr "获取加密公钥失败,请刷新页面后重试" #: src/views/login/IndexView.vue:238 @@ -8144,7 +9392,8 @@ msgstr "使用通行密钥登录" msgid "Please enter the target" msgstr "请输入目标" -#: src/views/monitor/AlertRuleModal.vue:129 src/views/tamper/RuleModal.vue:89 +#: src/views/monitor/AlertRuleModal.vue:129 +#: src/views/tamper/RuleModal.vue:89 msgid "Edit Rule" msgstr "编辑规则" @@ -8152,16 +9401,19 @@ msgstr "编辑规则" msgid "Rule name" msgstr "规则名称" -#: src/views/monitor/AlertRuleModal.vue:139 src/views/monitor/AlertView.vue:55 +#: src/views/monitor/AlertRuleModal.vue:139 +#: src/views/monitor/AlertView.vue:55 #: src/views/monitor/AlertView.vue:152 msgid "Metric" msgstr "指标" -#: src/views/monitor/AlertRuleModal.vue:153 src/views/monitor/AlertView.vue:64 +#: src/views/monitor/AlertRuleModal.vue:153 +#: src/views/monitor/AlertView.vue:64 msgid "Condition" msgstr "条件" -#: src/views/monitor/AlertRuleModal.vue:161 src/views/monitor/AlertView.vue:70 +#: src/views/monitor/AlertRuleModal.vue:161 +#: src/views/monitor/AlertView.vue:70 msgid "Trigger After" msgstr "连续满足" @@ -8169,17 +9421,22 @@ msgstr "连续满足" msgid "consecutive checks" msgstr "次检查后触发" -#: src/views/monitor/AlertRuleModal.vue:166 src/views/monitor/AlertView.vue:76 +#: src/views/monitor/AlertRuleModal.vue:166 +#: src/views/monitor/AlertView.vue:76 msgid "Silence Period" msgstr "静默期" -#: src/views/monitor/AlertRuleModal.vue:168 src/views/monitor/AlertView.vue:79 -#: src/views/monitor/SettingView.vue:210 src/views/setting/SettingSafe.vue:45 +#: src/views/monitor/AlertRuleModal.vue:168 +#: src/views/monitor/AlertView.vue:79 +#: src/views/monitor/SettingView.vue:210 +#: src/views/setting/SettingSafe.vue:45 msgid "minutes" msgstr "分钟" -#: src/views/monitor/AlertRuleModal.vue:171 src/views/monitor/AlertView.vue:82 -#: src/views/monitor/SettingView.vue:236 src/views/monitor/SettingView.vue:276 +#: src/views/monitor/AlertRuleModal.vue:171 +#: src/views/monitor/AlertView.vue:82 +#: src/views/monitor/SettingView.vue:236 +#: src/views/monitor/SettingView.vue:276 msgid "Notify Channels" msgstr "通知渠道" @@ -8187,24 +9444,12 @@ msgstr "通知渠道" msgid "Record only when empty" msgstr "留空则仅记录不通知" -#: src/views/monitor/AlertRuleModal.vue:180 src/views/monitor/AlertView.vue:98 -#: src/views/monitor/ChannelModal.vue:142 src/views/monitor/SettingView.vue:121 -#: src/views/tamper/RuleModal.vue:121 src/views/tamper/TamperView.vue:136 -#: src/views/task/CronView.vue:76 src/views/toolbox/WebHookView.vue:91 -#: src/views/toolbox/WebHookView.vue:386 -msgid "Enabled" -msgstr "已启用" - #: src/views/monitor/AlertRuleModal.vue:186 -msgid "" -"Metrics are checked every minute. The alert fires only after the condition " -"holds for the configured consecutive checks, and is not repeated within the " -"silence period." -msgstr "" -"指标每分钟检查一次。条件连续满足设定的次数后才会触发告警,静默期内不重复通" -"知。" +msgid "Metrics are checked every minute. The alert fires only after the condition holds for the configured consecutive checks, and is not repeated within the silence period." +msgstr "指标每分钟检查一次。条件连续满足设定的次数后才会触发告警,静默期内不重复通知。" -#: src/views/monitor/AlertView.vue:73 src/views/monitor/metrics.ts:92 +#: src/views/monitor/AlertView.vue:73 +#: src/views/monitor/metrics.ts:92 msgid "times" msgstr "次" @@ -8212,25 +9457,19 @@ msgstr "次" msgid "Record only" msgstr "仅记录" -#: src/views/monitor/AlertView.vue:98 src/views/monitor/SettingView.vue:121 -#: src/views/project/EditModal.vue:72 src/views/setting/SettingBase.vue:187 -#: src/views/setting/SettingSafe.vue:246 src/views/tamper/TamperView.vue:136 -#: src/views/toolbox/network/InterfaceView.vue:67 -#: src/views/website/EditModal.vue:850 src/views/website/EditModal.vue:854 -#: src/views/website/EditModal.vue:1069 -msgid "Disabled" -msgstr "禁用" - -#: src/views/monitor/AlertView.vue:120 src/views/tamper/TamperView.vue:158 +#: src/views/monitor/AlertView.vue:120 +#: src/views/tamper/TamperView.vue:158 msgid "Are you sure to delete this rule?" msgstr "确定要删除此规则吗?" -#: src/views/monitor/AlertView.vue:150 src/views/website/EditModal.vue:1151 +#: src/views/monitor/AlertView.vue:150 +#: src/views/website/EditModal.vue:1151 #: src/views/website/EditModal.vue:1831 msgid "Rule" msgstr "规则" -#: src/views/monitor/AlertView.vue:160 src/views/toolbox/MigrationView.vue:228 +#: src/views/monitor/AlertView.vue:160 +#: src/views/toolbox/MigrationView.vue:228 msgid "Detail" msgstr "详情" @@ -8246,7 +9485,8 @@ msgstr "已发送" msgid "Not sent" msgstr "未发送" -#: src/views/monitor/AlertView.vue:175 src/views/monitor/AlertView.vue:234 +#: src/views/monitor/AlertView.vue:175 +#: src/views/monitor/AlertView.vue:234 msgid "Clear Records" msgstr "清除记录" @@ -8259,16 +9499,15 @@ msgid "Alert Rules" msgstr "告警规则" #: src/views/monitor/AlertView.vue:193 -msgid "" -"Rules are checked every minute and notifications are sent through the " -"selected channels." +msgid "Rules are checked every minute and notifications are sent through the selected channels." msgstr "规则每分钟检查一次,命中后通过所选渠道发送通知。" #: src/views/monitor/AlertView.vue:227 msgid "Alert Records" msgstr "告警记录" -#: src/views/monitor/ChannelModal.vue:17 src/views/monitor/SettingView.vue:107 +#: src/views/monitor/ChannelModal.vue:17 +#: src/views/monitor/SettingView.vue:107 msgid "SMTP Email" msgstr "SMTP 邮件" @@ -8288,7 +9527,8 @@ msgstr "不加密(25)" msgid "Edit Channel" msgstr "编辑渠道" -#: src/views/monitor/ChannelModal.vue:83 src/views/monitor/SettingView.vue:242 +#: src/views/monitor/ChannelModal.vue:83 +#: src/views/monitor/SettingView.vue:242 msgid "Add Channel" msgstr "添加渠道" @@ -8324,7 +9564,8 @@ msgstr "默认与登录账号相同" msgid "Sender Name" msgstr "发件人名称" -#: src/views/monitor/ChannelModal.vue:136 src/views/monitor/SettingView.vue:110 +#: src/views/monitor/ChannelModal.vue:136 +#: src/views/monitor/SettingView.vue:110 msgid "Recipients" msgstr "收件人" @@ -8364,7 +9605,8 @@ msgstr "15 分钟负载" msgid "Disk Usage" msgstr "磁盘使用率" -#: src/views/monitor/metrics.ts:52 src/views/monitor/metrics.ts:59 +#: src/views/monitor/metrics.ts:52 +#: src/views/monitor/metrics.ts:59 msgid "Mount point, e.g. /, empty for all" msgstr "挂载点,如 /,留空表示全部" @@ -8376,7 +9618,8 @@ msgstr "磁盘 Inode 使用率" msgid "Disk Read Speed" msgstr "磁盘读取速率" -#: src/views/monitor/metrics.ts:66 src/views/monitor/metrics.ts:73 +#: src/views/monitor/metrics.ts:66 +#: src/views/monitor/metrics.ts:73 msgid "Device name, e.g. sda, empty for all" msgstr "设备名,如 sda,留空表示全部" @@ -8388,7 +9631,8 @@ msgstr "磁盘写入速率" msgid "Network Download Speed" msgstr "网络下行速率" -#: src/views/monitor/metrics.ts:80 src/views/monitor/metrics.ts:87 +#: src/views/monitor/metrics.ts:80 +#: src/views/monitor/metrics.ts:87 msgid "Interface name, e.g. eth0, empty for all" msgstr "网卡名,如 eth0,留空表示全部" @@ -8400,7 +9644,8 @@ msgstr "网络上行速率" msgid "Website 5xx Responses (this hour)" msgstr "网站 5xx 响应数(本小时)" -#: src/views/monitor/metrics.ts:94 src/views/monitor/metrics.ts:101 +#: src/views/monitor/metrics.ts:94 +#: src/views/monitor/metrics.ts:101 #: src/views/monitor/metrics.ts:150 msgid "Website name, empty for all" msgstr "网站名称,留空表示全部" @@ -8453,8 +9698,10 @@ msgstr "数据库服务器名称,留空表示全部" msgid "Certificate Remaining Days" msgstr "证书剩余天数" -#: src/views/monitor/metrics.ts:141 src/views/monitor/metrics.ts:148 -#: src/views/monitor/SettingView.vue:205 src/views/monitor/SettingView.vue:215 +#: src/views/monitor/metrics.ts:141 +#: src/views/monitor/metrics.ts:148 +#: src/views/monitor/SettingView.vue:205 +#: src/views/monitor/SettingView.vue:215 msgid "days" msgstr "天" @@ -8530,11 +9777,13 @@ msgstr "SSH 登录" msgid "SSH brute-force attempts" msgstr "SSH 暴力破解尝试" -#: src/views/monitor/SettingView.vue:44 src/views/monitor/SettingView.vue:229 +#: src/views/monitor/SettingView.vue:44 +#: src/views/monitor/SettingView.vue:229 msgid "Clear Monitoring Records" msgstr "清除监控记录" -#: src/views/monitor/SettingView.vue:45 src/views/website/EditModal.vue:2219 +#: src/views/monitor/SettingView.vue:45 +#: src/views/website/EditModal.vue:2219 msgid "Are you sure you want to clear?" msgstr "确定要清除吗?" @@ -8578,8 +9827,10 @@ msgstr "事件" msgid "Select channels to receive event notifications" msgstr "选择接收事件通知的渠道" -#: src/views/monitor/SystemView.vue:323 src/views/monitor/SystemView.vue:335 -#: src/views/tamper/TamperView.vue:205 src/views/toolbox/IndexView.vue:27 +#: src/views/monitor/SystemView.vue:323 +#: src/views/monitor/SystemView.vue:335 +#: src/views/tamper/TamperView.vue:205 +#: src/views/toolbox/IndexView.vue:27 #: src/views/toolbox/NetworkView.vue:78 msgid "Process" msgstr "进程" @@ -8608,7 +9859,8 @@ msgstr "15 分钟" msgid "Usage %" msgstr "使用率 %" -#: src/views/monitor/SystemView.vue:481 src/views/toolbox/DiskView.vue:259 +#: src/views/monitor/SystemView.vue:481 +#: src/views/toolbox/DiskView.vue:259 msgid "Usage" msgstr "使用率" @@ -8620,17 +9872,22 @@ msgstr "单位 MB" msgid "Load" msgstr "负载" -#: src/views/monitor/SystemView.vue:691 src/views/monitor/SystemView.vue:745 -#: src/views/monitor/SystemView.vue:797 src/views/monitor/SystemView.vue:853 +#: src/views/monitor/SystemView.vue:691 +#: src/views/monitor/SystemView.vue:745 +#: src/views/monitor/SystemView.vue:797 +#: src/views/monitor/SystemView.vue:853 #: src/views/monitor/SystemView.vue:920 #: src/views/website/stats/OverviewTab.vue:259 #: src/views/website/StatsView.vue:144 msgid "Yesterday" msgstr "昨天" -#: src/views/monitor/SystemView.vue:703 src/views/monitor/SystemView.vue:757 -#: src/views/monitor/SystemView.vue:809 src/views/monitor/SystemView.vue:865 -#: src/views/monitor/SystemView.vue:932 src/views/website/StatsView.vue:147 +#: src/views/monitor/SystemView.vue:703 +#: src/views/monitor/SystemView.vue:757 +#: src/views/monitor/SystemView.vue:809 +#: src/views/monitor/SystemView.vue:865 +#: src/views/monitor/SystemView.vue:932 +#: src/views/website/StatsView.vue:147 msgid "Last 7 Days" msgstr "近 7 天" @@ -8690,26 +9947,28 @@ msgstr "创建 Python 项目" msgid "Create .NET Project" msgstr "创建 .NET 项目" -#: src/views/project/CreateModal.vue:407 src/views/project/ListView.vue:295 +#: src/views/project/CreateModal.vue:407 +#: src/views/project/ListView.vue:295 msgid "Create Project" msgstr "创建项目" -#: src/views/project/CreateModal.vue:423 src/views/project/EditModal.vue:184 +#: src/views/project/CreateModal.vue:423 +#: src/views/project/EditModal.vue:184 msgid "Project Name" msgstr "项目名" -#: src/views/project/CreateModal.vue:428 src/views/project/EditModal.vue:189 +#: src/views/project/CreateModal.vue:428 +#: src/views/project/EditModal.vue:189 msgid "Project name, used as service identifier" msgstr "项目名称,用作服务标识符" -#: src/views/project/CreateModal.vue:432 src/views/project/EditModal.vue:203 +#: src/views/project/CreateModal.vue:432 +#: src/views/project/EditModal.vue:203 msgid "Project Directory" msgstr "项目目录" #: src/views/project/CreateModal.vue:439 -msgid "" -"Project root directory (if left empty, defaults to project directory/project " -"name)" +msgid "Project root directory (if left empty, defaults to project directory/project name)" msgstr "项目根目录(如果留空,默认为项目目录/项目名称)" #: src/views/project/CreateModal.vue:454 @@ -8740,14 +9999,18 @@ msgstr "Java 版本" msgid "Select Java Version" msgstr "选择 Java 版本" -#: src/views/project/CreateModal.vue:506 src/views/project/CreateModal.vue:532 -#: src/views/project/CreateModal.vue:558 src/views/project/CreateModal.vue:584 +#: src/views/project/CreateModal.vue:506 +#: src/views/project/CreateModal.vue:532 +#: src/views/project/CreateModal.vue:558 +#: src/views/project/CreateModal.vue:584 #: src/views/project/CreateModal.vue:610 msgid "Framework" msgstr "框架" -#: src/views/project/CreateModal.vue:510 src/views/project/CreateModal.vue:536 -#: src/views/project/CreateModal.vue:562 src/views/project/CreateModal.vue:588 +#: src/views/project/CreateModal.vue:510 +#: src/views/project/CreateModal.vue:536 +#: src/views/project/CreateModal.vue:562 +#: src/views/project/CreateModal.vue:588 #: src/views/project/CreateModal.vue:614 msgid "Select Framework" msgstr "选择框架" @@ -8760,13 +10023,17 @@ msgstr "Node.js 版本" msgid "Select Node.js Version" msgstr "选择 Node.js 版本" -#: src/views/project/CreateModal.vue:548 src/views/website/CreateModal.vue:236 -#: src/views/website/EditModal.vue:998 src/views/website/EditModal.vue:1917 +#: src/views/project/CreateModal.vue:548 +#: src/views/website/CreateModal.vue:236 +#: src/views/website/EditModal.vue:998 +#: src/views/website/EditModal.vue:1917 msgid "PHP Version" msgstr "PHP 版本" -#: src/views/project/CreateModal.vue:552 src/views/website/CreateModal.vue:240 -#: src/views/website/EditModal.vue:1003 src/views/website/EditModal.vue:1921 +#: src/views/project/CreateModal.vue:552 +#: src/views/website/CreateModal.vue:240 +#: src/views/website/EditModal.vue:1003 +#: src/views/website/EditModal.vue:1921 msgid "Select PHP Version" msgstr "选择 PHP 版本" @@ -8786,7 +10053,8 @@ msgstr ".NET 版本" msgid "Select .NET Version" msgstr "选择 .NET 版本" -#: src/views/project/CreateModal.vue:630 src/views/project/EditModal.vue:245 +#: src/views/project/CreateModal.vue:630 +#: src/views/project/EditModal.vue:245 msgid "Select or enter user" msgstr "选择或输入用户" @@ -8794,14 +10062,17 @@ msgstr "选择或输入用户" msgid "Select www user if no special requirements" msgstr "如果没有特殊要求,请选择 www 用户" -#: src/views/project/CreateModal.vue:646 src/views/project/EditModal.vue:262 +#: src/views/project/CreateModal.vue:646 +#: src/views/project/EditModal.vue:262 msgid "e.g., php artisan serve, node app.js" msgstr "例如,php artisan serve、node app.js" #: src/views/project/CreateModal.vue:649 #: src/views/website/BulkCreateModal.vue:59 -#: src/views/website/CreateModal.vue:28 src/views/website/EditModal.vue:106 -#: src/views/website/IndexView.vue:26 src/views/website/ListView.vue:126 +#: src/views/website/CreateModal.vue:28 +#: src/views/website/EditModal.vue:106 +#: src/views/website/IndexView.vue:26 +#: src/views/website/ListView.vue:126 msgid "Reverse Proxy" msgstr "反向代理" @@ -8942,12 +10213,8 @@ msgid "Dependencies" msgstr "依赖" #: src/views/project/EditModal.vue:411 -msgid "" -"Configure service dependencies to control startup order. Common services: " -"network.target, mysqld.service, postgresql.service, redis.service" -msgstr "" -"配置服务依赖关系以控制启动顺序。常见服务:network.target、mysqld.service、" -"postgresql.service、redis.service" +msgid "Configure service dependencies to control startup order. Common services: network.target, mysqld.service, postgresql.service, redis.service" +msgstr "配置服务依赖关系以控制启动顺序。常见服务:network.target、mysqld.service、postgresql.service、redis.service" #: src/views/project/EditModal.vue:417 msgid "Requires" @@ -8982,19 +10249,13 @@ msgid "Start this service before the specified services" msgstr "在指定的服务之前启动此服务" #: src/views/project/EditModal.vue:462 -msgid "" -"Set resource limits to prevent the service from consuming too many system " -"resources" +msgid "Set resource limits to prevent the service from consuming too many system resources" msgstr "设置资源限制以防止服务消耗过多系统资源" #: src/views/project/EditModal.vue:470 msgid "Memory Limit (MB)" msgstr "内存限制(MB)" -#: src/views/project/EditModal.vue:476 -msgid "0 means no limit" -msgstr "0 表示无限制" - #: src/views/project/EditModal.vue:480 msgid "Set to 0 to disable memory limit" msgstr "设置为 0 以禁用内存限制" @@ -9016,9 +10277,7 @@ msgid "Security Settings" msgstr "安全设置" #: src/views/project/EditModal.vue:509 -msgid "" -"Security settings can enhance service isolation but may affect " -"functionality. Please test thoroughly before enabling." +msgid "Security settings can enhance service isolation but may affect functionality. Please test thoroughly before enabling." msgstr "安全设置可以增强服务隔离,但可能会影响功能。请在启用之前进行充分测试。" #: src/views/project/EditModal.vue:515 @@ -9042,11 +10301,8 @@ msgid "Protect System" msgstr "保护系统" #: src/views/project/EditModal.vue:544 -msgid "" -"true: /usr, /boot read-only; full: + /etc read-only; strict: entire " -"filesystem read-only" -msgstr "" -"true:/usr,/boot 为只读;full:+ /etc 为只读;strict:整个文件系统为只读" +msgid "true: /usr, /boot read-only; full: + /etc read-only; strict: entire filesystem read-only" +msgstr "true:/usr,/boot 为只读;full:+ /etc 为只读;strict:整个文件系统为只读" #: src/views/project/EditModal.vue:552 msgid "Path Access Control" @@ -9080,9 +10336,12 @@ msgstr "Java" msgid "Node.js" msgstr "Node.js" -#: src/views/project/IndexView.vue:26 src/views/website/BulkCreateModal.vue:60 -#: src/views/website/CreateModal.vue:29 src/views/website/EditModal.vue:107 -#: src/views/website/IndexView.vue:27 src/views/website/ListView.vue:127 +#: src/views/project/IndexView.vue:26 +#: src/views/website/BulkCreateModal.vue:60 +#: src/views/website/CreateModal.vue:29 +#: src/views/website/EditModal.vue:107 +#: src/views/website/IndexView.vue:27 +#: src/views/website/ListView.vue:127 msgid "PHP" msgstr "PHP" @@ -9118,7 +10377,8 @@ msgstr "您确定要删除所选项目吗?" msgid "Enter user name" msgstr "输入用户名" -#: src/views/setting/CreateModal.vue:59 src/views/setting/PasswordModal.vue:48 +#: src/views/setting/CreateModal.vue:59 +#: src/views/setting/PasswordModal.vue:48 msgid "Enter user password" msgstr "输入用户密码" @@ -9126,11 +10386,13 @@ msgstr "输入用户密码" msgid "Enter user email" msgstr "输入用户邮箱" -#: src/views/setting/IndexView.vue:100 src/views/setting/IndexView.vue:124 +#: src/views/setting/IndexView.vue:100 +#: src/views/setting/IndexView.vue:124 msgid "Panel is restarting, page will refresh in 5 seconds" msgstr "面板正在重启,页面将在 5 秒后刷新" -#: src/views/setting/IndexView.vue:118 src/views/website/EditModal.vue:297 +#: src/views/setting/IndexView.vue:118 +#: src/views/website/EditModal.vue:297 msgid "Please wait..." msgstr "请稍候……" @@ -9154,10 +10416,6 @@ msgstr "重新生成证书" msgid "Last Used" msgstr "最后使用" -#: src/views/setting/PasskeyModal.vue:47 -msgid "Never" -msgstr "从未" - #: src/views/setting/PasskeyModal.vue:63 msgid "Are you sure you want to delete this passkey?" msgstr "您确定要删除此密钥吗?" @@ -9178,14 +10436,13 @@ msgstr "注册已取消" msgid "Passkey registration failed: %{msg}" msgstr "通行密钥注册失败:%{msg}" -#: src/views/setting/PasskeyModal.vue:152 src/views/setting/SettingUser.vue:116 +#: src/views/setting/PasskeyModal.vue:152 +#: src/views/setting/SettingUser.vue:116 msgid "Passkeys" msgstr "通行密钥" #: src/views/setting/PasskeyModal.vue:162 -msgid "" -"Passkeys are only available when using a bound domain with a trusted HTTPS " -"certificate." +msgid "Passkeys are only available when using a bound domain with a trusted HTTPS certificate." msgstr "通行密钥只有在绑定域名和使用可信任 HTTPS 证书时才可用。" #: src/views/setting/PasskeyModal.vue:171 @@ -9204,7 +10461,8 @@ msgstr "稳定版" msgid "Beta" msgstr "测试版" -#: src/views/setting/SettingBase.vue:128 src/views/setting/SettingBase.vue:129 +#: src/views/setting/SettingBase.vue:128 +#: src/views/setting/SettingBase.vue:129 msgid "Panel Name" msgstr "面板名称" @@ -9297,9 +10555,7 @@ msgid "Login Timeout" msgstr "登录超时" #: src/views/setting/SettingSafe.vue:31 -msgid "" -"Set the maximum lifetime (in minutes) of the login state, after which you " -"need to log in again" +msgid "Set the maximum lifetime (in minutes) of the login state, after which you need to log in again" msgstr "设置登录状态的最长生命周期(单位:分钟),超过该时间后需要重新登录" #: src/views/setting/SettingSafe.vue:39 @@ -9311,26 +10567,19 @@ msgid "Access Entrance" msgstr "访问入口" #: src/views/setting/SettingSafe.vue:59 -msgid "" -"Set the access entrance of the panel (e.g. /mypanel) to prevent some " -"malicious access. Leave blank to disable (not recommended)" -msgstr "" -"设置面板的访问入口(例如 /mypanel)以防止恶意访问。留空以禁用(不推荐)" +msgid "Set the access entrance of the panel (e.g. /mypanel) to prevent some malicious access. Leave blank to disable (not recommended)" +msgstr "设置面板的访问入口(例如 /mypanel)以防止恶意访问。留空以禁用(不推荐)" #: src/views/setting/SettingSafe.vue:72 msgid "Entrance Error Page" msgstr "入口错误页" #: src/views/setting/SettingSafe.vue:77 -msgid "" -"Set the error page to display when accessing with wrong entrance. 418 shows " -"teapot page, Nginx 404 shows nginx style 404 page, Close Connection will " -"close the connection immediately" -msgstr "" -"设置当通过错误入口访问时显示的错误页面。418 显示茶壶页面,Nginx 404 显示 " -"Nginx 风格的 404 页面,关闭连接将立即关闭连接" +msgid "Set the error page to display when accessing with wrong entrance. 418 shows teapot page, Nginx 404 shows nginx style 404 page, Close Connection will close the connection immediately" +msgstr "设置当通过错误入口访问时显示的错误页面。418 显示茶壶页面,Nginx 404 显示 Nginx 风格的 404 页面,关闭连接将立即关闭连接" -#: src/views/setting/SettingSafe.vue:86 src/views/setting/SettingSafe.vue:90 +#: src/views/setting/SettingSafe.vue:86 +#: src/views/setting/SettingSafe.vue:90 msgid "418 I'm a teapot" msgstr "418 I'm a teapot" @@ -9347,9 +10596,7 @@ msgid "Login Captcha" msgstr "登录验证码" #: src/views/setting/SettingSafe.vue:103 -msgid "" -"When enabled, a captcha will be required after 3 failed login attempts to " -"prevent brute force attacks" +msgid "When enabled, a captcha will be required after 3 failed login attempts to prevent brute force attacks" msgstr "启用后,在 3 次登录失败后将要求输入验证码,以防止暴力破解攻击" #: src/views/setting/SettingSafe.vue:116 @@ -9357,12 +10604,8 @@ msgid "Request IP Header" msgstr "请求 IP 头" #: src/views/setting/SettingSafe.vue:121 -msgid "" -"Set the header that carries the real IP of the client, useful when using CDN " -"or reverse proxy. Leave blank to use the client IP directly" -msgstr "" -"设置承载客户端真实 IP 的请求头,在使用 CDN 或反向代理时非常有用。留空以直接使" -"用客户端 IP" +msgid "Set the header that carries the real IP of the client, useful when using CDN or reverse proxy. Leave blank to use the client IP directly" +msgstr "设置承载客户端真实 IP 的请求头,在使用 CDN 或反向代理时非常有用。留空以直接使用客户端 IP" #: src/views/setting/SettingSafe.vue:127 msgid "X-Real-IP" @@ -9373,9 +10616,7 @@ msgid "Bind Domain" msgstr "绑定域名" #: src/views/setting/SettingSafe.vue:139 -msgid "" -"Restrict panel access to the specified domain names. Leave blank to allow " -"access from any domain" +msgid "Restrict panel access to the specified domain names. Leave blank to allow access from any domain" msgstr "限制面板访问为指定的域名。留空以允许来自任何域名的访问" #: src/views/setting/SettingSafe.vue:156 @@ -9383,9 +10624,7 @@ msgid "Bind IP" msgstr "绑定 IP" #: src/views/setting/SettingSafe.vue:161 -msgid "" -"Restrict panel access to the specified IP addresses. Leave blank to allow " -"access from any IP" +msgid "Restrict panel access to the specified IP addresses. Leave blank to allow access from any IP" msgstr "限制面板访问为指定的 IP 地址。留空以允许来自任何 IP 的访问" #: src/views/setting/SettingSafe.vue:174 @@ -9393,9 +10632,7 @@ msgid "Bind UA" msgstr "绑定 UA" #: src/views/setting/SettingSafe.vue:179 -msgid "" -"Restrict panel access to the specified User-Agent strings. Leave blank to " -"allow access from any User-Agent" +msgid "Restrict panel access to the specified User-Agent strings. Leave blank to allow access from any User-Agent" msgstr "限制面板访问为指定的用户代理字符串。留空以允许任何用户代理的访问" #: src/views/setting/SettingSafe.vue:196 @@ -9403,38 +10640,24 @@ msgid "Offline Mode" msgstr "离线模式" #: src/views/setting/SettingSafe.vue:201 -msgid "" -"When enabled, the panel will not attempt to connect to external services for " -"updates or other features. This may limit some functionalities" -msgstr "" -"启用后,面板将不会尝试连接外部服务以获取更新或其他功能。这可能会限制某些功能" +msgid "When enabled, the panel will not attempt to connect to external services for updates or other features. This may limit some functionalities" +msgstr "启用后,面板将不会尝试连接外部服务以获取更新或其他功能。这可能会限制某些功能" #: src/views/setting/SettingSafe.vue:214 msgid "Auto Update" msgstr "自动更新" #: src/views/setting/SettingSafe.vue:219 -msgid "" -"When enabled, the panel will automatically check for and install updates " -"when they are available. It is recommended to keep this enabled to ensure " -"you have the latest features and security patches" -msgstr "" -"启用后,面板将自动检查并安装可用的更新。建议保持此功能启用,以确保您拥有最新" -"的功能和安全补丁" +msgid "When enabled, the panel will automatically check for and install updates when they are available. It is recommended to keep this enabled to ensure you have the latest features and security patches" +msgstr "启用后,面板将自动检查并安装可用的更新。建议保持此功能启用,以确保您拥有最新的功能和安全补丁" #: src/views/setting/SettingSafe.vue:232 msgid "Panel HTTPS" msgstr "面板 HTTPS" #: src/views/setting/SettingSafe.vue:237 -msgid "" -"Enable HTTPS for the panel. ACME will automatically obtain and renew the " -"certificate daily (requires panel accessible via public IP). Self-Signed " -"generates a certificate automatically (browsers will show a warning). Custom " -"allows you to provide your own certificate" -msgstr "" -"为面板启用 HTTPS。ACME 将每天自动获取并更新证书(需支持通过公网 IP 访问面" -"板)。自签名会自动生成证书(浏览器会显示警告)。自定义允许您提供自己的证书" +msgid "Enable HTTPS for the panel. ACME will automatically obtain and renew the certificate daily (requires panel accessible via public IP). Self-Signed generates a certificate automatically (browsers will show a warning). Custom allows you to provide your own certificate" +msgstr "为面板启用 HTTPS。ACME 将每天自动获取并更新证书(需支持通过公网 IP 访问面板)。自签名会自动生成证书(浏览器会显示警告)。自定义允许您提供自己的证书" #: src/views/setting/SettingSafe.vue:247 msgid "ACME (Auto)" @@ -9448,16 +10671,14 @@ msgstr "自签名" msgid "Custom Certificate" msgstr "自定义证书" -#: src/views/setting/SettingSafe.vue:257 src/views/setting/SettingSafe.vue:262 +#: src/views/setting/SettingSafe.vue:257 +#: src/views/setting/SettingSafe.vue:262 msgid "Panel Public IP" msgstr "面板公网 IP" #: src/views/setting/SettingSafe.vue:267 -msgid "" -"Panel public IP is used to issue HTTPS certificates using ACME. Ensure that " -"the entered IP address is accessible from the public network." -msgstr "" -"面板公网 IP 用于使用 ACME 颁发 HTTPS 证书。确保输入的 IP 地址可以从公网访问。" +msgid "Panel public IP is used to issue HTTPS certificates using ACME. Ensure that the entered IP address is accessible from the public network." +msgstr "面板公网 IP 用于使用 ACME 颁发 HTTPS 证书。确保输入的 IP 地址可以从公网访问。" #: src/views/setting/SettingUser.vue:56 msgid "2FA" @@ -9467,7 +10688,8 @@ msgstr "两步验证" msgid "Disabled successfully" msgstr "禁用成功" -#: src/views/setting/SettingUser.vue:104 src/views/setting/TokenModal.vue:202 +#: src/views/setting/SettingUser.vue:104 +#: src/views/setting/TokenModal.vue:202 msgid "Access Tokens" msgstr "访问令牌" @@ -9495,19 +10717,23 @@ msgstr "复制并关闭" msgid "Copy failed" msgstr "复制失败" -#: src/views/setting/TokenModal.vue:212 src/views/setting/TokenModal.vue:239 +#: src/views/setting/TokenModal.vue:212 +#: src/views/setting/TokenModal.vue:239 msgid "Create Access Token" msgstr "创建访问令牌" -#: src/views/setting/TokenModal.vue:248 src/views/setting/TokenModal.vue:286 +#: src/views/setting/TokenModal.vue:248 +#: src/views/setting/TokenModal.vue:286 msgid "IP White List" msgstr "IP 白名单" -#: src/views/setting/TokenModal.vue:251 src/views/setting/TokenModal.vue:289 +#: src/views/setting/TokenModal.vue:251 +#: src/views/setting/TokenModal.vue:289 msgid "127.0.0.1" msgstr "127.0.0.1" -#: src/views/setting/TokenModal.vue:259 src/views/setting/TokenModal.vue:297 +#: src/views/setting/TokenModal.vue:259 +#: src/views/setting/TokenModal.vue:297 msgid "Please select the expiration time" msgstr "请选择到期时间" @@ -9528,8 +10754,7 @@ msgid "Scan the QR code with your 2FA app and enter the code below" msgstr "用您的两步验证应用扫描二维码并在下方输入代码" #: src/views/setting/TwoFaModal.vue:73 -msgid "" -"If you cannot scan the QR code, please enter the URL below in your 2FA app" +msgid "If you cannot scan the QR code, please enter the URL below in your 2FA app" msgstr "如果您不能扫描二维码,请在您的两步验证应用中输入下面的 URL" #: src/views/setting/TwoFaModal.vue:86 @@ -9540,32 +10765,37 @@ msgstr "代码" msgid "Enter the code" msgstr "输入代码" -#: src/views/ssh/CreateModal.vue:53 src/views/ssh/IndexView.vue:586 +#: src/views/ssh/CreateModal.vue:53 +#: src/views/ssh/IndexView.vue:586 msgid "Create Host" msgstr "创建主机" -#: src/views/ssh/CreateModal.vue:76 src/views/ssh/UpdateModal.vue:82 +#: src/views/ssh/CreateModal.vue:76 +#: src/views/ssh/UpdateModal.vue:82 msgid "Authentication Method" msgstr "认证方式" -#: src/views/ssh/CreateModal.vue:95 src/views/ssh/UpdateModal.vue:101 +#: src/views/ssh/CreateModal.vue:95 +#: src/views/ssh/UpdateModal.vue:101 msgid "Passphrase" msgstr "密码短语" -#: src/views/ssh/CreateModal.vue:100 src/views/ssh/UpdateModal.vue:106 +#: src/views/ssh/CreateModal.vue:100 +#: src/views/ssh/UpdateModal.vue:106 msgid "Leave empty if key has no passphrase" msgstr "如果密钥没有密码短语,请留空" -#: src/views/ssh/CreateModal.vue:103 src/views/ssh/UpdateModal.vue:109 +#: src/views/ssh/CreateModal.vue:103 +#: src/views/ssh/UpdateModal.vue:109 msgid "Remarks" msgstr "备注" #: src/views/ssh/IndexView.vue:67 -msgid "" -"Clipboard is unavailable in non-HTTPS context, please use Ctrl+V to paste" +msgid "Clipboard is unavailable in non-HTTPS context, please use Ctrl+V to paste" msgstr "剪贴板在非 HTTPS 环境下不可用,请使用 Ctrl+V 粘贴" -#: src/views/ssh/IndexView.vue:97 src/views/ssh/IndexView.vue:178 +#: src/views/ssh/IndexView.vue:97 +#: src/views/ssh/IndexView.vue:178 msgid "File Transfer" msgstr "文件互传" @@ -9589,7 +10819,8 @@ msgstr "新建会话" msgid "Manage Hosts" msgstr "管理主机" -#: src/views/ssh/IndexView.vue:580 src/views/toolbox/SystemView.vue:184 +#: src/views/ssh/IndexView.vue:580 +#: src/views/toolbox/SystemView.vue:184 msgid "Hosts" msgstr "Hosts" @@ -9626,13 +10857,8 @@ msgid "Transfer Directories" msgstr "传输目录" #: src/views/ssh/SftpPanel.vue:77 -msgid "" -"The selection contains %{ count } directory(ies), which will be transferred " -"recursively and may take a long time. For large directories, compressing " -"before transferring is recommended. Continue?" -msgstr "" -"所选内容包含 %{ count } 个目录,这些目录将进行递归传输且可能需要很长时间。对" -"于大型目录,建议在传输前进行压缩。是否继续?" +msgid "The selection contains %{ count } directory(ies), which will be transferred recursively and may take a long time. For large directories, compressing before transferring is recommended. Continue?" +msgstr "所选内容包含 %{ count } 个目录,这些目录将进行递归传输且可能需要很长时间。对于大型目录,建议在传输前进行压缩。是否继续?" #: src/views/ssh/SftpPanel.vue:152 msgid "Connection closed" @@ -9658,8 +10884,10 @@ msgstr "传输队列" msgid "Clear Finished" msgstr "清除已完成" -#: src/views/ssh/SftpPanel.vue:294 src/views/task/TaskView.vue:42 -#: src/views/toolbox/ProcessView.vue:53 src/views/toolbox/ProcessView.vue:89 +#: src/views/ssh/SftpPanel.vue:294 +#: src/views/task/TaskView.vue:42 +#: src/views/toolbox/ProcessView.vue:53 +#: src/views/toolbox/ProcessView.vue:89 msgid "Waiting" msgstr "等待中" @@ -9679,7 +10907,8 @@ msgstr "选择网站以自动填充名称与路径" msgid "Rule identifier, usually the website name" msgstr "规则标识,通常为网站名称" -#: src/views/tamper/RuleModal.vue:112 src/views/tamper/TamperView.vue:119 +#: src/views/tamper/RuleModal.vue:112 +#: src/views/tamper/TamperView.vue:119 msgid "Protected Directory" msgstr "保护目录" @@ -9692,12 +10921,8 @@ msgid "Exclude Paths" msgstr "排除路径" #: src/views/tamper/RuleModal.vue:127 -msgid "" -"Leave extensions empty to protect all files (directories become append-" -"only). Excludes accept a path segment name (e.g. cache) or an absolute path." -msgstr "" -"扩展名留空则保护全部文件(目录变为仅可追加)。排除项可填路径段名称(如 " -"cache)或绝对路径。" +msgid "Leave extensions empty to protect all files (directories become append-only). Excludes accept a path segment name (e.g. cache) or an absolute path." +msgstr "扩展名留空则保护全部文件(目录变为仅可追加)。排除项可填路径段名称(如 cache)或绝对路径。" #: src/views/tamper/TamperView.vue:49 msgid "eBPF mode is not available, please activate it first" @@ -9708,13 +10933,8 @@ msgid "Activate eBPF LSM" msgstr "激活 eBPF LSM" #: src/views/tamper/TamperView.vue:67 -msgid "" -"The panel will modify the kernel boot parameters (append bpf to the LSM " -"list) and reboot the server immediately. All services will be interrupted " -"during the reboot. Continue?" -msgstr "" -"面板将修改内核启动参数(向 LSM 列表追加 bpf)并立即重启服务器,重启期间所有服" -"务将中断,是否继续?" +msgid "The panel will modify the kernel boot parameters (append bpf to the LSM list) and reboot the server immediately. All services will be interrupted during the reboot. Continue?" +msgstr "面板将修改内核启动参数(向 LSM 列表追加 bpf)并立即重启服务器,重启期间所有服务将中断,是否继续?" #: src/views/tamper/TamperView.vue:77 msgid "The server is rebooting, please reconnect later" @@ -9732,7 +10952,8 @@ msgstr "全部文件" msgid "Operation" msgstr "操作" -#: src/views/tamper/TamperView.vue:211 src/views/tamper/TamperView.vue:373 +#: src/views/tamper/TamperView.vue:211 +#: src/views/tamper/TamperView.vue:373 #: src/views/website/EditModal.vue:2224 msgid "Clear Logs" msgstr "清除日志" @@ -9770,42 +10991,31 @@ msgid "Mode Description" msgstr "模式说明" #: src/views/tamper/TamperView.vue:260 -msgid "" -"Locks files with the immutable attribute, enforced by the kernel at the VFS " -"layer. Works on all distributions with no kernel dependency. Blocks " -"tampering by web processes, but not root." -msgstr "" -"通过不可变属性锁定文件,由内核在 VFS 层强制执行,适用于所有发行版且无内核依" -"赖,可阻止网站进程篡改,但无法阻止 root。" +msgid "Locks files with the immutable attribute, enforced by the kernel at the VFS layer. Works on all distributions with no kernel dependency. Blocks tampering by web processes, but not root." +msgstr "通过不可变属性锁定文件,由内核在 VFS 层强制执行,适用于所有发行版且无内核依赖,可阻止网站进程篡改,但无法阻止 root。" #: src/views/tamper/TamperView.vue:267 -msgid "" -"Intercepts write/delete/rename via eBPF-LSM with per-process tracing. More " -"precise and auditable, but requires the bpf LSM to be active in the kernel." -msgstr "" -"通过 eBPF-LSM 拦截写入/删除/重命名并追踪进程,更精确且可审计,但要求内核已启" -"用 bpf LSM。" +msgid "Intercepts write/delete/rename via eBPF-LSM with per-process tracing. More precise and auditable, but requires the bpf LSM to be active in the kernel." +msgstr "通过 eBPF-LSM 拦截写入/删除/重命名并追踪进程,更精确且可审计,但要求内核已启用 bpf LSM。" #: src/views/tamper/TamperView.vue:273 msgid "Block New Files" msgstr "阻止新建文件" #: src/views/tamper/TamperView.vue:278 -msgid "" -"Reject newly created files of protected types in protected directories " -"(denied by kernel in eBPF mode, deleted in chattr mode). When off, new files " -"are logged and protected instead." -msgstr "" -"拒绝在受保护目录中创建受保护类型的新文件(在 eBPF 模式下被内核拒绝,在 " -"chattr 模式下被删除)。关闭时,新文件将被记录并受到保护。" +msgid "Reject newly created files of protected types in protected directories (denied by kernel in eBPF mode, deleted in chattr mode). When off, new files are logged and protected instead." +msgstr "拒绝在受保护目录中创建受保护类型的新文件(在 eBPF 模式下被内核拒绝,在 chattr 模式下被删除)。关闭时,新文件将被记录并受到保护。" #: src/views/tamper/TamperView.vue:285 msgid "Log Retention (days)" msgstr "日志保留(天)" -#: src/views/tamper/TamperView.vue:295 src/views/website/SettingView.vue:109 -#: src/views/website/SettingView.vue:124 src/views/website/SettingView.vue:139 -#: src/views/website/SettingView.vue:163 src/views/website/SettingView.vue:215 +#: src/views/tamper/TamperView.vue:295 +#: src/views/website/SettingView.vue:109 +#: src/views/website/SettingView.vue:124 +#: src/views/website/SettingView.vue:139 +#: src/views/website/SettingView.vue:163 +#: src/views/website/SettingView.vue:215 #: src/views/website/SettingView.vue:278 msgid "Save Changes" msgstr "保存更改" @@ -9882,17 +11092,20 @@ msgstr "日志轮转 - 网站" msgid "Log Rotation - Container" msgstr "日志轮转 - 容器" -#: src/views/task/CreateModal.vue:152 src/views/task/CreateModal.vue:335 +#: src/views/task/CreateModal.vue:152 +#: src/views/task/CreateModal.vue:335 #: src/views/task/CronView.vue:71 msgid "Log Rotation" msgstr "日志轮转" -#: src/views/task/CreateModal.vue:157 src/views/task/CreateModal.vue:336 +#: src/views/task/CreateModal.vue:157 +#: src/views/task/CreateModal.vue:336 #: src/views/task/CronView.vue:68 msgid "Access URL" msgstr "访问 URL" -#: src/views/task/CreateModal.vue:159 src/views/task/CreateModal.vue:337 +#: src/views/task/CreateModal.vue:159 +#: src/views/task/CreateModal.vue:337 #: src/views/task/CronView.vue:69 msgid "Sync Time" msgstr "同步时间" @@ -9905,25 +11118,32 @@ msgstr "创建计划任务" msgid "Edit Scheduled Task" msgstr "编辑计划任务" -#: src/views/task/CreateModal.vue:329 src/views/task/CronView.vue:57 +#: src/views/task/CreateModal.vue:329 +#: src/views/task/CronView.vue:57 msgid "Task Type" msgstr "任务类型" -#: src/views/task/CreateModal.vue:333 src/views/task/CronView.vue:66 +#: src/views/task/CreateModal.vue:333 +#: src/views/task/CronView.vue:66 msgid "Run Script" msgstr "运行脚本" -#: src/views/task/CreateModal.vue:334 src/views/task/CronView.vue:67 +#: src/views/task/CreateModal.vue:334 +#: src/views/task/CronView.vue:67 msgid "Backup Data" msgstr "备份数据" -#: src/views/task/CreateModal.vue:341 src/views/task/CreateModal.vue:342 -#: src/views/task/CronView.vue:50 src/views/task/CronView.vue:318 -#: src/views/task/CronView.vue:319 src/views/task/TaskView.vue:27 +#: src/views/task/CreateModal.vue:341 +#: src/views/task/CreateModal.vue:342 +#: src/views/task/CronView.vue:50 +#: src/views/task/CronView.vue:318 +#: src/views/task/CronView.vue:319 +#: src/views/task/TaskView.vue:27 msgid "Task Name" msgstr "任务名称" -#: src/views/task/CreateModal.vue:349 src/views/task/CronView.vue:90 +#: src/views/task/CreateModal.vue:349 +#: src/views/task/CronView.vue:90 #: src/views/task/CronView.vue:321 msgid "Task Schedule" msgstr "任务周期" @@ -9932,14 +11152,14 @@ msgstr "任务周期" msgid "Retention Count" msgstr "保留数量" -#: src/views/task/CreateModal.vue:359 src/views/task/CronView.vue:324 +#: src/views/task/CreateModal.vue:359 +#: src/views/task/CronView.vue:324 msgid "Process Lock" msgstr "进程锁" -#: src/views/task/CreateModal.vue:363 src/views/task/CronView.vue:328 -msgid "" -"Prevent duplicate execution: skip this run if the previous one is still " -"running" +#: src/views/task/CreateModal.vue:363 +#: src/views/task/CronView.vue:328 +msgid "Prevent duplicate execution: skip this run if the previous one is still running" msgstr "防止重复执行:如果上次运行未结束,则跳过本次运行" #: src/views/task/CreateModal.vue:370 @@ -9962,7 +11182,8 @@ msgstr "头部名称" msgid "Header Value" msgstr "头部值" -#: src/views/task/CreateModal.vue:415 src/views/task/CreateModal.vue:420 +#: src/views/task/CreateModal.vue:415 +#: src/views/task/CreateModal.vue:420 msgid "Request Body" msgstr "请求体" @@ -10006,7 +11227,8 @@ msgstr "Valkey" msgid "Rotation Type" msgstr "轮转类型" -#: src/views/task/CreateModal.vue:494 src/views/task/CreateModal.vue:500 +#: src/views/task/CreateModal.vue:494 +#: src/views/task/CreateModal.vue:500 #: src/views/website/CreateModal.vue:252 msgid "Select Database" msgstr "选择数据库" @@ -10015,7 +11237,8 @@ msgstr "选择数据库" msgid "Enter directory path" msgstr "输入目录路径" -#: src/views/task/CreateModal.vue:526 src/views/task/CreateModal.vue:532 +#: src/views/task/CreateModal.vue:526 +#: src/views/task/CreateModal.vue:532 msgid "Select Container" msgstr "选择容器" @@ -10095,11 +11318,8 @@ msgid "Pending benchmark" msgstr "待跑分" #: src/views/toolbox/BenchmarkView.vue:90 -msgid "" -"Benchmark results are for reference only and may differ from actual " -"performance due to system resource scheduling, caching, and other factors!" -msgstr "" -"跑分结果仅供参考,由于系统资源调度、缓存和其他因素,可能与实际性能有所不同!" +msgid "Benchmark results are for reference only and may differ from actual performance due to system resource scheduling, caching, and other factors!" +msgstr "跑分结果仅供参考,由于系统资源调度、缓存和其他因素,可能与实际性能有所不同!" #: src/views/toolbox/BenchmarkView.vue:97 msgid "Benchmarking in progress, it may take some time..." @@ -10177,7 +11397,8 @@ msgstr "跑分中……" msgid "Start Benchmark" msgstr "开始跑分" -#: src/views/toolbox/disk/RaidView.vue:93 src/views/toolbox/DiskView.vue:603 +#: src/views/toolbox/disk/RaidView.vue:93 +#: src/views/toolbox/DiskView.vue:603 #: src/views/toolbox/DiskView.vue:912 msgid "Device" msgstr "设备" @@ -10382,7 +11603,8 @@ msgstr "无可用 SMART 属性" msgid "Failed to parse disk data, please refresh and try again" msgstr "无法解析磁盘数据,请刷新并重试" -#: src/views/toolbox/DiskView.vue:231 src/views/toolbox/DiskView.vue:687 +#: src/views/toolbox/DiskView.vue:231 +#: src/views/toolbox/DiskView.vue:687 #: src/views/toolbox/DiskView.vue:726 msgid "Partition" msgstr "分区" @@ -10395,21 +11617,21 @@ msgstr "已用" msgid "Not Mounted" msgstr "未挂载" -#: src/views/toolbox/DiskView.vue:290 src/views/toolbox/DiskView.vue:605 +#: src/views/toolbox/DiskView.vue:290 +#: src/views/toolbox/DiskView.vue:605 msgid "FS" msgstr "文件系统" -#: src/views/toolbox/DiskView.vue:340 src/views/toolbox/DiskView.vue:476 -#: src/views/toolbox/DiskView.vue:517 src/views/toolbox/DiskView.vue:560 +#: src/views/toolbox/DiskView.vue:340 +#: src/views/toolbox/DiskView.vue:476 +#: src/views/toolbox/DiskView.vue:517 +#: src/views/toolbox/DiskView.vue:560 msgid "Please fill in all fields" msgstr "请填写所有字段" #: src/views/toolbox/DiskView.vue:344 -msgid "" -"Are you sure you want to mount %{ device } to %{ path } and write to fstab " -"for auto-mount on boot?" -msgstr "" -"您确定要将 %{ device } 挂载到 %{ path } 并写入 fstab 以在启动时自动挂载吗?" +msgid "Are you sure you want to mount %{ device } to %{ path } and write to fstab for auto-mount on boot?" +msgstr "您确定要将 %{ device } 挂载到 %{ path } 并写入 fstab 以在启动时自动挂载吗?" #: src/views/toolbox/DiskView.vue:348 msgid "Are you sure you want to mount %{ device } to %{ path }?" @@ -10427,20 +11649,22 @@ msgstr "您确定要卸载这个分区吗?" msgid "Unmounted successfully" msgstr "卸载成功" -#: src/views/toolbox/DiskView.vue:390 src/views/toolbox/DiskView.vue:437 +#: src/views/toolbox/DiskView.vue:390 +#: src/views/toolbox/DiskView.vue:437 msgid "Please select a device" msgstr "请选择一个设备" -#: src/views/toolbox/DiskView.vue:394 src/views/toolbox/DiskView.vue:417 -#: src/views/toolbox/DiskView.vue:459 src/views/toolbox/DiskView.vue:499 -#: src/views/toolbox/DiskView.vue:542 src/views/toolbox/DiskView.vue:586 +#: src/views/toolbox/DiskView.vue:394 +#: src/views/toolbox/DiskView.vue:417 +#: src/views/toolbox/DiskView.vue:459 +#: src/views/toolbox/DiskView.vue:499 +#: src/views/toolbox/DiskView.vue:542 +#: src/views/toolbox/DiskView.vue:586 msgid "Dangerous Operation" msgstr "危险操作" #: src/views/toolbox/DiskView.vue:395 -msgid "" -"Formatting will erase all data on the partition. This operation is " -"irreversible. Are you sure?" +msgid "Formatting will erase all data on the partition. This operation is irreversible. Are you sure?" msgstr "格式化将删除分区上的所有数据。此操作是不可逆的。您确定吗?" #: src/views/toolbox/DiskView.vue:398 @@ -10456,12 +11680,8 @@ msgid "Please enter disk name" msgstr "请输入磁盘名称" #: src/views/toolbox/DiskView.vue:418 -msgid "" -"This will delete all partitions on %{ device } and create a single " -"partition. All data will be permanently lost. Are you absolutely sure?" -msgstr "" -"这将删除 %{ device } 上的所有分区并创建一个单一的分区。所有数据将永久丢失。您" -"确定吗?" +msgid "This will delete all partitions on %{ device } and create a single partition. All data will be permanently lost. Are you absolutely sure?" +msgstr "这将删除 %{ device } 上的所有分区并创建一个单一的分区。所有数据将永久丢失。您确定吗?" #: src/views/toolbox/DiskView.vue:422 msgid "Confirm Initialize" @@ -10496,9 +11716,7 @@ msgid "Volume group created successfully" msgstr "卷组创建成功" #: src/views/toolbox/DiskView.vue:500 -msgid "" -"Are you sure you want to remove the volume group %{ name }? All logical " -"volumes in this group will be deleted!" +msgid "Are you sure you want to remove the volume group %{ name }? All logical volumes in this group will be deleted!" msgstr "您确定要删除卷组 %{ name } 吗?此组中的所有逻辑卷将被删除!" #: src/views/toolbox/DiskView.vue:508 @@ -10506,8 +11724,7 @@ msgid "Volume group removed successfully" msgstr "卷组删除成功" #: src/views/toolbox/DiskView.vue:522 -msgid "" -"Are you sure you want to create logical volume %{ name } with %{ size }GB?" +msgid "Are you sure you want to create logical volume %{ name } with %{ size }GB?" msgstr "您确定要创建逻辑卷 %{ name },大小为 %{ size }GB 吗?" #: src/views/toolbox/DiskView.vue:530 @@ -10515,9 +11732,7 @@ msgid "Logical volume created successfully" msgstr "逻辑卷创建成功" #: src/views/toolbox/DiskView.vue:543 -msgid "" -"Are you sure you want to remove the logical volume %{ path }? All data on " -"this volume will be lost!" +msgid "Are you sure you want to remove the logical volume %{ path }? All data on this volume will be lost!" msgstr "您确定要删除逻辑卷 %{ path } 吗?该卷上的所有数据将丢失!" #: src/views/toolbox/DiskView.vue:551 @@ -10533,11 +11748,8 @@ msgid "Logical volume extended successfully" msgstr "逻辑卷扩展成功" #: src/views/toolbox/DiskView.vue:587 -msgid "" -"Are you sure you want to remove the fstab entry for %{ mountPoint }? This " -"will prevent auto-mount on boot." -msgstr "" -"您确定要删除 %{ mountPoint } 的 fstab 条目吗?这将阻止在启动时自动挂载。" +msgid "Are you sure you want to remove the fstab entry for %{ mountPoint }? This will prevent auto-mount on boot." +msgstr "您确定要删除 %{ mountPoint } 的 fstab 条目吗?这将阻止在启动时自动挂载。" #: src/views/toolbox/DiskView.vue:595 msgid "Fstab entry removed successfully" @@ -10559,11 +11771,13 @@ msgstr "%{ count } 个分区" msgid "No disks found" msgstr "未找到磁盘" -#: src/views/toolbox/DiskView.vue:683 src/views/toolbox/DiskView.vue:713 +#: src/views/toolbox/DiskView.vue:683 +#: src/views/toolbox/DiskView.vue:713 msgid "Mount" msgstr "挂载" -#: src/views/toolbox/DiskView.vue:691 src/views/toolbox/DiskView.vue:730 +#: src/views/toolbox/DiskView.vue:691 +#: src/views/toolbox/DiskView.vue:730 msgid "Select partition" msgstr "选择分区" @@ -10583,7 +11797,8 @@ msgstr "例如 defaults,noatime" msgid "Auto-mount on boot" msgstr "启动时自动挂载" -#: src/views/toolbox/DiskView.vue:719 src/views/toolbox/DiskView.vue:741 +#: src/views/toolbox/DiskView.vue:719 +#: src/views/toolbox/DiskView.vue:741 msgctxt "disk action" msgid "Format" msgstr "格式化" @@ -10592,18 +11807,18 @@ msgstr "格式化" msgid "Warning: Formatting will erase all data!" msgstr "警告:格式化将清除所有数据!" -#: src/views/toolbox/DiskView.vue:735 src/views/toolbox/DiskView.vue:767 +#: src/views/toolbox/DiskView.vue:735 +#: src/views/toolbox/DiskView.vue:767 msgid "Filesystem Type" msgstr "文件系统类型" -#: src/views/toolbox/DiskView.vue:747 src/views/toolbox/DiskView.vue:773 +#: src/views/toolbox/DiskView.vue:747 +#: src/views/toolbox/DiskView.vue:773 msgid "Initialize" msgstr "初始化" #: src/views/toolbox/DiskView.vue:751 -msgid "" -"Warning: This will delete all partitions and create a single partition. All " -"data will be lost!" +msgid "Warning: This will delete all partitions and create a single partition. All data will be lost!" msgstr "警告:这将删除所有分区并创建一个单分区。所有数据将丢失!" #: src/views/toolbox/DiskView.vue:762 @@ -10622,7 +11837,8 @@ msgstr "无 fstab 条目" msgid "LVM Management" msgstr "LVM 管理" -#: src/views/toolbox/DiskView.vue:803 src/views/toolbox/DiskView.vue:935 +#: src/views/toolbox/DiskView.vue:803 +#: src/views/toolbox/DiskView.vue:935 msgid "Physical Volumes" msgstr "物理卷" @@ -10646,7 +11862,8 @@ msgstr "逻辑卷" msgid "No logical volumes" msgstr "无逻辑卷" -#: src/views/toolbox/DiskView.vue:909 src/views/toolbox/DiskView.vue:922 +#: src/views/toolbox/DiskView.vue:909 +#: src/views/toolbox/DiskView.vue:922 msgid "Create PV" msgstr "创建物理卷" @@ -10654,7 +11871,8 @@ msgstr "创建物理卷" msgid "Select device" msgstr "选择设备" -#: src/views/toolbox/DiskView.vue:928 src/views/toolbox/DiskView.vue:946 +#: src/views/toolbox/DiskView.vue:928 +#: src/views/toolbox/DiskView.vue:946 msgid "Create VG" msgstr "创建卷组" @@ -10670,7 +11888,8 @@ msgstr "输入卷组名" msgid "Select PVs" msgstr "选择物理卷" -#: src/views/toolbox/DiskView.vue:952 src/views/toolbox/DiskView.vue:975 +#: src/views/toolbox/DiskView.vue:952 +#: src/views/toolbox/DiskView.vue:975 msgid "Create LV" msgstr "创建逻辑卷" @@ -10694,7 +11913,8 @@ msgstr "选择卷组" msgid "Size (GB)" msgstr "大小(GB)" -#: src/views/toolbox/DiskView.vue:981 src/views/toolbox/DiskView.vue:1004 +#: src/views/toolbox/DiskView.vue:981 +#: src/views/toolbox/DiskView.vue:1004 msgid "Extend LV" msgstr "扩展逻辑卷" @@ -10783,9 +12003,7 @@ msgid "Log Cleaner" msgstr "日志清理" #: src/views/toolbox/LogView.vue:142 -msgid "" -"Scan and clean redundant logs to free up disk space. Cleaning is " -"irreversible." +msgid "Scan and clean redundant logs to free up disk space. Cleaning is irreversible." msgstr "扫描并清理冗余日志以释放磁盘空间。清理操作不可逆。" #: src/views/toolbox/LogView.vue:158 @@ -10844,7 +12062,8 @@ msgstr "1Panel → AcePanel" msgid "Pull websites and databases from 1Panel." msgstr "从 1Panel 拉取网站和数据库。" -#: src/views/toolbox/MigrationView.vue:77 src/views/website/CreateModal.vue:280 +#: src/views/toolbox/MigrationView.vue:77 +#: src/views/website/CreateModal.vue:280 #: src/views/website/CreateModal.vue:285 msgid "Database User" msgstr "数据库用户" @@ -10923,9 +12142,7 @@ msgid "Please select at least one resource to migrate." msgstr "请至少选择一个要迁移的资源。" #: src/views/toolbox/MigrationView.vue:337 -msgid "" -"The selection contains blocked resources. Resolve them or enable skipping " -"first." +msgid "The selection contains blocked resources. Resolve them or enable skipping first." msgstr "所选内容包含受阻资源。请先解决问题或启用跳过。" #: src/views/toolbox/MigrationView.vue:343 @@ -10997,12 +12214,8 @@ msgid "API key of the source panel" msgstr "源面板 API 密钥" #: src/views/toolbox/MigrationView.vue:543 -msgid "" -"The target API must allow this server address. Missing database servers and " -"runtimes are reported in the next step." -msgstr "" -"目标 API 必须允许本服务器地址访问。缺少的数据库服务器和运行环境将在下一步提" -"示。" +msgid "The target API must allow this server address. Missing database servers and runtimes are reported in the next step." +msgstr "目标 API 必须允许本服务器地址访问。缺少的数据库服务器和运行环境将在下一步提示。" #: src/views/toolbox/MigrationView.vue:546 msgid "The source panel API must be enabled and allow this server address." @@ -11195,18 +12408,11 @@ msgid "Confirm Network Configuration Change" msgstr "确认更改网络配置" #: src/views/toolbox/network/InterfaceView.vue:293 -msgid "" -"Changing the primary IP address, gateway, or automatic address assignment " -"may interrupt the panel connection. The change will be rolled back " -"automatically unless you confirm it afterwards. Continue?" -msgstr "" -"更改主 IP 地址、网关或自动地址分配可能会中断面板连接。除非随后进行确认,否则" -"更改将自动回滚。是否继续?" +msgid "Changing the primary IP address, gateway, or automatic address assignment may interrupt the panel connection. The change will be rolled back automatically unless you confirm it afterwards. Continue?" +msgstr "更改主 IP 地址、网关或自动地址分配可能会中断面板连接。除非随后进行确认,否则更改将自动回滚。是否继续?" #: src/views/toolbox/network/InterfaceView.vue:323 -msgid "" -"Network configuration changed. Confirm within %{ seconds }s to keep it, " -"otherwise it will be rolled back automatically." +msgid "Network configuration changed. Confirm within %{ seconds }s to keep it, otherwise it will be rolled back automatically." msgstr "网络配置已更改。请在 %{ seconds } 秒内确认以保留更改,否则将自动回滚。" #: src/views/toolbox/network/InterfaceView.vue:327 @@ -11257,7 +12463,8 @@ msgstr "本地地址" msgid "Remote Address" msgstr "远程地址" -#: src/views/toolbox/NetworkView.vue:150 src/views/toolbox/ProcessView.vue:477 +#: src/views/toolbox/NetworkView.vue:150 +#: src/views/toolbox/ProcessView.vue:477 msgid "Network Connections" msgstr "网络连接" @@ -11293,7 +12500,8 @@ msgstr "Goroutines" msgid "Cgo Calls" msgstr "Cgo 调用" -#: src/views/toolbox/PanelView.vue:123 src/views/toolbox/PanelView.vue:145 +#: src/views/toolbox/PanelView.vue:123 +#: src/views/toolbox/PanelView.vue:145 msgid "Allocated" msgstr "已分配" @@ -11313,7 +12521,8 @@ msgstr "分配次数" msgid "Frees" msgstr "释放次数" -#: src/views/toolbox/PanelView.vue:151 src/views/toolbox/ProcessView.vue:51 +#: src/views/toolbox/PanelView.vue:151 +#: src/views/toolbox/ProcessView.vue:51 #: src/views/toolbox/ProcessView.vue:85 msgid "Idle" msgstr "空闲" @@ -11394,15 +12603,18 @@ msgstr "总计:%{ count }" msgid "All Status" msgstr "所有状态" -#: src/views/toolbox/ProcessView.vue:49 src/views/toolbox/ProcessView.vue:81 +#: src/views/toolbox/ProcessView.vue:49 +#: src/views/toolbox/ProcessView.vue:81 msgid "Sleeping" msgstr "睡眠" -#: src/views/toolbox/ProcessView.vue:52 src/views/toolbox/ProcessView.vue:87 +#: src/views/toolbox/ProcessView.vue:52 +#: src/views/toolbox/ProcessView.vue:87 msgid "Zombie" msgstr "僵尸进程" -#: src/views/toolbox/ProcessView.vue:54 src/views/toolbox/ProcessView.vue:91 +#: src/views/toolbox/ProcessView.vue:54 +#: src/views/toolbox/ProcessView.vue:91 msgid "Locked" msgstr "已锁定" @@ -11446,15 +12658,18 @@ msgstr "用户信号 2(SIGUSR2)" msgid "Blocked" msgstr "阻塞" -#: src/views/toolbox/ProcessView.vue:114 src/views/toolbox/ProcessView.vue:390 +#: src/views/toolbox/ProcessView.vue:114 +#: src/views/toolbox/ProcessView.vue:390 msgid "Parent PID" msgstr "父进程 PID" -#: src/views/toolbox/ProcessView.vue:121 src/views/toolbox/ProcessView.vue:402 +#: src/views/toolbox/ProcessView.vue:121 +#: src/views/toolbox/ProcessView.vue:402 msgid "Threads" msgstr "线程" -#: src/views/toolbox/ProcessView.vue:162 src/views/toolbox/ProcessView.vue:423 +#: src/views/toolbox/ProcessView.vue:162 +#: src/views/toolbox/ProcessView.vue:423 msgid "Start Time" msgstr "启动时间" @@ -11554,7 +12769,8 @@ msgstr "请输入密码" msgid "Root password updated" msgstr "Root 密码已更新" -#: src/views/toolbox/SshView.vue:135 src/views/toolbox/SshView.vue:148 +#: src/views/toolbox/SshView.vue:135 +#: src/views/toolbox/SshView.vue:148 msgid "SSH key generated" msgstr "SSH 密钥已生成" @@ -11635,9 +12851,7 @@ msgid "Root Private Key" msgstr "Root 私钥" #: src/views/toolbox/SshView.vue:365 -msgid "" -"This is the private key of the root user. Keep it safe and use it to login " -"to this server." +msgid "This is the private key of the root user. Keep it safe and use it to login to this server." msgstr "这是 root 用户的私钥。请妥善保管,并用它登录到此服务器。" #: src/views/toolbox/SshView.vue:375 @@ -11669,9 +12883,7 @@ msgid "Enter hostname, e.g. myserver" msgstr "输入主机名,例如 myserver" #: src/views/toolbox/SystemView.vue:201 -msgid "" -"After manually changing the time, it may still be overwritten by system " -"automatic time synchronization." +msgid "After manually changing the time, it may still be overwritten by system automatic time synchronization." msgstr "手动更改时间后,系统自动时间同步可能仍会覆盖设置。" #: src/views/toolbox/SystemView.vue:207 @@ -11707,15 +12919,11 @@ msgid "System NTP Server Configuration" msgstr "系统 NTP 服务器配置" #: src/views/toolbox/SystemView.vue:265 -msgid "" -"Unable to detect NTP service. Please ensure chrony or systemd-timesyncd is " -"installed." +msgid "Unable to detect NTP service. Please ensure chrony or systemd-timesyncd is installed." msgstr "无法检测到 NTP 服务。请确保已安装 chrony 或 systemd-timesyncd。" #: src/views/toolbox/SystemView.vue:272 -msgid "" -"Current NTP service: %{ service }. Changes will be applied to system " -"configuration." +msgid "Current NTP service: %{ service }. Changes will be applied to system configuration." msgstr "当前 NTP 服务:%{ service }。更改将应用于系统配置。" #: src/views/toolbox/SystemView.vue:285 @@ -11746,31 +12954,38 @@ msgstr "您确定要删除此 Web 钩子吗?" msgid "URL copied to clipboard" msgstr "URL 已复制到剪贴板" -#: src/views/toolbox/WebHookView.vue:232 src/views/toolbox/WebHookView.vue:259 +#: src/views/toolbox/WebHookView.vue:232 +#: src/views/toolbox/WebHookView.vue:259 msgid "Please enter a name" msgstr "请输入名称" -#: src/views/toolbox/WebHookView.vue:236 src/views/toolbox/WebHookView.vue:263 +#: src/views/toolbox/WebHookView.vue:236 +#: src/views/toolbox/WebHookView.vue:263 msgid "Please enter a script" msgstr "请输入脚本" -#: src/views/toolbox/WebHookView.vue:295 src/views/toolbox/WebHookView.vue:323 +#: src/views/toolbox/WebHookView.vue:295 +#: src/views/toolbox/WebHookView.vue:323 msgid "Create WebHook" msgstr "创建 Web 钩子" -#: src/views/toolbox/WebHookView.vue:331 src/views/toolbox/WebHookView.vue:372 +#: src/views/toolbox/WebHookView.vue:331 +#: src/views/toolbox/WebHookView.vue:372 msgid "Enter WebHook name" msgstr "输入 Web 钩子名称" -#: src/views/toolbox/WebHookView.vue:336 src/views/toolbox/WebHookView.vue:377 +#: src/views/toolbox/WebHookView.vue:336 +#: src/views/toolbox/WebHookView.vue:377 msgid "User to run the script (default: root)" msgstr "运行脚本用户(默认:root)" -#: src/views/toolbox/WebHookView.vue:342 src/views/toolbox/WebHookView.vue:383 +#: src/views/toolbox/WebHookView.vue:342 +#: src/views/toolbox/WebHookView.vue:383 msgid "Return script output as raw text instead of JSON" msgstr "将脚本输出作为原始文本而非 JSON 返回" -#: src/views/toolbox/WebHookView.vue:345 src/views/toolbox/WebHookView.vue:389 +#: src/views/toolbox/WebHookView.vue:345 +#: src/views/toolbox/WebHookView.vue:389 msgid "Script" msgstr "脚本" @@ -11779,13 +12994,16 @@ msgid "Edit WebHook" msgstr "编辑 Web 钩子" #: src/views/website/BulkCreateModal.vue:32 -#: src/views/website/CreateModal.vue:57 src/views/website/EditModal.vue:90 +#: src/views/website/CreateModal.vue:57 +#: src/views/website/EditModal.vue:90 msgid "Not used" msgstr "未使用" #: src/views/website/BulkCreateModal.vue:61 -#: src/views/website/CreateModal.vue:30 src/views/website/EditModal.vue:108 -#: src/views/website/IndexView.vue:28 src/views/website/ListView.vue:128 +#: src/views/website/CreateModal.vue:30 +#: src/views/website/EditModal.vue:108 +#: src/views/website/IndexView.vue:28 +#: src/views/website/ListView.vue:128 msgid "Pure Static" msgstr "纯静态" @@ -11801,7 +13019,8 @@ msgstr "批量创建 PHP 网站" msgid "Bulk Create Pure Static Website" msgstr "批量创建纯静态网站" -#: src/views/website/BulkCreateModal.vue:74 src/views/website/ListView.vue:409 +#: src/views/website/BulkCreateModal.vue:74 +#: src/views/website/ListView.vue:409 msgid "Bulk Create Website" msgstr "批量创建网站" @@ -11818,9 +13037,7 @@ msgid "name|domain|port|path|remark" msgstr "名称|域名|端口|路径|备注" #: src/views/website/BulkCreateModal.vue:92 -msgid "" -"Proxy Target: The target address for reverse proxy (e.g., " -"http://127.0.0.1:3000)." +msgid "Proxy Target: The target address for reverse proxy (e.g., http://127.0.0.1:3000)." msgstr "代理目标地址(如:http://127.0.0.1:3000)" #: src/views/website/BulkCreateModal.vue:96 @@ -11841,38 +13058,32 @@ msgid "Website %{ name } created successfully" msgstr "网站 %{ name } 创建成功" #: src/views/website/BulkCreateModal.vue:189 -#: src/views/website/CreateModal.vue:180 src/views/website/EditModal.vue:1905 +#: src/views/website/CreateModal.vue:180 +#: src/views/website/EditModal.vue:1905 #: src/views/website/ListView.vue:120 msgid "Website Type" msgstr "网站类型" #: src/views/website/BulkCreateModal.vue:193 -#: src/views/website/CreateModal.vue:184 src/views/website/EditModal.vue:1914 +#: src/views/website/CreateModal.vue:184 +#: src/views/website/EditModal.vue:1914 msgid "Select Website Type" msgstr "选择网站类型" #: src/views/website/BulkCreateModal.vue:198 -msgid "" -"Please enter the website name, domain, port, path, and remark in the text " -"area below, one per line." +msgid "Please enter the website name, domain, port, path, and remark in the text area below, one per line." msgstr "请在下面的文本区域输入网站名称、域名、端口、路径和注释,每行一个。" #: src/views/website/BulkCreateModal.vue:211 -msgid "" -"Name: The name of the website, which will be displayed in the website list, " -"must be unique." +msgid "Name: The name of the website, which will be displayed in the website list, must be unique." msgstr "名称:网站的名称,将显示在网站列表中,必须是唯一的。" #: src/views/website/BulkCreateModal.vue:218 -msgid "" -"Domain: The domain name of the website, multiple domains can be separated by " -"commas." +msgid "Domain: The domain name of the website, multiple domains can be separated by commas." msgstr "域名:网站的域名,多个域名可以用英文逗号分隔。" #: src/views/website/BulkCreateModal.vue:225 -msgid "" -"Port: The port number of the website, multiple ports can be separated by " -"commas." +msgid "Port: The port number of the website, multiple ports can be separated by commas." msgstr "端口:网站的端口号,多个端口可以用英文逗号分隔。" #: src/views/website/BulkCreateModal.vue:237 @@ -11891,27 +13102,26 @@ msgstr "创建 PHP 网站" msgid "Create Pure Static Website" msgstr "创建纯静态网站" -#: src/views/website/CreateModal.vue:80 src/views/website/ListView.vue:406 +#: src/views/website/CreateModal.vue:80 +#: src/views/website/ListView.vue:406 msgid "Create Website" msgstr "创建网站" #: src/views/website/CreateModal.vue:193 -msgid "" -"Must be unique, used for directory naming, database naming, etc., and only " -"supports letters, numbers, hyphens, and underscores" +msgid "Must be unique, used for directory naming, database naming, etc., and only supports letters, numbers, hyphens, and underscores" msgstr "必须唯一,用于目录命名、数据库命名等。只支持字母、数字、连字符和下划线" -#: src/views/website/CreateModal.vue:294 src/views/website/CreateModal.vue:300 +#: src/views/website/CreateModal.vue:294 +#: src/views/website/CreateModal.vue:300 msgid "Database Password" msgstr "数据库密码" #: src/views/website/CreateModal.vue:312 -msgid "" -"Website root directory (if left empty, defaults to website directory/website " -"name/public)" +msgid "Website root directory (if left empty, defaults to website directory/website name/public)" msgstr "网站根目录(如果留空,默认为网站目录/网站名称/public)" -#: src/views/website/CreateModal.vue:324 src/views/website/EditModal.vue:1926 +#: src/views/website/CreateModal.vue:324 +#: src/views/website/EditModal.vue:1926 msgid "Proxy Target" msgstr "代理目标" @@ -11919,7 +13129,8 @@ msgstr "代理目标" msgid "Proxy target address (e.g., http://127.0.0.1:3000)" msgstr "代理目标地址(如:http://127.0.0.1:3000)" -#: src/views/website/CreateModal.vue:332 src/views/website/CreateModal.vue:337 +#: src/views/website/CreateModal.vue:332 +#: src/views/website/CreateModal.vue:337 #: src/views/website/ListView.vue:229 msgid "Remark" msgstr "备注" @@ -11937,13 +13148,8 @@ msgid "Confirm Website Type Switch" msgstr "确认切换网站类型" #: src/views/website/EditModal.vue:210 -msgid "" -"Switch the website type from %{ from } to %{ to }? Common settings and " -"website files will be preserved. The original type-specific configuration " -"will be deleted and rebuilt for the new type." -msgstr "" -"将网站类型从 %{ from } 切换为 %{ to }?通用设置和网站文件将被保留。原类型专用" -"配置将被删除,并按新类型重新生成。" +msgid "Switch the website type from %{ from } to %{ to }? Common settings and website files will be preserved. The original type-specific configuration will be deleted and rebuilt for the new type." +msgstr "将网站类型从 %{ from } 切换为 %{ to }?通用设置和网站文件将被保留。原类型专用配置将被删除,并按新类型重新生成。" #: src/views/website/EditModal.vue:214 msgid "Confirm Switch" @@ -11958,12 +13164,8 @@ msgid "Reset successfully" msgstr "重置成功" #: src/views/website/EditModal.vue:271 -msgid "" -"Your website contains wildcard domains, which require DNS verification. " -"Please add a DNS provider in Certificate Management first." -msgstr "" -"您的网站包含通配符域名,这需要进行 DNS 验证。请先在证书管理中添加一个 DNS 提" -"供商。" +msgid "Your website contains wildcard domains, which require DNS verification. Please add a DNS provider in Certificate Management first." +msgstr "您的网站包含通配符域名,这需要进行 DNS 验证。请先在证书管理中添加一个 DNS 提供商。" #: src/views/website/EditModal.vue:288 msgid "Please select a DNS provider" @@ -12025,7 +13227,8 @@ msgstr "临时重定向" msgid "Permanent Redirect" msgstr "永久重定向" -#: src/views/website/EditModal.vue:851 src/views/website/EditModal.vue:855 +#: src/views/website/EditModal.vue:851 +#: src/views/website/EditModal.vue:855 msgid "Default Path" msgstr "默认路径" @@ -12069,7 +13272,8 @@ msgstr "上游" msgid "Upstream name" msgstr "上游名称" -#: src/views/website/EditModal.vue:1049 src/views/website/EditModal.vue:1056 +#: src/views/website/EditModal.vue:1049 +#: src/views/website/EditModal.vue:1056 msgid "Round Robin (default)" msgstr "轮询(默认)" @@ -12213,7 +13417,8 @@ msgstr "自定义缓存键,例如 $scheme$host$request_uri" msgid "Custom Request Headers" msgstr "自定义请求头" -#: src/views/website/EditModal.vue:1345 src/views/website/EditModal.vue:1644 +#: src/views/website/EditModal.vue:1345 +#: src/views/website/EditModal.vue:1644 msgid "Header name" msgstr "请求头" @@ -12241,7 +13446,8 @@ msgstr "替换内容" msgid "Add Replacement Rule" msgstr "添加替换规则" -#: src/views/website/EditModal.vue:1373 src/views/website/EditModal.vue:1903 +#: src/views/website/EditModal.vue:1373 +#: src/views/website/EditModal.vue:1903 msgid "Advanced Settings" msgstr "高级设置" @@ -12459,12 +13665,8 @@ msgid "For example: http://127.0.0.1:3000" msgstr "例如:http://127.0.0.1:3000" #: src/views/website/EditModal.vue:1935 -msgid "" -"After switching, common settings and website files will be preserved. The " -"original type-specific configuration will be deleted and rebuilt for the new " -"type." -msgstr "" -"切换后将保留通用设置和网站文件。原类型专用配置将被删除,并按新类型重新生成。" +msgid "After switching, common settings and website files will be preserved. The original type-specific configuration will be deleted and rebuilt for the new type." +msgstr "切换后将保留通用设置和网站文件。原类型专用配置将被删除,并按新类型重新生成。" #: src/views/website/EditModal.vue:1946 msgid "Switch Website Type" @@ -12482,11 +13684,13 @@ msgstr "启用统计" msgid "Log Settings" msgstr "日志设置" -#: src/views/website/EditModal.vue:1967 src/views/website/EditModal.vue:2184 +#: src/views/website/EditModal.vue:1967 +#: src/views/website/EditModal.vue:2184 msgid "Access Log" msgstr "访问日志" -#: src/views/website/EditModal.vue:1976 src/views/website/EditModal.vue:2200 +#: src/views/website/EditModal.vue:1976 +#: src/views/website/EditModal.vue:2200 msgid "Error Log" msgstr "错误日志" @@ -12527,18 +13731,12 @@ msgid "Real IP" msgstr "真实 IP" #: src/views/website/EditModal.vue:2042 -msgid "" -"Configure trusted proxy IPs (e.g., CDN or Frp) to identify real visitor IPs." +msgid "Configure trusted proxy IPs (e.g., CDN or Frp) to identify real visitor IPs." msgstr "配置可信的代理 IP(例如 CDN 或 Frp)以识别真实的访客 IP。" #: src/views/website/EditModal.vue:2049 -msgid "" -"If using Frp, fill in the Frp IP address (e.g., 127.0.0.1). If using CDN, " -"fill in the CDN IP ranges. If unsure, you can fill in 0.0.0.0/0 (ipv4) " -"or ::/0 (ipv6) [insecure]." -msgstr "" -"如果使用 Frp,请填写 Frp IP 地址(例如 127.0.0.1)。如果使用 CDN,请填写 CDN " -"IP 范围。如果不确定,可以填写 0.0.0.0/0(ipv4)或 ::/0(ipv6)[不安全]。" +msgid "If using Frp, fill in the Frp IP address (e.g., 127.0.0.1). If using CDN, fill in the CDN IP ranges. If unsure, you can fill in 0.0.0.0/0 (ipv4) or ::/0 (ipv6) [insecure]." +msgstr "如果使用 Frp,请填写 Frp IP 地址(例如 127.0.0.1)。如果使用 CDN,请填写 CDN IP 范围。如果不确定,可以填写 0.0.0.0/0(ipv4)或 ::/0(ipv6)[不安全]。" #: src/views/website/EditModal.vue:2055 msgid "Enable" @@ -12573,8 +13771,7 @@ msgid "User Credentials" msgstr "用户凭据" #: src/views/website/EditModal.vue:2109 -msgid "" -"Visitors will need to enter a username and password to access this website." +msgid "Visitors will need to enter a username and password to access this website." msgstr "访客需要输入用户名和密码才能访问此网站。" #: src/views/website/EditModal.vue:2117 @@ -12605,11 +13802,13 @@ msgstr "没有自定义配置" msgid "Add Custom Config" msgstr "添加自定义配置" -#: src/views/website/EditModal.vue:2189 src/views/website/EditModal.vue:2205 +#: src/views/website/EditModal.vue:2189 +#: src/views/website/EditModal.vue:2205 msgid "All logs can be viewed by downloading the file" msgstr "所有日志可通过下载文件查看" -#: src/views/website/EditModal.vue:2191 src/views/website/EditModal.vue:2207 +#: src/views/website/EditModal.vue:2191 +#: src/views/website/EditModal.vue:2207 msgid "view" msgstr "查看" @@ -12630,11 +13829,8 @@ msgid "Select DNS Provider" msgstr "选择 DNS 提供商" #: src/views/website/EditModal.vue:2274 -msgid "" -"Your website contains wildcard domains (e.g. *.example.com), which require " -"DNS verification to issue certificates." -msgstr "" -"您网站包含通配符域名(例如 *.example.com),这需要 DNS 验证才能签发证书。" +msgid "Your website contains wildcard domains (e.g. *.example.com), which require DNS verification to issue certificates." +msgstr "您网站包含通配符域名(例如 *.example.com),这需要 DNS 验证才能签发证书。" #: src/views/website/IndexView.vue:29 msgid "Stats" @@ -12685,9 +13881,7 @@ msgid "Delete local database with the same name" msgstr "删除同名的本地数据库" #: src/views/website/ListView.vue:415 -msgid "" -"This will delete the website directory but not the database with the same " -"name. Are you sure you want to delete the selected websites?" +msgid "This will delete the website directory but not the database with the same name. Are you sure you want to delete the selected websites?" msgstr "这将删除网站目录,但不会删除同名的数据库。您确定要删除所选网站吗?" #: src/views/website/SettingView.vue:81 @@ -12706,33 +13900,25 @@ msgstr "停止页面" msgid "404 Page" msgstr "404 页面" -#: src/views/website/SettingView.vue:144 src/views/website/SettingView.vue:154 +#: src/views/website/SettingView.vue:144 +#: src/views/website/SettingView.vue:154 msgid "Default Site" msgstr "默认网站" #: src/views/website/SettingView.vue:148 -msgid "" -"The default site handles requests that do not match any website domain, such " -"as direct access via IP address. By default, the panel built-in page is " -"displayed." -msgstr "" -"默认站点处理未匹配任何网站域名的请求(如通过 IP 直接访问),默认显示面板内置" -"页面。" +msgid "The default site handles requests that do not match any website domain, such as direct access via IP address. By default, the panel built-in page is displayed." +msgstr "默认站点处理未匹配任何网站域名的请求(如通过 IP 直接访问),默认显示面板内置页面。" #: src/views/website/SettingView.vue:168 msgid "Default Settings" msgstr "默认设置" #: src/views/website/SettingView.vue:172 -msgid "" -"Modifying the default TLS version will affect all newly created websites. " -"Existing websites will not be affected." +msgid "Modifying the default TLS version will affect all newly created websites. Existing websites will not be affected." msgstr "修改默认 TLS 版本将影响所有新创建的网站。现有网站不受影响。" #: src/views/website/SettingView.vue:179 -msgid "" -"Please adjust the settings carefully, improper configuration may lead to " -"website inaccessible." +msgid "Please adjust the settings carefully, improper configuration may lead to website inaccessible." msgstr "请小心调整设置,配置不当可能导致网站无法访问。" #: src/views/website/SettingView.vue:185 @@ -12744,8 +13930,7 @@ msgid "Listen IPv6" msgstr "监听 IPv6" #: src/views/website/SettingView.vue:202 -msgid "" -"When enabled, new websites will listen on IPv6 for all configured ports." +msgid "When enabled, new websites will listen on IPv6 for all configured ports." msgstr "启用后,新建网站将在所有已配置端口上监听 IPv6。" #: src/views/website/SettingView.vue:220 @@ -12753,9 +13938,7 @@ msgid "Statistics" msgstr "统计" #: src/views/website/SettingView.vue:224 -msgid "" -"Modifications to the limits below will take effect after restarting the " -"panel." +msgid "Modifications to the limits below will take effect after restarting the panel." msgstr "下面的限制修改将在重启面板后生效。" #: src/views/website/SettingView.vue:230 @@ -12794,7 +13977,8 @@ msgstr "操作系统" #: src/views/website/stats/ClientsTab.vue:95 #: src/views/website/stats/GeoTab.vue:108 #: src/views/website/stats/GeoTab.vue:165 -#: src/views/website/stats/GeoTab.vue:218 src/views/website/stats/IPsTab.vue:91 +#: src/views/website/stats/GeoTab.vue:218 +#: src/views/website/stats/IPsTab.vue:91 #: src/views/website/stats/IPsTab.vue:134 #: src/views/website/stats/OverviewTab.vue:141 #: src/views/website/stats/SitesTab.vue:53 @@ -12818,13 +14002,15 @@ msgstr "没有请求体" msgid "Site" msgstr "站点" -#: src/views/website/stats/GeoTab.vue:92 src/views/website/stats/GeoTab.vue:247 +#: src/views/website/stats/GeoTab.vue:92 +#: src/views/website/stats/GeoTab.vue:247 msgid "Country" msgstr "国家" #: src/views/website/stats/GeoTab.vue:113 #: src/views/website/stats/GeoTab.vue:165 -#: src/views/website/stats/GeoTab.vue:218 src/views/website/stats/IPsTab.vue:91 +#: src/views/website/stats/GeoTab.vue:218 +#: src/views/website/stats/IPsTab.vue:91 #: src/views/website/stats/IPsTab.vue:139 #: src/views/website/stats/OverviewTab.vue:140 #: src/views/website/stats/SlowURIsTab.vue:76 @@ -12847,12 +14033,14 @@ msgstr "ISP 分布" #: src/views/website/stats/OverviewTab.vue:142 #: src/views/website/stats/SitesTab.vue:57 #: src/views/website/stats/SlowURIsTab.vue:81 -#: src/views/website/stats/URIsTab.vue:59 src/views/website/StatsView.vue:221 +#: src/views/website/stats/URIsTab.vue:59 +#: src/views/website/StatsView.vue:221 msgid "Errors" msgstr "错误" #: src/views/website/stats/OverviewTab.vue:143 -#: src/views/website/stats/SitesTab.vue:59 src/views/website/StatsView.vue:200 +#: src/views/website/stats/SitesTab.vue:59 +#: src/views/website/StatsView.vue:200 msgid "Spiders" msgstr "蜘蛛" @@ -12928,3 +14116,4 @@ msgstr "URIs" #: src/views/website/StatsView.vue:218 msgid "Slow Requests" msgstr "慢请求" + diff --git a/web/src/locales/zh_TW.po b/web/src/locales/zh_TW.po index 166201b6..f78faa6f 100644 --- a/web/src/locales/zh_TW.po +++ b/web/src/locales/zh_TW.po @@ -1,9 +1,5 @@ msgid "" msgstr "" -"Project-Id-Version: acepanel\n" -"PO-Revision-Date: 2026-08-15 10:05\n" -"Language-Team: Chinese Traditional\n" -"Language: zh_TW\n" "Content-Type: text/plain; charset=UTF-8\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: acepanel\n" @@ -11,8 +7,13 @@ msgstr "" "X-Crowdin-Language: zh-TW\n" "X-Crowdin-File: frontend.pot\n" "X-Crowdin-File-ID: 1168\n" +"Project-Id-Version: acepanel\n" +"Language-Team: Chinese Traditional\n" +"Language: zh_TW\n" +"PO-Revision-Date: 2026-08-15 15:27\n" -#: src/components/common/AppFooter.vue:18 src/views/home/IndexView.vue:560 +#: src/components/common/AppFooter.vue:18 +#: src/views/home/IndexView.vue:560 msgid "AcePanel" msgstr "AcePanel" @@ -24,12 +25,18 @@ msgstr "版權所有" msgid "QQ Group" msgstr "QQ 群" -#: src/components/common/AppFooter.vue:38 src/locales/menu.ts:24 -#: src/views/apps/fail2ban/IndexView.vue:313 src/views/backup/IndexView.vue:53 -#: src/views/backup/ListView.vue:276 src/views/backup/ListView.vue:324 -#: src/views/cert/CertView.vue:550 src/views/cert/CertView.vue:667 -#: src/views/cert/CreateCertModal.vue:118 src/views/home/IndexView.vue:542 -#: src/views/task/CreateModal.vue:445 src/views/task/CreateModal.vue:467 +#: src/components/common/AppFooter.vue:38 +#: src/locales/menu.ts:24 +#: src/views/apps/fail2ban/IndexView.vue:361 +#: src/views/backup/IndexView.vue:53 +#: src/views/backup/ListView.vue:276 +#: src/views/backup/ListView.vue:324 +#: src/views/cert/CertView.vue:550 +#: src/views/cert/CertView.vue:667 +#: src/views/cert/CreateCertModal.vue:118 +#: src/views/home/IndexView.vue:542 +#: src/views/task/CreateModal.vue:445 +#: src/views/task/CreateModal.vue:467 #: src/views/toolbox/MigrationView.vue:75 msgid "Website" msgstr "網站" @@ -182,11 +189,16 @@ msgid "After Reboot" msgstr "重啟後" #: src/components/common/CronSelector.vue:192 -#: src/views/monitor/SystemView.vue:713 src/views/monitor/SystemView.vue:767 -#: src/views/monitor/SystemView.vue:819 src/views/monitor/SystemView.vue:875 -#: src/views/monitor/SystemView.vue:942 src/views/project/CreateModal.vue:22 -#: src/views/project/CreateModal.vue:33 src/views/project/CreateModal.vue:46 -#: src/views/project/CreateModal.vue:58 src/views/project/CreateModal.vue:70 +#: src/views/monitor/SystemView.vue:713 +#: src/views/monitor/SystemView.vue:767 +#: src/views/monitor/SystemView.vue:819 +#: src/views/monitor/SystemView.vue:875 +#: src/views/monitor/SystemView.vue:942 +#: src/views/project/CreateModal.vue:22 +#: src/views/project/CreateModal.vue:33 +#: src/views/project/CreateModal.vue:46 +#: src/views/project/CreateModal.vue:58 +#: src/views/project/CreateModal.vue:70 #: src/views/website/StatsView.vue:160 msgid "Custom" msgstr "自訂" @@ -196,17 +208,20 @@ msgid "Month %{month}" msgstr "%{month} 月" #: src/components/common/CronSelector.vue:347 -#: src/views/apps/nginx/NginxIndex.vue:799 src/views/website/EditModal.vue:748 +#: src/views/apps/nginx/NginxIndex.vue:799 +#: src/views/website/EditModal.vue:748 msgid "Seconds" msgstr "秒" #: src/components/common/CronSelector.vue:358 -#: src/views/apps/nginx/NginxIndex.vue:800 src/views/website/EditModal.vue:749 +#: src/views/apps/nginx/NginxIndex.vue:800 +#: src/views/website/EditModal.vue:749 msgid "Minutes" msgstr "分" #: src/components/common/CronSelector.vue:369 -#: src/views/apps/nginx/NginxIndex.vue:801 src/views/website/EditModal.vue:750 +#: src/views/apps/nginx/NginxIndex.vue:801 +#: src/views/website/EditModal.vue:750 msgid "Hours" msgstr "時" @@ -246,7 +261,8 @@ msgstr "最大化" #: src/components/common/DraggableWindow.vue:289 #: src/components/file-editor/EditorPane.vue:282 #: src/layouts/tab/components/ContextMenu.vue:29 -#: src/views/cert/ObtainModal.vue:183 src/views/ssh/IndexView.vue:512 +#: src/views/cert/ObtainModal.vue:183 +#: src/views/ssh/IndexView.vue:512 msgid "Close" msgstr "關閉" @@ -269,8 +285,15 @@ msgstr "目前狀態無法儲存" #: src/views/apps/docker/IndexView.vue:176 #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:58 #: src/views/apps/elasticsearch/IndexView.vue:51 -#: src/views/apps/fail2ban/IndexView.vue:146 -#: src/views/apps/frp/IndexView.vue:38 src/views/apps/frp/IndexView.vue:49 +#: src/views/apps/fail2ban/IndexView.vue:174 +#: src/views/apps/fail2ban/IndexView.vue:225 +#: src/views/apps/fail2ban/IndexView.vue:235 +#: src/views/apps/frp/FrpcConfigTuneView.vue:64 +#: src/views/apps/frp/FrpProxyModal.vue:236 +#: src/views/apps/frp/FrpsConfigTuneView.vue:64 +#: src/views/apps/frp/FrpVisitorModal.vue:103 +#: src/views/apps/frp/IndexView.vue:48 +#: src/views/apps/frp/IndexView.vue:59 #: src/views/apps/gitea/IndexView.vue:24 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:139 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:174 @@ -309,25 +332,34 @@ msgstr "目前狀態無法儲存" #: src/views/apps/redis/RedisConfigTuneView.vue:109 #: src/views/apps/rocketmq/IndexView.vue:51 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:73 -#: src/views/apps/rsync/IndexView.vue:127 -#: src/views/apps/rsync/IndexView.vue:180 -#: src/views/apps/supervisor/IndexView.vue:201 -#: src/views/apps/supervisor/IndexView.vue:291 +#: src/views/apps/rsync/IndexView.vue:137 +#: src/views/apps/rsync/IndexView.vue:192 +#: src/views/apps/supervisor/IndexView.vue:234 +#: src/views/apps/supervisor/IndexView.vue:328 +#: src/views/apps/supervisor/IndexView.vue:343 #: src/views/apps/valkey/IndexView.vue:51 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:103 #: src/views/database/ElasticsearchDocModal.vue:61 -#: src/views/database/RedisKeyModal.vue:77 src/views/environment/GoView.vue:52 +#: src/views/database/RedisKeyModal.vue:77 +#: src/views/environment/GoView.vue:52 #: src/views/environment/NodejsView.vue:55 #: src/views/environment/PhpConfigTuneView.vue:183 -#: src/views/environment/PHPView.vue:149 src/views/environment/PHPView.vue:155 +#: src/views/environment/PHPView.vue:149 +#: src/views/environment/PHPView.vue:155 #: src/views/environment/PythonView.vue:59 #: src/views/monitor/AlertRuleModal.vue:116 -#: src/views/monitor/ChannelModal.vue:70 src/views/monitor/SettingView.vue:35 -#: src/views/monitor/SettingView.vue:183 src/views/project/EditModal.vue:159 -#: src/views/setting/IndexView.vue:84 src/views/tamper/RuleModal.vue:76 -#: src/views/tamper/TamperView.vue:55 src/views/toolbox/SystemView.vue:62 -#: src/views/toolbox/SystemView.vue:76 src/views/toolbox/SystemView.vue:90 -#: src/views/toolbox/SystemView.vue:137 src/views/website/EditModal.vue:197 +#: src/views/monitor/ChannelModal.vue:70 +#: src/views/monitor/SettingView.vue:35 +#: src/views/monitor/SettingView.vue:183 +#: src/views/project/EditModal.vue:159 +#: src/views/setting/IndexView.vue:84 +#: src/views/tamper/RuleModal.vue:76 +#: src/views/tamper/TamperView.vue:55 +#: src/views/toolbox/SystemView.vue:62 +#: src/views/toolbox/SystemView.vue:76 +#: src/views/toolbox/SystemView.vue:90 +#: src/views/toolbox/SystemView.vue:137 +#: src/views/website/EditModal.vue:197 msgid "Saved successfully" msgstr "儲存成功" @@ -336,7 +368,8 @@ msgstr "儲存成功" msgid "Remove" msgstr "移除" -#: src/components/common/PathSelector.vue:28 src/views/task/CreateModal.vue:506 +#: src/components/common/PathSelector.vue:28 +#: src/views/task/CreateModal.vue:506 msgid "Select Directory" msgstr "選擇目錄" @@ -346,8 +379,14 @@ msgstr "選擇檔案" #: src/components/common/PathSelector.vue:51 #: src/components/common/PathSelector.vue:395 -#: src/views/app/EnvironmentView.vue:38 src/views/app/InstalledView.vue:158 -#: src/views/apps/fail2ban/IndexView.vue:41 +#: src/views/app/EnvironmentView.vue:38 +#: src/views/app/InstalledView.vue:158 +#: src/views/apps/fail2ban/IndexView.vue:51 +#: src/views/apps/fail2ban/IndexView.vue:444 +#: src/views/apps/frp/FrpProxyModal.vue:255 +#: src/views/apps/frp/FrpProxyView.vue:22 +#: src/views/apps/frp/FrpVisitorModal.vue:122 +#: src/views/apps/frp/FrpVisitorView.vue:22 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:72 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:206 #: src/views/apps/nginx/NginxIndex.vue:153 @@ -355,27 +394,43 @@ msgstr "選擇檔案" #: src/views/apps/nginx/NginxIndex.vue:619 #: src/views/apps/nginx/NginxIndex.vue:705 #: src/views/apps/prometheus/PrometheusExportersView.vue:26 -#: src/views/apps/rsync/IndexView.vue:43 src/views/apps/rsync/IndexView.vue:263 -#: src/views/apps/supervisor/IndexView.vue:56 -#: src/views/apps/supervisor/IndexView.vue:392 -#: src/views/backup/StorageView.vue:66 src/views/backup/StorageView.vue:230 -#: src/views/backup/StorageView.vue:392 src/views/container/ComposeView.vue:59 -#: src/views/container/NetworkView.vue:48 src/views/container/VolumeView.vue:29 +#: src/views/apps/rsync/IndexView.vue:45 +#: src/views/apps/rsync/IndexView.vue:275 +#: src/views/apps/supervisor/IndexView.vue:89 +#: src/views/apps/supervisor/IndexView.vue:444 +#: src/views/backup/StorageView.vue:66 +#: src/views/backup/StorageView.vue:230 +#: src/views/backup/StorageView.vue:392 +#: src/views/container/ComposeView.vue:59 +#: src/views/container/NetworkView.vue:48 +#: src/views/container/VolumeView.vue:29 #: src/views/database/CreateServerModal.vue:108 #: src/views/database/ServerList.vue:66 -#: src/views/database/UpdateServerModal.vue:66 src/views/file/ListView.vue:1444 -#: src/views/file/PropertyModal.vue:27 src/views/file/ToolBar.vue:123 -#: src/views/home/IndexView.vue:671 src/views/home/IndexView.vue:772 -#: src/views/monitor/AlertRuleModal.vue:136 src/views/monitor/AlertView.vue:53 -#: src/views/monitor/ChannelModal.vue:90 src/views/monitor/SettingView.vue:102 -#: src/views/project/ListView.vue:37 src/views/setting/PasskeyModal.vue:26 -#: src/views/ssh/CreateModal.vue:60 src/views/ssh/UpdateModal.vue:66 -#: src/views/tamper/RuleModal.vue:105 src/views/tamper/TamperView.vue:118 -#: src/views/toolbox/LogView.vue:219 src/views/toolbox/MigrationView.vue:132 +#: src/views/database/UpdateServerModal.vue:66 +#: src/views/file/ListView.vue:1444 +#: src/views/file/PropertyModal.vue:27 +#: src/views/file/ToolBar.vue:123 +#: src/views/home/IndexView.vue:671 +#: src/views/home/IndexView.vue:772 +#: src/views/monitor/AlertRuleModal.vue:136 +#: src/views/monitor/AlertView.vue:53 +#: src/views/monitor/ChannelModal.vue:90 +#: src/views/monitor/SettingView.vue:102 +#: src/views/project/ListView.vue:37 +#: src/views/setting/PasskeyModal.vue:26 +#: src/views/ssh/CreateModal.vue:60 +#: src/views/ssh/UpdateModal.vue:66 +#: src/views/tamper/RuleModal.vue:105 +#: src/views/tamper/TamperView.vue:118 +#: src/views/toolbox/LogView.vue:219 +#: src/views/toolbox/MigrationView.vue:132 #: src/views/toolbox/MigrationView.vue:207 -#: src/views/toolbox/ProcessView.vue:106 src/views/toolbox/ProcessView.vue:393 -#: src/views/toolbox/WebHookView.vue:37 src/views/toolbox/WebHookView.vue:330 -#: src/views/toolbox/WebHookView.vue:371 src/views/website/CreateModal.vue:187 +#: src/views/toolbox/ProcessView.vue:106 +#: src/views/toolbox/ProcessView.vue:393 +#: src/views/toolbox/WebHookView.vue:37 +#: src/views/toolbox/WebHookView.vue:330 +#: src/views/toolbox/WebHookView.vue:371 +#: src/views/website/CreateModal.vue:187 #: src/views/website/EditModal.vue:2140 msgid "Name" msgstr "名稱" @@ -384,37 +439,49 @@ msgstr "名稱" msgid "Permissions" msgstr "權限" -#: src/components/common/PathSelector.vue:102 src/views/file/ListView.vue:1455 +#: src/components/common/PathSelector.vue:102 +#: src/views/file/ListView.vue:1455 msgid "Owner / Group" msgstr "所有者 / 群組" -#: src/components/common/PathSelector.vue:114 src/views/backup/ListView.vue:48 +#: src/components/common/PathSelector.vue:114 +#: src/views/backup/ListView.vue:48 #: src/views/container/ImageView.vue:81 #: src/views/database/ElasticsearchDataView.vue:112 -#: src/views/database/RedisDataView.vue:116 src/views/file/ListView.vue:1451 -#: src/views/file/PropertyModal.vue:39 src/views/file/ToolBar.vue:124 +#: src/views/database/RedisDataView.vue:116 +#: src/views/file/ListView.vue:1451 +#: src/views/file/PropertyModal.vue:39 +#: src/views/file/ToolBar.vue:124 #: src/views/toolbox/disk/RaidView.vue:95 -#: src/views/toolbox/disk/RaidView.vue:177 src/views/toolbox/DiskView.vue:233 -#: src/views/toolbox/LogView.vue:220 src/views/toolbox/MigrationView.vue:153 +#: src/views/toolbox/disk/RaidView.vue:177 +#: src/views/toolbox/DiskView.vue:233 +#: src/views/toolbox/LogView.vue:220 +#: src/views/toolbox/MigrationView.vue:153 msgid "Size" msgstr "大小" -#: src/components/common/PathSelector.vue:149 src/views/file/ListView.vue:1618 +#: src/components/common/PathSelector.vue:149 +#: src/views/file/ListView.vue:1618 msgid "Calculate" msgstr "計算" -#: src/components/common/PathSelector.vue:154 src/views/file/ListView.vue:1460 -#: src/views/file/PropertyModal.vue:51 src/views/file/ToolBar.vue:125 +#: src/components/common/PathSelector.vue:154 +#: src/views/file/ListView.vue:1460 +#: src/views/file/PropertyModal.vue:51 +#: src/views/file/ToolBar.vue:125 msgid "Modification Time" msgstr "修改時間" -#: src/components/common/PathSelector.vue:188 src/views/file/ListView.vue:1284 +#: src/components/common/PathSelector.vue:188 +#: src/views/file/ListView.vue:1284 #: src/views/file/PathInput.vue:43 msgid "Invalid path" msgstr "無效路徑" -#: src/components/common/PathSelector.vue:248 src/views/file/ListView.vue:147 -#: src/views/file/ListView.vue:825 src/views/file/ToolBar.vue:46 +#: src/components/common/PathSelector.vue:248 +#: src/views/file/ListView.vue:147 +#: src/views/file/ListView.vue:825 +#: src/views/file/ToolBar.vue:46 msgid "Invalid name" msgstr "無效的名稱" @@ -423,7 +490,8 @@ msgstr "無效的名稱" #: src/views/app/TemplateDeployModal.vue:237 #: src/views/backup/StorageView.vue:150 #: src/views/cert/CreateAccountModal.vue:55 -#: src/views/cert/CreateCertModal.vue:75 src/views/cert/CreateDnsModal.vue:44 +#: src/views/cert/CreateCertModal.vue:75 +#: src/views/cert/CreateDnsModal.vue:44 #: src/views/cert/UploadCertModal.vue:26 #: src/views/container/ComposeView.vue:231 #: src/views/container/ContainerCreate.vue:124 @@ -432,19 +500,24 @@ msgstr "無效的名稱" #: src/views/database/CreateDatabaseModal.vue:48 #: src/views/database/CreateUserModal.vue:56 #: src/views/database/ElasticsearchDataView.vue:263 -#: src/views/file/ListView.vue:156 src/views/firewall/CreateForwardModal.vue:44 -#: src/views/setting/CreateModal.vue:22 src/views/setting/TokenModal.vue:117 -#: src/views/ssh/CreateModal.vue:41 src/views/task/CreateModal.vue:120 +#: src/views/file/ListView.vue:156 +#: src/views/firewall/CreateForwardModal.vue:44 +#: src/views/setting/CreateModal.vue:22 +#: src/views/setting/TokenModal.vue:117 +#: src/views/ssh/CreateModal.vue:41 +#: src/views/task/CreateModal.vue:120 #: src/views/toolbox/WebHookView.vue:249 msgid "Created successfully" msgstr "建立成功" #: src/components/common/PathSelector.vue:319 -#: src/views/file/PropertyModal.vue:34 src/views/file/ToolBar.vue:147 +#: src/views/file/PropertyModal.vue:34 +#: src/views/file/ToolBar.vue:147 msgid "File" msgstr "檔案" -#: src/components/common/PathSelector.vue:320 src/views/file/ToolBar.vue:148 +#: src/components/common/PathSelector.vue:320 +#: src/views/file/ToolBar.vue:148 msgid "Folder" msgstr "資料夾" @@ -452,31 +525,43 @@ msgstr "資料夾" #: src/components/common/PathSelector.vue:387 #: src/views/app/TemplateDeployModal.vue:652 #: src/views/container/ContainerCreate.vue:653 -#: src/views/project/CreateModal.vue:693 src/views/setting/TokenModal.vue:270 -#: src/views/ssh/SftpBrowser.vue:160 src/views/toolbox/WebHookView.vue:356 +#: src/views/project/CreateModal.vue:693 +#: src/views/setting/TokenModal.vue:270 +#: src/views/ssh/SftpBrowser.vue:160 +#: src/views/toolbox/WebHookView.vue:356 #: src/views/website/BulkCreateModal.vue:240 #: src/views/website/CreateModal.vue:342 msgid "Create" msgstr "建立" -#: src/components/common/PathSelector.vue:333 src/views/file/PathInput.vue:155 +#: src/components/common/PathSelector.vue:333 +#: src/views/file/PathInput.vue:155 msgid "Root Directory" msgstr "根目錄" #: src/components/common/PathSelector.vue:406 -#: src/views/apps/fail2ban/IndexView.vue:373 +#: src/views/apps/fail2ban/IndexView.vue:421 +#: src/views/apps/frp/FrpProxyModal.vue:582 +#: src/views/apps/frp/FrpVisitorModal.vue:241 #: src/views/apps/nginx/NginxIndex.vue:690 #: src/views/apps/nginx/NginxIndex.vue:816 #: src/views/apps/pureftpd/IndexView.vue:266 #: src/views/apps/pureftpd/IndexView.vue:296 -#: src/views/apps/rsync/IndexView.vue:319 src/views/apps/s3fs/IndexView.vue:185 -#: src/views/apps/supervisor/IndexView.vue:435 -#: src/views/backup/ListView.vue:310 src/views/backup/ListView.vue:351 -#: src/views/backup/StorageView.vue:376 src/views/backup/StorageView.vue:529 -#: src/views/cert/AccountView.vue:258 src/views/cert/CertView.vue:652 -#: src/views/cert/CertView.vue:700 src/views/cert/CreateAccountModal.vue:136 -#: src/views/cert/CreateCertModal.vue:164 src/views/cert/CreateDnsModal.vue:199 -#: src/views/cert/DnsView.vue:330 src/views/cert/ObtainModal.vue:180 +#: src/views/apps/rsync/IndexView.vue:334 +#: src/views/apps/s3fs/IndexView.vue:185 +#: src/views/apps/supervisor/IndexView.vue:487 +#: src/views/backup/ListView.vue:310 +#: src/views/backup/ListView.vue:351 +#: src/views/backup/StorageView.vue:376 +#: src/views/backup/StorageView.vue:529 +#: src/views/cert/AccountView.vue:258 +#: src/views/cert/CertView.vue:652 +#: src/views/cert/CertView.vue:700 +#: src/views/cert/CreateAccountModal.vue:136 +#: src/views/cert/CreateCertModal.vue:164 +#: src/views/cert/CreateDnsModal.vue:199 +#: src/views/cert/DnsView.vue:330 +#: src/views/cert/ObtainModal.vue:180 #: src/views/cert/UploadCertModal.vue:64 #: src/views/container/ComposeView.vue:341 #: src/views/container/ComposeView.vue:367 @@ -494,12 +579,16 @@ msgstr "根目錄" #: src/views/database/RedisDataView.vue:378 #: src/views/database/RedisKeyModal.vue:130 #: src/views/database/UpdateServerModal.vue:124 -#: src/views/database/UpdateUserModal.vue:88 src/views/file/ToolBar.vue:230 +#: src/views/database/UpdateUserModal.vue:88 +#: src/views/file/ToolBar.vue:230 #: src/views/firewall/CreateForwardModal.vue:94 #: src/views/firewall/CreateIpModal.vue:125 -#: src/views/firewall/CreateModal.vue:205 src/views/setting/CreateModal.vue:71 -#: src/views/setting/PasswordModal.vue:53 src/views/setting/TwoFaModal.vue:95 -#: src/views/ssh/CreateModal.vue:110 src/views/ssh/UpdateModal.vue:116 +#: src/views/firewall/CreateModal.vue:205 +#: src/views/setting/CreateModal.vue:71 +#: src/views/setting/PasswordModal.vue:53 +#: src/views/setting/TwoFaModal.vue:95 +#: src/views/ssh/CreateModal.vue:110 +#: src/views/ssh/UpdateModal.vue:116 #: src/views/task/CreateModal.vue:548 msgid "Submit" msgstr "提交" @@ -522,7 +611,8 @@ msgstr "連接錯誤" #: src/components/common/PtyTerminalModal.vue:143 #: src/views/container/ImagePullModal.vue:104 -#: src/views/container/ImageView.vue:252 src/views/ssh/SftpPanel.vue:158 +#: src/views/container/ImageView.vue:252 +#: src/views/ssh/SftpPanel.vue:158 msgid "Failed to connect" msgstr "連接失敗" @@ -532,28 +622,37 @@ msgstr "連接失敗" #: src/components/system/ConfirmDialog.vue:54 #: src/layouts/header/components/UserAvatar.vue:30 #: src/views/app/TemplateDeployModal.vue:342 -#: src/views/apps/supervisor/IndexView.vue:133 -#: src/views/apps/supervisor/IndexView.vue:151 +#: src/views/apps/supervisor/IndexView.vue:166 +#: src/views/apps/supervisor/IndexView.vue:184 #: src/views/container/ComposeView.vue:171 -#: src/views/file/composables/usePaste.ts:72 src/views/file/UploadModal.vue:784 -#: src/views/home/IndexView.vue:1041 src/views/home/UpdateView.vue:119 -#: src/views/toolbox/DiskView.vue:353 src/views/toolbox/DiskView.vue:355 -#: src/views/toolbox/DiskView.vue:375 src/views/toolbox/DiskView.vue:377 -#: src/views/toolbox/DiskView.vue:441 src/views/toolbox/DiskView.vue:445 -#: src/views/toolbox/DiskView.vue:463 src/views/toolbox/DiskView.vue:480 -#: src/views/toolbox/DiskView.vue:484 src/views/toolbox/DiskView.vue:504 -#: src/views/toolbox/DiskView.vue:521 src/views/toolbox/DiskView.vue:526 -#: src/views/toolbox/DiskView.vue:547 src/views/toolbox/DiskView.vue:564 -#: src/views/toolbox/DiskView.vue:569 src/views/toolbox/DiskView.vue:591 +#: src/views/file/composables/usePaste.ts:72 +#: src/views/file/UploadModal.vue:784 +#: src/views/home/IndexView.vue:1041 +#: src/views/home/UpdateView.vue:119 +#: src/views/toolbox/DiskView.vue:353 +#: src/views/toolbox/DiskView.vue:355 +#: src/views/toolbox/DiskView.vue:375 +#: src/views/toolbox/DiskView.vue:377 +#: src/views/toolbox/DiskView.vue:441 +#: src/views/toolbox/DiskView.vue:445 +#: src/views/toolbox/DiskView.vue:463 +#: src/views/toolbox/DiskView.vue:480 +#: src/views/toolbox/DiskView.vue:484 +#: src/views/toolbox/DiskView.vue:504 +#: src/views/toolbox/DiskView.vue:521 +#: src/views/toolbox/DiskView.vue:526 +#: src/views/toolbox/DiskView.vue:547 +#: src/views/toolbox/DiskView.vue:564 +#: src/views/toolbox/DiskView.vue:569 +#: src/views/toolbox/DiskView.vue:591 #: src/views/toolbox/network/InterfaceView.vue:296 -#: src/views/toolbox/ProcessView.vue:242 src/views/toolbox/ProcessView.vue:247 +#: src/views/toolbox/ProcessView.vue:242 +#: src/views/toolbox/ProcessView.vue:247 msgid "Confirm" msgstr "確認" #: src/components/common/PtyTerminalModal.vue:203 -msgid "" -"Command may still running. Closing the window will terminate the command. " -"Are you sure?" +msgid "Command may still running. Closing the window will terminate the command. Are you sure?" msgstr "命令可能仍在執行。關閉視窗將終止命令,您確定嗎?" #: src/components/common/PtyTerminalModal.vue:207 @@ -570,156 +669,185 @@ msgstr "命令可能仍在執行。關閉視窗將終止命令,您確定嗎? #: src/views/container/ImagePullModal.vue:197 #: src/views/container/ImagePullModal.vue:211 #: src/views/container/ImagePullModal.vue:228 -#: src/views/container/ImageView.vue:370 src/views/container/ImageView.vue:385 +#: src/views/container/ImageView.vue:370 +#: src/views/container/ImageView.vue:385 #: src/views/file/composables/usePaste.ts:73 -#: src/views/file/composables/usePaste.ts:153 src/views/file/ListView.vue:312 -#: src/views/file/ListView.vue:851 src/views/file/ToolBar.vue:181 -#: src/views/file/UploadModal.vue:505 src/views/file/UploadModal.vue:640 -#: src/views/file/UploadModal.vue:783 src/views/home/IndexView.vue:1042 -#: src/views/home/UpdateView.vue:120 src/views/monitor/AlertRuleModal.vue:193 -#: src/views/monitor/ChannelModal.vue:148 src/views/project/EditModal.vue:579 -#: src/views/ssh/SftpPanel.vue:299 src/views/tamper/RuleModal.vue:134 -#: src/views/task/TaskView.vue:110 src/views/toolbox/DiskView.vue:356 -#: src/views/toolbox/DiskView.vue:378 src/views/toolbox/DiskView.vue:399 -#: src/views/toolbox/DiskView.vue:423 src/views/toolbox/DiskView.vue:446 -#: src/views/toolbox/DiskView.vue:464 src/views/toolbox/DiskView.vue:485 -#: src/views/toolbox/DiskView.vue:505 src/views/toolbox/DiskView.vue:527 -#: src/views/toolbox/DiskView.vue:548 src/views/toolbox/DiskView.vue:570 -#: src/views/toolbox/DiskView.vue:592 src/views/toolbox/MigrationView.vue:346 +#: src/views/file/composables/usePaste.ts:153 +#: src/views/file/ListView.vue:312 +#: src/views/file/ListView.vue:851 +#: src/views/file/ToolBar.vue:181 +#: src/views/file/UploadModal.vue:505 +#: src/views/file/UploadModal.vue:640 +#: src/views/file/UploadModal.vue:783 +#: src/views/home/IndexView.vue:1042 +#: src/views/home/UpdateView.vue:120 +#: src/views/monitor/AlertRuleModal.vue:193 +#: src/views/monitor/ChannelModal.vue:148 +#: src/views/project/EditModal.vue:579 +#: src/views/ssh/SftpPanel.vue:299 +#: src/views/tamper/RuleModal.vue:134 +#: src/views/task/TaskView.vue:110 +#: src/views/toolbox/DiskView.vue:356 +#: src/views/toolbox/DiskView.vue:378 +#: src/views/toolbox/DiskView.vue:399 +#: src/views/toolbox/DiskView.vue:423 +#: src/views/toolbox/DiskView.vue:446 +#: src/views/toolbox/DiskView.vue:464 +#: src/views/toolbox/DiskView.vue:485 +#: src/views/toolbox/DiskView.vue:505 +#: src/views/toolbox/DiskView.vue:527 +#: src/views/toolbox/DiskView.vue:548 +#: src/views/toolbox/DiskView.vue:570 +#: src/views/toolbox/DiskView.vue:592 +#: src/views/toolbox/MigrationView.vue:346 #: src/views/toolbox/MigrationView.vue:416 #: src/views/toolbox/network/InterfaceView.vue:297 #: src/views/toolbox/network/InterfaceView.vue:429 -#: src/views/toolbox/ProcessView.vue:248 src/views/website/EditModal.vue:215 +#: src/views/toolbox/ProcessView.vue:248 +#: src/views/website/EditModal.vue:215 #: src/views/website/EditModal.vue:2249 msgid "Cancel" msgstr "取消" -#: src/components/common/PtyTerminalModal.vue:259 src/locales/menu.ts:20 +#: src/components/common/PtyTerminalModal.vue:259 +#: src/locales/menu.ts:20 #: src/views/container/ContainerView.vue:142 #: src/views/container/ContainerView.vue:669 -#: src/views/database/ServerList.vue:174 src/views/file/ListView.vue:422 -#: src/views/file/ListView.vue:1024 src/views/file/ToolBar.vue:156 +#: src/views/database/ServerList.vue:174 +#: src/views/file/ListView.vue:422 +#: src/views/file/ListView.vue:1024 +#: src/views/file/ToolBar.vue:156 msgid "Terminal" msgstr "終端機" -#: src/components/common/RealtimeLog.vue:57 +#: src/components/common/RealtimeLog.vue:59 msgid "Connected" msgstr "已連接" -#: src/components/common/RealtimeLog.vue:59 +#: src/components/common/RealtimeLog.vue:61 #: src/views/container/ImagePullModal.vue:56 #: src/views/container/ImageView.vue:199 msgid "Connecting..." msgstr "連接中……" -#: src/components/common/RealtimeLog.vue:60 +#: src/components/common/RealtimeLog.vue:62 msgid "Connection failed, retrying..." msgstr "連接失敗,正在重試..." -#: src/components/common/RealtimeLog.vue:286 +#: src/components/common/RealtimeLog.vue:289 #: src/views/apps/clickhouse/IndexView.vue:77 #: src/views/apps/mongodb/IndexView.vue:77 #: src/views/apps/mysql/MysqlIndex.vue:110 #: src/views/apps/postgresql/IndexView.vue:144 -#: src/views/database/ServerList.vue:102 src/views/database/UserList.vue:52 +#: src/views/database/ServerList.vue:102 +#: src/views/database/UserList.vue:52 #: src/views/file/composables/usePaste.ts:29 #: src/views/setting/TokenModal.vue:155 msgid "Copied successfully" msgstr "複製成功" -#: src/components/common/RealtimeLog.vue:312 +#: src/components/common/RealtimeLog.vue:315 msgid "Not found" msgstr "未找到" -#: src/components/common/RealtimeLog.vue:395 +#: src/components/common/RealtimeLog.vue:399 msgid "Pause Auto-scroll" msgstr "暫停自動捲動" -#: src/components/common/RealtimeLog.vue:395 +#: src/components/common/RealtimeLog.vue:399 msgid "Resume Auto-scroll" msgstr "恢復自動捲動" -#: src/components/common/RealtimeLog.vue:401 +#: src/components/common/RealtimeLog.vue:405 msgid "Jump to Top" msgstr "跳至頂部" -#: src/components/common/RealtimeLog.vue:404 +#: src/components/common/RealtimeLog.vue:408 msgid "Jump to Bottom" msgstr "跳至底部" -#: src/components/common/RealtimeLog.vue:409 +#: src/components/common/RealtimeLog.vue:413 #: src/components/file-editor/EditorToolbar.vue:190 -#: src/components/file-editor/FileTree.vue:702 src/views/app/AppView.vue:237 -#: src/views/app/EnvironmentView.vue:264 src/views/app/TemplateView.vue:102 +#: src/components/file-editor/FileTree.vue:702 +#: src/views/app/AppView.vue:237 +#: src/views/app/EnvironmentView.vue:264 +#: src/views/app/TemplateView.vue:102 #: src/views/database/ElasticsearchDataView.vue:314 #: src/views/database/RedisDataView.vue:289 msgid "Search" msgstr "搜尋" -#: src/components/common/RealtimeLog.vue:418 +#: src/components/common/RealtimeLog.vue:422 msgid "Enter keyword and press Enter" msgstr "輸入關鍵字並按 Enter" -#: src/components/common/RealtimeLog.vue:421 +#: src/components/common/RealtimeLog.vue:425 #: src/views/app/TemplateDeployModal.vue:631 msgid "Previous" msgstr "返回" -#: src/components/common/RealtimeLog.vue:424 +#: src/components/common/RealtimeLog.vue:428 #: src/views/app/TemplateDeployModal.vue:640 #: src/views/app/TemplateDeployModal.vue:643 msgid "Next" msgstr "下一步" -#: src/components/common/RealtimeLog.vue:429 +#: src/components/common/RealtimeLog.vue:433 msgid "Only loaded logs are searched" msgstr "僅搜尋已載入的日誌" -#: src/components/common/RealtimeLog.vue:438 +#: src/components/common/RealtimeLog.vue:442 msgid "Disable Line Wrap" msgstr "禁用自動換行" -#: src/components/common/RealtimeLog.vue:438 +#: src/components/common/RealtimeLog.vue:442 msgid "Enable Line Wrap" msgstr "啟用自動換行" -#: src/components/common/RealtimeLog.vue:443 +#: src/components/common/RealtimeLog.vue:447 msgid "Copy All" msgstr "全部複製" -#: src/components/common/RealtimeLog.vue:447 +#: src/components/common/RealtimeLog.vue:451 msgid "Decrease Font Size" msgstr "縮小字體" -#: src/components/common/RealtimeLog.vue:450 +#: src/components/common/RealtimeLog.vue:454 msgid "Increase Font Size" msgstr "放大字體" -#: src/components/common/RealtimeLog.vue:456 src/views/ssh/IndexView.vue:549 +#: src/components/common/RealtimeLog.vue:460 +#: src/views/ssh/IndexView.vue:549 msgid "Exit Fullscreen" msgstr "結束全螢幕" -#: src/components/common/RealtimeLog.vue:456 src/views/ssh/IndexView.vue:549 +#: src/components/common/RealtimeLog.vue:460 +#: src/views/ssh/IndexView.vue:549 msgid "Fullscreen" msgstr "全螢幕" -#: src/components/common/RealtimeLog.vue:476 +#: src/components/common/RealtimeLog.vue:480 msgid "No more logs" msgstr "沒有更多日誌" -#: src/components/common/RealtimeLog.vue:493 +#: src/components/common/RealtimeLog.vue:497 msgid "%{ count } new line" msgid_plural "%{ count } new lines" msgstr[0] "%{ count } 行新日誌" -#: src/components/common/RealtimeLog.vue:500 +#: src/components/common/RealtimeLog.vue:504 msgid "No logs available" msgstr "暫無日誌資料" -#: src/components/common/RealtimeLogModal.vue:42 src/locales/menu.ts:16 -#: src/views/apps/supervisor/IndexView.vue:98 -#: src/views/container/ContainerView.vue:154 src/views/project/ListView.vue:168 -#: src/views/project/ListView.vue:334 src/views/task/CronView.vue:146 +#: src/components/common/RealtimeLogModal.vue:42 +#: src/locales/menu.ts:16 +#: src/views/apps/frp/FrpcConfigTuneView.vue:268 +#: src/views/apps/frp/FrpsConfigTuneView.vue:296 +#: src/views/apps/supervisor/IndexView.vue:131 +#: src/views/container/ContainerView.vue:154 +#: src/views/project/ListView.vue:168 +#: src/views/project/ListView.vue:334 +#: src/views/task/CronView.vue:146 #: src/views/task/TaskView.vue:88 msgid "Logs" msgstr "日誌" @@ -739,14 +867,17 @@ msgstr "您確定要清除日誌嗎?" #: src/views/apps/nginx/NginxIndex.vue:599 #: src/views/apps/postgresql/IndexView.vue:254 #: src/views/apps/postgresql/IndexView.vue:270 -#: src/views/apps/supervisor/IndexView.vue:373 +#: src/views/apps/supervisor/IndexView.vue:425 #: src/views/environment/PHPView.vue:276 msgid "Clear Log" msgstr "清除日誌" -#: src/components/common/ServiceStatus.vue:29 src/views/home/IndexView.vue:903 -#: src/views/home/IndexView.vue:911 src/views/home/IndexView.vue:918 -#: src/views/home/IndexView.vue:924 src/views/home/IndexView.vue:935 +#: src/components/common/ServiceStatus.vue:29 +#: src/views/home/IndexView.vue:903 +#: src/views/home/IndexView.vue:911 +#: src/views/home/IndexView.vue:918 +#: src/views/home/IndexView.vue:924 +#: src/views/home/IndexView.vue:935 #: src/views/home/IndexView.vue:947 msgid "Loading..." msgstr "載入中……" @@ -754,18 +885,23 @@ msgstr "載入中……" #: src/components/common/ServiceStatus.vue:30 #: src/views/app/InstalledView.vue:16 #: src/views/apps/prometheus/PrometheusExportersView.vue:50 -#: src/views/project/ListView.vue:70 src/views/task/TaskView.vue:47 +#: src/views/project/ListView.vue:70 +#: src/views/task/TaskView.vue:47 #: src/views/toolbox/MigrationView.vue:83 -#: src/views/toolbox/MigrationView.vue:149 src/views/toolbox/ProcessView.vue:48 -#: src/views/toolbox/ProcessView.vue:77 src/views/website/ListView.vue:135 +#: src/views/toolbox/MigrationView.vue:149 +#: src/views/toolbox/ProcessView.vue:48 +#: src/views/toolbox/ProcessView.vue:77 +#: src/views/website/ListView.vue:135 msgid "Running" msgstr "執行中" #: src/components/common/ServiceStatus.vue:30 #: src/views/app/InstalledView.vue:17 #: src/views/apps/prometheus/PrometheusExportersView.vue:51 -#: src/views/project/ListView.vue:72 src/views/tamper/TamperView.vue:234 -#: src/views/toolbox/MigrationView.vue:149 src/views/toolbox/ProcessView.vue:50 +#: src/views/project/ListView.vue:72 +#: src/views/tamper/TamperView.vue:234 +#: src/views/toolbox/MigrationView.vue:149 +#: src/views/toolbox/ProcessView.vue:50 #: src/views/toolbox/ProcessView.vue:83 msgid "Stopped" msgstr "已停止" @@ -776,8 +912,9 @@ msgstr "正在啟動……" #: src/components/common/ServiceStatus.vue:52 #: src/views/apps/prometheus/PrometheusExportersView.vue:160 -#: src/views/apps/supervisor/IndexView.vue:236 -#: src/views/project/ListView.vue:222 src/views/website/ListView.vue:335 +#: src/views/apps/supervisor/IndexView.vue:269 +#: src/views/project/ListView.vue:222 +#: src/views/website/ListView.vue:335 msgid "Started successfully" msgstr "啟動成功" @@ -788,8 +925,9 @@ msgstr "停止中..." #: src/components/common/ServiceStatus.vue:67 #: src/views/apps/prometheus/PrometheusExportersView.vue:167 -#: src/views/apps/supervisor/IndexView.vue:243 -#: src/views/project/ListView.vue:217 src/views/website/ListView.vue:337 +#: src/views/apps/supervisor/IndexView.vue:276 +#: src/views/project/ListView.vue:217 +#: src/views/website/ListView.vue:337 msgid "Stopped successfully" msgstr "停止成功" @@ -799,7 +937,7 @@ msgstr "重啟中..." #: src/components/common/ServiceStatus.vue:82 #: src/views/apps/prometheus/PrometheusExportersView.vue:174 -#: src/views/apps/supervisor/IndexView.vue:250 +#: src/views/apps/supervisor/IndexView.vue:283 #: src/views/project/ListView.vue:230 msgid "Restarted successfully" msgstr "重啟成功" @@ -831,7 +969,9 @@ msgstr "自啟動已成功禁用" #: src/views/apps/codeserver/IndexView.vue:37 #: src/views/apps/docker/IndexView.vue:191 #: src/views/apps/elasticsearch/IndexView.vue:62 -#: src/views/apps/fail2ban/IndexView.vue:222 +#: src/views/apps/fail2ban/IndexView.vue:270 +#: src/views/apps/frp/IndexView.vue:77 +#: src/views/apps/frp/IndexView.vue:129 #: src/views/apps/gitea/IndexView.vue:35 #: src/views/apps/grafana/IndexView.vue:63 #: src/views/apps/kafka/IndexView.vue:62 @@ -847,11 +987,12 @@ msgstr "自啟動已成功禁用" #: src/views/apps/pureftpd/IndexView.vue:168 #: src/views/apps/redis/IndexView.vue:62 #: src/views/apps/rocketmq/IndexView.vue:62 -#: src/views/apps/rsync/IndexView.vue:194 -#: src/views/apps/supervisor/IndexView.vue:308 +#: src/views/apps/rsync/IndexView.vue:206 +#: src/views/apps/supervisor/IndexView.vue:360 #: src/views/apps/valkey/IndexView.vue:62 #: src/views/container/ContainerView.vue:106 -#: src/views/environment/PHPView.vue:189 src/views/tamper/TamperView.vue:230 +#: src/views/environment/PHPView.vue:189 +#: src/views/tamper/TamperView.vue:230 msgid "Running Status" msgstr "執行狀態" @@ -865,10 +1006,11 @@ msgstr "自動啟動關閉" #: src/components/common/ServiceStatus.vue:160 #: src/views/apps/prometheus/PrometheusExportersView.vue:88 -#: src/views/apps/supervisor/IndexView.vue:120 +#: src/views/apps/supervisor/IndexView.vue:153 #: src/views/container/ComposeView.vue:160 #: src/views/container/ContainerView.vue:181 -#: src/views/container/ContainerView.vue:593 src/views/project/ListView.vue:130 +#: src/views/container/ContainerView.vue:593 +#: src/views/project/ListView.vue:130 msgid "Start" msgstr "開始" @@ -878,18 +1020,20 @@ msgstr "您確定要停止 %{ service } 嗎?" #: src/components/common/ServiceStatus.vue:171 #: src/views/apps/prometheus/PrometheusExportersView.vue:96 -#: src/views/apps/supervisor/IndexView.vue:141 +#: src/views/apps/supervisor/IndexView.vue:174 #: src/views/container/ComposeView.vue:189 #: src/views/container/ContainerView.vue:186 -#: src/views/container/ContainerView.vue:596 src/views/project/ListView.vue:130 +#: src/views/container/ContainerView.vue:596 +#: src/views/project/ListView.vue:130 msgid "Stop" msgstr "停止" #: src/components/common/ServiceStatus.vue:181 #: src/views/apps/prometheus/PrometheusExportersView.vue:103 -#: src/views/apps/supervisor/IndexView.vue:159 +#: src/views/apps/supervisor/IndexView.vue:192 #: src/views/container/ContainerView.vue:191 -#: src/views/container/ContainerView.vue:599 src/views/home/IndexView.vue:567 +#: src/views/container/ContainerView.vue:599 +#: src/views/home/IndexView.vue:567 #: src/views/project/ListView.vue:145 msgid "Restart" msgstr "重啟" @@ -935,8 +1079,22 @@ msgstr "放棄" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:97 #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:132 #: src/views/apps/elasticsearch/IndexView.vue:82 -#: src/views/apps/frp/IndexView.vue:76 src/views/apps/frp/IndexView.vue:91 -#: src/views/apps/frp/IndexView.vue:109 src/views/apps/frp/IndexView.vue:124 +#: src/views/apps/fail2ban/IndexView.vue:482 +#: src/views/apps/frp/FrpcConfigTuneView.vue:115 +#: src/views/apps/frp/FrpcConfigTuneView.vue:145 +#: src/views/apps/frp/FrpcConfigTuneView.vue:221 +#: src/views/apps/frp/FrpcConfigTuneView.vue:263 +#: src/views/apps/frp/FrpcConfigTuneView.vue:295 +#: src/views/apps/frp/FrpsConfigTuneView.vue:131 +#: src/views/apps/frp/FrpsConfigTuneView.vue:161 +#: src/views/apps/frp/FrpsConfigTuneView.vue:198 +#: src/views/apps/frp/FrpsConfigTuneView.vue:243 +#: src/views/apps/frp/FrpsConfigTuneView.vue:291 +#: src/views/apps/frp/FrpsConfigTuneView.vue:323 +#: src/views/apps/frp/IndexView.vue:95 +#: src/views/apps/frp/IndexView.vue:117 +#: src/views/apps/frp/IndexView.vue:153 +#: src/views/apps/frp/IndexView.vue:175 #: src/views/apps/gitea/IndexView.vue:55 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:184 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:218 @@ -1000,33 +1158,44 @@ msgstr "放棄" #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:112 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:143 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:176 -#: src/views/apps/rsync/IndexView.vue:242 -#: src/views/apps/rsync/IndexView.vue:374 -#: src/views/apps/supervisor/IndexView.vue:356 -#: src/views/apps/supervisor/IndexView.vue:463 +#: src/views/apps/rsync/IndexView.vue:254 +#: src/views/apps/rsync/IndexView.vue:392 +#: src/views/apps/supervisor/IndexView.vue:408 +#: src/views/apps/supervisor/IndexView.vue:583 +#: src/views/apps/supervisor/IndexView.vue:597 #: src/views/apps/valkey/IndexView.vue:82 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:171 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:205 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:230 #: src/views/container/ContainerCreate.vue:653 -#: src/views/environment/GoView.vue:90 src/views/environment/NodejsView.vue:93 +#: src/views/environment/GoView.vue:90 +#: src/views/environment/NodejsView.vue:93 #: src/views/environment/PhpConfigTuneView.vue:274 #: src/views/environment/PhpConfigTuneView.vue:305 #: src/views/environment/PhpConfigTuneView.vue:376 #: src/views/environment/PhpConfigTuneView.vue:421 #: src/views/environment/PhpConfigTuneView.vue:486 #: src/views/environment/PhpConfigTuneView.vue:561 -#: src/views/environment/PHPView.vue:236 src/views/environment/PHPView.vue:254 -#: src/views/environment/PythonView.vue:97 src/views/file/EditModal.vue:89 +#: src/views/environment/PHPView.vue:236 +#: src/views/environment/PHPView.vue:254 +#: src/views/environment/PythonView.vue:97 +#: src/views/file/EditModal.vue:89 #: src/views/firewall/SettingView.vue:136 #: src/views/monitor/AlertRuleModal.vue:195 -#: src/views/monitor/ChannelModal.vue:150 src/views/monitor/SettingView.vue:226 -#: src/views/monitor/SettingView.vue:293 src/views/project/EditModal.vue:582 -#: src/views/setting/IndexView.vue:169 src/views/tamper/RuleModal.vue:136 -#: src/views/task/CreateModal.vue:548 src/views/task/CronView.vue:344 -#: src/views/toolbox/SshView.vue:220 src/views/toolbox/SystemView.vue:171 -#: src/views/toolbox/SystemView.vue:194 src/views/toolbox/SystemView.vue:237 -#: src/views/toolbox/SystemView.vue:319 src/views/toolbox/WebHookView.vue:400 +#: src/views/monitor/ChannelModal.vue:150 +#: src/views/monitor/SettingView.vue:226 +#: src/views/monitor/SettingView.vue:293 +#: src/views/project/EditModal.vue:582 +#: src/views/setting/IndexView.vue:169 +#: src/views/tamper/RuleModal.vue:136 +#: src/views/task/CreateModal.vue:548 +#: src/views/task/CronView.vue:344 +#: src/views/toolbox/SshView.vue:220 +#: src/views/toolbox/SystemView.vue:171 +#: src/views/toolbox/SystemView.vue:194 +#: src/views/toolbox/SystemView.vue:237 +#: src/views/toolbox/SystemView.vue:319 +#: src/views/toolbox/WebHookView.vue:400 #: src/views/website/EditModal.vue:2258 msgid "Save" msgstr "儲存" @@ -1102,15 +1271,22 @@ msgstr "此檔案有未儲存的變更。重新整理將捨棄它們。是否繼 #: src/components/file-editor/EditorToolbar.vue:76 #: src/components/file-editor/EditorToolbar.vue:169 #: src/components/file-editor/EditorToolbar.vue:174 -#: src/components/file-editor/FileTree.vue:680 src/views/file/PathInput.vue:133 -#: src/views/home/UpdateView.vue:178 src/views/log/DatabaseLog.vue:132 -#: src/views/log/HttpLog.vue:161 src/views/log/OperationLog.vue:184 -#: src/views/log/SSHLog.vue:115 src/views/monitor/AlertView.vue:240 -#: src/views/ssh/SftpBrowser.vue:138 src/views/tamper/TamperView.vue:379 +#: src/components/file-editor/FileTree.vue:680 +#: src/views/file/PathInput.vue:133 +#: src/views/home/UpdateView.vue:178 +#: src/views/log/DatabaseLog.vue:132 +#: src/views/log/HttpLog.vue:161 +#: src/views/log/OperationLog.vue:184 +#: src/views/log/SSHLog.vue:115 +#: src/views/monitor/AlertView.vue:240 +#: src/views/ssh/SftpBrowser.vue:138 +#: src/views/tamper/TamperView.vue:379 #: src/views/toolbox/MigrationView.vue:566 #: src/views/toolbox/network/InterfaceView.vue:350 -#: src/views/toolbox/NetworkView.vue:193 src/views/toolbox/PanelView.vue:100 -#: src/views/toolbox/PanelView.vue:233 src/views/toolbox/ProcessView.vue:335 +#: src/views/toolbox/NetworkView.vue:193 +#: src/views/toolbox/PanelView.vue:100 +#: src/views/toolbox/PanelView.vue:233 +#: src/views/toolbox/ProcessView.vue:335 #: src/views/website/StatsView.vue:176 msgid "Refresh" msgstr "重新整理" @@ -1160,8 +1336,10 @@ msgid "Toggle Minimap" msgstr "切換小地圖" #: src/components/file-editor/EditorToolbar.vue:260 -#: src/views/firewall/IndexView.vue:28 src/views/monitor/IndexView.vue:22 -#: src/views/ssh/IndexView.vue:527 src/views/tamper/TamperView.vue:224 +#: src/views/firewall/IndexView.vue:28 +#: src/views/monitor/IndexView.vue:22 +#: src/views/ssh/IndexView.vue:527 +#: src/views/tamper/TamperView.vue:224 #: src/views/website/IndexView.vue:30 msgid "Settings" msgstr "設定" @@ -1237,14 +1415,21 @@ msgid "Render Whitespace" msgstr "渲染空格" #: src/components/file-editor/FileEditorView.vue:225 -#: src/views/apps/docker/IndexView.vue:83 src/views/cert/CertView.vue:152 -#: src/views/cert/CertView.vue:206 src/views/cert/CertView.vue:218 -#: src/views/cert/CertView.vue:241 src/views/cert/CertView.vue:259 +#: src/views/apps/docker/IndexView.vue:83 +#: src/views/cert/CertView.vue:152 +#: src/views/cert/CertView.vue:206 +#: src/views/cert/CertView.vue:218 +#: src/views/cert/CertView.vue:241 +#: src/views/cert/CertView.vue:259 #: src/views/container/ContainerCreate.vue:57 -#: src/views/database/ServerList.vue:78 src/views/database/ServerList.vue:93 -#: src/views/database/UserList.vue:28 src/views/database/UserList.vue:68 -#: src/views/firewall/ForwardView.vue:27 src/views/firewall/IpRuleView.vue:27 -#: src/views/firewall/IpRuleView.vue:44 src/views/firewall/RuleView.vue:67 +#: src/views/database/ServerList.vue:78 +#: src/views/database/ServerList.vue:93 +#: src/views/database/UserList.vue:28 +#: src/views/database/UserList.vue:68 +#: src/views/firewall/ForwardView.vue:27 +#: src/views/firewall/IpRuleView.vue:27 +#: src/views/firewall/IpRuleView.vue:44 +#: src/views/firewall/RuleView.vue:67 #: src/views/firewall/RuleView.vue:84 msgid "None" msgstr "無" @@ -1262,9 +1447,12 @@ msgid "Trailing" msgstr "尾部" #: src/components/file-editor/FileEditorView.vue:229 -#: src/views/app/AppView.vue:222 src/views/app/EnvironmentView.vue:249 -#: src/views/app/TemplateView.vue:87 src/views/firewall/RuleView.vue:255 -#: src/views/project/IndexView.vue:21 src/views/website/IndexView.vue:25 +#: src/views/app/AppView.vue:222 +#: src/views/app/EnvironmentView.vue:249 +#: src/views/app/TemplateView.vue:87 +#: src/views/firewall/RuleView.vue:255 +#: src/views/project/IndexView.vue:21 +#: src/views/website/IndexView.vue:25 #: src/views/website/stats/ErrorsTab.vue:18 msgid "All" msgstr "全部" @@ -1361,12 +1549,14 @@ msgstr "輸入時格式化" msgid "Failed to create" msgstr "建立失敗" -#: src/components/file-editor/FileTree.vue:360 src/views/file/ListView.vue:1481 +#: src/components/file-editor/FileTree.vue:360 +#: src/views/file/ListView.vue:1481 #: src/views/file/ListView.vue:1502 msgid "Folder name" msgstr "資料夾名稱" -#: src/components/file-editor/FileTree.vue:360 src/views/file/ListView.vue:1481 +#: src/components/file-editor/FileTree.vue:360 +#: src/views/file/ListView.vue:1481 #: src/views/file/ListView.vue:1502 msgid "File name" msgstr "檔案名稱" @@ -1376,8 +1566,10 @@ msgstr "檔案名稱" #: src/views/container/ContainerView.vue:640 #: src/views/database/RedisDataView.vue:168 #: src/views/file/composables/usePaste.ts:48 -#: src/views/file/composables/usePaste.ts:164 src/views/file/ListView.vue:420 -#: src/views/file/ListView.vue:1674 src/views/file/UploadModal.vue:747 +#: src/views/file/composables/usePaste.ts:164 +#: src/views/file/ListView.vue:420 +#: src/views/file/ListView.vue:1674 +#: src/views/file/UploadModal.vue:747 #: src/views/file/UploadModal.vue:776 msgid "Rename" msgstr "重新命名" @@ -1387,49 +1579,73 @@ msgstr "重新命名" #: src/components/file-editor/FileTree.vue:589 #: src/components/system/composables/useConfirm.ts:32 #: src/components/system/ConfirmDialog.vue:54 -#: src/views/apps/fail2ban/IndexView.vue:96 +#: src/views/apps/fail2ban/IndexView.vue:124 +#: src/views/apps/frp/FrpProxyView.vue:105 +#: src/views/apps/frp/FrpVisitorView.vue:94 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:127 #: src/views/apps/nginx/NginxIndex.vue:216 #: src/views/apps/nginx/NginxIndex.vue:280 #: src/views/apps/nginx/NginxIndex.vue:764 #: src/views/apps/prometheus/PrometheusExportersView.vue:134 #: src/views/apps/pureftpd/IndexView.vue:87 -#: src/views/apps/rsync/IndexView.vue:101 -#: src/views/apps/supervisor/IndexView.vue:178 -#: src/views/backup/ListView.vue:106 src/views/backup/StorageView.vue:126 -#: src/views/cert/AccountView.vue:113 src/views/cert/CertView.vue:390 -#: src/views/cert/DnsView.vue:109 src/views/container/ComposeView.vue:209 +#: src/views/apps/rsync/IndexView.vue:111 +#: src/views/apps/supervisor/IndexView.vue:211 +#: src/views/backup/ListView.vue:106 +#: src/views/backup/StorageView.vue:126 +#: src/views/cert/AccountView.vue:113 +#: src/views/cert/CertView.vue:390 +#: src/views/cert/DnsView.vue:109 +#: src/views/container/ComposeView.vue:209 #: src/views/container/ComposeView.vue:289 #: src/views/container/ContainerView.vue:211 #: src/views/container/ContainerView.vue:611 -#: src/views/container/ImageView.vue:114 src/views/container/ImageView.vue:296 +#: src/views/container/ImageView.vue:114 +#: src/views/container/ImageView.vue:296 #: src/views/container/NetworkView.vue:130 #: src/views/container/NetworkView.vue:221 -#: src/views/container/VolumeView.vue:83 src/views/container/VolumeView.vue:167 +#: src/views/container/VolumeView.vue:83 +#: src/views/container/VolumeView.vue:167 #: src/views/database/DatabaseList.vue:86 #: src/views/database/ElasticsearchDataView.vue:146 #: src/views/database/ElasticsearchDataView.vue:200 #: src/views/database/RedisDataView.vue:182 -#: src/views/database/ServerList.vue:247 src/views/database/UserList.vue:165 -#: src/views/environment/PHPView.vue:107 src/views/file/ListView.vue:378 -#: src/views/file/ListView.vue:434 src/views/file/ListView.vue:1685 -#: src/views/file/ToolBar.vue:198 src/views/firewall/ForwardView.vue:98 -#: src/views/firewall/ForwardView.vue:162 src/views/firewall/IpRuleView.vue:140 -#: src/views/firewall/IpRuleView.vue:204 src/views/firewall/RuleView.vue:280 -#: src/views/firewall/RuleView.vue:361 src/views/monitor/AlertView.vue:118 -#: src/views/monitor/SettingView.vue:151 src/views/project/ListView.vue:194 -#: src/views/project/ListView.vue:305 src/views/setting/PasskeyModal.vue:68 -#: src/views/setting/SettingUser.vue:142 src/views/setting/TokenModal.vue:87 -#: src/views/ssh/IndexView.vue:625 src/views/tamper/TamperView.vue:156 -#: src/views/task/CronView.vue:169 src/views/task/IndexView.vue:41 -#: src/views/task/TaskView.vue:127 src/views/toolbox/WebHookView.vue:172 -#: src/views/website/ListView.vue:305 src/views/website/ListView.vue:423 +#: src/views/database/ServerList.vue:247 +#: src/views/database/UserList.vue:165 +#: src/views/environment/PHPView.vue:107 +#: src/views/file/ListView.vue:378 +#: src/views/file/ListView.vue:434 +#: src/views/file/ListView.vue:1685 +#: src/views/file/ToolBar.vue:198 +#: src/views/firewall/ForwardView.vue:98 +#: src/views/firewall/ForwardView.vue:162 +#: src/views/firewall/IpRuleView.vue:140 +#: src/views/firewall/IpRuleView.vue:204 +#: src/views/firewall/RuleView.vue:280 +#: src/views/firewall/RuleView.vue:361 +#: src/views/monitor/AlertView.vue:118 +#: src/views/monitor/SettingView.vue:151 +#: src/views/project/ListView.vue:194 +#: src/views/project/ListView.vue:305 +#: src/views/setting/PasskeyModal.vue:68 +#: src/views/setting/SettingUser.vue:142 +#: src/views/setting/TokenModal.vue:87 +#: src/views/ssh/IndexView.vue:625 +#: src/views/tamper/TamperView.vue:156 +#: src/views/task/CronView.vue:169 +#: src/views/task/IndexView.vue:41 +#: src/views/task/TaskView.vue:127 +#: src/views/toolbox/WebHookView.vue:172 +#: src/views/website/ListView.vue:305 +#: src/views/website/ListView.vue:423 msgid "Delete" msgstr "刪除" -#: src/components/file-editor/FileTree.vue:463 src/views/backup/ListView.vue:79 -#: src/views/file/ListView.vue:412 src/views/file/ListView.vue:1669 -#: src/views/monitor/SystemView.vue:590 src/views/toolbox/SshView.vue:345 +#: src/components/file-editor/FileTree.vue:463 +#: src/views/backup/ListView.vue:79 +#: src/views/file/ListView.vue:412 +#: src/views/file/ListView.vue:1669 +#: src/views/monitor/SystemView.vue:590 +#: src/views/toolbox/SshView.vue:345 msgid "Download" msgstr "下載" @@ -1448,20 +1664,25 @@ msgstr "重命名失敗" #: src/components/file-editor/FileTree.vue:588 #: src/views/apps/nginx/NginxIndex.vue:211 -#: src/views/apps/nginx/NginxIndex.vue:275 src/views/file/ListView.vue:894 +#: src/views/apps/nginx/NginxIndex.vue:275 +#: src/views/file/ListView.vue:894 #: src/views/file/ListView.vue:1679 msgid "Are you sure you want to delete %{ name }?" msgstr "您確定要刪除 %{ name } 嗎?" #: src/components/file-editor/FileTree.vue:594 -#: src/views/apps/fail2ban/IndexView.vue:190 +#: src/views/apps/fail2ban/IndexView.vue:218 +#: src/views/apps/frp/FrpProxyView.vue:125 +#: src/views/apps/frp/FrpVisitorView.vue:114 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:185 #: src/views/apps/nginx/NginxIndex.vue:405 #: src/views/apps/nginx/NginxIndex.vue:489 #: src/views/apps/pureftpd/IndexView.vue:155 -#: src/views/apps/rsync/IndexView.vue:160 src/views/apps/s3fs/IndexView.vue:87 -#: src/views/apps/supervisor/IndexView.vue:257 -#: src/views/backup/ListView.vue:156 src/views/backup/StorageView.vue:183 +#: src/views/apps/rsync/IndexView.vue:171 +#: src/views/apps/s3fs/IndexView.vue:87 +#: src/views/apps/supervisor/IndexView.vue:290 +#: src/views/backup/ListView.vue:156 +#: src/views/backup/StorageView.vue:183 #: src/views/container/ImageView.vue:155 #: src/views/container/NetworkView.vue:178 #: src/views/container/VolumeView.vue:124 @@ -1469,18 +1690,28 @@ msgstr "您確定要刪除 %{ name } 嗎?" #: src/views/database/ElasticsearchDataView.vue:241 #: src/views/database/ElasticsearchDataView.vue:250 #: src/views/database/RedisDataView.vue:211 -#: src/views/database/ServerList.vue:269 src/views/database/UserList.vue:185 +#: src/views/database/ServerList.vue:269 +#: src/views/database/UserList.vue:185 #: src/views/file/composables/useFileOps.ts:29 #: src/views/firewall/ForwardView.vue:119 -#: src/views/firewall/ForwardView.vue:137 src/views/firewall/IpRuleView.vue:161 -#: src/views/firewall/IpRuleView.vue:179 src/views/firewall/RuleView.vue:322 -#: src/views/firewall/RuleView.vue:340 src/views/monitor/AlertView.vue:47 -#: src/views/monitor/SettingView.vue:84 src/views/project/ListView.vue:268 -#: src/views/project/ListView.vue:278 src/views/setting/PasskeyModal.vue:96 -#: src/views/setting/SettingUser.vue:173 src/views/setting/TokenModal.vue:106 -#: src/views/tamper/TamperView.vue:112 src/views/task/CronView.vue:231 -#: src/views/task/CronView.vue:241 src/views/task/TaskView.vue:149 -#: src/views/toolbox/WebHookView.vue:225 src/views/website/ListView.vue:379 +#: src/views/firewall/ForwardView.vue:137 +#: src/views/firewall/IpRuleView.vue:161 +#: src/views/firewall/IpRuleView.vue:179 +#: src/views/firewall/RuleView.vue:322 +#: src/views/firewall/RuleView.vue:340 +#: src/views/monitor/AlertView.vue:47 +#: src/views/monitor/SettingView.vue:84 +#: src/views/project/ListView.vue:268 +#: src/views/project/ListView.vue:278 +#: src/views/setting/PasskeyModal.vue:96 +#: src/views/setting/SettingUser.vue:173 +#: src/views/setting/TokenModal.vue:106 +#: src/views/tamper/TamperView.vue:112 +#: src/views/task/CronView.vue:231 +#: src/views/task/CronView.vue:241 +#: src/views/task/TaskView.vue:149 +#: src/views/toolbox/WebHookView.vue:225 +#: src/views/website/ListView.vue:379 #: src/views/website/ListView.vue:389 msgid "Deleted successfully" msgstr "刪除成功" @@ -1493,15 +1724,18 @@ msgstr "刪除失敗" msgid "Go Up" msgstr "上一級" -#: src/components/file-editor/FileTree.vue:687 src/views/file/ListView.vue:359 +#: src/components/file-editor/FileTree.vue:687 +#: src/views/file/ListView.vue:359 msgid "New File" msgstr "新增檔案" -#: src/components/file-editor/FileTree.vue:688 src/views/file/ListView.vue:360 +#: src/components/file-editor/FileTree.vue:688 +#: src/views/file/ListView.vue:360 msgid "New Folder" msgstr "新增資料夾" -#: src/components/file-editor/FileTree.vue:692 src/views/file/ToolBar.vue:152 +#: src/components/file-editor/FileTree.vue:692 +#: src/views/file/ToolBar.vue:152 msgid "New" msgstr "新建" @@ -1539,9 +1773,7 @@ msgid "Panel encountered a fault: %{key}" msgstr "面板遇到故障:%{key}" #: src/components/system/HealthBanner.vue:36 -msgid "" -"Try running \"acepanel fix\" on the server to detect and rebuild the broken " -"database file." +msgid "Try running \"acepanel fix\" on the server to detect and rebuild the broken database file." msgstr "請嘗試在伺服器上執行 \"acepanel fix\" 來偵測並重建損壞的資料庫檔案。" #: src/layouts/header/components/FullScreen.vue:16 @@ -1584,7 +1816,8 @@ msgstr "切換主題" #: src/layouts/header/components/UserAvatar.vue:14 #: src/views/apps/pureftpd/IndexView.vue:71 #: src/views/apps/pureftpd/IndexView.vue:274 -#: src/views/setting/PasswordModal.vue:34 src/views/setting/SettingUser.vue:128 +#: src/views/setting/PasswordModal.vue:34 +#: src/views/setting/SettingUser.vue:128 msgid "Change Password" msgstr "更改密碼" @@ -1605,12 +1838,16 @@ msgid "Logged out successfully!" msgstr "成功登出!" #: src/layouts/header/components/UserAvatar.vue:49 -#: src/views/cert/DnsView.vue:61 src/views/firewall/IpRuleView.vue:78 -#: src/views/firewall/IpRuleView.vue:103 src/views/firewall/RuleView.vue:215 -#: src/views/firewall/RuleView.vue:240 src/views/toolbox/DiskView.vue:159 +#: src/views/cert/DnsView.vue:61 +#: src/views/firewall/IpRuleView.vue:78 +#: src/views/firewall/IpRuleView.vue:103 +#: src/views/firewall/RuleView.vue:215 +#: src/views/firewall/RuleView.vue:240 +#: src/views/toolbox/DiskView.vue:159 #: src/views/website/stats/GeoTab.vue:102 #: src/views/website/stats/GeoTab.vue:104 -#: src/views/website/stats/GeoTab.vue:225 src/views/website/stats/IPsTab.vue:98 +#: src/views/website/stats/GeoTab.vue:225 +#: src/views/website/stats/IPsTab.vue:98 msgid "Unknown" msgstr "未知" @@ -1634,26 +1871,34 @@ msgstr "關閉右側" msgid "Apps" msgstr "應用程式" -#: src/locales/menu.ts:8 src/views/task/CreateModal.vue:145 +#: src/locales/menu.ts:8 +#: src/views/task/CreateModal.vue:145 msgid "Backup" msgstr "備份" -#: src/locales/menu.ts:9 src/views/cert/CertView.vue:607 -#: src/views/cert/CertView.vue:716 src/views/cert/IndexView.vue:97 -#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingSafe.vue:275 +#: src/locales/menu.ts:9 +#: src/views/cert/CertView.vue:607 +#: src/views/cert/CertView.vue:716 +#: src/views/cert/IndexView.vue:97 +#: src/views/cert/UploadCertModal.vue:46 +#: src/views/setting/SettingSafe.vue:275 #: src/views/website/EditModal.vue:1774 msgid "Certificate" msgstr "證書" -#: src/locales/menu.ts:10 src/views/home/IndexView.vue:537 +#: src/locales/menu.ts:10 +#: src/views/home/IndexView.vue:537 #: src/views/task/CreateModal.vue:469 msgid "Container" msgstr "容器" -#: src/locales/menu.ts:11 src/views/apps/grafana/GrafanaConfigTuneView.vue:189 +#: src/locales/menu.ts:11 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:189 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:222 -#: src/views/backup/ListView.vue:334 src/views/home/IndexView.vue:546 -#: src/views/toolbox/MigrationView.vue:76 src/views/website/CreateModal.vue:248 +#: src/views/backup/ListView.vue:334 +#: src/views/home/IndexView.vue:546 +#: src/views/toolbox/MigrationView.vue:76 +#: src/views/website/CreateModal.vue:248 msgid "Database" msgstr "資料庫" @@ -1669,15 +1914,18 @@ msgstr "防火牆" msgid "Home" msgstr "首頁" -#: src/locales/menu.ts:15 src/views/apps/grafana/GrafanaConfigTuneView.vue:223 +#: src/locales/menu.ts:15 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:223 msgid "Security" msgstr "安全" -#: src/locales/menu.ts:17 src/views/monitor/SettingView.vue:198 +#: src/locales/menu.ts:17 +#: src/views/monitor/SettingView.vue:198 msgid "Monitoring" msgstr "監控" -#: src/locales/menu.ts:18 src/views/home/IndexView.vue:551 +#: src/locales/menu.ts:18 +#: src/views/home/IndexView.vue:551 #: src/views/toolbox/MigrationView.vue:78 msgid "Project" msgstr "項目" @@ -1694,10 +1942,13 @@ msgstr "任務" msgid "Toolbox" msgstr "工具箱" -#: src/locales/menu.ts:23 src/views/app/AppView.vue:97 -#: src/views/app/EnvironmentView.vue:88 src/views/app/InstalledView.vue:103 +#: src/locales/menu.ts:23 +#: src/views/app/AppView.vue:97 +#: src/views/app/EnvironmentView.vue:88 +#: src/views/app/InstalledView.vue:103 #: src/views/app/InstalledView.vue:202 -#: src/views/app/TemplateDeployModal.vue:652 src/views/home/IndexView.vue:575 +#: src/views/app/TemplateDeployModal.vue:652 +#: src/views/home/IndexView.vue:575 #: src/views/setting/TokenModal.vue:308 msgid "Update" msgstr "更新" @@ -1726,147 +1977,187 @@ msgstr "Rsync 管理器" msgid "Frp Manager" msgstr "Frp 管理器" -#: src/router/routes/index.ts:44 src/views/login/IndexView.vue:309 +#: src/router/routes/index.ts:44 +#: src/views/login/IndexView.vue:309 msgid "Login" msgstr "登入" -#: src/views/app/AppView.vue:19 src/views/app/AppView.vue:143 -#: src/views/app/AppView.vue:147 src/views/app/EnvironmentView.vue:147 -#: src/views/app/EnvironmentView.vue:292 src/views/app/EnvironmentView.vue:312 +#: src/views/app/AppView.vue:19 +#: src/views/app/AppView.vue:143 +#: src/views/app/AppView.vue:147 +#: src/views/app/EnvironmentView.vue:147 +#: src/views/app/EnvironmentView.vue:292 +#: src/views/app/EnvironmentView.vue:312 #: src/views/apps/prometheus/PrometheusExportersView.vue:79 #: src/views/environment/PHPView.vue:107 msgid "Install" msgstr "安裝" -#: src/views/app/AppView.vue:37 src/views/app/InstalledView.vue:33 +#: src/views/app/AppView.vue:37 +#: src/views/app/InstalledView.vue:33 msgid "App Name" msgstr "應用名稱" -#: src/views/app/AppView.vue:43 src/views/app/EnvironmentView.vue:44 -#: src/views/app/InstalledView.vue:39 src/views/app/InstalledView.vue:164 +#: src/views/app/AppView.vue:43 +#: src/views/app/EnvironmentView.vue:44 +#: src/views/app/InstalledView.vue:39 +#: src/views/app/InstalledView.vue:164 #: src/views/apps/prometheus/PrometheusExportersView.vue:32 -#: src/views/environment/PHPView.vue:64 src/views/project/EditModal.vue:193 +#: src/views/environment/PHPView.vue:64 +#: src/views/project/EditModal.vue:193 #: src/views/project/ListView.vue:44 msgid "Description" msgstr "描述" -#: src/views/app/AppView.vue:49 src/views/app/EnvironmentView.vue:56 -#: src/views/app/InstalledView.vue:45 src/views/app/InstalledView.vue:170 +#: src/views/app/AppView.vue:49 +#: src/views/app/EnvironmentView.vue:56 +#: src/views/app/InstalledView.vue:45 +#: src/views/app/InstalledView.vue:170 msgid "Installed Version" msgstr "已安裝版本" -#: src/views/app/AppView.vue:55 src/views/app/InstalledView.vue:61 +#: src/views/app/AppView.vue:55 +#: src/views/app/InstalledView.vue:61 msgid "Show in Home" msgstr "在主頁顯示" -#: src/views/app/AppView.vue:68 src/views/app/EnvironmentView.vue:62 -#: src/views/app/InstalledView.vue:74 src/views/app/InstalledView.vue:176 -#: src/views/apps/fail2ban/IndexView.vue:63 -#: src/views/apps/fail2ban/IndexView.vue:112 +#: src/views/app/AppView.vue:68 +#: src/views/app/EnvironmentView.vue:62 +#: src/views/app/InstalledView.vue:74 +#: src/views/app/InstalledView.vue:176 +#: src/views/apps/fail2ban/IndexView.vue:73 +#: src/views/apps/fail2ban/IndexView.vue:140 +#: src/views/apps/frp/FrpProxyView.vue:73 +#: src/views/apps/frp/FrpVisitorView.vue:62 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:99 #: src/views/apps/nginx/NginxIndex.vue:190 #: src/views/apps/nginx/NginxIndex.vue:254 #: src/views/apps/nginx/NginxIndex.vue:751 #: src/views/apps/prometheus/PrometheusExportersView.vue:55 #: src/views/apps/pureftpd/IndexView.vue:53 -#: src/views/apps/rsync/IndexView.vue:72 src/views/apps/s3fs/IndexView.vue:35 -#: src/views/apps/supervisor/IndexView.vue:84 src/views/backup/ListView.vue:63 -#: src/views/backup/StorageView.vue:95 src/views/cert/AccountView.vue:74 -#: src/views/cert/CertView.vue:277 src/views/cert/DnsView.vue:69 +#: src/views/apps/rsync/IndexView.vue:82 +#: src/views/apps/s3fs/IndexView.vue:35 +#: src/views/apps/supervisor/IndexView.vue:117 +#: src/views/backup/ListView.vue:63 +#: src/views/backup/StorageView.vue:95 +#: src/views/cert/AccountView.vue:74 +#: src/views/cert/CertView.vue:277 +#: src/views/cert/DnsView.vue:69 #: src/views/container/ComposeView.vue:102 #: src/views/container/ContainerView.vue:113 -#: src/views/container/ImageView.vue:97 src/views/container/NetworkView.vue:112 -#: src/views/container/VolumeView.vue:66 src/views/database/DatabaseList.vue:68 +#: src/views/container/ImageView.vue:97 +#: src/views/container/NetworkView.vue:112 +#: src/views/container/VolumeView.vue:66 +#: src/views/database/DatabaseList.vue:68 #: src/views/database/ElasticsearchDataView.vue:117 #: src/views/database/ElasticsearchDataView.vue:169 #: src/views/database/RedisDataView.vue:124 -#: src/views/database/ServerList.vue:161 src/views/database/UserList.vue:134 -#: src/views/environment/PHPView.vue:71 src/views/file/ListView.vue:1463 -#: src/views/file/ShareModal.vue:102 src/views/firewall/ForwardView.vue:81 -#: src/views/firewall/IpRuleView.vue:123 src/views/firewall/RuleView.vue:263 -#: src/views/firewall/ScanView.vue:256 src/views/monitor/AlertView.vue:103 -#: src/views/monitor/SettingView.vue:126 src/views/project/ListView.vue:117 -#: src/views/setting/PasskeyModal.vue:51 src/views/setting/SettingUser.vue:88 -#: src/views/setting/TokenModal.vue:57 src/views/tamper/TamperView.vue:141 -#: src/views/task/CronView.vue:119 src/views/task/TaskView.vue:69 -#: src/views/toolbox/DiskView.vue:298 src/views/toolbox/DiskView.vue:608 +#: src/views/database/ServerList.vue:161 +#: src/views/database/UserList.vue:134 +#: src/views/environment/PHPView.vue:71 +#: src/views/file/ListView.vue:1463 +#: src/views/file/ShareModal.vue:102 +#: src/views/firewall/ForwardView.vue:81 +#: src/views/firewall/IpRuleView.vue:123 +#: src/views/firewall/RuleView.vue:263 +#: src/views/firewall/ScanView.vue:256 +#: src/views/monitor/AlertView.vue:103 +#: src/views/monitor/SettingView.vue:126 +#: src/views/project/ListView.vue:117 +#: src/views/setting/PasskeyModal.vue:51 +#: src/views/setting/SettingUser.vue:88 +#: src/views/setting/TokenModal.vue:57 +#: src/views/tamper/TamperView.vue:141 +#: src/views/task/CronView.vue:119 +#: src/views/task/TaskView.vue:69 +#: src/views/toolbox/DiskView.vue:298 +#: src/views/toolbox/DiskView.vue:608 #: src/views/toolbox/network/InterfaceView.vue:197 -#: src/views/toolbox/WebHookView.vue:135 src/views/website/ListView.vue:246 +#: src/views/toolbox/WebHookView.vue:135 +#: src/views/website/ListView.vue:246 msgid "Actions" msgstr "操作" -#: src/views/app/AppView.vue:88 src/views/app/EnvironmentView.vue:80 -#: src/views/app/InstalledView.vue:94 src/views/app/InstalledView.vue:194 +#: src/views/app/AppView.vue:88 +#: src/views/app/EnvironmentView.vue:80 +#: src/views/app/InstalledView.vue:94 +#: src/views/app/InstalledView.vue:194 #: src/views/container/ContainerCreate.vue:157 msgid "Confirm Update" msgstr "確認更新" -#: src/views/app/AppView.vue:89 src/views/app/InstalledView.vue:95 -msgid "" -"Updating app %{ app } to %{ version } may reset related configurations to " -"default state, are you sure to continue?" -msgstr "" -"更新應用 %{ app } 到 %{ version } 可能會將相關設定重設為預設狀態,您確定要繼" -"續嗎?" +#: src/views/app/AppView.vue:89 +#: src/views/app/InstalledView.vue:95 +msgid "Updating app %{ app } to %{ version } may reset related configurations to default state, are you sure to continue?" +msgstr "更新應用 %{ app } 到 %{ version } 可能會將相關設定重設為預設狀態,您確定要繼續嗎?" -#: src/views/app/AppView.vue:110 src/views/app/EnvironmentView.vue:101 -#: src/views/app/InstalledView.vue:115 src/views/app/InstalledView.vue:214 +#: src/views/app/AppView.vue:110 +#: src/views/app/EnvironmentView.vue:101 +#: src/views/app/InstalledView.vue:115 +#: src/views/app/InstalledView.vue:214 msgid "Manage" msgstr "管理" -#: src/views/app/AppView.vue:119 src/views/app/EnvironmentView.vue:110 -#: src/views/app/InstalledView.vue:124 src/views/app/InstalledView.vue:223 +#: src/views/app/AppView.vue:119 +#: src/views/app/EnvironmentView.vue:110 +#: src/views/app/InstalledView.vue:124 +#: src/views/app/InstalledView.vue:223 #: src/views/apps/prometheus/PrometheusExportersView.vue:124 #: src/views/environment/PHPView.vue:85 msgid "Confirm Uninstall" msgstr "確認卸載" -#: src/views/app/AppView.vue:121 src/views/app/InstalledView.vue:126 -msgid "" -"Reinstalling/Switching to a different web server will reset the " -"configuration of all websites, are you sure to continue?" +#: src/views/app/AppView.vue:121 +#: src/views/app/InstalledView.vue:126 +msgid "Reinstalling/Switching to a different web server will reset the configuration of all websites, are you sure to continue?" msgstr "重新安裝/切換到不同的 Web 伺服器將重設所有網站的設定,您確定要繼續嗎?" -#: src/views/app/AppView.vue:124 src/views/app/InstalledView.vue:129 +#: src/views/app/AppView.vue:124 +#: src/views/app/InstalledView.vue:129 msgid "Are you sure to uninstall app %{ app }?" msgstr "您確定要卸載應用程式 %{ app } 嗎?" -#: src/views/app/AppView.vue:125 src/views/app/AppView.vue:131 -#: src/views/app/EnvironmentView.vue:114 src/views/app/EnvironmentView.vue:120 -#: src/views/app/InstalledView.vue:130 src/views/app/InstalledView.vue:136 -#: src/views/app/InstalledView.vue:227 src/views/app/InstalledView.vue:233 +#: src/views/app/AppView.vue:125 +#: src/views/app/AppView.vue:131 +#: src/views/app/EnvironmentView.vue:114 +#: src/views/app/EnvironmentView.vue:120 +#: src/views/app/InstalledView.vue:130 +#: src/views/app/InstalledView.vue:136 +#: src/views/app/InstalledView.vue:227 +#: src/views/app/InstalledView.vue:233 #: src/views/apps/prometheus/PrometheusExportersView.vue:128 msgid "Uninstall" msgstr "卸載" -#: src/views/app/AppView.vue:183 src/views/app/InstalledView.vue:272 +#: src/views/app/AppView.vue:183 +#: src/views/app/InstalledView.vue:272 msgid "Setup successfully" msgstr "設定成功" -#: src/views/app/AppView.vue:190 src/views/app/AppView.vue:198 -#: src/views/app/EnvironmentView.vue:184 src/views/app/EnvironmentView.vue:206 -#: src/views/app/EnvironmentView.vue:217 src/views/app/EnvironmentView.vue:225 -#: src/views/app/InstalledView.vue:279 src/views/app/InstalledView.vue:287 -#: src/views/app/InstalledView.vue:300 src/views/app/InstalledView.vue:308 +#: src/views/app/AppView.vue:190 +#: src/views/app/AppView.vue:198 +#: src/views/app/EnvironmentView.vue:184 +#: src/views/app/EnvironmentView.vue:206 +#: src/views/app/EnvironmentView.vue:217 +#: src/views/app/EnvironmentView.vue:225 +#: src/views/app/InstalledView.vue:279 +#: src/views/app/InstalledView.vue:287 +#: src/views/app/InstalledView.vue:300 +#: src/views/app/InstalledView.vue:308 #: src/views/app/VersionModal.vue:53 msgid "Task submitted, please check the progress in background tasks" msgstr "任務已提交,請在後台任務中查看進度" #: src/views/app/CustomForm.vue:46 -msgid "" -"Settings are saved persistently and applied automatically on every install " -"and update (recompile), no need to re-enter after reinstalling." -msgstr "" -"設定會持久儲存,每次安裝與更新(重新編譯)時自動套用,重裝後無需重新填寫。" +msgid "Settings are saved persistently and applied automatically on every install and update (recompile), no need to re-enter after reinstalling." +msgstr "設定會持久儲存,每次安裝與更新(重新編譯)時自動套用,重裝後無需重新填寫。" #: src/views/app/CustomForm.vue:52 msgid "Pre-script" msgstr "前置指令碼" #: src/views/app/CustomForm.vue:56 -msgid "" -"Runs before configure, can be used to download and prepare third-party " -"module sources." +msgid "Runs before configure, can be used to download and prepare third-party module sources." msgstr "在 configure 之前執行,可用於下載與準備第三方模組原始碼。" #: src/views/app/CustomForm.vue:64 @@ -1874,20 +2165,20 @@ msgid "Compile Params" msgstr "編譯參數" #: src/views/app/CustomForm.vue:68 -msgid "" -"One param per line, appended to the end of configure. Lines starting with # " -"are ignored." +msgid "One param per line, appended to the end of configure. Lines starting with # are ignored." msgstr "每行一個參數,附加到 configure 結尾,以 # 開頭的行將被忽略。" #: src/views/app/EnvironmentView.vue:50 msgid "Latest Version" msgstr "最新版本" -#: src/views/app/EnvironmentView.vue:81 src/views/app/InstalledView.vue:195 +#: src/views/app/EnvironmentView.vue:81 +#: src/views/app/InstalledView.vue:195 msgid "Are you sure to update environment %{ environment }?" msgstr "您確定要更新環境 %{ environment } 嗎?" -#: src/views/app/EnvironmentView.vue:111 src/views/app/InstalledView.vue:224 +#: src/views/app/EnvironmentView.vue:111 +#: src/views/app/InstalledView.vue:224 msgid "Are you sure to uninstall environment %{ environment }?" msgstr "您確定要卸載環境 %{ environment } 嗎?" @@ -1909,11 +2200,13 @@ msgstr "快取更新成功" msgid "Installed" msgstr "已安裝" -#: src/views/app/IndexView.vue:41 src/views/app/InstalledView.vue:327 +#: src/views/app/IndexView.vue:41 +#: src/views/app/InstalledView.vue:327 msgid "Native App" msgstr "原生應用" -#: src/views/app/IndexView.vue:42 src/views/app/InstalledView.vue:351 +#: src/views/app/IndexView.vue:42 +#: src/views/app/InstalledView.vue:351 msgid "Operating Environment" msgstr "執行環境" @@ -1929,24 +2222,34 @@ msgstr "更新快取" msgid "Partial" msgstr "部分" -#: src/views/app/InstalledView.vue:51 src/views/apps/fail2ban/IndexView.vue:47 +#: src/views/app/InstalledView.vue:51 +#: src/views/apps/fail2ban/IndexView.vue:57 +#: src/views/apps/frp/FrpProxyView.vue:37 +#: src/views/apps/frp/FrpVisitorView.vue:37 #: src/views/apps/phpmyadmin/IndexView.vue:67 #: src/views/apps/prometheus/PrometheusExportersView.vue:38 -#: src/views/apps/supervisor/IndexView.vue:63 +#: src/views/apps/supervisor/IndexView.vue:96 #: src/views/container/ComposeView.vue:86 #: src/views/container/ContainerInfoModal.vue:112 #: src/views/container/ContainerView.vue:58 -#: src/views/database/ServerList.vue:140 src/views/database/UserList.vue:113 -#: src/views/firewall/RuleView.vue:103 src/views/log/HttpLog.vue:95 -#: src/views/log/SSHLog.vue:63 src/views/monitor/AlertView.vue:93 -#: src/views/monitor/SettingView.vue:116 src/views/project/ListView.vue:59 -#: src/views/tamper/TamperView.vue:131 src/views/tamper/TamperView.vue:232 -#: src/views/task/TaskView.vue:34 src/views/toolbox/disk/RaidView.vue:97 +#: src/views/database/ServerList.vue:140 +#: src/views/database/UserList.vue:113 +#: src/views/firewall/RuleView.vue:103 +#: src/views/log/HttpLog.vue:95 +#: src/views/log/SSHLog.vue:63 +#: src/views/monitor/AlertView.vue:93 +#: src/views/monitor/SettingView.vue:116 +#: src/views/project/ListView.vue:59 +#: src/views/tamper/TamperView.vue:131 +#: src/views/tamper/TamperView.vue:232 +#: src/views/task/TaskView.vue:34 +#: src/views/toolbox/disk/RaidView.vue:97 #: src/views/toolbox/disk/SmartView.vue:217 #: src/views/toolbox/MigrationView.vue:142 #: src/views/toolbox/MigrationView.vue:209 #: src/views/toolbox/network/InterfaceView.vue:160 -#: src/views/toolbox/NetworkView.vue:99 src/views/toolbox/ProcessView.vue:134 +#: src/views/toolbox/NetworkView.vue:99 +#: src/views/toolbox/ProcessView.vue:134 #: src/views/toolbox/ProcessView.vue:399 #: src/views/website/stats/ErrorsTab.vue:95 msgid "Status" @@ -1972,9 +2275,12 @@ msgstr "請輸入編排名稱" msgid "Please select a compose" msgstr "請選擇一個編排" -#: src/views/app/TemplateDeployModal.vue:258 src/views/cert/AccountView.vue:145 -#: src/views/cert/CertView.vue:425 src/views/cert/CertView.vue:446 -#: src/views/cert/DnsView.vue:137 src/views/container/ComposeView.vue:249 +#: src/views/app/TemplateDeployModal.vue:258 +#: src/views/cert/AccountView.vue:145 +#: src/views/cert/CertView.vue:425 +#: src/views/cert/CertView.vue:446 +#: src/views/cert/DnsView.vue:137 +#: src/views/container/ComposeView.vue:249 msgid "Update successful" msgstr "更新成功" @@ -2051,7 +2357,8 @@ msgstr "自動放行 compose 中定義的連接埠" #: src/views/container/ComposeView.vue:357 #: src/views/container/ContainerCreate.vue:568 #: src/views/container/ContainerInfoModal.vue:185 -#: src/views/project/EditModal.vue:380 src/views/toolbox/ProcessView.vue:445 +#: src/views/project/EditModal.vue:380 +#: src/views/toolbox/ProcessView.vue:445 msgid "Environment Variables" msgstr "環境變數" @@ -2073,9 +2380,7 @@ msgid "Compose File" msgstr "編排檔案" #: src/views/app/TemplateDeployModal.vue:567 -msgid "" -"Left side shows the original compose, right side shows the new compose. You " -"can edit the right side." +msgid "Left side shows the original compose, right side shows the new compose. You can edit the right side." msgstr "左側顯示舊編排,右側顯示新編排。您可以編輯右側。" #: src/views/app/TemplateDeployModal.vue:586 @@ -2102,9 +2407,12 @@ msgstr "更新現有" #: src/views/app/TemplateDeployModal.vue:611 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:94 #: src/views/apps/nginx/NginxIndex.vue:186 +#: src/views/apps/supervisor/IndexView.vue:75 #: src/views/container/ContainerInfoModal.vue:130 -#: src/views/file/ListView.vue:269 src/views/file/ListView.vue:899 -#: src/views/file/PropertyModal.vue:55 src/views/file/PropertyModal.vue:59 +#: src/views/file/ListView.vue:269 +#: src/views/file/ListView.vue:899 +#: src/views/file/PropertyModal.vue:55 +#: src/views/file/PropertyModal.vue:59 #: src/views/toolbox/WebHookView.vue:85 msgid "Yes" msgstr "是" @@ -2113,9 +2421,12 @@ msgstr "是" #: src/views/app/TemplateDeployModal.vue:611 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:95 #: src/views/apps/nginx/NginxIndex.vue:186 +#: src/views/apps/supervisor/IndexView.vue:76 #: src/views/container/ContainerInfoModal.vue:130 -#: src/views/file/ListView.vue:270 src/views/file/ListView.vue:900 -#: src/views/file/PropertyModal.vue:55 src/views/file/PropertyModal.vue:59 +#: src/views/file/ListView.vue:270 +#: src/views/file/ListView.vue:900 +#: src/views/file/PropertyModal.vue:55 +#: src/views/file/PropertyModal.vue:59 #: src/views/toolbox/WebHookView.vue:85 msgid "No" msgstr "否" @@ -2133,12 +2444,16 @@ msgstr "編排內容" msgid "Starting Compose" msgstr "正在啟動編排" -#: src/views/app/TemplateView.vue:142 src/views/backup/StorageView.vue:78 -#: src/views/ssh/IndexView.vue:82 src/views/ssh/IndexView.vue:88 +#: src/views/app/TemplateView.vue:142 +#: src/views/apps/frp/FrpProxyView.vue:47 +#: src/views/backup/StorageView.vue:78 +#: src/views/ssh/IndexView.vue:82 +#: src/views/ssh/IndexView.vue:88 msgid "Local" msgstr "本地" -#: src/views/app/TemplateView.vue:152 src/views/cert/CertView.vue:309 +#: src/views/app/TemplateView.vue:152 +#: src/views/cert/CertView.vue:309 msgid "Deploy" msgstr "部署" @@ -2176,7 +2491,8 @@ msgstr "自訂編譯參數" #: src/views/apps/prometheus/IndexView.vue:44 #: src/views/apps/redis/IndexView.vue:33 #: src/views/apps/rocketmq/IndexView.vue:33 -#: src/views/apps/valkey/IndexView.vue:33 src/views/environment/PHPView.vue:115 +#: src/views/apps/valkey/IndexView.vue:33 +#: src/views/environment/PHPView.vue:115 msgid "Property" msgstr "屬性" @@ -2194,7 +2510,8 @@ msgstr "屬性" #: src/views/apps/prometheus/IndexView.vue:51 #: src/views/apps/redis/IndexView.vue:40 #: src/views/apps/rocketmq/IndexView.vue:40 -#: src/views/apps/valkey/IndexView.vue:40 src/views/environment/PHPView.vue:122 +#: src/views/apps/valkey/IndexView.vue:40 +#: src/views/environment/PHPView.vue:122 msgid "Current Value" msgstr "當前值" @@ -2205,20 +2522,24 @@ msgstr "當前值" #: src/views/apps/nginx/NginxIndex.vue:336 #: src/views/apps/postgresql/IndexView.vue:111 #: src/views/apps/postgresql/IndexView.vue:124 -#: src/views/apps/supervisor/IndexView.vue:213 -#: src/views/apps/supervisor/IndexView.vue:269 +#: src/views/apps/supervisor/IndexView.vue:246 +#: src/views/apps/supervisor/IndexView.vue:302 #: src/views/database/RedisDataView.vue:252 -#: src/views/environment/PHPView.vue:162 src/views/environment/PHPView.vue:169 -#: src/views/firewall/ScanView.vue:336 src/views/monitor/AlertView.vue:180 -#: src/views/monitor/SettingView.vue:49 src/views/tamper/TamperView.vue:216 -#: src/views/task/CronView.vue:23 src/views/task/TaskView.vue:21 -#: src/views/website/EditModal.vue:333 src/views/website/StatsView.vue:93 +#: src/views/environment/PHPView.vue:162 +#: src/views/environment/PHPView.vue:169 +#: src/views/firewall/ScanView.vue:336 +#: src/views/monitor/AlertView.vue:180 +#: src/views/monitor/SettingView.vue:49 +#: src/views/tamper/TamperView.vue:216 +#: src/views/task/CronView.vue:23 +#: src/views/task/TaskView.vue:21 +#: src/views/website/EditModal.vue:333 +#: src/views/website/StatsView.vue:93 msgid "Cleared successfully" msgstr "清除成功" #: src/views/apps/apache/IndexView.vue:74 #: src/views/apps/codeserver/IndexView.vue:40 -#: src/views/apps/frp/IndexView.vue:88 src/views/apps/frp/IndexView.vue:121 #: src/views/apps/gitea/IndexView.vue:38 #: src/views/apps/mysql/MysqlIndex.vue:150 #: src/views/apps/nginx/NginxIndex.vue:501 @@ -2228,11 +2549,8 @@ msgstr "修改配置" #: src/views/apps/apache/IndexView.vue:78 #: src/views/apps/nginx/NginxIndex.vue:505 -msgid "" -"This modifies the %{name} main configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 %{name} 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "This modifies the %{name} main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 %{name} 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/apache/IndexView.vue:97 #: src/views/apps/clickhouse/IndexView.vue:146 @@ -2248,7 +2566,8 @@ msgstr "" #: src/views/apps/prometheus/IndexView.vue:147 #: src/views/apps/redis/IndexView.vue:90 #: src/views/apps/rocketmq/IndexView.vue:93 -#: src/views/apps/valkey/IndexView.vue:90 src/views/environment/PHPView.vue:259 +#: src/views/apps/valkey/IndexView.vue:90 +#: src/views/environment/PHPView.vue:259 #: src/views/home/IndexView.vue:587 msgid "Load Status" msgstr "負載狀態" @@ -2258,7 +2577,9 @@ msgstr "負載狀態" #: src/views/apps/codeserver/IndexView.vue:62 #: src/views/apps/docker/IndexView.vue:477 #: src/views/apps/elasticsearch/IndexView.vue:100 -#: src/views/apps/fail2ban/IndexView.vue:280 +#: src/views/apps/fail2ban/IndexView.vue:328 +#: src/views/apps/frp/IndexView.vue:122 +#: src/views/apps/frp/IndexView.vue:180 #: src/views/apps/gitea/IndexView.vue:60 #: src/views/apps/grafana/IndexView.vue:130 #: src/views/apps/kafka/IndexView.vue:100 @@ -2273,8 +2594,8 @@ msgstr "負載狀態" #: src/views/apps/prometheus/IndexView.vue:157 #: src/views/apps/redis/IndexView.vue:100 #: src/views/apps/rocketmq/IndexView.vue:103 -#: src/views/apps/rsync/IndexView.vue:247 -#: src/views/apps/supervisor/IndexView.vue:361 +#: src/views/apps/rsync/IndexView.vue:259 +#: src/views/apps/supervisor/IndexView.vue:413 #: src/views/apps/valkey/IndexView.vue:100 #: src/views/environment/PHPView.vue:269 msgid "Runtime Logs" @@ -2290,8 +2611,10 @@ msgstr "錯誤日誌" #: src/views/apps/mongodb/MongoDBConfigTuneView.vue:88 #: src/views/container/ContainerCreate.vue:329 #: src/views/container/ContainerInfoModal.vue:132 -#: src/views/home/IndexView.vue:188 src/views/home/IndexView.vue:967 -#: src/views/monitor/SystemView.vue:914 src/views/toolbox/IndexView.vue:28 +#: src/views/home/IndexView.vue:188 +#: src/views/home/IndexView.vue:967 +#: src/views/monitor/SystemView.vue:914 +#: src/views/toolbox/IndexView.vue:28 msgid "Network" msgstr "網路" @@ -2361,13 +2684,20 @@ msgstr "日誌級別(logger.level)" #: src/views/database/ServerList.vue:275 #: src/views/database/UpdateServerModal.vue:27 #: src/views/database/UpdateUserModal.vue:23 -#: src/views/database/UserList.vue:191 src/views/file/PermissionModal.vue:57 -#: src/views/firewall/RuleView.vue:29 src/views/setting/SettingUser.vue:161 -#: src/views/setting/SettingUser.vue:167 src/views/task/CreateModal.vue:121 -#: src/views/task/CronView.vue:189 src/views/task/CronView.vue:259 -#: src/views/toolbox/WebHookView.vue:200 src/views/toolbox/WebHookView.vue:278 -#: src/views/website/ListView.vue:360 src/views/website/ListView.vue:366 -#: src/views/website/SettingView.vue:47 src/views/website/SettingView.vue:58 +#: src/views/database/UserList.vue:191 +#: src/views/file/PermissionModal.vue:57 +#: src/views/firewall/RuleView.vue:29 +#: src/views/setting/SettingUser.vue:161 +#: src/views/setting/SettingUser.vue:167 +#: src/views/task/CreateModal.vue:121 +#: src/views/task/CronView.vue:189 +#: src/views/task/CronView.vue:259 +#: src/views/toolbox/WebHookView.vue:200 +#: src/views/toolbox/WebHookView.vue:278 +#: src/views/website/ListView.vue:360 +#: src/views/website/ListView.vue:366 +#: src/views/website/SettingView.vue:47 +#: src/views/website/SettingView.vue:58 #: src/views/website/SettingView.vue:89 msgid "Modified successfully" msgstr "修改成功" @@ -2377,23 +2707,26 @@ msgid "Default User Password" msgstr "預設使用者密碼" #: src/views/apps/clickhouse/IndexView.vue:92 -msgid "" -"The ClickHouse default user password is used to access the database. Keep it " -"safe!" +msgid "The ClickHouse default user password is used to access the database. Keep it safe!" msgstr "ClickHouse 預設使用者密碼用於存取資料庫。請妥善保管!" #: src/views/apps/clickhouse/IndexView.vue:105 #: src/views/apps/mongodb/IndexView.vue:101 #: src/views/apps/mysql/MysqlIndex.vue:134 #: src/views/apps/postgresql/IndexView.vue:172 -#: src/views/database/ServerList.vue:106 src/views/database/UserList.vue:56 -#: src/views/file/ListView.vue:374 src/views/file/ListView.vue:408 -#: src/views/file/ListView.vue:1004 src/views/file/ToolBar.vue:187 +#: src/views/database/ServerList.vue:106 +#: src/views/database/UserList.vue:56 +#: src/views/file/ListView.vue:374 +#: src/views/file/ListView.vue:408 +#: src/views/file/ListView.vue:1004 +#: src/views/file/ToolBar.vue:187 msgid "Copy" msgstr "複製" #: src/views/apps/clickhouse/IndexView.vue:121 #: src/views/apps/elasticsearch/IndexView.vue:65 +#: src/views/apps/frp/IndexView.vue:83 +#: src/views/apps/frp/IndexView.vue:141 #: src/views/apps/grafana/IndexView.vue:92 #: src/views/apps/kafka/IndexView.vue:65 #: src/views/apps/mongodb/IndexView.vue:117 @@ -2402,21 +2735,21 @@ msgstr "複製" #: src/views/apps/prometheus/IndexView.vue:96 #: src/views/apps/redis/IndexView.vue:65 #: src/views/apps/rocketmq/IndexView.vue:68 -#: src/views/apps/rsync/IndexView.vue:225 -#: src/views/apps/supervisor/IndexView.vue:339 -#: src/views/apps/valkey/IndexView.vue:65 src/views/environment/PHPView.vue:223 +#: src/views/apps/rsync/IndexView.vue:237 +#: src/views/apps/supervisor/IndexView.vue:391 +#: src/views/apps/valkey/IndexView.vue:65 +#: src/views/environment/PHPView.vue:223 msgid "Main Configuration" msgstr "主配置" #: src/views/apps/clickhouse/IndexView.vue:125 -msgid "" -"This modifies the ClickHouse configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 ClickHouse 設定檔。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "This modifies the ClickHouse configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 ClickHouse 設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/clickhouse/IndexView.vue:143 #: src/views/apps/elasticsearch/IndexView.vue:87 +#: src/views/apps/frp/IndexView.vue:80 +#: src/views/apps/frp/IndexView.vue:132 #: src/views/apps/grafana/IndexView.vue:114 #: src/views/apps/kafka/IndexView.vue:87 #: src/views/apps/memcached/IndexView.vue:83 @@ -2429,16 +2762,14 @@ msgstr "" #: src/views/apps/pureftpd/IndexView.vue:215 #: src/views/apps/redis/IndexView.vue:87 #: src/views/apps/rocketmq/IndexView.vue:90 -#: src/views/apps/valkey/IndexView.vue:87 src/views/environment/PHPView.vue:220 +#: src/views/apps/valkey/IndexView.vue:87 +#: src/views/environment/PHPView.vue:220 msgid "Parameter Tuning" msgstr "參數調優" #: src/views/apps/codeserver/IndexView.vue:44 -msgid "" -"This modifies the Code Server configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 Code Server 的設定檔。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "This modifies the Code Server configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 Code Server 的設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/docker/IndexView.vue:63 #: src/views/apps/docker/IndexView.vue:70 @@ -2462,7 +2793,8 @@ msgstr "中國 - 騰訊(僅內網)" #: src/views/apps/docker/IndexView.vue:194 #: src/views/container/ContainerCreate.vue:309 -#: src/views/project/EditModal.vue:182 src/views/website/EditModal.vue:979 +#: src/views/project/EditModal.vue:182 +#: src/views/website/EditModal.vue:979 msgid "Basic Settings" msgstr "基本設定" @@ -2470,14 +2802,13 @@ msgstr "基本設定" msgid "Registry Mirrors" msgstr "註冊表鏡像" -#: src/views/apps/docker/IndexView.vue:203 src/views/website/EditModal.vue:1801 +#: src/views/apps/docker/IndexView.vue:203 +#: src/views/website/EditModal.vue:1801 msgid "Presets" msgstr "預設" #: src/views/apps/docker/IndexView.vue:226 -msgid "" -"Configure registry mirrors to speed up image downloads. Domestic users can " -"configure domestic mirrors." +msgid "Configure registry mirrors to speed up image downloads. Domestic users can configure domestic mirrors." msgstr "設定映像加速來源以加快映像檔下載。中國大陸使用者可設定當地的鏡像來源。" #: src/views/apps/docker/IndexView.vue:235 @@ -2488,7 +2819,8 @@ msgstr "輸入鏡像地址,例如 https://registry.example.com" #: src/views/apps/docker/IndexView.vue:392 #: src/views/apps/docker/IndexView.vue:420 #: src/views/apps/docker/IndexView.vue:445 -#: src/views/apps/nginx/NginxIndex.vue:743 src/views/toolbox/SystemView.vue:307 +#: src/views/apps/nginx/NginxIndex.vue:743 +#: src/views/toolbox/SystemView.vue:307 msgid "Add" msgstr "新增" @@ -2497,12 +2829,8 @@ msgid "Log Configuration" msgstr "日誌配置" #: src/views/apps/docker/IndexView.vue:253 -msgid "" -"Configure log driver and rotation settings. Setting max-size and max-file " -"can prevent log files from growing indefinitely." -msgstr "" -"配置日誌驅動程式和輪轉設定。設定 max-size 和 max-file 可以防止日誌檔案無限增" -"長。" +msgid "Configure log driver and rotation settings. Setting max-size and max-file can prevent log files from growing indefinitely." +msgstr "配置日誌驅動程式和輪轉設定。設定 max-size 和 max-file 可以防止日誌檔案無限增長。" #: src/views/apps/docker/IndexView.vue:259 msgid "Log Driver" @@ -2575,9 +2903,7 @@ msgid "Firewall Configuration" msgstr "防火牆配置" #: src/views/apps/docker/IndexView.vue:347 -msgid "" -"Configure Docker firewall backend. nftables is experimental and does not " -"support Swarm mode." +msgid "Configure Docker firewall backend. nftables is experimental and does not support Swarm mode." msgstr "配置 Docker 防火牆後端。nftables 是實驗性的,不支援 Swarm 模式。" #: src/views/apps/docker/IndexView.vue:353 @@ -2641,12 +2967,8 @@ msgid "Insecure Registries" msgstr "不安全的註冊表" #: src/views/apps/docker/IndexView.vue:433 -msgid "" -"Insecure registries allow Docker to communicate with registries using HTTP " -"or self-signed certificates. Use with caution." -msgstr "" -"不安全的註冊表允許 Docker 使用 HTTP 或自簽名憑證與註冊表進行通訊。請謹慎使" -"用。" +msgid "Insecure registries allow Docker to communicate with registries using HTTP or self-signed certificates. Use with caution." +msgstr "不安全的註冊表允許 Docker 使用 HTTP 或自簽名憑證與註冊表進行通訊。請謹慎使用。" #: src/views/apps/docker/IndexView.vue:441 msgid "e.g., 192.168.1.100:5000" @@ -2701,11 +3023,8 @@ msgstr "路徑和 JVM" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:106 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:106 -msgid "" -"Data paths and JVM heap memory settings. Heap size is recommended to be 50% " -"of system RAM, max 31g." -msgstr "" -"資料路徑與 JVM 堆積記憶體設定。建議堆積大小為系統 RAM 的 50%,最大 31g。" +msgid "Data paths and JVM heap memory settings. Heap size is recommended to be 50% of system RAM, max 31g." +msgstr "資料路徑與 JVM 堆積記憶體設定。建議堆積大小為系統 RAM 的 50%,最大 31g。" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:112 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:112 @@ -2734,114 +3053,129 @@ msgid "Max Heap Size (-Xmx)" msgstr "最大堆大小(-Xmx)" #: src/views/apps/elasticsearch/IndexView.vue:69 -msgid "" -"This modifies the ElasticSearch main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 ElasticSearch 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "This modifies the ElasticSearch main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 ElasticSearch 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" -#: src/views/apps/fail2ban/IndexView.vue:59 -#: src/views/apps/fail2ban/IndexView.vue:356 +#: src/views/apps/fail2ban/IndexView.vue:69 +#: src/views/apps/fail2ban/IndexView.vue:404 +#: src/views/apps/fail2ban/IndexView.vue:450 msgid "Max Retries" msgstr "最大重試次數" -#: src/views/apps/fail2ban/IndexView.vue:60 -#: src/views/apps/fail2ban/IndexView.vue:362 +#: src/views/apps/fail2ban/IndexView.vue:70 +#: src/views/apps/fail2ban/IndexView.vue:410 +#: src/views/apps/fail2ban/IndexView.vue:466 msgid "Ban Time" msgstr "封禁時間" -#: src/views/apps/fail2ban/IndexView.vue:61 -#: src/views/apps/fail2ban/IndexView.vue:359 +#: src/views/apps/fail2ban/IndexView.vue:71 +#: src/views/apps/fail2ban/IndexView.vue:407 +#: src/views/apps/fail2ban/IndexView.vue:458 msgid "Find Time" msgstr "查找時間" -#: src/views/apps/fail2ban/IndexView.vue:80 src/views/cert/CertView.vue:343 +#: src/views/apps/fail2ban/IndexView.vue:90 +#: src/views/cert/CertView.vue:343 #: src/views/database/ElasticsearchDataView.vue:186 #: src/views/database/RedisDataView.vue:141 msgid "View" msgstr "查看" -#: src/views/apps/fail2ban/IndexView.vue:89 +#: src/views/apps/fail2ban/IndexView.vue:108 +#: src/views/apps/frp/FrpProxyView.vue:89 +#: src/views/apps/frp/FrpVisitorView.vue:78 +#: src/views/apps/rsync/IndexView.vue:95 +#: src/views/apps/supervisor/IndexView.vue:140 +#: src/views/toolbox/network/InterfaceView.vue:212 +msgid "Configure" +msgstr "配置" + +#: src/views/apps/fail2ban/IndexView.vue:117 msgid "Are you sure you want to delete rule %{ name }?" msgstr "您確定要刪除規則 %{ name } 嗎?" -#: src/views/apps/fail2ban/IndexView.vue:124 +#: src/views/apps/fail2ban/IndexView.vue:152 msgid "Are you sure you want to unban %{ ip }?" msgstr "您確定要解封 %{ ip } 嗎?" -#: src/views/apps/fail2ban/IndexView.vue:125 -#: src/views/apps/fail2ban/IndexView.vue:130 +#: src/views/apps/fail2ban/IndexView.vue:153 +#: src/views/apps/fail2ban/IndexView.vue:158 msgid "Unban" msgstr "解封" -#: src/views/apps/fail2ban/IndexView.vue:179 +#: src/views/apps/fail2ban/IndexView.vue:207 #: src/views/apps/pureftpd/IndexView.vue:130 -#: src/views/apps/rsync/IndexView.vue:149 src/views/apps/s3fs/IndexView.vue:77 -#: src/views/apps/supervisor/IndexView.vue:226 +#: src/views/apps/rsync/IndexView.vue:160 +#: src/views/apps/s3fs/IndexView.vue:77 +#: src/views/apps/supervisor/IndexView.vue:259 #: src/views/database/CreateServerModal.vue:79 msgid "Added successfully" msgstr "新增成功" -#: src/views/apps/fail2ban/IndexView.vue:203 +#: src/views/apps/fail2ban/IndexView.vue:251 msgid "Unbanned successfully" msgstr "解封成功" -#: src/views/apps/fail2ban/IndexView.vue:225 +#: src/views/apps/fail2ban/IndexView.vue:273 #: src/views/firewall/SettingView.vue:129 msgid "IP Whitelist" msgstr "IP 白名單" -#: src/views/apps/fail2ban/IndexView.vue:230 +#: src/views/apps/fail2ban/IndexView.vue:278 msgid "IP whitelist, separated by commas" msgstr "IP 白名單,以逗號分隔" -#: src/views/apps/fail2ban/IndexView.vue:240 +#: src/views/apps/fail2ban/IndexView.vue:288 msgid "Save Whitelist" msgstr "儲存白名單" -#: src/views/apps/fail2ban/IndexView.vue:245 +#: src/views/apps/fail2ban/IndexView.vue:293 msgid "Rule Management" msgstr "規則管理" -#: src/views/apps/fail2ban/IndexView.vue:247 +#: src/views/apps/fail2ban/IndexView.vue:295 msgid "Rule List" msgstr "規則列表" -#: src/views/apps/fail2ban/IndexView.vue:275 -#: src/views/apps/fail2ban/IndexView.vue:285 -#: src/views/apps/fail2ban/IndexView.vue:289 -#: src/views/monitor/AlertRuleModal.vue:129 src/views/monitor/AlertView.vue:202 -#: src/views/tamper/RuleModal.vue:89 src/views/tamper/TamperView.vue:342 +#: src/views/apps/fail2ban/IndexView.vue:323 +#: src/views/apps/fail2ban/IndexView.vue:333 +#: src/views/apps/fail2ban/IndexView.vue:337 +#: src/views/monitor/AlertRuleModal.vue:129 +#: src/views/monitor/AlertView.vue:202 +#: src/views/tamper/RuleModal.vue:89 +#: src/views/tamper/TamperView.vue:342 msgid "Add Rule" msgstr "新增規則" -#: src/views/apps/fail2ban/IndexView.vue:295 -msgid "" -"If an IP exceeds the maximum retries within the find time (seconds), it will " -"be banned for the ban time (seconds)" -msgstr "" -"如果一個 IP 在偵測時間(秒)內超過最大重試次數,將被封鎖指定的封鎖時間(秒)" +#: src/views/apps/fail2ban/IndexView.vue:343 +msgid "If an IP exceeds the maximum retries within the find time (seconds), it will be banned for the ban time (seconds)" +msgstr "如果一個 IP 在偵測時間(秒)內超過最大重試次數,將被封鎖指定的封鎖時間(秒)" -#: src/views/apps/fail2ban/IndexView.vue:302 -msgid "" -"Protected ports are automatically obtained. If you modify the port " -"corresponding to a rule, please delete and re-add the rule, otherwise " -"protection may not be effective" -msgstr "" -"受保護的連接埠會自動取得。如果您修改了某個規則對應的連接埠,請刪除並重新新增" -"該規則,否則保護可能無效" +#: src/views/apps/fail2ban/IndexView.vue:350 +msgid "Protected ports are automatically obtained. If you modify the port corresponding to a rule, please delete and re-add the rule, otherwise protection may not be effective" +msgstr "受保護的連接埠會自動取得。如果您修改了某個規則對應的連接埠,請刪除並重新新增該規則,否則保護可能無效" -#: src/views/apps/fail2ban/IndexView.vue:309 +#: src/views/apps/fail2ban/IndexView.vue:357 +#: src/views/apps/frp/FrpProxyModal.vue:263 +#: src/views/apps/frp/FrpProxyView.vue:29 +#: src/views/apps/frp/FrpVisitorModal.vue:130 +#: src/views/apps/frp/FrpVisitorView.vue:29 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:78 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:209 -#: src/views/backup/StorageView.vue:73 src/views/backup/StorageView.vue:233 -#: src/views/backup/StorageView.vue:395 src/views/cert/CertView.vue:169 -#: src/views/cert/DnsView.vue:43 src/views/container/ContainerInfoModal.vue:156 +#: src/views/backup/StorageView.vue:73 +#: src/views/backup/StorageView.vue:233 +#: src/views/backup/StorageView.vue:395 +#: src/views/cert/CertView.vue:169 +#: src/views/cert/DnsView.vue:43 +#: src/views/container/ContainerInfoModal.vue:156 #: src/views/database/CreateServerModal.vue:100 #: src/views/database/RedisDataView.vue:94 -#: src/views/database/RedisKeyModal.vue:99 src/views/file/PropertyModal.vue:33 -#: src/views/log/OperationLog.vue:74 src/views/monitor/ChannelModal.vue:93 -#: src/views/monitor/SettingView.vue:104 src/views/project/ListView.vue:51 +#: src/views/database/RedisKeyModal.vue:99 +#: src/views/file/PropertyModal.vue:33 +#: src/views/log/OperationLog.vue:74 +#: src/views/monitor/ChannelModal.vue:93 +#: src/views/monitor/SettingView.vue:104 +#: src/views/project/ListView.vue:51 #: src/views/toolbox/MigrationView.vue:126 #: src/views/toolbox/MigrationView.vue:202 #: src/views/toolbox/network/InterfaceView.vue:154 @@ -2849,97 +3183,866 @@ msgstr "" msgid "Type" msgstr "類型" -#: src/views/apps/fail2ban/IndexView.vue:314 -#: src/views/apps/fail2ban/IndexView.vue:345 +#: src/views/apps/fail2ban/IndexView.vue:362 +#: src/views/apps/fail2ban/IndexView.vue:393 msgid "Service" msgstr "服務" -#: src/views/apps/fail2ban/IndexView.vue:319 -#: src/views/apps/fail2ban/IndexView.vue:323 src/views/task/CreateModal.vue:479 +#: src/views/apps/fail2ban/IndexView.vue:367 +#: src/views/apps/fail2ban/IndexView.vue:371 +#: src/views/task/CreateModal.vue:479 #: src/views/task/CreateModal.vue:485 msgid "Select Website" msgstr "選擇網站" -#: src/views/apps/fail2ban/IndexView.vue:326 +#: src/views/apps/fail2ban/IndexView.vue:374 #: src/views/tamper/TamperView.vue:251 msgid "Protection Mode" msgstr "保護模式" -#: src/views/apps/fail2ban/IndexView.vue:331 +#: src/views/apps/fail2ban/IndexView.vue:379 #: src/views/apps/pureftpd/IndexView.vue:46 -#: src/views/backup/StorageView.vue:277 src/views/backup/StorageView.vue:331 -#: src/views/backup/StorageView.vue:361 src/views/backup/StorageView.vue:433 -#: src/views/backup/StorageView.vue:487 src/views/backup/StorageView.vue:514 -#: src/views/log/HttpLog.vue:85 src/views/tamper/TamperView.vue:204 +#: src/views/backup/StorageView.vue:277 +#: src/views/backup/StorageView.vue:331 +#: src/views/backup/StorageView.vue:361 +#: src/views/backup/StorageView.vue:433 +#: src/views/backup/StorageView.vue:487 +#: src/views/backup/StorageView.vue:514 +#: src/views/log/HttpLog.vue:85 +#: src/views/tamper/TamperView.vue:204 msgid "Path" msgstr "路徑" -#: src/views/apps/fail2ban/IndexView.vue:338 -#: src/views/apps/fail2ban/IndexView.vue:342 +#: src/views/apps/fail2ban/IndexView.vue:386 +#: src/views/apps/fail2ban/IndexView.vue:390 msgid "Protection Path" msgstr "保護路徑" -#: src/views/apps/fail2ban/IndexView.vue:378 -#: src/views/apps/fail2ban/IndexView.vue:382 +#: src/views/apps/fail2ban/IndexView.vue:429 +msgid "Rule Configuration" +msgstr "規則配置" + +#: src/views/apps/fail2ban/IndexView.vue:438 +msgid "The protected port, filter and log path are derived when the rule is created and are kept as-is here. To change them, delete and re-add the rule." +msgstr "受保護連接埠、過濾條件和日誌路徑在建立規則時確定,此處保持不變。如需更改,請刪除規則後重新新增。" + +#: src/views/apps/fail2ban/IndexView.vue:447 +#: src/views/apps/frp/FrpProxyModal.vue:266 +#: src/views/apps/frp/FrpProxyView.vue:43 +#: src/views/apps/frp/FrpVisitorModal.vue:133 +#: src/views/apps/frp/FrpVisitorView.vue:43 +#: src/views/apps/frp/options.ts:13 +#: src/views/monitor/AlertRuleModal.vue:180 +#: src/views/monitor/AlertView.vue:98 +#: src/views/monitor/ChannelModal.vue:142 +#: src/views/monitor/SettingView.vue:121 +#: src/views/tamper/RuleModal.vue:121 +#: src/views/tamper/TamperView.vue:136 +#: src/views/task/CronView.vue:76 +#: src/views/toolbox/WebHookView.vue:91 +#: src/views/toolbox/WebHookView.vue:386 +msgid "Enabled" +msgstr "已啟用" + +#: src/views/apps/fail2ban/IndexView.vue:486 +#: src/views/apps/fail2ban/IndexView.vue:490 msgid "View Rule" msgstr "查看規則" -#: src/views/apps/fail2ban/IndexView.vue:386 +#: src/views/apps/fail2ban/IndexView.vue:494 msgid "Rule Information" msgstr "規則資訊" -#: src/views/apps/fail2ban/IndexView.vue:389 +#: src/views/apps/fail2ban/IndexView.vue:497 msgid "Currently Banned" msgstr "當前已封禁" -#: src/views/apps/fail2ban/IndexView.vue:393 +#: src/views/apps/fail2ban/IndexView.vue:501 msgid "Total Bans" msgstr "總封禁次數" -#: src/views/apps/fail2ban/IndexView.vue:398 +#: src/views/apps/fail2ban/IndexView.vue:506 msgid "Ban List" msgstr "封禁列表" -#: src/views/apps/frp/IndexView.vue:68 src/views/apps/frp/IndexView.vue:101 -#: src/views/project/CreateModal.vue:622 src/views/project/EditModal.vue:237 -msgid "Run User" -msgstr "執行使用者" +#: src/views/apps/frp/FrpcConfigTuneView.vue:74 +#: src/views/apps/frp/FrpsConfigTuneView.vue:74 +#: src/views/apps/mysql/MysqlConfigTuneView.vue:210 +#: src/views/apps/nginx/NginxConfigTuneView.vue:175 +#: src/views/apps/redis/RedisConfigTuneView.vue:119 +#: src/views/apps/valkey/ValkeyConfigTuneView.vue:113 +#: src/views/environment/PhpConfigTuneView.vue:248 +#: src/views/project/IndexView.vue:22 +#: src/views/project/ListView.vue:25 +msgid "General" +msgstr "通用" -#: src/views/apps/frp/IndexView.vue:80 src/views/apps/frp/IndexView.vue:81 -#: src/views/apps/frp/IndexView.vue:113 src/views/apps/frp/IndexView.vue:114 -#: src/views/apps/grafana/GrafanaDataSourcesView.vue:225 -#: src/views/apps/rsync/IndexView.vue:57 src/views/apps/rsync/IndexView.vue:279 -#: src/views/apps/rsync/IndexView.vue:340 src/views/database/IndexView.vue:131 -#: src/views/home/IndexView.vue:673 src/views/home/IndexView.vue:774 -#: src/views/log/SSHLog.vue:73 src/views/monitor/SystemView.vue:323 -#: src/views/monitor/SystemView.vue:335 src/views/setting/IndexView.vue:149 -#: src/views/toolbox/ProcessView.vue:128 src/views/toolbox/ProcessView.vue:396 -#: src/views/toolbox/WebHookView.vue:333 src/views/toolbox/WebHookView.vue:374 -msgid "User" -msgstr "使用者" +#: src/views/apps/frp/FrpcConfigTuneView.vue:77 +msgid "Leave a field empty to comment out the option and use the frpc default." +msgstr "將欄位留空可註釋掉該選項並使用 frpc 預設值。" -#: src/views/apps/frp/IndexView.vue:83 src/views/apps/frp/IndexView.vue:84 -#: src/views/apps/frp/IndexView.vue:116 src/views/apps/frp/IndexView.vue:117 -#: src/views/file/PermissionModal.vue:128 -#: src/views/file/PermissionModal.vue:152 src/views/file/PropertyModal.vue:48 -msgid "Group" -msgstr "群組" +#: src/views/apps/frp/FrpcConfigTuneView.vue:80 +msgid "Server Address (serverAddr)" +msgstr "伺服器地址(serverAddr)" -#: src/views/apps/gitea/IndexView.vue:42 -msgid "" -"This modifies the Gitea configuration file. If you do not understand the " -"meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 Gitea 設定檔。如果您不了解每個參數的含義,請不要隨意修改!" +#: src/views/apps/frp/FrpcConfigTuneView.vue:83 +msgid "Server Port (serverPort)" +msgstr "伺服器連接埠(serverPort)" +#: src/views/apps/frp/FrpcConfigTuneView.vue:86 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:204 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:288 +msgid "User (user)" +msgstr "使用者(user)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:89 +msgid "Proxy names will be prefixed with this user" +msgstr "代理名稱將以此使用者作為字首" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:92 +msgid "Exit On Login Failure (loginFailExit)" +msgstr "登入失敗時退出(loginFailExit)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:95 +msgid "STUN Server (natHoleStunServer)" +msgstr "STUN 伺服器(natHoleStunServer)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:101 +msgid "DNS Server (dnsServer)" +msgstr "DNS 伺服器(dnsServer)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:104 +#: src/views/apps/frp/FrpsConfigTuneView.vue:113 +msgid "UDP Packet Size (udpPacketSize)" +msgstr "UDP 資料包大小(udpPacketSize)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:120 +#: src/views/apps/frp/FrpsConfigTuneView.vue:136 +#: src/views/container/ImageView.vue:402 +msgid "Authentication" +msgstr "身份驗證" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:123 +#: src/views/apps/frp/FrpsConfigTuneView.vue:139 +msgid "The token must be identical on frps and frpc, otherwise login will fail." +msgstr "frps 和 frpc 的令牌必須一致,否則登入將失敗。" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:126 +#: src/views/apps/frp/FrpsConfigTuneView.vue:142 +msgid "Method (auth.method)" +msgstr "身份驗證方式(auth.method)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:129 +#: src/views/apps/frp/FrpsConfigTuneView.vue:145 +msgid "Token (auth.token)" +msgstr "令牌(auth.token)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:134 +#: src/views/apps/frp/FrpsConfigTuneView.vue:150 +msgid "Leave empty for no authentication" +msgstr "留空表示不啟用身份驗證" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:150 +#: src/views/apps/frp/FrpProxyModal.vue:388 +#: src/views/apps/frp/FrpsConfigTuneView.vue:248 +#: src/views/apps/frp/FrpVisitorModal.vue:223 +msgid "Transport" +msgstr "傳輸" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:153 +#: src/views/apps/frp/FrpsConfigTuneView.vue:251 +msgid "Do not modify these options unless you know what they do." +msgstr "如果不瞭解用途,請勿修改這些選項。" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:156 +msgid "Protocol (transport.protocol)" +msgstr "傳輸協議(transport.protocol)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:163 +msgid "Pool Count (transport.poolCount)" +msgstr "連線池數量(transport.poolCount)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:166 +#: src/views/apps/frp/FrpsConfigTuneView.vue:257 +msgid "TCP Mux (transport.tcpMux)" +msgstr "TCP Mux(transport.tcpMux)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:170 +#: src/views/apps/frp/FrpsConfigTuneView.vue:261 +msgid "TCP Mux Keepalive Interval (transport.tcpMuxKeepaliveInterval)" +msgstr "TCP Mux 保活間隔(transport.tcpMuxKeepaliveInterval)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:174 +msgid "Dial Timeout (transport.dialServerTimeout)" +msgstr "撥號超時(transport.dialServerTimeout)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:177 +msgid "Dial Keepalive (transport.dialServerKeepalive)" +msgstr "撥號保活(transport.dialServerKeepalive)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:180 +msgid "Heartbeat Interval (transport.heartbeatInterval)" +msgstr "心跳間隔(transport.heartbeatInterval)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:183 +#: src/views/apps/frp/FrpsConfigTuneView.vue:268 +msgid "Heartbeat Timeout (transport.heartbeatTimeout)" +msgstr "心跳超時(transport.heartbeatTimeout)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:186 +msgid "Local IP (transport.connectServerLocalIP)" +msgstr "本地 IP(transport.connectServerLocalIP)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:192 +msgid "Proxy URL (transport.proxyURL)" +msgstr "代理 URL(transport.proxyURL)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:198 +msgid "Enable TLS (transport.tls.enable)" +msgstr "啟用 TLS(transport.tls.enable)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:201 +#: src/views/apps/frp/FrpsConfigTuneView.vue:274 +msgid "TLS Certificate (transport.tls.certFile)" +msgstr "TLS 證書(transport.tls.certFile)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:204 +#: src/views/apps/frp/FrpsConfigTuneView.vue:277 +msgid "TLS Private Key (transport.tls.keyFile)" +msgstr "TLS 私鑰(transport.tls.keyFile)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:207 +#: src/views/apps/frp/FrpsConfigTuneView.vue:280 +msgid "TLS CA (transport.tls.trustedCaFile)" +msgstr "TLS CA(transport.tls.trustedCaFile)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:210 +msgid "TLS Server Name (transport.tls.serverName)" +msgstr "TLS 伺服器名稱(transport.tls.serverName)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:226 +msgid "Admin API" +msgstr "管理 API" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:229 +msgid "The frpc admin API is available only when the port is set." +msgstr "僅設定連接埠後才可使用 frpc 管理 API。" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:232 +#: src/views/apps/frp/FrpsConfigTuneView.vue:209 +msgid "Listen Address (webServer.addr)" +msgstr "監聽地址(webServer.addr)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:235 +#: src/views/apps/frp/FrpsConfigTuneView.vue:212 +msgid "Listen Port (webServer.port)" +msgstr "監聽連接埠(webServer.port)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:238 +#: src/views/apps/frp/FrpsConfigTuneView.vue:215 +msgid "Username (webServer.user)" +msgstr "使用者名稱(webServer.user)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:241 +#: src/views/apps/frp/FrpsConfigTuneView.vue:218 +msgid "Password (webServer.password)" +msgstr "密碼(webServer.password)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:248 +#: src/views/apps/frp/FrpsConfigTuneView.vue:225 +msgid "Enable pprof (webServer.pprofEnable)" +msgstr "啟用 pprof(webServer.pprofEnable)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:271 +#: src/views/apps/frp/FrpsConfigTuneView.vue:299 +msgid "Output (log.to)" +msgstr "日誌輸出(log.to)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:274 +#: src/views/apps/frp/FrpsConfigTuneView.vue:302 +msgid "Level (log.level)" +msgstr "日誌級別(log.level)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:277 +#: src/views/apps/frp/FrpsConfigTuneView.vue:305 +msgid "Max Days (log.maxDays)" +msgstr "最大保留天數(log.maxDays)" + +#: src/views/apps/frp/FrpcConfigTuneView.vue:280 +#: src/views/apps/frp/FrpsConfigTuneView.vue:308 +msgid "Disable Colors (log.disablePrintColor)" +msgstr "禁用顏色(log.disablePrintColor)" + +#: src/views/apps/frp/FrpProxyModal.vue:90 +msgid "Client" +msgstr "客戶端" + +#: src/views/apps/frp/FrpProxyModal.vue:91 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:149 #: src/views/apps/nginx/NginxIndex.vue:529 #: src/views/database/CreateDatabaseModal.vue:86 #: src/views/database/CreateUserModal.vue:104 -#: src/views/database/DatabaseList.vue:28 src/views/database/IndexView.vue:132 +#: src/views/database/DatabaseList.vue:28 +#: src/views/database/IndexView.vue:132 #: src/views/database/UserList.vue:73 msgid "Server" msgstr "伺服器" +#: src/views/apps/frp/FrpProxyModal.vue:248 +msgid "Edit Proxy" +msgstr "編輯代理" + +#: src/views/apps/frp/FrpProxyModal.vue:248 +#: src/views/apps/frp/FrpProxyView.vue:150 +msgid "Add Proxy" +msgstr "新增代理" + +#: src/views/apps/frp/FrpProxyModal.vue:260 +#: src/views/apps/frp/FrpVisitorModal.vue:127 +msgid "Unique name, letters, digits, dot, underscore and hyphen only" +msgstr "名稱必須唯一,只允許字母、數字、點、下劃線和連字元" + +#: src/views/apps/frp/FrpProxyModal.vue:271 +msgid "Local Address (localIP)" +msgstr "本地地址(localIP)" + +#: src/views/apps/frp/FrpProxyModal.vue:274 +msgid "Local Port (localPort)" +msgstr "本地連接埠(localPort)" + +#: src/views/apps/frp/FrpProxyModal.vue:282 +msgid "Remote Port (remotePort)" +msgstr "遠端連接埠(remotePort)" + +#: src/views/apps/frp/FrpProxyModal.vue:289 +msgid "0 means frps assigns a random port" +msgstr "0 表示由 frps 分配隨機連接埠" + +#: src/views/apps/frp/FrpProxyModal.vue:294 +msgid "Custom Domains (customDomains)" +msgstr "自定義域名(customDomains)" + +#: src/views/apps/frp/FrpProxyModal.vue:301 +msgid "Subdomain (subdomain)" +msgstr "子域名(subdomain)" + +#: src/views/apps/frp/FrpProxyModal.vue:305 +msgid "Requires subDomainHost on frps" +msgstr "frps 需要配置 subDomainHost" + +#: src/views/apps/frp/FrpProxyModal.vue:311 +msgid "HTTP Username (httpUser)" +msgstr "HTTP 使用者名稱(httpUser)" + +#: src/views/apps/frp/FrpProxyModal.vue:314 +msgid "HTTP Password (httpPassword)" +msgstr "HTTP 密碼(httpPassword)" + +#: src/views/apps/frp/FrpProxyModal.vue:317 +msgid "Route By User (routeByHTTPUser)" +msgstr "按使用者路由(routeByHTTPUser)" + +#: src/views/apps/frp/FrpProxyModal.vue:323 +msgid "Locations (locations)" +msgstr "路徑(locations)" + +#: src/views/apps/frp/FrpProxyModal.vue:328 +#: src/views/apps/frp/FrpProxyModal.vue:522 +msgid "Host Header Rewrite (hostHeaderRewrite)" +msgstr "Host 請求頭重寫(hostHeaderRewrite)" + +#: src/views/apps/frp/FrpProxyModal.vue:336 +msgid "Request Headers (requestHeaders)" +msgstr "請求頭(requestHeaders)" + +#: src/views/apps/frp/FrpProxyModal.vue:339 +#: src/views/apps/frp/FrpProxyModal.vue:352 +msgid "Header" +msgstr "請求頭" + +#: src/views/apps/frp/FrpProxyModal.vue:340 +#: src/views/apps/frp/FrpProxyModal.vue:353 +#: src/views/database/RedisKeyModal.vue:109 +#: src/views/toolbox/disk/SmartView.vue:205 +#: src/views/toolbox/disk/SmartView.vue:232 +msgid "Value" +msgstr "值" + +#: src/views/apps/frp/FrpProxyModal.vue:341 +#: src/views/apps/frp/FrpProxyModal.vue:354 +msgid "Add Header" +msgstr "新增請求頭" + +#: src/views/apps/frp/FrpProxyModal.vue:348 +msgid "Response Headers (responseHeaders)" +msgstr "響應頭(responseHeaders)" + +#: src/views/apps/frp/FrpProxyModal.vue:364 +msgid "Multiplexer (multiplexer)" +msgstr "多路複用器(multiplexer)" + +#: src/views/apps/frp/FrpProxyModal.vue:370 +#: src/views/apps/frp/FrpVisitorModal.vue:150 +msgid "Secret Key (secretKey)" +msgstr "金鑰(secretKey)" + +#: src/views/apps/frp/FrpProxyModal.vue:375 +msgid "Visitors must use the same secret key" +msgstr "訪客必須使用相同的金鑰" + +#: src/views/apps/frp/FrpProxyModal.vue:378 +msgid "Allowed Users (allowUsers)" +msgstr "允許的使用者(allowUsers)" + +#: src/views/apps/frp/FrpProxyModal.vue:381 +msgid "* means all users" +msgstr "* 表示所有使用者" + +#: src/views/apps/frp/FrpProxyModal.vue:389 +#: src/views/apps/frp/FrpVisitorModal.vue:224 +msgid "Encryption (transport.useEncryption)" +msgstr "加密(transport.useEncryption)" + +#: src/views/apps/frp/FrpProxyModal.vue:392 +#: src/views/apps/frp/FrpVisitorModal.vue:227 +msgid "Compression (transport.useCompression)" +msgstr "壓縮(transport.useCompression)" + +#: src/views/apps/frp/FrpProxyModal.vue:395 +msgid "Bandwidth Limit (transport.bandwidthLimit)" +msgstr "頻寬限制(transport.bandwidthLimit)" + +#: src/views/apps/frp/FrpProxyModal.vue:402 +msgid "Limit Side (transport.bandwidthLimitMode)" +msgstr "限制端(transport.bandwidthLimitMode)" + +#: src/views/apps/frp/FrpProxyModal.vue:411 +msgid "Proxy Protocol (transport.proxyProtocolVersion)" +msgstr "代理協議(transport.proxyProtocolVersion)" + +#: src/views/apps/frp/FrpProxyModal.vue:422 +msgid "Load Balancer" +msgstr "負載均衡" + +#: src/views/apps/frp/FrpProxyModal.vue:425 +msgid "Group (loadBalancer.group)" +msgstr "組(loadBalancer.group)" + +#: src/views/apps/frp/FrpProxyModal.vue:428 +msgid "Group Key (loadBalancer.groupKey)" +msgstr "組金鑰(loadBalancer.groupKey)" + +#: src/views/apps/frp/FrpProxyModal.vue:432 +msgid "Health Check" +msgstr "健康檢查" + +#: src/views/apps/frp/FrpProxyModal.vue:433 +msgid "Type (healthCheck.type)" +msgstr "型別(healthCheck.type)" + +#: src/views/apps/frp/FrpProxyModal.vue:441 +msgid "Timeout Seconds (healthCheck.timeoutSeconds)" +msgstr "超時秒數(healthCheck.timeoutSeconds)" + +#: src/views/apps/frp/FrpProxyModal.vue:446 +#: src/views/apps/frp/FrpProxyModal.vue:454 +#: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:209 +#: src/views/environment/PhpConfigTuneView.vue:463 +msgid "e.g. 3" +msgstr "例如 3" + +#: src/views/apps/frp/FrpProxyModal.vue:449 +msgid "Max Failed (healthCheck.maxFailed)" +msgstr "最大失敗次數(healthCheck.maxFailed)" + +#: src/views/apps/frp/FrpProxyModal.vue:457 +msgid "Interval Seconds (healthCheck.intervalSeconds)" +msgstr "間隔秒數(healthCheck.intervalSeconds)" + +#: src/views/apps/frp/FrpProxyModal.vue:462 +#: src/views/apps/nginx/NginxConfigTuneView.vue:224 +#: src/views/environment/PhpConfigTuneView.vue:474 +msgid "e.g. 10" +msgstr "例如 10" + +#: src/views/apps/frp/FrpProxyModal.vue:467 +msgid "Path (healthCheck.path)" +msgstr "路徑(healthCheck.path)" + +#: src/views/apps/frp/FrpProxyModal.vue:477 +msgid "Plugin" +msgstr "外掛" + +#: src/views/apps/frp/FrpProxyModal.vue:479 +msgid "When a plugin is used, the local address and port are ignored." +msgstr "使用外掛時,本地地址和連接埠將被忽略。" + +#: src/views/apps/frp/FrpProxyModal.vue:481 +msgid "Type (plugin.type)" +msgstr "型別(plugin.type)" + +#: src/views/apps/frp/FrpProxyModal.vue:486 +msgid "Socket Path (unixPath)" +msgstr "套接字路徑(unixPath)" + +#: src/views/apps/frp/FrpProxyModal.vue:496 +msgid "Local Address (localAddr)" +msgstr "本地地址(localAddr)" + +#: src/views/apps/frp/FrpProxyModal.vue:506 +msgid "Local Path (localPath)" +msgstr "本地路徑(localPath)" + +#: src/views/apps/frp/FrpProxyModal.vue:516 +msgid "Strip Prefix (stripPrefix)" +msgstr "移除字首(stripPrefix)" + +#: src/views/apps/frp/FrpProxyModal.vue:526 +msgid "Certificate (crtPath)" +msgstr "證書(crtPath)" + +#: src/views/apps/frp/FrpProxyModal.vue:529 +msgid "Private Key (keyPath)" +msgstr "私鑰(keyPath)" + +#: src/views/apps/frp/FrpProxyModal.vue:532 +msgid "Username (httpUser)" +msgstr "使用者名稱(httpUser)" + +#: src/views/apps/frp/FrpProxyModal.vue:537 +msgid "Password (httpPassword)" +msgstr "密碼(httpPassword)" + +#: src/views/apps/frp/FrpProxyModal.vue:545 +msgid "Username (username)" +msgstr "使用者名稱(username)" + +#: src/views/apps/frp/FrpProxyModal.vue:548 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:207 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:291 +msgid "Password (password)" +msgstr "密碼(password)" + +#: src/views/apps/frp/FrpProxyModal.vue:556 +msgid "Metadata" +msgstr "後設資料" + +#: src/views/apps/frp/FrpProxyModal.vue:557 +msgid "Metadatas (metadatas)" +msgstr "後設資料(metadatas)" + +#: src/views/apps/frp/FrpProxyModal.vue:560 +msgid "Add Metadata" +msgstr "新增後設資料" + +#: src/views/apps/frp/FrpProxyModal.vue:564 +msgid "Annotations (annotations)" +msgstr "註解(annotations)" + +#: src/views/apps/frp/FrpProxyModal.vue:567 +msgid "Add Annotation" +msgstr "新增註解" + +#: src/views/apps/frp/FrpProxyView.vue:42 +#: src/views/apps/frp/FrpVisitorView.vue:42 +#: src/views/apps/frp/options.ts:14 +#: src/views/monitor/AlertView.vue:98 +#: src/views/monitor/SettingView.vue:121 +#: src/views/project/EditModal.vue:72 +#: src/views/setting/SettingBase.vue:187 +#: src/views/setting/SettingSafe.vue:246 +#: src/views/tamper/TamperView.vue:136 +#: src/views/toolbox/network/InterfaceView.vue:67 +#: src/views/website/EditModal.vue:850 +#: src/views/website/EditModal.vue:854 +#: src/views/website/EditModal.vue:1069 +msgid "Disabled" +msgstr "禁用" + +#: src/views/apps/frp/FrpProxyView.vue:53 +msgid "Plugin: %{ plugin }" +msgstr "外掛:%{ plugin }" + +#: src/views/apps/frp/FrpProxyView.vue:59 +msgid "Remote" +msgstr "遠端" + +#: src/views/apps/frp/FrpProxyView.vue:65 +msgid "Random" +msgstr "隨機" + +#: src/views/apps/frp/FrpProxyView.vue:98 +msgid "Are you sure you want to delete proxy %{ name }?" +msgstr "確定要刪除代理 %{ name } 嗎?" + +#: src/views/apps/frp/FrpProxyView.vue:143 +msgid "Only proxies created by the panel under the conf.d directory are managed here. Proxies written directly in frpc.toml should be edited in the main configuration." +msgstr "此處只管理面板在 conf.d 目錄下建立的代理。直接寫入 frpc.toml 的代理應在主配置中編輯。" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:77 +msgid "Leave a field empty to comment out the option and use the frps default." +msgstr "將欄位留空可註釋掉該選項並使用 frps 預設值。" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:80 +#: src/views/apps/frp/FrpVisitorModal.vue:158 +msgid "Bind Address (bindAddr)" +msgstr "繫結地址(bindAddr)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:83 +#: src/views/apps/frp/FrpVisitorModal.vue:161 +msgid "Bind Port (bindPort)" +msgstr "綁定連接埠(bindPort)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:86 +msgid "KCP Bind Port (kcpBindPort)" +msgstr "KCP 綁定連接埠(kcpBindPort)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:89 +msgid "Leave empty to disable KCP" +msgstr "留空以禁用 KCP" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:92 +msgid "QUIC Bind Port (quicBindPort)" +msgstr "QUIC 綁定連接埠(quicBindPort)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:95 +msgid "Leave empty to disable QUIC" +msgstr "留空以禁用 QUIC" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:98 +msgid "Proxy Bind Address (proxyBindAddr)" +msgstr "代理繫結地址(proxyBindAddr)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:101 +msgid "Defaults to bindAddr" +msgstr "預設為 bindAddr" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:104 +msgid "Subdomain Host (subDomainHost)" +msgstr "子域名主機(subDomainHost)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:107 +msgid "Max Ports Per Client (maxPortsPerClient)" +msgstr "每個客戶端的最大連接埠數(maxPortsPerClient)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:110 +#: src/views/project/EditModal.vue:476 +msgid "0 means no limit" +msgstr "0 表示無限制" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:116 +msgid "Detailed Errors To Client (detailedErrorsToClient)" +msgstr "向客戶端顯示詳細錯誤(detailedErrorsToClient)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:166 +msgid "HTTP(S)" +msgstr "HTTP(S)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:169 +msgid "Required for http and https type proxies." +msgstr "http 和 https 型別代理必須設定。" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:172 +msgid "HTTP Port (vhostHTTPPort)" +msgstr "HTTP 連接埠(vhostHTTPPort)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:175 +msgid "HTTPS Port (vhostHTTPSPort)" +msgstr "HTTPS 連接埠(vhostHTTPSPort)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:178 +msgid "HTTP Response Timeout (vhostHTTPTimeout)" +msgstr "HTTP 響應超時(vhostHTTPTimeout)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:181 +msgid "TCPMux HTTP Connect Port (tcpmuxHTTPConnectPort)" +msgstr "TCPMux HTTP 連線連接埠(tcpmuxHTTPConnectPort)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:184 +msgid "Required for tcpmux type proxies" +msgstr "tcpmux 型別代理必須設定" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:187 +msgid "Custom 404 Page (custom404Page)" +msgstr "自定義 404 頁面(custom404Page)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:203 +msgid "Dashboard" +msgstr "儀表盤" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:206 +msgid "The frps dashboard is available only when the port is set." +msgstr "僅設定連接埠後才可使用 frps 儀表盤。" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:232 +msgid "Enable Prometheus (enablePrometheus)" +msgstr "啟用 Prometheus(enablePrometheus)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:254 +msgid "Max Pool Count (transport.maxPoolCount)" +msgstr "最大連線池數量(transport.maxPoolCount)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:265 +msgid "TCP Keepalive (transport.tcpKeepalive)" +msgstr "TCP 保活(transport.tcpKeepalive)" + +#: src/views/apps/frp/FrpsConfigTuneView.vue:271 +msgid "Force TLS (transport.tls.force)" +msgstr "強制 TLS(transport.tls.force)" + +#: src/views/apps/frp/FrpVisitorModal.vue:115 +msgid "Edit Visitor" +msgstr "編輯訪客" + +#: src/views/apps/frp/FrpVisitorModal.vue:115 +#: src/views/apps/frp/FrpVisitorView.vue:139 +msgid "Add Visitor" +msgstr "新增訪客" + +#: src/views/apps/frp/FrpVisitorModal.vue:136 +msgid "Target Proxy (serverName)" +msgstr "目標代理(serverName)" + +#: src/views/apps/frp/FrpVisitorModal.vue:140 +msgid "Name of the proxy to visit" +msgstr "要訪問的代理名稱" + +#: src/views/apps/frp/FrpVisitorModal.vue:143 +msgid "Target User (serverUser)" +msgstr "目標使用者(serverUser)" + +#: src/views/apps/frp/FrpVisitorModal.vue:147 +msgid "Defaults to the current user" +msgstr "預設為當前使用者" + +#: src/views/apps/frp/FrpVisitorModal.vue:155 +msgid "Must match the target proxy" +msgstr "必須與目標代理匹配" + +#: src/views/apps/frp/FrpVisitorModal.vue:167 +msgid "-1 means do not bind, only accept redirected connections" +msgstr "-1 表示不繫結,僅接受重定向連線" + +#: src/views/apps/frp/FrpVisitorModal.vue:172 +#: src/views/apps/grafana/GrafanaConfigTuneView.vue:173 +msgid "Protocol (protocol)" +msgstr "協議(protocol)" + +#: src/views/apps/frp/FrpVisitorModal.vue:175 +msgid "Keep Tunnel Open (keepTunnelOpen)" +msgstr "保持隧道開啟(keepTunnelOpen)" + +#: src/views/apps/frp/FrpVisitorModal.vue:181 +msgid "Max Retries Per Hour (maxRetriesAnHour)" +msgstr "每小時最大重試次數(maxRetriesAnHour)" + +#: src/views/apps/frp/FrpVisitorModal.vue:187 +#: src/views/apps/mysql/MysqlConfigTuneView.vue:304 +#: src/views/apps/mysql/MysqlConfigTuneView.vue:428 +#: src/views/apps/pureftpd/PureftpdConfigTuneView.vue:80 +msgid "e.g. 8" +msgstr "例如 8" + +#: src/views/apps/frp/FrpVisitorModal.vue:192 +msgid "Min Retry Interval (minRetryInterval)" +msgstr "最小重試間隔(minRetryInterval)" + +#: src/views/apps/frp/FrpVisitorModal.vue:198 +#: src/views/apps/mysql/MysqlConfigTuneView.vue:511 +msgid "e.g. 90" +msgstr "例如 90" + +#: src/views/apps/frp/FrpVisitorModal.vue:202 +msgid "Fallback To (fallbackTo)" +msgstr "回退到(fallbackTo)" + +#: src/views/apps/frp/FrpVisitorModal.vue:206 +msgid "Name of the visitor to fall back to" +msgstr "要回退到的訪客名稱" + +#: src/views/apps/frp/FrpVisitorModal.vue:211 +msgid "Fallback Timeout (fallbackTimeoutMs)" +msgstr "回退超時(fallbackTimeoutMs)" + +#: src/views/apps/frp/FrpVisitorModal.vue:217 +msgid "e.g. 500" +msgstr "例如 500" + +#: src/views/apps/frp/FrpVisitorView.vue:47 +msgid "Target Proxy" +msgstr "目標代理" + +#: src/views/apps/frp/FrpVisitorView.vue:53 +msgid "Local Listen" +msgstr "本地監聽" + +#: src/views/apps/frp/FrpVisitorView.vue:87 +msgid "Are you sure you want to delete visitor %{ name }?" +msgstr "確定要刪除訪客 %{ name } 嗎?" + +#: src/views/apps/frp/FrpVisitorView.vue:132 +msgid "Visitors are used to access stcp, sudp and xtcp proxies. They must be configured on the client that initiates the access." +msgstr "訪客用於訪問 stcp、sudp 和 xtcp 代理,必須在發起訪問的客戶端上配置。" + +#: src/views/apps/frp/IndexView.vue:87 +msgid "This modifies the Frps main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這會修改 Frps 主配置檔案。如果不瞭解各引數的含義,請勿隨意修改!" + +#: src/views/apps/frp/IndexView.vue:100 +#: src/views/apps/frp/IndexView.vue:158 +#: src/views/project/CreateModal.vue:622 +#: src/views/project/EditModal.vue:237 +msgid "Run User" +msgstr "執行使用者" + +#: src/views/apps/frp/IndexView.vue:103 +#: src/views/apps/frp/IndexView.vue:104 +#: src/views/apps/frp/IndexView.vue:161 +#: src/views/apps/frp/IndexView.vue:162 +#: src/views/apps/grafana/GrafanaDataSourcesView.vue:225 +#: src/views/apps/rsync/IndexView.vue:59 +#: src/views/apps/rsync/IndexView.vue:291 +#: src/views/apps/rsync/IndexView.vue:355 +#: src/views/database/IndexView.vue:131 +#: src/views/home/IndexView.vue:673 +#: src/views/home/IndexView.vue:774 +#: src/views/log/SSHLog.vue:73 +#: src/views/monitor/SystemView.vue:323 +#: src/views/monitor/SystemView.vue:335 +#: src/views/setting/IndexView.vue:149 +#: src/views/toolbox/ProcessView.vue:128 +#: src/views/toolbox/ProcessView.vue:396 +#: src/views/toolbox/WebHookView.vue:333 +#: src/views/toolbox/WebHookView.vue:374 +msgid "User" +msgstr "使用者" + +#: src/views/apps/frp/IndexView.vue:106 +#: src/views/apps/frp/IndexView.vue:107 +#: src/views/apps/frp/IndexView.vue:164 +#: src/views/apps/frp/IndexView.vue:165 +#: src/views/file/PermissionModal.vue:128 +#: src/views/file/PermissionModal.vue:152 +#: src/views/file/PropertyModal.vue:48 +msgid "Group" +msgstr "群組" + +#: src/views/apps/frp/IndexView.vue:135 +msgid "Proxy Management" +msgstr "代理管理" + +#: src/views/apps/frp/IndexView.vue:138 +msgid "Visitor Management" +msgstr "訪客管理" + +#: src/views/apps/frp/IndexView.vue:145 +msgid "This modifies the Frpc main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這會修改 Frpc 主配置檔案。如果不瞭解各引數的含義,請勿隨意修改!" + +#: src/views/apps/gitea/IndexView.vue:42 +msgid "This modifies the Gitea configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 Gitea 設定檔。如果您不了解每個參數的含義,請不要隨意修改!" + #: src/views/apps/grafana/GrafanaConfigTuneView.vue:152 msgid "Grafana server settings." msgstr "Grafana 伺服器設定。" @@ -2968,10 +4071,6 @@ msgstr "根 URL(root_url)" msgid "e.g. %(protocol)s://%(domain)s:%(http_port)s/" msgstr "例如 %(protocol)s://%(domain)s:%(http_port)s/" -#: src/views/apps/grafana/GrafanaConfigTuneView.vue:173 -msgid "Protocol (protocol)" -msgstr "協議(protocol)" - #: src/views/apps/grafana/GrafanaConfigTuneView.vue:192 msgid "Grafana database settings." msgstr "Grafana 資料庫設定。" @@ -2997,16 +4096,6 @@ msgstr "名稱(name)" msgid "e.g. grafana" msgstr "例如 grafana" -#: src/views/apps/grafana/GrafanaConfigTuneView.vue:204 -#: src/views/apps/grafana/GrafanaConfigTuneView.vue:288 -msgid "User (user)" -msgstr "使用者(user)" - -#: src/views/apps/grafana/GrafanaConfigTuneView.vue:207 -#: src/views/apps/grafana/GrafanaConfigTuneView.vue:291 -msgid "Password (password)" -msgstr "密碼(password)" - #: src/views/apps/grafana/GrafanaConfigTuneView.vue:226 msgid "Grafana security settings." msgstr "Grafana 安全設定。" @@ -3085,13 +4174,19 @@ msgstr "瀏覽器(直連)" #: src/views/apps/grafana/GrafanaDataSourcesView.vue:111 #: src/views/apps/nginx/NginxIndex.vue:202 -#: src/views/apps/nginx/NginxIndex.vue:266 src/views/backup/StorageView.vue:111 +#: src/views/apps/nginx/NginxIndex.vue:266 +#: src/views/backup/StorageView.vue:111 #: src/views/container/ComposeView.vue:123 -#: src/views/container/ContainerView.vue:177 src/views/file/ListView.vue:399 -#: src/views/file/ListView.vue:1666 src/views/monitor/AlertView.vue:110 -#: src/views/monitor/SettingView.vue:143 src/views/project/ListView.vue:177 -#: src/views/ssh/IndexView.vue:613 src/views/tamper/TamperView.vue:148 -#: src/views/task/CronView.vue:155 src/views/toolbox/WebHookView.vue:158 +#: src/views/container/ContainerView.vue:177 +#: src/views/file/ListView.vue:399 +#: src/views/file/ListView.vue:1666 +#: src/views/monitor/AlertView.vue:110 +#: src/views/monitor/SettingView.vue:143 +#: src/views/project/ListView.vue:177 +#: src/views/ssh/IndexView.vue:613 +#: src/views/tamper/TamperView.vue:148 +#: src/views/task/CronView.vue:155 +#: src/views/toolbox/WebHookView.vue:158 #: src/views/website/ListView.vue:259 msgid "Edit" msgstr "編輯" @@ -3120,21 +4215,29 @@ msgstr "存取" #: src/views/apps/grafana/GrafanaDataSourcesView.vue:228 #: src/views/apps/pureftpd/IndexView.vue:239 #: src/views/apps/pureftpd/IndexView.vue:278 -#: src/views/apps/rsync/IndexView.vue:287 -#: src/views/apps/rsync/IndexView.vue:348 src/views/backup/StorageView.vue:35 -#: src/views/backup/StorageView.vue:309 src/views/backup/StorageView.vue:353 -#: src/views/backup/StorageView.vue:465 src/views/backup/StorageView.vue:506 +#: src/views/apps/rsync/IndexView.vue:299 +#: src/views/apps/rsync/IndexView.vue:363 +#: src/views/backup/StorageView.vue:35 +#: src/views/backup/StorageView.vue:309 +#: src/views/backup/StorageView.vue:353 +#: src/views/backup/StorageView.vue:465 +#: src/views/backup/StorageView.vue:506 #: src/views/container/ImageView.vue:419 #: src/views/database/CreateDatabaseModal.vue:125 #: src/views/database/CreateServerModal.vue:179 #: src/views/database/CreateUserModal.vue:120 #: src/views/database/ServerList.vue:82 #: src/views/database/UpdateServerModal.vue:105 -#: src/views/database/UpdateUserModal.vue:63 src/views/database/UserList.vue:32 -#: src/views/login/IndexView.vue:261 src/views/monitor/ChannelModal.vue:119 -#: src/views/setting/CreateModal.vue:53 src/views/setting/PasswordModal.vue:42 -#: src/views/ssh/CreateModal.vue:80 src/views/ssh/CreateModal.vue:89 -#: src/views/ssh/UpdateModal.vue:86 src/views/ssh/UpdateModal.vue:95 +#: src/views/database/UpdateUserModal.vue:63 +#: src/views/database/UserList.vue:32 +#: src/views/login/IndexView.vue:261 +#: src/views/monitor/ChannelModal.vue:119 +#: src/views/setting/CreateModal.vue:53 +#: src/views/setting/PasswordModal.vue:42 +#: src/views/ssh/CreateModal.vue:80 +#: src/views/ssh/CreateModal.vue:89 +#: src/views/ssh/UpdateModal.vue:86 +#: src/views/ssh/UpdateModal.vue:95 #: src/views/website/EditModal.vue:2099 msgid "Password" msgstr "密碼" @@ -3152,28 +4255,19 @@ msgid "Import dashboards in Grafana via Dashboard ID:" msgstr "透過 Dashboard ID 在 Grafana 中匯入儀表盤:" #: src/views/apps/grafana/IndexView.vue:83 -msgid "" -"Go to Grafana → Dashboards → New → Import, enter the ID above and select the " -"Prometheus data source." -msgstr "" -"前往 Grafana → Dashboards → New → Import,輸入上方 ID 並選擇 Prometheus 資料" -"源。" +msgid "Go to Grafana → Dashboards → New → Import, enter the ID above and select the Prometheus data source." +msgstr "前往 Grafana → Dashboards → New → Import,輸入上方 ID 並選擇 Prometheus 資料源。" #: src/views/apps/grafana/IndexView.vue:96 -msgid "" -"This modifies the Grafana main configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 Grafana 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "This modifies the Grafana main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 Grafana 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/grafana/IndexView.vue:117 msgid "Data Sources" msgstr "資料源" #: src/views/apps/kafka/IndexView.vue:69 -msgid "" -"This modifies the Kafka main configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" +msgid "This modifies the Kafka main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" msgstr "這將修改 Kafka 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/kafka/KafkaConfigTuneView.vue:60 @@ -3281,32 +4375,25 @@ msgid "e.g. 4" msgstr "例如 4" #: src/views/apps/minio/IndexView.vue:42 -msgid "" -"This is modifying the MinIO environment variable file /etc/default/minio. If " -"you do not understand the meaning of each parameter, please do not modify it " -"arbitrarily!" -msgstr "" -"這將修改 MinIO 環境變數檔案 /etc/default/minio。如果您不了解每個參數的含義," -"請不要隨意修改!" +msgid "This is modifying the MinIO environment variable file /etc/default/minio. If you do not understand the meaning of each parameter, please do not modify it arbitrarily!" +msgstr "這將修改 MinIO 環境變數檔案 /etc/default/minio。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/mongodb/IndexView.vue:88 msgid "Admin Password" msgstr "管理員密碼" #: src/views/apps/mongodb/IndexView.vue:92 -msgid "" -"The MongoDB admin password is used to manage the database. Keep it safe!" +msgid "The MongoDB admin password is used to manage the database. Keep it safe!" msgstr "MongoDB 管理員密碼用於管理資料庫。請妥善保管!" #: src/views/apps/mongodb/IndexView.vue:121 -msgid "" -"This modifies the MongoDB configuration file. If you do not understand the " -"meaning of each parameter, please do not modify it randomly!" +msgid "This modifies the MongoDB configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" msgstr "這將修改 MongoDB 設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/mongodb/MongoDBConfigTuneView.vue:59 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:117 -#: src/views/backup/IndexView.vue:59 src/views/task/CreateModal.vue:538 +#: src/views/backup/IndexView.vue:59 +#: src/views/task/CreateModal.vue:538 msgid "Storage" msgstr "儲存" @@ -3342,15 +4429,6 @@ msgstr "授權(security.authorization)" msgid "System Log Path (systemLog.path)" msgstr "系統日誌路徑(systemLog.path)" -#: src/views/apps/mysql/MysqlConfigTuneView.vue:210 -#: src/views/apps/nginx/NginxConfigTuneView.vue:175 -#: src/views/apps/redis/RedisConfigTuneView.vue:119 -#: src/views/apps/valkey/ValkeyConfigTuneView.vue:113 -#: src/views/environment/PhpConfigTuneView.vue:248 -#: src/views/project/IndexView.vue:22 src/views/project/ListView.vue:25 -msgid "General" -msgstr "通用" - #: src/views/apps/mysql/MysqlConfigTuneView.vue:213 msgid "Common MySQL general settings." msgstr "MySQL 通用設定。" @@ -3432,12 +4510,6 @@ msgstr "MySQL 效能緩衝區與快取設定。" msgid "Key Buffer Size (key_buffer_size)" msgstr "鍵緩衝區大小(key_buffer_size)" -#: src/views/apps/mysql/MysqlConfigTuneView.vue:304 -#: src/views/apps/mysql/MysqlConfigTuneView.vue:428 -#: src/views/apps/pureftpd/PureftpdConfigTuneView.vue:80 -msgid "e.g. 8" -msgstr "例如 8" - #: src/views/apps/mysql/MysqlConfigTuneView.vue:311 msgid "Sort Buffer Size (sort_buffer_size)" msgstr "排序緩衝區大小(sort_buffer_size)" @@ -3525,10 +4597,6 @@ msgstr "鎖等待超時(innodb_lock_wait_timeout)" msgid "Max Dirty Pages Pct (innodb_max_dirty_pages_pct)" msgstr "最大髒頁百分比(innodb_max_dirty_pages_pct)" -#: src/views/apps/mysql/MysqlConfigTuneView.vue:511 -msgid "e.g. 90" -msgstr "例如 90" - #: src/views/apps/mysql/MysqlConfigTuneView.vue:516 msgid "Read IO Threads (innodb_read_io_threads)" msgstr "讀取 IO 執行緒(innodb_read_io_threads)" @@ -3558,17 +4626,12 @@ msgid "Root Password" msgstr "Root 密碼" #: src/views/apps/mysql/MysqlIndex.vue:125 -msgid "" -"The \"root\" user password is used to manage the database system. Keep it " -"safe!" +msgid "The \"root\" user password is used to manage the database system. Keep it safe!" msgstr "\"root\" 使用者密碼用於管理資料庫系統。請妥善保管!" #: src/views/apps/mysql/MysqlIndex.vue:154 -msgid "" -"This modifies the %{ name } main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 %{ name } 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "This modifies the %{ name } main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 %{ name } 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/mysql/MysqlIndex.vue:201 msgid "Slow Query Log" @@ -3618,11 +4681,6 @@ msgstr "例如 200" msgid "Client Body Buffer Size (client_body_buffer_size)" msgstr "客戶端請求體緩衝區大小(client_body_buffer_size)" -#: src/views/apps/nginx/NginxConfigTuneView.vue:224 -#: src/views/environment/PhpConfigTuneView.vue:474 -msgid "e.g. 10" -msgstr "例如 10" - #: src/views/apps/nginx/NginxConfigTuneView.vue:235 msgid "Client Header Buffer Size (client_header_buffer_size)" msgstr "客戶端請求頭緩衝區大小(client_header_buffer_size)" @@ -3644,9 +4702,7 @@ msgid "Server Tokens (server_tokens)" msgstr "伺服器識別(server_tokens)" #: src/views/apps/nginx/NginxConfigTuneView.vue:281 -msgid "" -"Gzip compression settings. Gzip is the most widely supported compression " -"method." +msgid "Gzip compression settings. Gzip is the most widely supported compression method." msgstr "Gzip 壓縮設定。Gzip 是支援最廣泛的壓縮方式。" #: src/views/apps/nginx/NginxConfigTuneView.vue:287 @@ -3684,9 +4740,7 @@ msgid "e.g. any" msgstr "例如 any" #: src/views/apps/nginx/NginxConfigTuneView.vue:331 -msgid "" -"Brotli compression settings. Brotli provides better compression ratio than " -"Gzip." +msgid "Brotli compression settings. Brotli provides better compression ratio than Gzip." msgstr "Brotli 壓縮設定。Brotli 提供比 Gzip 更好的壓縮率。" #: src/views/apps/nginx/NginxConfigTuneView.vue:337 @@ -3710,8 +4764,7 @@ msgid "Static (brotli_static)" msgstr "靜態(brotli_static)" #: src/views/apps/nginx/NginxConfigTuneView.vue:382 -msgid "" -"Zstd compression settings. Zstd provides fast compression with high ratio." +msgid "Zstd compression settings. Zstd provides fast compression with high ratio." msgstr "Zstd 壓縮設定。Zstd 提供快速壓縮與高壓縮率。" #: src/views/apps/nginx/NginxConfigTuneView.vue:386 @@ -3738,13 +4791,15 @@ msgstr "靜態(zstd_static)" msgid "Listen" msgstr "監聽" -#: src/views/apps/nginx/NginxIndex.vue:167 src/views/firewall/ScanView.vue:301 +#: src/views/apps/nginx/NginxIndex.vue:167 +#: src/views/firewall/ScanView.vue:301 #: src/views/firewall/ScanView.vue:317 msgid "Protocol" msgstr "協議" #: src/views/apps/nginx/NginxIndex.vue:175 -#: src/views/apps/nginx/NginxIndex.vue:635 src/views/website/EditModal.vue:1176 +#: src/views/apps/nginx/NginxIndex.vue:635 +#: src/views/website/EditModal.vue:1176 msgid "Proxy Pass" msgstr "代理目標" @@ -3795,15 +4850,18 @@ msgstr "Stream" #: src/views/apps/nginx/NginxIndex.vue:533 #: src/views/database/CreateServerModal.vue:92 -#: src/views/database/IndexView.vue:189 src/views/website/EditModal.vue:1113 +#: src/views/database/IndexView.vue:189 +#: src/views/website/EditModal.vue:1113 msgid "Add Server" msgstr "新增伺服器" -#: src/views/apps/nginx/NginxIndex.vue:546 src/views/website/EditModal.vue:1032 +#: src/views/apps/nginx/NginxIndex.vue:546 +#: src/views/website/EditModal.vue:1032 msgid "Upstream" msgstr "上游" -#: src/views/apps/nginx/NginxIndex.vue:550 src/views/website/EditModal.vue:1129 +#: src/views/apps/nginx/NginxIndex.vue:550 +#: src/views/website/EditModal.vue:1129 msgid "Add Upstream" msgstr "新增上游" @@ -3860,7 +4918,8 @@ msgstr "SSL 私鑰路徑" msgid "e.g. /path/to/key.pem" msgstr "例如 /path/to/key.pem" -#: src/views/apps/nginx/NginxIndex.vue:713 src/views/website/EditModal.vue:1043 +#: src/views/apps/nginx/NginxIndex.vue:713 +#: src/views/website/EditModal.vue:1043 msgid "Load Balancing Algorithm" msgstr "負載均衡算法" @@ -3882,7 +4941,8 @@ msgstr "地址" #: src/views/apps/nginx/NginxIndex.vue:750 #: src/views/container/NetworkView.vue:331 -#: src/views/container/VolumeView.vue:223 src/views/toolbox/DiskView.vue:606 +#: src/views/container/VolumeView.vue:223 +#: src/views/toolbox/DiskView.vue:606 msgid "Options" msgstr "選項" @@ -3890,27 +4950,27 @@ msgstr "選項" msgid "No servers added yet" msgstr "尚未新增伺服器" -#: src/views/apps/nginx/NginxIndex.vue:777 src/views/website/EditModal.vue:1073 +#: src/views/apps/nginx/NginxIndex.vue:777 +#: src/views/website/EditModal.vue:1073 #: src/views/website/EditModal.vue:1210 msgid "DNS Resolver" msgstr "DNS 解析器" -#: src/views/apps/nginx/NginxIndex.vue:780 src/views/website/EditModal.vue:1076 +#: src/views/apps/nginx/NginxIndex.vue:780 +#: src/views/website/EditModal.vue:1076 #: src/views/website/EditModal.vue:1213 msgid "e.g., 8.8.8.8" msgstr "例如 8.8.8.8" -#: src/views/apps/nginx/NginxIndex.vue:786 src/views/website/EditModal.vue:1082 +#: src/views/apps/nginx/NginxIndex.vue:786 +#: src/views/website/EditModal.vue:1082 #: src/views/website/EditModal.vue:1219 msgid "Resolver Timeout" msgstr "解析超時" #: src/views/apps/opensearch/IndexView.vue:69 -msgid "" -"This modifies the OpenSearch main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 OpenSearch 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "This modifies the OpenSearch main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 OpenSearch 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:71 msgid "OpenSearch cluster and network settings." @@ -3939,9 +4999,7 @@ msgid "Login Password" msgstr "登入密碼" #: src/views/apps/pgadmin/IndexView.vue:95 -msgid "" -"If the password has been changed in pgAdmin, the actual password shall " -"prevail." +msgid "If the password has been changed in pgAdmin, the actual password shall prevail." msgstr "若已在 pgAdmin 中修改過密碼,以實際密碼為準。" #: src/views/apps/pgadmin/IndexView.vue:102 @@ -3958,9 +5016,7 @@ msgid "Modify Username" msgstr "修改使用者" #: src/views/apps/pgadmin/IndexView.vue:129 -msgid "" -"Modify the login email of the pgAdmin administrator account, server " -"configurations will be migrated automatically" +msgid "Modify the login email of the pgAdmin administrator account, server configurations will be migrated automatically" msgstr "修改 pgAdmin 管理員帳戶的登錄電子郵件,伺服器配置將自動遷移" #: src/views/apps/pgadmin/IndexView.vue:134 @@ -3972,7 +5028,8 @@ msgid "New password" msgstr "新密碼" #: src/views/apps/pgadmin/IndexView.vue:149 -#: src/views/toolbox/MigrationView.vue:415 src/views/toolbox/SshView.vue:314 +#: src/views/toolbox/MigrationView.vue:415 +#: src/views/toolbox/SshView.vue:314 msgid "Reset" msgstr "重設" @@ -3985,28 +5042,19 @@ msgid "Modify phpMyAdmin access port" msgstr "修改 phpMyAdmin 存取連接埠" #: src/views/apps/phpmyadmin/IndexView.vue:94 -msgid "" -"This modifies the OpenResty configuration file for phpMyAdmin. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 phpMyAdmin 的 OpenResty 設定檔。如果您不了解每個參數的含義,請不要隨" -"意修改!" +msgid "This modifies the OpenResty configuration file for phpMyAdmin. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 phpMyAdmin 的 OpenResty 設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/podman/IndexView.vue:55 -msgid "" -"Podman is a daemonless container management tool. Being in a stopped state " -"is normal and does not affect usage!" -msgstr "" -"Podman 是一個無守護程序的容器管理工具,處於停止狀態是正常的,不影響使用!" +msgid "Podman is a daemonless container management tool. Being in a stopped state is normal and does not affect usage!" +msgstr "Podman 是一個無守護程序的容器管理工具,處於停止狀態是正常的,不影響使用!" #: src/views/apps/podman/IndexView.vue:63 msgid "Registry Configuration" msgstr "註冊表配置" #: src/views/apps/podman/IndexView.vue:67 -msgid "" -"This modifies the Podman registry configuration file (/etc/containers/" -"registries.conf)" +msgid "This modifies the Podman registry configuration file (/etc/containers/registries.conf)" msgstr "這會修改 Podman 映像倉庫設定檔 (/etc/containers/registries.conf)" #: src/views/apps/podman/IndexView.vue:85 @@ -4014,9 +5062,7 @@ msgid "Storage Configuration" msgstr "儲存配置" #: src/views/apps/podman/IndexView.vue:89 -msgid "" -"This modifies the Podman storage configuration file (/etc/containers/storage." -"conf)" +msgid "This modifies the Podman storage configuration file (/etc/containers/storage.conf)" msgstr "這會修改 Podman 儲存設定檔 (/etc/containers/storage.conf)" #: src/views/apps/postgresql/IndexView.vue:155 @@ -4024,29 +5070,20 @@ msgid "Super Password" msgstr "超級密碼" #: src/views/apps/postgresql/IndexView.vue:159 -msgid "" -"The \"postgres\" superuser password is used to manage the database system. " -"Keep it safe!" +msgid "The \"postgres\" superuser password is used to manage the database system. Keep it safe!" msgstr "\"postgres\" 超級使用者密碼用於管理資料庫系統。請妥善保管!" #: src/views/apps/postgresql/IndexView.vue:192 -msgid "" -"This modifies the PostgreSQL main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 PostgreSQL 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "This modifies the PostgreSQL main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 PostgreSQL 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/postgresql/IndexView.vue:213 msgid "User Configuration" msgstr "使用者設定" #: src/views/apps/postgresql/IndexView.vue:217 -msgid "" -"This modifies the PostgreSQL user configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 PostgreSQL 使用者設定檔。如果您不了解每個參數的含義,請不要隨意修" -"改!" +msgid "This modifies the PostgreSQL user configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 PostgreSQL 使用者設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/postgresql/IndexView.vue:260 msgid "Application Logs" @@ -4076,19 +5113,19 @@ msgstr "例如 5432" msgid "Superuser Reserved Connections (superuser_reserved_connections)" msgstr "超級使用者保留連線數(superuser_reserved_connections)" -#: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:209 -#: src/views/environment/PhpConfigTuneView.vue:463 -msgid "e.g. 3" -msgstr "例如 3" - #: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:226 #: src/views/apps/redis/RedisConfigTuneView.vue:182 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:176 -#: src/views/container/ContainerCreate.vue:542 src/views/home/IndexView.vue:700 -#: src/views/home/IndexView.vue:773 src/views/monitor/SystemView.vue:520 -#: src/views/monitor/SystemView.vue:527 src/views/monitor/SystemView.vue:543 -#: src/views/monitor/SystemView.vue:791 src/views/toolbox/BenchmarkView.vue:178 -#: src/views/toolbox/PanelView.vue:122 src/views/toolbox/ProcessView.vue:152 +#: src/views/container/ContainerCreate.vue:542 +#: src/views/home/IndexView.vue:700 +#: src/views/home/IndexView.vue:773 +#: src/views/monitor/SystemView.vue:520 +#: src/views/monitor/SystemView.vue:527 +#: src/views/monitor/SystemView.vue:543 +#: src/views/monitor/SystemView.vue:791 +#: src/views/toolbox/BenchmarkView.vue:178 +#: src/views/toolbox/PanelView.vue:122 +#: src/views/toolbox/ProcessView.vue:152 msgid "Memory" msgstr "記憶體" @@ -4218,33 +5255,20 @@ msgid "IO Method (io_method)" msgstr "IO 方法(io_method)" #: src/views/apps/prometheus/IndexView.vue:89 -msgid "" -"By default, the firewall does not allow access to the Prometheus port " -"(9090). If you need external access, please manually open the port in the " -"firewall settings." -msgstr "" -"預設情況下,防火牆不允許存取 Prometheus 連接埠(9090)。如果您需要外部存取," -"請在防火牆設定中手動開放該連接埠。" +msgid "By default, the firewall does not allow access to the Prometheus port (9090). If you need external access, please manually open the port in the firewall settings." +msgstr "預設情況下,防火牆不允許存取 Prometheus 連接埠(9090)。如果您需要外部存取,請在防火牆設定中手動開放該連接埠。" #: src/views/apps/prometheus/IndexView.vue:100 -msgid "" -"This modifies the Prometheus main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 Prometheus 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "This modifies the Prometheus main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 Prometheus 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/prometheus/IndexView.vue:121 msgid "Alertmanager" msgstr "Alertmanager" #: src/views/apps/prometheus/IndexView.vue:126 -msgid "" -"Configure Alertmanager notification channels (email, webhook, Slack, etc). " -"To enable alert rules, uncomment the rule_files section in the main " -"configuration and create rule files in the rules directory." -msgstr "" -"設定 Alertmanager 通知管道(郵件、webhook、Slack 等)。要啟用告警規則,請在主" -"設定中取消 rule_files 部分的註解,並在 rules 目錄中建立規則檔案。" +msgid "Configure Alertmanager notification channels (email, webhook, Slack, etc). To enable alert rules, uncomment the rule_files section in the main configuration and create rule files in the rules directory." +msgstr "設定 Alertmanager 通知管道(郵件、webhook、Slack 等)。要啟用告警規則,請在主設定中取消 rule_files 部分的註解,並在 rules 目錄中建立規則檔案。" #: src/views/apps/prometheus/IndexView.vue:144 msgid "Exporters" @@ -4297,14 +5321,14 @@ msgstr "您確定要卸載 %{ name } 嗎?" #: src/views/apps/prometheus/PrometheusExportersView.vue:146 #: src/views/apps/prometheus/PrometheusExportersView.vue:153 #: src/views/container/ContainerCreate.vue:120 -#: src/views/container/ImageView.vue:186 src/views/environment/PHPView.vue:175 +#: src/views/container/ImageView.vue:186 +#: src/views/environment/PHPView.vue:175 #: src/views/environment/PHPView.vue:181 msgid "Task submitted, please check progress in background tasks" msgstr "任務已提交,請在後台任務中查看進度" #: src/views/apps/prometheus/PrometheusExportersView.vue:204 -msgid "" -"Manage Prometheus exporters. Exporters collect metrics from various services." +msgid "Manage Prometheus exporters. Exporters collect metrics from various services." msgstr "管理 Prometheus exporters。Exporters 從各種服務中收集指標。" #: src/views/apps/prometheus/PrometheusExportersView.vue:211 @@ -4317,18 +5341,24 @@ msgstr "修改 exporter 配置將重啟 exporter 服務。" #: src/views/apps/pureftpd/IndexView.vue:39 #: src/views/apps/pureftpd/IndexView.vue:231 -#: src/views/backup/StorageView.vue:298 src/views/backup/StorageView.vue:347 -#: src/views/backup/StorageView.vue:454 src/views/backup/StorageView.vue:500 +#: src/views/backup/StorageView.vue:298 +#: src/views/backup/StorageView.vue:347 +#: src/views/backup/StorageView.vue:454 +#: src/views/backup/StorageView.vue:500 #: src/views/container/ImageView.vue:411 #: src/views/database/CreateDatabaseModal.vue:117 #: src/views/database/CreateServerModal.vue:167 #: src/views/database/CreateUserModal.vue:112 #: src/views/database/ServerList.vue:73 #: src/views/database/UpdateServerModal.vue:97 -#: src/views/database/UserList.vue:22 src/views/login/IndexView.vue:252 -#: src/views/monitor/ChannelModal.vue:116 src/views/setting/CreateModal.vue:46 -#: src/views/setting/SettingUser.vue:24 src/views/ssh/CreateModal.vue:86 -#: src/views/ssh/UpdateModal.vue:92 src/views/website/EditModal.vue:2098 +#: src/views/database/UserList.vue:22 +#: src/views/login/IndexView.vue:252 +#: src/views/monitor/ChannelModal.vue:116 +#: src/views/setting/CreateModal.vue:46 +#: src/views/setting/SettingUser.vue:24 +#: src/views/ssh/CreateModal.vue:86 +#: src/views/ssh/UpdateModal.vue:92 +#: src/views/website/EditModal.vue:2098 msgid "Username" msgstr "使用者名稱" @@ -4361,14 +5391,17 @@ msgstr "執行日誌" #: src/views/apps/pureftpd/IndexView.vue:227 #: src/views/database/CreateDatabaseModal.vue:102 #: src/views/database/CreateUserModal.vue:90 -#: src/views/database/IndexView.vue:182 src/views/setting/CreateModal.vue:38 +#: src/views/database/IndexView.vue:182 +#: src/views/setting/CreateModal.vue:38 #: src/views/setting/IndexView.vue:155 msgid "Create User" msgstr "建立使用者" #: src/views/apps/pureftpd/IndexView.vue:236 -#: src/views/backup/StorageView.vue:301 src/views/backup/StorageView.vue:350 -#: src/views/backup/StorageView.vue:457 src/views/backup/StorageView.vue:503 +#: src/views/backup/StorageView.vue:301 +#: src/views/backup/StorageView.vue:350 +#: src/views/backup/StorageView.vue:457 +#: src/views/backup/StorageView.vue:503 #: src/views/container/ImageView.vue:416 #: src/views/database/CreateDatabaseModal.vue:122 #: src/views/database/CreateUserModal.vue:117 @@ -4381,11 +5414,15 @@ msgid "It is recommended to use the generator to generate a random password" msgstr "建議使用生成器生成隨機密碼" #: src/views/apps/pureftpd/IndexView.vue:250 -#: src/views/apps/rsync/IndexView.vue:50 src/views/apps/rsync/IndexView.vue:271 -#: src/views/apps/rsync/IndexView.vue:332 -#: src/views/container/ComposeView.vue:66 src/views/file/PropertyModal.vue:34 -#: src/views/project/ListView.vue:97 src/views/task/CreateModal.vue:461 -#: src/views/website/CreateModal.vue:305 src/views/website/ListView.vue:148 +#: src/views/apps/rsync/IndexView.vue:52 +#: src/views/apps/rsync/IndexView.vue:283 +#: src/views/apps/rsync/IndexView.vue:347 +#: src/views/container/ComposeView.vue:66 +#: src/views/file/PropertyModal.vue:34 +#: src/views/project/ListView.vue:97 +#: src/views/task/CreateModal.vue:461 +#: src/views/website/CreateModal.vue:305 +#: src/views/website/ListView.vue:148 msgid "Directory" msgstr "目錄" @@ -4442,9 +5479,7 @@ msgid "e.g. 99" msgstr "例如 99" #: src/views/apps/redis/IndexView.vue:69 -msgid "" -"This modifies the Redis main configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" +msgid "This modifies the Redis main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" msgstr "這將修改 Redis 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/redis/RedisConfigTuneView.vue:122 @@ -4530,11 +5565,8 @@ msgid "Append Fsync (appendfsync)" msgstr "追加同步(appendfsync)" #: src/views/apps/rocketmq/IndexView.vue:72 -msgid "" -"This modifies the RocketMQ broker configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 RocketMQ broker 設定檔。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "This modifies the RocketMQ broker configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 RocketMQ broker 設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:86 msgid "RocketMQ broker basic settings." @@ -4584,89 +5616,96 @@ msgstr "JVM" msgid "JVM heap memory settings for NameServer and Broker." msgstr "NameServer 與 Broker 的 JVM 堆積記憶體設定。" -#: src/views/apps/rsync/IndexView.vue:64 src/views/apps/rsync/IndexView.vue:295 -#: src/views/apps/rsync/IndexView.vue:357 src/views/backup/StorageView.vue:287 +#: src/views/apps/rsync/IndexView.vue:66 +#: src/views/apps/rsync/IndexView.vue:307 +#: src/views/apps/rsync/IndexView.vue:372 +#: src/views/backup/StorageView.vue:287 #: src/views/backup/StorageView.vue:443 #: src/views/database/CreateDatabaseModal.vue:142 #: src/views/database/CreateServerModal.vue:143 #: src/views/database/CreateUserModal.vue:137 #: src/views/database/ServerList.vue:113 #: src/views/database/UpdateServerModal.vue:76 -#: src/views/database/UserList.vue:63 src/views/ssh/CreateModal.vue:65 -#: src/views/ssh/UpdateModal.vue:71 src/views/toolbox/SystemView.vue:176 +#: src/views/database/UserList.vue:63 +#: src/views/ssh/CreateModal.vue:65 +#: src/views/ssh/UpdateModal.vue:71 +#: src/views/toolbox/SystemView.vue:176 msgid "Host" msgstr "主機" -#: src/views/apps/rsync/IndexView.vue:70 src/views/apps/rsync/IndexView.vue:303 -#: src/views/apps/rsync/IndexView.vue:365 +#: src/views/apps/rsync/IndexView.vue:73 +#: src/views/apps/rsync/IndexView.vue:315 +#: src/views/apps/rsync/IndexView.vue:380 +msgid "Read Only" +msgstr "只讀" + +#: src/views/apps/rsync/IndexView.vue:80 +#: src/views/apps/rsync/IndexView.vue:318 +#: src/views/apps/rsync/IndexView.vue:383 #: src/views/database/CreateServerModal.vue:190 #: src/views/database/CreateUserModal.vue:164 -#: src/views/database/DatabaseList.vue:49 src/views/database/ServerList.vue:123 +#: src/views/database/DatabaseList.vue:49 +#: src/views/database/ServerList.vue:123 #: src/views/database/UpdateServerModal.vue:114 -#: src/views/database/UpdateUserModal.vue:78 src/views/database/UserList.vue:96 +#: src/views/database/UpdateUserModal.vue:78 +#: src/views/database/UserList.vue:96 msgid "Comment" msgstr "備註" -#: src/views/apps/rsync/IndexView.vue:85 -#: src/views/apps/supervisor/IndexView.vue:107 -#: src/views/toolbox/network/InterfaceView.vue:212 -msgid "Configure" -msgstr "配置" - -#: src/views/apps/rsync/IndexView.vue:94 +#: src/views/apps/rsync/IndexView.vue:104 msgid "Are you sure you want to delete module %{ name }?" msgstr "您確定要刪除模組 %{ name } 嗎?" -#: src/views/apps/rsync/IndexView.vue:197 src/views/environment/PHPView.vue:207 +#: src/views/apps/rsync/IndexView.vue:209 +#: src/views/environment/PHPView.vue:207 msgid "Module Management" msgstr "模組管理" -#: src/views/apps/rsync/IndexView.vue:201 -#: src/views/apps/rsync/IndexView.vue:255 +#: src/views/apps/rsync/IndexView.vue:213 +#: src/views/apps/rsync/IndexView.vue:267 msgid "Add Module" msgstr "新增模組" -#: src/views/apps/rsync/IndexView.vue:229 -msgid "" -"This modifies the Rsync main configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" +#: src/views/apps/rsync/IndexView.vue:241 +msgid "This modifies the Rsync main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" msgstr "這將修改 Rsync 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" -#: src/views/apps/rsync/IndexView.vue:268 -#: src/views/apps/supervisor/IndexView.vue:397 +#: src/views/apps/rsync/IndexView.vue:280 +#: src/views/apps/supervisor/IndexView.vue:449 msgid "Name cannot contain Chinese characters" msgstr "名稱不能包含中文字元" -#: src/views/apps/rsync/IndexView.vue:276 -#: src/views/apps/rsync/IndexView.vue:337 +#: src/views/apps/rsync/IndexView.vue:288 +#: src/views/apps/rsync/IndexView.vue:352 msgid "Please enter absolute path" msgstr "請輸入絕對路徑" -#: src/views/apps/rsync/IndexView.vue:284 -#: src/views/apps/rsync/IndexView.vue:345 +#: src/views/apps/rsync/IndexView.vue:296 +#: src/views/apps/rsync/IndexView.vue:360 msgid "Enter module username" msgstr "輸入模組使用者名稱" -#: src/views/apps/rsync/IndexView.vue:292 -#: src/views/apps/rsync/IndexView.vue:354 +#: src/views/apps/rsync/IndexView.vue:304 +#: src/views/apps/rsync/IndexView.vue:369 msgid "Enter module password" msgstr "輸入模組密碼" -#: src/views/apps/rsync/IndexView.vue:300 -#: src/views/apps/rsync/IndexView.vue:362 +#: src/views/apps/rsync/IndexView.vue:312 +#: src/views/apps/rsync/IndexView.vue:377 msgid "Enter allowed hosts, separate multiple hosts with spaces" msgstr "輸入允許的主機,多個主機用空格分隔" -#: src/views/apps/rsync/IndexView.vue:308 -#: src/views/apps/rsync/IndexView.vue:370 +#: src/views/apps/rsync/IndexView.vue:323 +#: src/views/apps/rsync/IndexView.vue:388 msgid "Enter comments" msgstr "輸入備註" -#: src/views/apps/rsync/IndexView.vue:325 +#: src/views/apps/rsync/IndexView.vue:340 msgid "Module Configuration" msgstr "模組配置" -#: src/views/apps/s3fs/IndexView.vue:27 src/views/toolbox/DiskView.vue:696 +#: src/views/apps/s3fs/IndexView.vue:27 +#: src/views/toolbox/DiskView.vue:696 msgid "Mount Path" msgstr "掛載路徑" @@ -4674,12 +5713,14 @@ msgstr "掛載路徑" msgid "Are you sure you want to delete mount %{ path }?" msgstr "您確定要刪除掛載 %{ path } 嗎?" -#: src/views/apps/s3fs/IndexView.vue:50 src/views/apps/s3fs/IndexView.vue:55 +#: src/views/apps/s3fs/IndexView.vue:50 +#: src/views/apps/s3fs/IndexView.vue:55 #: src/views/toolbox/DiskView.vue:312 msgid "Unmount" msgstr "卸載" -#: src/views/apps/s3fs/IndexView.vue:101 src/views/apps/s3fs/IndexView.vue:125 +#: src/views/apps/s3fs/IndexView.vue:101 +#: src/views/apps/s3fs/IndexView.vue:125 #: src/views/apps/s3fs/IndexView.vue:129 msgid "Add Mount" msgstr "新增掛載" @@ -4701,9 +5742,7 @@ msgid "Region Endpoint" msgstr "區域端點" #: src/views/apps/s3fs/IndexView.vue:163 -msgid "" -"Enter complete URL of region endpoint (e.g., https://oss-cn-beijing.aliyuncs." -"com)" +msgid "Enter complete URL of region endpoint (e.g., https://oss-cn-beijing.aliyuncs.com)" msgstr "輸入完整的區域端點 URL(例如:https://oss-cn-beijing.aliyuncs.com)" #: src/views/apps/s3fs/IndexView.vue:169 @@ -4714,82 +5753,177 @@ msgstr "掛載目錄" msgid "Enter mount directory (e.g., /oss)" msgstr "輸入掛載目錄(例如,/oss)" -#: src/views/apps/supervisor/IndexView.vue:77 +#: src/views/apps/supervisor/IndexView.vue:80 +#: src/views/container/ContainerCreate.vue:58 +msgid "Always" +msgstr "總是" + +#: src/views/apps/supervisor/IndexView.vue:81 +#: src/views/setting/PasskeyModal.vue:47 +msgid "Never" +msgstr "從未" + +#: src/views/apps/supervisor/IndexView.vue:82 +msgid "On Unexpected Exit" +msgstr "意外退出時" + +#: src/views/apps/supervisor/IndexView.vue:110 #: src/views/toolbox/PanelView.vue:104 msgid "Uptime" msgstr "運作時間" -#: src/views/apps/supervisor/IndexView.vue:134 +#: src/views/apps/supervisor/IndexView.vue:167 msgid "Are you sure you want to stop process %{ name }?" msgstr "您確定要停止處理程序 %{ name } 嗎?" -#: src/views/apps/supervisor/IndexView.vue:152 +#: src/views/apps/supervisor/IndexView.vue:185 msgid "Are you sure you want to restart process %{ name }?" msgstr "您確定要重啟處理程序 %{ name } 嗎?" -#: src/views/apps/supervisor/IndexView.vue:171 +#: src/views/apps/supervisor/IndexView.vue:204 msgid "Are you sure you want to delete process %{ name }?" msgstr "您確定要刪除處理程序 %{ name } 嗎?" -#: src/views/apps/supervisor/IndexView.vue:311 +#: src/views/apps/supervisor/IndexView.vue:363 msgid "Process Management" msgstr "處理程序管理" -#: src/views/apps/supervisor/IndexView.vue:315 -#: src/views/apps/supervisor/IndexView.vue:384 +#: src/views/apps/supervisor/IndexView.vue:367 +#: src/views/apps/supervisor/IndexView.vue:436 msgid "Add Process" msgstr "新增處理程序" -#: src/views/apps/supervisor/IndexView.vue:343 -msgid "" -"This modifies the Supervisor main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 Supervisor 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" +#: src/views/apps/supervisor/IndexView.vue:395 +msgid "This modifies the Supervisor main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 Supervisor 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" -#: src/views/apps/supervisor/IndexView.vue:364 +#: src/views/apps/supervisor/IndexView.vue:416 msgid "Daemon Logs" msgstr "守護程序日誌" -#: src/views/apps/supervisor/IndexView.vue:400 -#: src/views/project/CreateModal.vue:641 src/views/project/EditModal.vue:257 +#: src/views/apps/supervisor/IndexView.vue:452 +#: src/views/project/CreateModal.vue:641 +#: src/views/project/EditModal.vue:257 msgid "Start Command" msgstr "啟動命令" -#: src/views/apps/supervisor/IndexView.vue:405 +#: src/views/apps/supervisor/IndexView.vue:457 msgid "Please enter absolute path for files in start command" msgstr "請在啟動命令中輸入檔案的絕對路徑" -#: src/views/apps/supervisor/IndexView.vue:408 -#: src/views/project/EditModal.vue:219 src/views/toolbox/ProcessView.vue:431 +#: src/views/apps/supervisor/IndexView.vue:460 +#: src/views/project/EditModal.vue:219 +#: src/views/toolbox/ProcessView.vue:431 msgid "Working Directory" msgstr "工作目錄" -#: src/views/apps/supervisor/IndexView.vue:413 +#: src/views/apps/supervisor/IndexView.vue:465 msgid "Please enter absolute path for working directory" msgstr "請輸入工作目錄的絕對路徑" -#: src/views/apps/supervisor/IndexView.vue:416 +#: src/views/apps/supervisor/IndexView.vue:468 #: src/views/toolbox/WebHookView.vue:63 msgid "Run As User" msgstr "以使用者身分執行" -#: src/views/apps/supervisor/IndexView.vue:421 +#: src/views/apps/supervisor/IndexView.vue:473 msgid "Usually www is sufficient" msgstr "通常 www 就足夠了" -#: src/views/apps/supervisor/IndexView.vue:424 +#: src/views/apps/supervisor/IndexView.vue:476 msgid "Number of Processes" msgstr "處理程序數量" -#: src/views/apps/supervisor/IndexView.vue:448 +#: src/views/apps/supervisor/IndexView.vue:500 msgid "Process Configuration" msgstr "處理程序設定" +#: src/views/apps/supervisor/IndexView.vue:507 +msgid "Parameter Settings" +msgstr "引數設定" + +#: src/views/apps/supervisor/IndexView.vue:510 +msgid "Leave a field empty to comment out the option and use the default." +msgstr "將欄位留空可註釋掉該選項並使用預設值。" + +#: src/views/apps/supervisor/IndexView.vue:513 +msgid "Start Command (command)" +msgstr "啟動命令(command)" + +#: src/views/apps/supervisor/IndexView.vue:516 +msgid "Working Directory (directory)" +msgstr "工作目錄(directory)" + +#: src/views/apps/supervisor/IndexView.vue:519 +msgid "Run As User (user)" +msgstr "執行使用者(user)" + +#: src/views/apps/supervisor/IndexView.vue:522 +msgid "Number of Processes (numprocs)" +msgstr "處理程序數量(numprocs)" + +#: src/views/apps/supervisor/IndexView.vue:525 +msgid "Priority (priority)" +msgstr "優先順序(priority)" + +#: src/views/apps/supervisor/IndexView.vue:528 +msgid "Start On Boot (autostart)" +msgstr "開機啟動(autostart)" + +#: src/views/apps/supervisor/IndexView.vue:531 +msgid "Auto Restart (autorestart)" +msgstr "自動重啟(autorestart)" + +#: src/views/apps/supervisor/IndexView.vue:538 +msgid "Seconds Before Considered Started (startsecs)" +msgstr "認定啟動成功前的等待秒數(startsecs)" + +#: src/views/apps/supervisor/IndexView.vue:541 +msgid "Start Retries (startretries)" +msgstr "啟動重試次數(startretries)" + +#: src/views/apps/supervisor/IndexView.vue:544 +msgid "Seconds To Wait On Stop (stopwaitsecs)" +msgstr "停止等待秒數(stopwaitsecs)" + +#: src/views/apps/supervisor/IndexView.vue:547 +msgid "Stop Whole Process Group (stopasgroup)" +msgstr "停止整個處理程序群組(stopasgroup)" + +#: src/views/apps/supervisor/IndexView.vue:550 +msgid "Kill Whole Process Group (killasgroup)" +msgstr "終止整個處理程序群組(killasgroup)" + +#: src/views/apps/supervisor/IndexView.vue:553 +msgid "Merge Stderr Into Stdout (redirect_stderr)" +msgstr "將標準錯誤合併到標準輸出(redirect_stderr)" + +#: src/views/apps/supervisor/IndexView.vue:560 +msgid "Log File (stdout_logfile)" +msgstr "日誌檔案(stdout_logfile)" + +#: src/views/apps/supervisor/IndexView.vue:563 +msgid "Log Rotate Size (stdout_logfile_maxbytes)" +msgstr "日誌輪轉大小(stdout_logfile_maxbytes)" + +#: src/views/apps/supervisor/IndexView.vue:566 +msgid "Log Backups (stdout_logfile_backups)" +msgstr "日誌備份數量(stdout_logfile_backups)" + +#: src/views/apps/supervisor/IndexView.vue:569 +msgid "Environment Variables (environment)" +msgstr "環境變數(environment)" + +#: src/views/apps/supervisor/IndexView.vue:572 +msgid "e.g. KEY="value",FOO="bar"" +msgstr "例如 KEY="value",FOO="bar"" + +#: src/views/apps/supervisor/IndexView.vue:587 +msgid "Raw Configuration" +msgstr "原始配置" + #: src/views/apps/valkey/IndexView.vue:69 -msgid "" -"This modifies the Valkey main configuration file. If you do not understand " -"the meaning of each parameter, please do not modify it randomly!" +msgid "This modifies the Valkey main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" msgstr "這將修改 Valkey 主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/valkey/ValkeyConfigTuneView.vue:116 @@ -4808,7 +5942,8 @@ msgstr "Valkey AOF 持久化設定。" msgid "Filename" msgstr "檔案名稱" -#: src/views/backup/ListView.vue:54 src/views/database/ServerList.vue:152 +#: src/views/backup/ListView.vue:54 +#: src/views/database/ServerList.vue:152 #: src/views/database/UserList.vue:125 msgid "Update Date" msgstr "更新日期" @@ -4826,31 +5961,34 @@ msgid "Restore task created, please check the progress in background tasks" msgstr "恢復任務已建立,請在背景任務中檢視進度" #: src/views/backup/ListView.vue:232 -msgid "" -"Only local backups are displayed here. Remote backups are stored in the " -"corresponding backup storage." +msgid "Only local backups are displayed here. Remote backups are stored in the corresponding backup storage." msgstr "此處僅顯示本地備份。遠端備份儲存在相應的備份儲存中。" -#: src/views/backup/ListView.vue:239 src/views/backup/ListView.vue:268 +#: src/views/backup/ListView.vue:239 +#: src/views/backup/ListView.vue:268 msgid "Create Backup" msgstr "建立備份" -#: src/views/backup/ListView.vue:242 src/views/backup/UploadModal.vue:38 +#: src/views/backup/ListView.vue:242 +#: src/views/backup/UploadModal.vue:38 msgid "Upload Backup" msgstr "上傳備份" -#: src/views/backup/ListView.vue:280 src/views/backup/ListView.vue:328 +#: src/views/backup/ListView.vue:280 +#: src/views/backup/ListView.vue:328 msgid "Select website" msgstr "選擇網站" #: src/views/backup/ListView.vue:286 #: src/views/database/CreateDatabaseModal.vue:94 -#: src/views/database/DatabaseList.vue:21 src/views/website/CreateModal.vue:269 +#: src/views/database/DatabaseList.vue:21 +#: src/views/website/CreateModal.vue:269 #: src/views/website/CreateModal.vue:274 msgid "Database Name" msgstr "資料庫名稱" -#: src/views/backup/ListView.vue:292 src/views/backup/ListView.vue:340 +#: src/views/backup/ListView.vue:292 +#: src/views/backup/ListView.vue:340 msgid "Select database" msgstr "選取資料庫" @@ -4866,12 +6004,18 @@ msgstr "選擇備份儲存" msgid "Restore Backup" msgstr "恢復備份" -#: src/views/backup/StorageView.vue:36 src/views/backup/StorageView.vue:321 -#: src/views/backup/StorageView.vue:477 src/views/cert/CertView.vue:619 -#: src/views/cert/CertView.vue:719 src/views/cert/UploadCertModal.vue:54 -#: src/views/setting/SettingSafe.vue:282 src/views/ssh/CreateModal.vue:81 -#: src/views/ssh/CreateModal.vue:92 src/views/ssh/UpdateModal.vue:87 -#: src/views/ssh/UpdateModal.vue:98 src/views/website/EditModal.vue:1784 +#: src/views/backup/StorageView.vue:36 +#: src/views/backup/StorageView.vue:321 +#: src/views/backup/StorageView.vue:477 +#: src/views/cert/CertView.vue:619 +#: src/views/cert/CertView.vue:719 +#: src/views/cert/UploadCertModal.vue:54 +#: src/views/setting/SettingSafe.vue:282 +#: src/views/ssh/CreateModal.vue:81 +#: src/views/ssh/CreateModal.vue:92 +#: src/views/ssh/UpdateModal.vue:87 +#: src/views/ssh/UpdateModal.vue:98 +#: src/views/website/EditModal.vue:1784 msgid "Private Key" msgstr "私鑰" @@ -4886,40 +6030,50 @@ msgstr "您確定要刪除此儲存嗎?" #: src/views/backup/StorageView.vue:173 #: src/views/container/ContainerCreate.vue:124 -#: src/views/setting/PasswordModal.vue:21 src/views/setting/TokenModal.vue:178 -#: src/views/setting/TwoFaModal.vue:28 src/views/ssh/UpdateModal.vue:32 +#: src/views/setting/PasswordModal.vue:21 +#: src/views/setting/TokenModal.vue:178 +#: src/views/setting/TwoFaModal.vue:28 +#: src/views/ssh/UpdateModal.vue:32 msgid "Updated successfully" msgstr "更新成功" -#: src/views/backup/StorageView.vue:195 src/views/backup/StorageView.vue:222 +#: src/views/backup/StorageView.vue:195 +#: src/views/backup/StorageView.vue:222 msgid "Add Storage" msgstr "新增儲存" -#: src/views/backup/StorageView.vue:231 src/views/backup/StorageView.vue:393 +#: src/views/backup/StorageView.vue:231 +#: src/views/backup/StorageView.vue:393 msgid "Enter storage name" msgstr "輸入儲存名稱" -#: src/views/backup/StorageView.vue:239 src/views/backup/StorageView.vue:401 +#: src/views/backup/StorageView.vue:239 +#: src/views/backup/StorageView.vue:401 msgid "Access Key" msgstr "Access Key" -#: src/views/backup/StorageView.vue:242 src/views/backup/StorageView.vue:404 +#: src/views/backup/StorageView.vue:242 +#: src/views/backup/StorageView.vue:404 msgid "Enter access key" msgstr "輸入 Access Key" -#: src/views/backup/StorageView.vue:245 src/views/backup/StorageView.vue:407 +#: src/views/backup/StorageView.vue:245 +#: src/views/backup/StorageView.vue:407 msgid "Secret Key" msgstr "Secret Key" -#: src/views/backup/StorageView.vue:250 src/views/backup/StorageView.vue:412 +#: src/views/backup/StorageView.vue:250 +#: src/views/backup/StorageView.vue:412 msgid "Enter secret key" msgstr "輸入 Secret Key" -#: src/views/backup/StorageView.vue:253 src/views/backup/StorageView.vue:415 +#: src/views/backup/StorageView.vue:253 +#: src/views/backup/StorageView.vue:415 msgid "Style" msgstr "風格" -#: src/views/backup/StorageView.vue:256 src/views/website/stats/GeoTab.vue:91 +#: src/views/backup/StorageView.vue:256 +#: src/views/website/stats/GeoTab.vue:91 #: src/views/website/stats/GeoTab.vue:248 msgid "Region" msgstr "區域" @@ -4928,57 +6082,75 @@ msgstr "區域" msgid "Enter region (e.g., us-east-1)" msgstr "輸入區域(例如 us-east-1)" -#: src/views/backup/StorageView.vue:262 src/views/backup/StorageView.vue:418 +#: src/views/backup/StorageView.vue:262 +#: src/views/backup/StorageView.vue:418 msgid "Endpoint" msgstr "端點" -#: src/views/backup/StorageView.vue:265 src/views/backup/StorageView.vue:421 +#: src/views/backup/StorageView.vue:265 +#: src/views/backup/StorageView.vue:421 msgid "Enter endpoint URL" msgstr "輸入端點 URL" -#: src/views/backup/StorageView.vue:268 src/views/backup/StorageView.vue:424 +#: src/views/backup/StorageView.vue:268 +#: src/views/backup/StorageView.vue:424 msgid "Scheme" msgstr "協定" -#: src/views/backup/StorageView.vue:271 src/views/backup/StorageView.vue:427 +#: src/views/backup/StorageView.vue:271 +#: src/views/backup/StorageView.vue:427 msgid "Bucket" msgstr "儲存桶" -#: src/views/backup/StorageView.vue:274 src/views/backup/StorageView.vue:430 +#: src/views/backup/StorageView.vue:274 +#: src/views/backup/StorageView.vue:430 msgid "Enter bucket name" msgstr "輸入儲存桶名稱" -#: src/views/backup/StorageView.vue:280 src/views/backup/StorageView.vue:364 -#: src/views/backup/StorageView.vue:436 src/views/backup/StorageView.vue:517 +#: src/views/backup/StorageView.vue:280 +#: src/views/backup/StorageView.vue:364 +#: src/views/backup/StorageView.vue:436 +#: src/views/backup/StorageView.vue:517 msgid "Enter path (optional)" msgstr "輸入路徑(可選)" -#: src/views/backup/StorageView.vue:288 src/views/backup/StorageView.vue:444 +#: src/views/backup/StorageView.vue:288 +#: src/views/backup/StorageView.vue:444 msgid "Enter host" msgstr "輸入主機" -#: src/views/backup/StorageView.vue:290 src/views/backup/StorageView.vue:446 +#: src/views/backup/StorageView.vue:290 +#: src/views/backup/StorageView.vue:446 #: src/views/database/CreateServerModal.vue:154 #: src/views/database/UpdateServerModal.vue:87 -#: src/views/firewall/CreateModal.vue:159 src/views/firewall/ForwardView.vue:33 -#: src/views/firewall/RuleView.vue:90 src/views/firewall/ScanView.vue:300 -#: src/views/firewall/ScanView.vue:316 src/views/firewall/ScanView.vue:380 -#: src/views/log/SSHLog.vue:83 src/views/setting/SettingBase.vue:137 -#: src/views/ssh/CreateModal.vue:71 src/views/ssh/UpdateModal.vue:77 +#: src/views/firewall/CreateModal.vue:159 +#: src/views/firewall/ForwardView.vue:33 +#: src/views/firewall/RuleView.vue:90 +#: src/views/firewall/ScanView.vue:300 +#: src/views/firewall/ScanView.vue:316 +#: src/views/firewall/ScanView.vue:380 +#: src/views/log/SSHLog.vue:83 +#: src/views/setting/SettingBase.vue:137 +#: src/views/ssh/CreateModal.vue:71 +#: src/views/ssh/UpdateModal.vue:77 #: src/views/website/CreateModal.vue:224 msgid "Port" msgstr "連接埠" -#: src/views/backup/StorageView.vue:295 src/views/backup/StorageView.vue:451 +#: src/views/backup/StorageView.vue:295 +#: src/views/backup/StorageView.vue:451 msgid "Enter port" msgstr "輸入連接埠" -#: src/views/backup/StorageView.vue:304 src/views/backup/StorageView.vue:460 +#: src/views/backup/StorageView.vue:304 +#: src/views/backup/StorageView.vue:460 msgid "Auth Type" msgstr "認證類型" -#: src/views/backup/StorageView.vue:316 src/views/backup/StorageView.vue:358 -#: src/views/backup/StorageView.vue:472 src/views/backup/StorageView.vue:511 +#: src/views/backup/StorageView.vue:316 +#: src/views/backup/StorageView.vue:358 +#: src/views/backup/StorageView.vue:472 +#: src/views/backup/StorageView.vue:511 #: src/views/container/ImageView.vue:425 #: src/views/database/CreateDatabaseModal.vue:132 #: src/views/database/CreateUserModal.vue:127 @@ -4986,19 +6158,23 @@ msgstr "認證類型" msgid "Enter password" msgstr "輸入密碼" -#: src/views/backup/StorageView.vue:328 src/views/backup/StorageView.vue:484 +#: src/views/backup/StorageView.vue:328 +#: src/views/backup/StorageView.vue:484 msgid "Enter private key" msgstr "輸入私鑰" -#: src/views/backup/StorageView.vue:334 src/views/backup/StorageView.vue:490 +#: src/views/backup/StorageView.vue:334 +#: src/views/backup/StorageView.vue:490 msgid "Enter remote path" msgstr "輸入遠端路徑" -#: src/views/backup/StorageView.vue:341 src/views/backup/StorageView.vue:497 +#: src/views/backup/StorageView.vue:341 +#: src/views/backup/StorageView.vue:497 msgid "URL" msgstr "URL" -#: src/views/backup/StorageView.vue:344 src/views/backup/StorageView.vue:498 +#: src/views/backup/StorageView.vue:344 +#: src/views/backup/StorageView.vue:498 msgid "Enter WebDAV URL" msgstr "輸入 WebDAV URL" @@ -5010,30 +6186,37 @@ msgstr "編輯儲存" msgid "Upload %{ filename } successfully" msgstr "上傳 %{ filename } 成功" -#: src/views/backup/UploadModal.vue:50 src/views/file/UploadModal.vue:710 +#: src/views/backup/UploadModal.vue:50 +#: src/views/file/UploadModal.vue:710 msgid "Click or drag files to this area to upload" msgstr "點選或將檔案拖曳到此區域上傳" #: src/views/backup/UploadModal.vue:52 -msgid "" -"For large files, it is recommended to use SFTP or other methods to upload" +msgid "For large files, it is recommended to use SFTP or other methods to upload" msgstr "對於大檔案,建議使用 SFTP 或其他方式上傳" -#: src/views/cert/AccountView.vue:39 src/views/cert/AccountView.vue:226 +#: src/views/cert/AccountView.vue:39 +#: src/views/cert/AccountView.vue:226 #: src/views/cert/CreateAccountModal.vue:104 -#: src/views/setting/CreateModal.vue:62 src/views/setting/SettingUser.vue:40 +#: src/views/setting/CreateModal.vue:62 +#: src/views/setting/SettingUser.vue:40 msgid "Email" msgstr "電子郵件" -#: src/views/cert/AccountView.vue:67 src/views/cert/AccountView.vue:218 -#: src/views/cert/CertView.vue:542 src/views/cert/CreateAccountModal.vue:96 +#: src/views/cert/AccountView.vue:67 +#: src/views/cert/AccountView.vue:218 +#: src/views/cert/CertView.vue:542 +#: src/views/cert/CreateAccountModal.vue:96 #: src/views/cert/CreateCertModal.vue:110 msgid "Key Type" msgstr "密鑰類型" -#: src/views/cert/AccountView.vue:95 src/views/cert/CertView.vue:372 -#: src/views/cert/DnsView.vue:91 src/views/database/ServerList.vue:214 -#: src/views/database/UserList.vue:150 src/views/file/PermissionModal.vue:156 +#: src/views/cert/AccountView.vue:95 +#: src/views/cert/CertView.vue:372 +#: src/views/cert/DnsView.vue:91 +#: src/views/database/ServerList.vue:214 +#: src/views/database/UserList.vue:150 +#: src/views/file/PermissionModal.vue:156 #: src/views/setting/TokenModal.vue:73 msgid "Modify" msgstr "修改" @@ -5042,12 +6225,14 @@ msgstr "修改" msgid "Are you sure you want to delete the account?" msgstr "您確定要刪除該帳戶嗎?" -#: src/views/cert/AccountView.vue:108 src/views/cert/CertView.vue:386 +#: src/views/cert/AccountView.vue:108 +#: src/views/cert/CertView.vue:386 #: src/views/cert/DnsView.vue:105 msgid "Deletion successful" msgstr "刪除成功" -#: src/views/cert/AccountView.vue:133 src/views/cert/CreateAccountModal.vue:42 +#: src/views/cert/AccountView.vue:133 +#: src/views/cert/CreateAccountModal.vue:42 msgid "Registering account with CA, please wait patiently" msgstr "正在向 CA 註冊帳戶,請耐心等待" @@ -5055,43 +6240,45 @@ msgstr "正在向 CA 註冊帳戶,請耐心等待" msgid "Modify Account" msgstr "修改帳戶" -#: src/views/cert/AccountView.vue:198 src/views/cert/CreateAccountModal.vue:76 -msgid "" -"LiteSSL, Google and SSL.com require obtaining EAB (KID and HMAC) from their " -"official websites first" +#: src/views/cert/AccountView.vue:198 +#: src/views/cert/CreateAccountModal.vue:76 +msgid "LiteSSL, Google and SSL.com require obtaining EAB (KID and HMAC) from their official websites first" msgstr "LiteSSL、Google 和 SSL.com 需要先從其官方網站取得 EAB(KID 和 HMAC)" -#: src/views/cert/AccountView.vue:204 src/views/cert/CreateAccountModal.vue:82 -msgid "" -"Google is not accessible in mainland China, other CAs depend on network " -"conditions, recommend using Let's Encrypt or LiteSSL" -msgstr "" -"Google 在中國大陸無法存取,其他 CA 視網路狀況而定,建議使用 Let's Encrypt 或 " -"LiteSSL" +#: src/views/cert/AccountView.vue:204 +#: src/views/cert/CreateAccountModal.vue:82 +msgid "Google is not accessible in mainland China, other CAs depend on network conditions, recommend using Let's Encrypt or LiteSSL" +msgstr "Google 在中國大陸無法存取,其他 CA 視網路狀況而定,建議使用 Let's Encrypt 或 LiteSSL" -#: src/views/cert/AccountView.vue:210 src/views/cert/CreateAccountModal.vue:88 +#: src/views/cert/AccountView.vue:210 +#: src/views/cert/CreateAccountModal.vue:88 msgid "CA" msgstr "CA" -#: src/views/cert/AccountView.vue:213 src/views/cert/CreateAccountModal.vue:91 +#: src/views/cert/AccountView.vue:213 +#: src/views/cert/CreateAccountModal.vue:91 msgid "Select CA" msgstr "選擇 CA" -#: src/views/cert/AccountView.vue:221 src/views/cert/CertView.vue:545 +#: src/views/cert/AccountView.vue:221 +#: src/views/cert/CertView.vue:545 #: src/views/cert/CreateAccountModal.vue:99 #: src/views/cert/CreateCertModal.vue:113 msgid "Select key type" msgstr "選擇密鑰類型" -#: src/views/cert/AccountView.vue:231 src/views/cert/CreateAccountModal.vue:109 +#: src/views/cert/AccountView.vue:231 +#: src/views/cert/CreateAccountModal.vue:109 msgid "Enter email address" msgstr "輸入電子郵件地址" -#: src/views/cert/AccountView.vue:239 src/views/cert/CreateAccountModal.vue:117 +#: src/views/cert/AccountView.vue:239 +#: src/views/cert/CreateAccountModal.vue:117 msgid "Enter KID" msgstr "輸入 KID" -#: src/views/cert/AccountView.vue:247 src/views/cert/CreateAccountModal.vue:125 +#: src/views/cert/AccountView.vue:247 +#: src/views/cert/CreateAccountModal.vue:125 msgid "Enter HMAC" msgstr "輸入 HMAC" @@ -5099,14 +6286,19 @@ msgstr "輸入 HMAC" msgid "No matching websites found" msgstr "未找到匹配的網站" -#: src/views/cert/CertView.vue:146 src/views/cert/CertView.vue:534 -#: src/views/cert/CreateCertModal.vue:102 src/views/project/CreateModal.vue:661 -#: src/views/website/CreateModal.vue:201 src/views/website/EditModal.vue:938 +#: src/views/cert/CertView.vue:146 +#: src/views/cert/CertView.vue:534 +#: src/views/cert/CreateCertModal.vue:102 +#: src/views/project/CreateModal.vue:661 +#: src/views/website/CreateModal.vue:201 +#: src/views/website/EditModal.vue:938 msgid "Domain" msgstr "域名" -#: src/views/cert/CertView.vue:191 src/views/file/ToolBar.vue:154 -#: src/views/file/UploadModal.vue:674 src/views/monitor/SystemView.vue:584 +#: src/views/cert/CertView.vue:191 +#: src/views/file/ToolBar.vue:154 +#: src/views/file/UploadModal.vue:674 +#: src/views/monitor/SystemView.vue:584 msgid "Upload" msgstr "上傳" @@ -5115,16 +6307,18 @@ msgid "Associated Account" msgstr "關聯帳戶" #: src/views/cert/CertView.vue:212 -#, fuzzy msgid "Associated Website" -msgstr "建立網站" +msgstr "關聯網站" -#: src/views/cert/CertView.vue:236 src/views/website/EditModal.vue:1711 +#: src/views/cert/CertView.vue:236 +#: src/views/website/EditModal.vue:1711 msgid "Issuer" msgstr "頒發者" -#: src/views/cert/CertView.vue:245 src/views/setting/TokenModal.vue:48 -#: src/views/setting/TokenModal.vue:255 src/views/setting/TokenModal.vue:293 +#: src/views/cert/CertView.vue:245 +#: src/views/setting/TokenModal.vue:48 +#: src/views/setting/TokenModal.vue:255 +#: src/views/setting/TokenModal.vue:293 msgid "Expiration Time" msgstr "過期時間" @@ -5136,7 +6330,8 @@ msgstr "下次續簽時間" msgid "Auto Renewal" msgstr "自動續簽" -#: src/views/cert/CertView.vue:296 src/views/website/EditModal.vue:2289 +#: src/views/cert/CertView.vue:296 +#: src/views/website/EditModal.vue:2289 msgid "Issue" msgstr "簽發" @@ -5157,58 +6352,63 @@ msgid "Modify Certificate" msgstr "修改證書" #: src/views/cert/CertView.vue:528 -msgid "" -"You can automatically issue and deploy certificates by selecting any website/" -"DNS, or manually enter domain names and set DNS resolution to issue " -"certificates, or fill in deployment scripts to automatically deploy " -"certificates." -msgstr "" -"您可以透過選擇任意網站 / DNS 自動簽發與部署憑證,或手動輸入網域並設定 DNS 解" -"析以簽發憑證,或填寫部署指令碼以自動部署憑證。" +msgid "You can automatically issue and deploy certificates by selecting any website/DNS, or manually enter domain names and set DNS resolution to issue certificates, or fill in deployment scripts to automatically deploy certificates." +msgstr "您可以透過選擇任意網站 / DNS 自動簽發與部署憑證,或手動輸入網域並設定 DNS 解析以簽發憑證,或填寫部署指令碼以自動部署憑證。" -#: src/views/cert/CertView.vue:553 src/views/cert/CreateCertModal.vue:121 -#, fuzzy +#: src/views/cert/CertView.vue:553 +#: src/views/cert/CreateCertModal.vue:121 msgid "Select websites for certificate deployment" -msgstr "選擇要部署憑證的網站" +msgstr "選擇要部署證書的網站" -#: src/views/cert/CertView.vue:562 src/views/cert/CreateCertModal.vue:127 +#: src/views/cert/CertView.vue:562 +#: src/views/cert/CreateCertModal.vue:127 #: src/views/cert/IndexView.vue:98 msgid "Account" msgstr "帳戶" -#: src/views/cert/CertView.vue:566 src/views/cert/CreateCertModal.vue:130 +#: src/views/cert/CertView.vue:566 +#: src/views/cert/CreateCertModal.vue:130 msgid "Select account for certificate issuance" msgstr "選擇用於憑證頒發的帳戶" -#: src/views/cert/CertView.vue:571 src/views/cert/CreateCertModal.vue:135 -#: src/views/cert/CreateDnsModal.vue:71 src/views/cert/DnsView.vue:196 -#: src/views/cert/IndexView.vue:99 src/views/website/EditModal.vue:2280 +#: src/views/cert/CertView.vue:571 +#: src/views/cert/CreateCertModal.vue:135 +#: src/views/cert/CreateDnsModal.vue:71 +#: src/views/cert/DnsView.vue:196 +#: src/views/cert/IndexView.vue:99 +#: src/views/website/EditModal.vue:2280 msgid "DNS" msgstr "DNS" -#: src/views/cert/CertView.vue:574 src/views/cert/CreateCertModal.vue:138 +#: src/views/cert/CertView.vue:574 +#: src/views/cert/CreateCertModal.vue:138 #: src/views/website/EditModal.vue:2283 msgid "Select DNS for certificate issuance" msgstr "選擇用於證書頒發的 DNS" -#: src/views/cert/CertView.vue:581 src/views/cert/CreateCertModal.vue:143 +#: src/views/cert/CertView.vue:581 +#: src/views/cert/CreateCertModal.vue:143 msgid "DNS Alias" msgstr "DNS 別名" -#: src/views/cert/CertView.vue:591 src/views/cert/CreateCertModal.vue:149 +#: src/views/cert/CertView.vue:591 +#: src/views/cert/CreateCertModal.vue:149 msgid "Original domain, e.g. example.com" msgstr "原始域名,例如 example.com" -#: src/views/cert/CertView.vue:597 src/views/cert/CreateCertModal.vue:155 +#: src/views/cert/CertView.vue:597 +#: src/views/cert/CreateCertModal.vue:155 msgid "Alias record, e.g. _acme-challenge.delegated.com" msgstr "別名記錄,例如 _acme-challenge.delegated.com" -#: src/views/cert/CertView.vue:612 src/views/cert/UploadCertModal.vue:50 +#: src/views/cert/CertView.vue:612 +#: src/views/cert/UploadCertModal.vue:50 #: src/views/website/EditModal.vue:1778 msgid "Enter the content of the PEM certificate file" msgstr "輸入 PEM 憑證檔案的內容" -#: src/views/cert/CertView.vue:624 src/views/cert/UploadCertModal.vue:58 +#: src/views/cert/CertView.vue:624 +#: src/views/cert/UploadCertModal.vue:58 #: src/views/website/EditModal.vue:1788 msgid "Enter the content of the KEY private key file" msgstr "輸入 KEY 私鑰檔案的內容" @@ -5218,9 +6418,7 @@ msgid "Deployment Script" msgstr "部署腳本" #: src/views/cert/CertView.vue:637 -msgid "" -"The {cert} and {key} in the script will be replaced with the certificate and " -"private key content" +msgid "The {cert} and {key} in the script will be replaced with the certificate and private key content" msgstr "腳本中的 {cert} 和 {key} 將被替換為證書和私鑰內容" #: src/views/cert/CertView.vue:659 @@ -5231,7 +6429,8 @@ msgstr "部署證書" msgid "Match Websites" msgstr "匹配網站" -#: src/views/cert/CertView.vue:682 src/views/tamper/TamperView.vue:313 +#: src/views/cert/CertView.vue:682 +#: src/views/tamper/TamperView.vue:313 #: src/views/toolbox/DiskView.vue:250 msgid "Available" msgstr "可用" @@ -5248,24 +6447,22 @@ msgstr "啟用 HTTPS" msgid "View Certificate" msgstr "查看證書" -#: src/views/cert/CreateAccountModal.vue:68 src/views/cert/IndexView.vue:111 +#: src/views/cert/CreateAccountModal.vue:68 +#: src/views/cert/IndexView.vue:111 msgid "Create Account" msgstr "建立帳戶" -#: src/views/cert/CreateCertModal.vue:87 src/views/cert/IndexView.vue:108 +#: src/views/cert/CreateCertModal.vue:87 +#: src/views/cert/IndexView.vue:108 msgid "Create Certificate" msgstr "建立憑證" #: src/views/cert/CreateCertModal.vue:96 -msgid "" -"You can automatically issue and deploy certificates by selecting either " -"Website or DNS, or you can manually enter domain names and set up DNS " -"resolution to issue certificates" -msgstr "" -"您可以透過選擇網站或 DNS 自動簽發與部署憑證,或手動輸入網域並設定 DNS 解析以" -"簽發憑證" +msgid "You can automatically issue and deploy certificates by selecting either Website or DNS, or you can manually enter domain names and set up DNS resolution to issue certificates" +msgstr "您可以透過選擇網站或 DNS 自動簽發與部署憑證,或手動輸入網域並設定 DNS 解析以簽發憑證" -#: src/views/cert/CreateDnsModal.vue:56 src/views/cert/IndexView.vue:114 +#: src/views/cert/CreateDnsModal.vue:56 +#: src/views/cert/IndexView.vue:114 msgid "Create DNS" msgstr "建立 DNS" @@ -5277,87 +6474,108 @@ msgstr "備註名稱" msgid "Enter comment name" msgstr "輸入備註名稱" -#: src/views/cert/CreateDnsModal.vue:74 src/views/cert/DnsView.vue:199 +#: src/views/cert/CreateDnsModal.vue:74 +#: src/views/cert/DnsView.vue:199 msgid "Select DNS" msgstr "選擇 DNS" -#: src/views/cert/CreateDnsModal.vue:83 src/views/cert/DnsView.vue:208 +#: src/views/cert/CreateDnsModal.vue:83 +#: src/views/cert/DnsView.vue:208 msgid "Enter Aliyun Access Key" msgstr "輸入阿里雲 Access Key" -#: src/views/cert/CreateDnsModal.vue:90 src/views/cert/DnsView.vue:215 +#: src/views/cert/CreateDnsModal.vue:90 +#: src/views/cert/DnsView.vue:215 msgid "Enter Aliyun Secret Key" msgstr "輸入阿里雲 Secret Key" -#: src/views/cert/CreateDnsModal.vue:97 src/views/cert/DnsView.vue:222 +#: src/views/cert/CreateDnsModal.vue:97 +#: src/views/cert/DnsView.vue:222 msgid "Enter Tencent Cloud SecretId" msgstr "輸入騰訊雲 SecretId" -#: src/views/cert/CreateDnsModal.vue:104 src/views/cert/DnsView.vue:229 +#: src/views/cert/CreateDnsModal.vue:104 +#: src/views/cert/DnsView.vue:229 msgid "Enter Tencent Cloud SecretKey" msgstr "輸入騰訊雲 SecretKey" -#: src/views/cert/CreateDnsModal.vue:111 src/views/cert/DnsView.vue:236 +#: src/views/cert/CreateDnsModal.vue:111 +#: src/views/cert/DnsView.vue:236 msgid "Enter Huawei Cloud AccessKeyId" msgstr "輸入華為雲 AccessKeyId" -#: src/views/cert/CreateDnsModal.vue:118 src/views/cert/DnsView.vue:243 +#: src/views/cert/CreateDnsModal.vue:118 +#: src/views/cert/DnsView.vue:243 msgid "Enter Huawei Cloud SecretAccessKey" msgstr "輸入華為雲 SecretAccessKey" -#: src/views/cert/CreateDnsModal.vue:125 src/views/cert/DnsView.vue:250 +#: src/views/cert/CreateDnsModal.vue:125 +#: src/views/cert/DnsView.vue:250 msgid "Enter West.cn Username" msgstr "輸入西部數碼使用者名稱" -#: src/views/cert/CreateDnsModal.vue:132 src/views/cert/DnsView.vue:257 +#: src/views/cert/CreateDnsModal.vue:132 +#: src/views/cert/DnsView.vue:257 msgid "Enter West.cn API Password" msgstr "輸入西部數碼 API 密碼" -#: src/views/cert/CreateDnsModal.vue:139 src/views/cert/DnsView.vue:264 +#: src/views/cert/CreateDnsModal.vue:139 +#: src/views/cert/DnsView.vue:264 msgid "Enter Cloudflare API Key" msgstr "輸入 Cloudflare API 金鑰" -#: src/views/cert/CreateDnsModal.vue:146 src/views/cert/DnsView.vue:271 +#: src/views/cert/CreateDnsModal.vue:146 +#: src/views/cert/DnsView.vue:271 msgid "Enter G-Core API Key" msgstr "輸入 G-Core API 金鑰" -#: src/views/cert/CreateDnsModal.vue:153 src/views/cert/DnsView.vue:278 +#: src/views/cert/CreateDnsModal.vue:153 +#: src/views/cert/DnsView.vue:278 msgid "Enter Porkbun API Key" msgstr "輸入 Porkbun API 金鑰" -#: src/views/cert/CreateDnsModal.vue:160 src/views/cert/DnsView.vue:285 +#: src/views/cert/CreateDnsModal.vue:160 +#: src/views/cert/DnsView.vue:285 msgid "Enter Porkbun Secret Key" msgstr "輸入 Porkbun 密鑰" -#: src/views/cert/CreateDnsModal.vue:167 src/views/cert/DnsView.vue:292 +#: src/views/cert/CreateDnsModal.vue:167 +#: src/views/cert/DnsView.vue:292 msgid "Enter NameSilo API Token" msgstr "輸入 NameSilo API 令牌" -#: src/views/cert/CreateDnsModal.vue:174 src/views/cert/DnsView.vue:299 +#: src/views/cert/CreateDnsModal.vue:174 +#: src/views/cert/DnsView.vue:299 msgid "Enter ClouDNS Auth ID (use Sub Auth ID by adding sub-prefix)" msgstr "輸入 ClouDNS 驗證 ID(使用子驗證 ID 時加上 sub- 前綴)" -#: src/views/cert/CreateDnsModal.vue:181 src/views/cert/DnsView.vue:306 +#: src/views/cert/CreateDnsModal.vue:181 +#: src/views/cert/DnsView.vue:306 msgid "Enter ClouDNS Auth Password" msgstr "輸入 ClouDNS 認證密碼" -#: src/views/cert/CreateDnsModal.vue:184 src/views/cert/DnsView.vue:309 +#: src/views/cert/CreateDnsModal.vue:184 +#: src/views/cert/DnsView.vue:309 msgid "DNS Server" msgstr "DNS 伺服器" -#: src/views/cert/CreateDnsModal.vue:188 src/views/cert/DnsView.vue:313 +#: src/views/cert/CreateDnsModal.vue:188 +#: src/views/cert/DnsView.vue:313 msgid "DNS server for propagation check, e.g. 8.8.8.8" msgstr "用於生效檢查的 DNS 伺服器,例如 8.8.8.8" -#: src/views/cert/CreateDnsModal.vue:191 src/views/cert/DnsView.vue:316 +#: src/views/cert/CreateDnsModal.vue:191 +#: src/views/cert/DnsView.vue:316 msgid "Skip DNS Verification" msgstr "跳過 DNS 驗證" -#: src/views/cert/CreateDnsModal.vue:194 src/views/cert/DnsView.vue:319 +#: src/views/cert/CreateDnsModal.vue:194 +#: src/views/cert/DnsView.vue:319 msgid "For intranet environments, will wait 60s instead of polling DNS" msgstr "在內網環境中,將等待 60 秒而不是輪詢 DNS" -#: src/views/cert/DnsView.vue:36 src/views/cert/DnsView.vue:189 +#: src/views/cert/DnsView.vue:36 +#: src/views/cert/DnsView.vue:189 msgid "Note Name" msgstr "備註名稱" @@ -5373,7 +6591,8 @@ msgstr "修改 DNS" msgid "Enter note name" msgstr "輸入備註名稱" -#: src/views/cert/IndexView.vue:105 src/views/cert/UploadCertModal.vue:38 +#: src/views/cert/IndexView.vue:105 +#: src/views/cert/UploadCertModal.vue:38 msgid "Upload Certificate" msgstr "上傳證書" @@ -5386,17 +6605,21 @@ msgstr "自動" msgid "Self-signed" msgstr "自簽名" -#: src/views/cert/ObtainModal.vue:67 src/views/cert/ObtainModal.vue:167 +#: src/views/cert/ObtainModal.vue:67 +#: src/views/cert/ObtainModal.vue:167 msgid "Renewal successful" msgstr "續期成功" -#: src/views/cert/ObtainModal.vue:68 src/views/cert/ObtainModal.vue:110 +#: src/views/cert/ObtainModal.vue:68 +#: src/views/cert/ObtainModal.vue:110 #: src/views/cert/ObtainModal.vue:167 msgid "Issuance successful" msgstr "簽發成功" -#: src/views/cert/ObtainModal.vue:84 src/views/cert/ObtainModal.vue:90 -#: src/views/home/UpdateView.vue:106 src/views/home/UpdateView.vue:111 +#: src/views/cert/ObtainModal.vue:84 +#: src/views/cert/ObtainModal.vue:90 +#: src/views/home/UpdateView.vue:106 +#: src/views/home/UpdateView.vue:111 msgid "WebSocket connection failed" msgstr "WebSocket 連線失敗" @@ -5412,11 +6635,15 @@ msgstr "簽發證書" msgid "Issuance Mode" msgstr "簽發模式" -#: src/views/container/ComposeView.vue:93 src/views/container/ImageView.vue:88 +#: src/views/container/ComposeView.vue:93 +#: src/views/container/ImageView.vue:88 #: src/views/container/NetworkView.vue:103 -#: src/views/container/VolumeView.vue:57 src/views/setting/PasskeyModal.vue:33 -#: src/views/setting/SettingUser.vue:79 src/views/setting/TokenModal.vue:39 -#: src/views/task/CronView.vue:100 src/views/task/TaskView.vue:51 +#: src/views/container/VolumeView.vue:57 +#: src/views/setting/PasskeyModal.vue:33 +#: src/views/setting/SettingUser.vue:79 +#: src/views/setting/TokenModal.vue:39 +#: src/views/task/CronView.vue:100 +#: src/views/task/TaskView.vue:51 #: src/views/toolbox/WebHookView.vue:125 msgid "Creation Time" msgstr "建立時間" @@ -5463,7 +6690,8 @@ msgid "Are you sure you want to delete the selected composes?" msgstr "您確定要刪除所選的編排嗎?" #: src/views/container/ComposeView.vue:328 -#: src/views/container/ComposeView.vue:354 src/views/container/IndexView.vue:23 +#: src/views/container/ComposeView.vue:354 +#: src/views/container/IndexView.vue:23 msgid "Compose" msgstr "編排" @@ -5471,10 +6699,6 @@ msgstr "編排" msgid "Edit Compose" msgstr "編輯編排" -#: src/views/container/ContainerCreate.vue:58 -msgid "Always" -msgstr "總是" - #: src/views/container/ContainerCreate.vue:59 msgid "On failure (default 5 retries)" msgstr "失敗時(預設重試 5 次)" @@ -5499,15 +6723,13 @@ msgid "Please enter image name" msgstr "請輸入鏡像名" #: src/views/container/ContainerCreate.vue:158 -msgid "" -"Updating will remove the current container and recreate it with the new " -"configuration. Data not stored in mounted volumes will be lost. Continue?" -msgstr "" -"更新將移除目前容器並以新設定重新建立,未存放在掛載資料卷中的資料將遺失,是否" -"繼續?" +msgid "Updating will remove the current container and recreate it with the new configuration. Data not stored in mounted volumes will be lost. Continue?" +msgstr "更新將移除目前容器並以新設定重新建立,未存放在掛載資料卷中的資料將遺失,是否繼續?" -#: src/views/container/ContainerCreate.vue:161 src/views/file/ListView.vue:311 -#: src/views/file/UploadModal.vue:504 src/views/file/UploadModal.vue:639 +#: src/views/container/ContainerCreate.vue:161 +#: src/views/file/ListView.vue:311 +#: src/views/file/UploadModal.vue:504 +#: src/views/file/UploadModal.vue:639 #: src/views/tamper/TamperView.vue:70 msgid "Continue" msgstr "繼續" @@ -5615,9 +6837,7 @@ msgid "Container End" msgstr "容器結束" #: src/views/container/ContainerCreate.vue:447 -msgid "" -"All exposed ports in the image will be automatically mapped to random host " -"ports." +msgid "All exposed ports in the image will be automatically mapped to random host ports." msgstr "映像檔中所有公開的連接埠將自動對應到隨機主機連接埠。" #: src/views/container/ContainerCreate.vue:456 @@ -5638,9 +6858,7 @@ msgid "Container path" msgstr "容器路徑" #: src/views/container/ContainerCreate.vue:485 -msgid "" -"Mount host directories or volumes into the container. Use absolute paths for " -"host directories." +msgid "Mount host directories or volumes into the container. Use absolute paths for host directories." msgstr "將主機目錄或卷掛載到容器中。主機目錄需使用絕對路徑。" #: src/views/container/ContainerCreate.vue:494 @@ -5649,9 +6867,7 @@ msgid "Resource Limits" msgstr "資源限制" #: src/views/container/ContainerCreate.vue:498 -msgid "" -"Set resource limits to prevent the container from consuming too many system " -"resources. Set to 0 for no limit." +msgid "Set resource limits to prevent the container from consuming too many system resources. Set to 0 for no limit." msgstr "設定資源限制以防止容器消耗過多系統資源。設為 0 表示無限制。" #: src/views/container/ContainerCreate.vue:506 @@ -5683,15 +6899,11 @@ msgid "Maximum memory the container can use, in MB. 0 means no limit." msgstr "容器可使用的最大記憶體,單位為 MB。0 表示無限制。" #: src/views/container/ContainerCreate.vue:547 -msgid "" -"Number of CPU cores the container can use. 0.5 means half a core, 2 means 2 " -"cores." +msgid "Number of CPU cores the container can use. 0.5 means half a core, 2 means 2 cores." msgstr "容器可以使用的 CPU 核心數。0.5 意味著半個核心,2 意味著 2 個核心。" #: src/views/container/ContainerCreate.vue:554 -msgid "" -"Relative CPU weight. Default is 1024. Higher values get more CPU time when " -"competing." +msgid "Relative CPU weight. Default is 1024. Higher values get more CPU time when competing." msgstr "相對 CPU 權重。預設值為 1024。競爭時,數值越高獲得的 CPU 時間越多。" #: src/views/container/ContainerCreate.vue:566 @@ -5714,8 +6926,10 @@ msgstr "啟動命令" #: src/views/container/ContainerCreate.vue:594 #: src/views/container/ContainerInfoModal.vue:146 -#: src/views/home/IndexView.vue:674 src/views/home/IndexView.vue:775 -#: src/views/monitor/SystemView.vue:323 src/views/monitor/SystemView.vue:335 +#: src/views/home/IndexView.vue:674 +#: src/views/home/IndexView.vue:775 +#: src/views/monitor/SystemView.vue:323 +#: src/views/monitor/SystemView.vue:335 msgid "Command" msgstr "命令" @@ -5763,7 +6977,8 @@ msgid "Container Info" msgstr "容器資訊" #: src/views/container/ContainerInfoModal.vue:100 -#: src/views/toolbox/disk/SmartView.vue:280 src/views/toolbox/PanelView.vue:98 +#: src/views/toolbox/disk/SmartView.vue:280 +#: src/views/toolbox/PanelView.vue:98 msgid "Basic Info" msgstr "基本資訊" @@ -5806,7 +7021,8 @@ msgid "No environment variables" msgstr "無環境變數" #: src/views/container/ContainerInfoModal.vue:214 -#: src/views/toolbox/WebHookView.vue:73 src/views/toolbox/WebHookView.vue:339 +#: src/views/toolbox/WebHookView.vue:73 +#: src/views/toolbox/WebHookView.vue:339 #: src/views/toolbox/WebHookView.vue:380 msgid "Raw Output" msgstr "原始輸出" @@ -5830,7 +7046,8 @@ msgstr "暫停" msgid "Resume" msgstr "恢復" -#: src/views/container/ContainerView.vue:254 src/views/file/ListView.vue:1695 +#: src/views/container/ContainerView.vue:254 +#: src/views/file/ListView.vue:1695 msgid "More" msgstr "更多" @@ -5901,7 +7118,8 @@ msgid "Pull completed" msgstr "拉取完成" #: src/views/container/ImagePullModal.vue:152 -#: src/views/container/ImageView.vue:279 src/views/container/ImageView.vue:325 +#: src/views/container/ImageView.vue:279 +#: src/views/container/ImageView.vue:325 msgid "Pull Image" msgstr "拉取鏡像" @@ -5941,8 +7159,10 @@ msgstr "容器數量" #: src/views/container/ImageView.vue:109 #: src/views/container/NetworkView.vue:125 -#: src/views/container/VolumeView.vue:78 src/views/firewall/ForwardView.vue:93 -#: src/views/firewall/IpRuleView.vue:135 src/views/firewall/RuleView.vue:275 +#: src/views/container/VolumeView.vue:78 +#: src/views/firewall/ForwardView.vue:93 +#: src/views/firewall/IpRuleView.vue:135 +#: src/views/firewall/RuleView.vue:275 #: src/views/task/TaskView.vue:122 msgid "Are you sure you want to delete?" msgstr "您確定要刪除嗎?" @@ -5963,10 +7183,6 @@ msgstr "您確定要刪除所選鏡像嗎?" msgid "docker.io/php:8.3-fpm" msgstr "docker.io/php:8.3-fpm" -#: src/views/container/ImageView.vue:402 -msgid "Authentication" -msgstr "身份驗證" - #: src/views/container/IndexView.vue:22 msgid "Containers" msgstr "容器" @@ -5981,11 +7197,13 @@ msgstr "網路" #: src/views/container/NetworkView.vue:55 #: src/views/container/NetworkView.vue:260 -#: src/views/container/VolumeView.vue:36 src/views/container/VolumeView.vue:206 +#: src/views/container/VolumeView.vue:36 +#: src/views/container/VolumeView.vue:206 msgid "Driver" msgstr "驅動程式" -#: src/views/container/NetworkView.vue:62 src/views/container/VolumeView.vue:43 +#: src/views/container/NetworkView.vue:62 +#: src/views/container/VolumeView.vue:43 #: src/views/website/EditModal.vue:2148 msgid "Scope" msgstr "範圍" @@ -6065,8 +7283,10 @@ msgstr "選項名稱" msgid "Option Value" msgstr "選項值" -#: src/views/container/VolumeView.vue:50 src/views/home/IndexView.vue:818 -#: src/views/toolbox/DiskView.vue:282 src/views/toolbox/DiskView.vue:604 +#: src/views/container/VolumeView.vue:50 +#: src/views/home/IndexView.vue:818 +#: src/views/toolbox/DiskView.vue:282 +#: src/views/toolbox/DiskView.vue:604 msgid "Mount Point" msgstr "掛載點" @@ -6194,12 +7414,12 @@ msgstr "輸入資料庫伺服器備註" #: src/views/database/CreateUserModal.vue:100 #: src/views/database/UpdateUserModal.vue:59 -msgid "" -"If the privilege databases does not exist, it will be created automatically." +msgid "If the privilege databases does not exist, it will be created automatically." msgstr "若授權的資料庫不存在,將自動建立。" #: src/views/database/CreateUserModal.vue:158 -#: src/views/database/UpdateUserModal.vue:72 src/views/database/UserList.vue:81 +#: src/views/database/UpdateUserModal.vue:72 +#: src/views/database/UserList.vue:81 msgid "Privileges" msgstr "權限" @@ -6349,7 +7569,8 @@ msgstr "新鍵名" msgid "Enter new key name" msgstr "輸入新鍵名稱" -#: src/views/database/RedisKeyModal.vue:90 src/views/toolbox/SshView.vue:339 +#: src/views/database/RedisKeyModal.vue:90 +#: src/views/toolbox/SshView.vue:339 msgid "View Key" msgstr "查看密鑰" @@ -6361,12 +7582,6 @@ msgstr "鍵" msgid "Enter key name" msgstr "輸入鍵名稱" -#: src/views/database/RedisKeyModal.vue:109 -#: src/views/toolbox/disk/SmartView.vue:205 -#: src/views/toolbox/disk/SmartView.vue:232 -msgid "Value" -msgstr "值" - #: src/views/database/RedisKeyModal.vue:115 msgid "Enter value" msgstr "輸入值" @@ -6379,11 +7594,13 @@ msgstr "輸入 JSON 值" msgid "Unsupported database type" msgstr "不支援的資料庫類型" -#: src/views/database/ServerList.vue:147 src/views/database/UserList.vue:120 +#: src/views/database/ServerList.vue:147 +#: src/views/database/UserList.vue:120 msgid "Valid" msgstr "有效" -#: src/views/database/ServerList.vue:147 src/views/database/UserList.vue:120 +#: src/views/database/ServerList.vue:147 +#: src/views/database/UserList.vue:120 msgid "Invalid" msgstr "無效" @@ -6392,12 +7609,11 @@ msgid "Confirm Sync" msgstr "確認同步" #: src/views/database/ServerList.vue:188 -msgid "" -"Are you sure you want to synchronize database users (excluding password) to " -"the panel?" +msgid "Are you sure you want to synchronize database users (excluding password) to the panel?" msgstr "您確定要將資料庫使用者(不含密碼)同步到面板嗎?" -#: src/views/database/ServerList.vue:195 src/views/toolbox/SystemView.vue:101 +#: src/views/database/ServerList.vue:195 +#: src/views/toolbox/SystemView.vue:101 msgid "Synchronized successfully" msgstr "同步成功" @@ -6406,9 +7622,7 @@ msgid "Sync" msgstr "同步" #: src/views/database/ServerList.vue:234 -msgid "" -"Built-in servers cannot be deleted. If you need to delete them, please " -"uninstall the corresponding app" +msgid "Built-in servers cannot be deleted. If you need to delete them, please uninstall the corresponding app" msgstr "內建伺服器無法刪除,如需刪除請解除安裝相應的應用" #: src/views/database/ServerList.vue:241 @@ -6431,7 +7645,8 @@ msgstr "未儲存" msgid "Are you sure you want to delete the user?" msgstr "您確定要刪除該使用者嗎?" -#: src/views/environment/DotnetView.vue:13 src/views/environment/GoView.vue:46 +#: src/views/environment/DotnetView.vue:13 +#: src/views/environment/GoView.vue:46 #: src/views/environment/JavaView.vue:13 #: src/views/environment/NodejsView.vue:49 #: src/views/environment/PHPView.vue:131 @@ -6439,7 +7654,8 @@ msgstr "您確定要刪除該使用者嗎?" msgid "Set successfully" msgstr "設定成功" -#: src/views/environment/DotnetView.vue:25 src/views/environment/GoView.vue:64 +#: src/views/environment/DotnetView.vue:25 +#: src/views/environment/GoView.vue:64 #: src/views/environment/JavaView.vue:25 #: src/views/environment/NodejsView.vue:67 #: src/views/environment/PHPView.vue:196 @@ -6448,11 +7664,8 @@ msgid "Set as CLI Default Version" msgstr "設為 CLI 預設版本" #: src/views/environment/DotnetView.vue:30 -msgid "" -".NET is a free, open-source, cross-platform framework for building modern " -"apps and powerful cloud services." -msgstr "" -".NET 是一個免費、開源、跨平台的框架,用於構建現代應用程式和強大的雲端服務。" +msgid ".NET is a free, open-source, cross-platform framework for building modern apps and powerful cloud services." +msgstr ".NET 是一個免費、開源、跨平台的框架,用於構建現代應用程式和強大的雲端服務。" #: src/views/environment/GoView.vue:16 msgid "Official (proxy.golang.org)" @@ -6462,11 +7675,13 @@ msgstr "官方(proxy.golang.org)" msgid "China - Qiniu (goproxy.cn)" msgstr "中國 - 七牛雲(goproxy.cn)" -#: src/views/environment/GoView.vue:19 src/views/environment/PythonView.vue:18 +#: src/views/environment/GoView.vue:19 +#: src/views/environment/PythonView.vue:18 msgid "China - Alibaba (mirrors.aliyun.com)" msgstr "中國 - 阿里巴巴(mirrors.aliyun.com)" -#: src/views/environment/GoView.vue:23 src/views/environment/NodejsView.vue:22 +#: src/views/environment/GoView.vue:23 +#: src/views/environment/NodejsView.vue:22 #: src/views/environment/PythonView.vue:22 msgid "China - Tencent (mirrors.tencent.com)" msgstr "中國 - 騰訊(mirrors.tencent.com)" @@ -6476,9 +7691,7 @@ msgid "Proxy Settings" msgstr "代理設定" #: src/views/environment/GoView.vue:74 -msgid "" -"GOPROXY is used to configure the Go module proxy. Using a domestic mirror " -"can speed up dependency downloads." +msgid "GOPROXY is used to configure the Go module proxy. Using a domestic mirror can speed up dependency downloads." msgstr "GOPROXY 用於配置 Go 模塊代理。使用國內鏡像可以加快依賴項下載速度。" #: src/views/environment/GoView.vue:79 @@ -6490,12 +7703,8 @@ msgid "Select or enter proxy address" msgstr "選擇或輸入代理地址" #: src/views/environment/JavaView.vue:30 -msgid "" -"Amazon Corretto is a no-cost, multiplatform, production-ready distribution " -"of the Open Java Development Kit (OpenJDK)." -msgstr "" -"Amazon Corretto 是一個無成本、多平台、生產就緒的 Open Java Development Kit" -"(OpenJDK)發行版。" +msgid "Amazon Corretto is a no-cost, multiplatform, production-ready distribution of the Open Java Development Kit (OpenJDK)." +msgstr "Amazon Corretto 是一個無成本、多平台、生產就緒的 Open Java Development Kit(OpenJDK)發行版。" #: src/views/environment/NodejsView.vue:16 msgid "Official (registry.npmjs.org)" @@ -6514,9 +7723,7 @@ msgid "Registry Settings" msgstr "映像倉庫設定" #: src/views/environment/NodejsView.vue:77 -msgid "" -"npm registry is used to configure the npm package source. Using a domestic " -"mirror can speed up package downloads." +msgid "npm registry is used to configure the npm package source. Using a domestic mirror can speed up package downloads." msgstr "npm 註冊表用於配置 npm 包源。使用國內鏡像可以加速包下載。" #: src/views/environment/NodejsView.vue:82 @@ -6561,12 +7768,8 @@ msgid "Disabled Functions" msgstr "停用函式" #: src/views/environment/PhpConfigTuneView.vue:283 -msgid "" -"Enter the PHP functions to disable, separated by commas. Common dangerous " -"functions include: exec, shell_exec, system, passthru, proc_open, popen, etc." -msgstr "" -"輸入要停用的 PHP 函式,用逗號分隔。常見的危險函式包括:exec、shell_exec、" -"system、passthru、proc_open、popen 等。" +msgid "Enter the PHP functions to disable, separated by commas. Common dangerous functions include: exec, shell_exec, system, passthru, proc_open, popen, etc." +msgstr "輸入要停用的 PHP 函式,用逗號分隔。常見的危險函式包括:exec、shell_exec、system、passthru、proc_open、popen 等。" #: src/views/environment/PhpConfigTuneView.vue:294 msgid "e.g. exec,shell_exec,system,passthru" @@ -6577,9 +7780,7 @@ msgid "Upload Limits" msgstr "上傳限制" #: src/views/environment/PhpConfigTuneView.vue:314 -msgid "" -"Adjust PHP file upload limits. post_max_size should be greater than " -"upload_max_filesize." +msgid "Adjust PHP file upload limits. post_max_size should be greater than upload_max_filesize." msgstr "調整 PHP 檔案上傳限制。post_max_size 應大於 upload_max_filesize。" #: src/views/environment/PhpConfigTuneView.vue:320 @@ -6607,8 +7808,7 @@ msgid "Timeout Limits" msgstr "超時限制" #: src/views/environment/PhpConfigTuneView.vue:385 -msgid "" -"Adjust PHP script timeout limits. Values are in seconds, -1 means no limit." +msgid "Adjust PHP script timeout limits. Values are in seconds, -1 means no limit." msgstr "調整 PHP 腳本超時限制。值以秒為單位,-1 表示無限制。" #: src/views/environment/PhpConfigTuneView.vue:389 @@ -6633,8 +7833,7 @@ msgid "e.g. 1000" msgstr "例如 1000" #: src/views/environment/PhpConfigTuneView.vue:430 -msgid "" -"Adjust PHP-FPM process manager settings. These settings are in php-fpm.conf." +msgid "Adjust PHP-FPM process manager settings. These settings are in php-fpm.conf." msgstr "調整 PHP-FPM 處理程序管理設定。這些設定位於 php-fpm.conf 中。" #: src/views/environment/PhpConfigTuneView.vue:434 @@ -6662,12 +7861,8 @@ msgid "Max Spare Servers (pm.max_spare_servers)" msgstr "最大閒置處理程序數(pm.max_spare_servers)" #: src/views/environment/PhpConfigTuneView.vue:495 -msgid "" -"Adjust PHP session settings. When using redis or memcached, make sure the " -"corresponding extension is installed and the service is running." -msgstr "" -"調整 PHP 工作階段設定。使用 redis 或 memcached 時,請確保已安裝相應擴充功能且" -"服務正在執行。" +msgid "Adjust PHP session settings. When using redis or memcached, make sure the corresponding extension is installed and the service is running." +msgstr "調整 PHP 工作階段設定。使用 redis 或 memcached 時,請確保已安裝相應擴充功能且服務正在執行。" #: src/views/environment/PhpConfigTuneView.vue:501 msgid "Save Handler (session.save_handler)" @@ -6738,24 +7933,16 @@ msgid "View PHPInfo" msgstr "查看 PHPInfo" #: src/views/environment/PHPView.vue:227 -msgid "" -"This modifies the PHP %{ version } main configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 PHP %{ version } 的主設定檔。如果您不了解每個參數的含義,請不要隨意" -"修改!" +msgid "This modifies the PHP %{ version } main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 PHP %{ version } 的主設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/environment/PHPView.vue:241 msgid "FPM Configuration" msgstr "FPM 配置" #: src/views/environment/PHPView.vue:245 -msgid "" -"This modifies the PHP %{ version } FPM configuration file. If you do not " -"understand the meaning of each parameter, please do not modify it randomly!" -msgstr "" -"這將修改 PHP %{ version } 的 FPM 設定檔。如果您不了解每個參數的含義,請不要隨" -"意修改!" +msgid "This modifies the PHP %{ version } FPM configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgstr "這將修改 PHP %{ version } 的 FPM 設定檔。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/environment/PHPView.vue:282 msgid "Slow Logs" @@ -6782,9 +7969,7 @@ msgid "Mirror Settings" msgstr "鏡像來源設定" #: src/views/environment/PythonView.vue:81 -msgid "" -"pip mirror is used to configure the Python package source. Using a domestic " -"mirror can speed up package downloads." +msgid "pip mirror is used to configure the Python package source. Using a domestic mirror can speed up package downloads." msgstr "pip 鏡像用於配置 Python 包源。使用國內鏡像可以加速包下載。" #: src/views/environment/PythonView.vue:86 @@ -6825,12 +8010,15 @@ msgid "Name cannot be empty" msgstr "名稱不能為空" #: src/views/file/composables/usePaste.ts:96 -#: src/views/file/composables/usePaste.ts:150 src/views/task/TaskView.vue:46 +#: src/views/file/composables/usePaste.ts:150 +#: src/views/task/TaskView.vue:46 msgid "Canceled" msgstr "已取消" -#: src/views/file/composables/usePaste.ts:138 src/views/file/ListView.vue:306 -#: src/views/file/ListView.vue:848 src/views/file/ListView.vue:897 +#: src/views/file/composables/usePaste.ts:138 +#: src/views/file/ListView.vue:306 +#: src/views/file/ListView.vue:848 +#: src/views/file/ListView.vue:897 msgid "Warning" msgstr "警告" @@ -6838,19 +8026,23 @@ msgstr "警告" msgid "There are items with the same name %{ items } Do you want to overwrite?" msgstr "存在同名項目 %{ items } 是否要覆蓋?" -#: src/views/file/composables/usePaste.ts:175 src/views/file/ListView.vue:850 -#: src/views/file/UploadModal.vue:750 src/views/file/UploadModal.vue:777 +#: src/views/file/composables/usePaste.ts:175 +#: src/views/file/ListView.vue:850 +#: src/views/file/UploadModal.vue:750 +#: src/views/file/UploadModal.vue:777 msgid "Overwrite" msgstr "覆蓋" #: src/views/file/CompressModal.vue:52 -msgid "" -"Compress task created successfully, please check the task list for progress" +msgid "Compress task created successfully, please check the task list for progress" msgstr "壓縮任務建立成功,請在任務清單中檢視進度" -#: src/views/file/CompressModal.vue:97 src/views/file/CompressModal.vue:120 -#: src/views/file/ListView.vue:376 src/views/file/ListView.vue:412 -#: src/views/file/ListView.vue:1007 src/views/file/ListView.vue:1660 +#: src/views/file/CompressModal.vue:97 +#: src/views/file/CompressModal.vue:120 +#: src/views/file/ListView.vue:376 +#: src/views/file/ListView.vue:412 +#: src/views/file/ListView.vue:1007 +#: src/views/file/ListView.vue:1660 #: src/views/file/ToolBar.vue:189 msgid "Compress" msgstr "壓縮" @@ -6883,12 +8075,14 @@ msgstr "檔案編輯器" msgid "Drop files to upload" msgstr "拖放檔案以上傳" -#: src/views/file/ListView.vue:262 src/views/file/ListView.vue:429 +#: src/views/file/ListView.vue:262 +#: src/views/file/ListView.vue:429 #: src/views/file/ListView.vue:1030 msgid "Add Protection" msgstr "加入保護" -#: src/views/file/ListView.vue:262 src/views/file/ListView.vue:428 +#: src/views/file/ListView.vue:262 +#: src/views/file/ListView.vue:428 #: src/views/file/ListView.vue:1030 msgid "Remove Protection" msgstr "移除保護" @@ -6898,9 +8092,7 @@ msgid "Add tamper protection for %{ name }?" msgstr "為 %{ name } 加入防竄改保護?" #: src/views/file/ListView.vue:265 -msgid "" -"Remove tamper protection for %{ name }? The matching rule or exclusions will " -"be adjusted accordingly." +msgid "Remove tamper protection for %{ name }? The matching rule or exclusions will be adjusted accordingly." msgstr "移除 %{ name } 的防竄改保護?相符的規則或排除項將相應調整。" #: src/views/file/ListView.vue:273 @@ -6908,49 +8100,56 @@ msgid "Operation successful" msgstr "操作成功" #: src/views/file/ListView.vue:307 -msgid "" -"%{ name } has immutable attribute. The panel will temporarily remove the " -"immutable attribute, perform the operation, and then restore the immutable " -"attribute. Do you want to continue?" -msgstr "" -"%{ name } 具有不可變屬性。面板將暫時移除不可變屬性,執行操作,然後恢復不可變" -"屬性。您要繼續嗎?" +msgid "%{ name } has immutable attribute. The panel will temporarily remove the immutable attribute, perform the operation, and then restore the immutable attribute. Do you want to continue?" +msgstr "%{ name } 具有不可變屬性。面板將暫時移除不可變屬性,執行操作,然後恢復不可變屬性。您要繼續嗎?" -#: src/views/file/ListView.vue:364 src/views/file/ListView.vue:382 -#: src/views/file/ListView.vue:438 src/views/file/ToolBar.vue:184 +#: src/views/file/ListView.vue:364 +#: src/views/file/ListView.vue:382 +#: src/views/file/ListView.vue:438 +#: src/views/file/ToolBar.vue:184 msgid "Paste" msgstr "貼上" -#: src/views/file/ListView.vue:375 src/views/file/ListView.vue:409 -#: src/views/file/ListView.vue:1005 src/views/file/ToolBar.vue:188 +#: src/views/file/ListView.vue:375 +#: src/views/file/ListView.vue:409 +#: src/views/file/ListView.vue:1005 +#: src/views/file/ToolBar.vue:188 msgid "Move" msgstr "移動" -#: src/views/file/ListView.vue:377 src/views/file/ListView.vue:410 -#: src/views/file/ListView.vue:1006 src/views/file/ListView.vue:1454 -#: src/views/file/PermissionModal.vue:146 src/views/file/PropertyModal.vue:42 +#: src/views/file/ListView.vue:377 +#: src/views/file/ListView.vue:410 +#: src/views/file/ListView.vue:1006 +#: src/views/file/ListView.vue:1454 +#: src/views/file/PermissionModal.vue:146 +#: src/views/file/PropertyModal.vue:42 #: src/views/file/ToolBar.vue:190 msgid "Permission" msgstr "權限" -#: src/views/file/ListView.vue:394 src/views/file/ListView.vue:1647 +#: src/views/file/ListView.vue:394 +#: src/views/file/ListView.vue:1647 msgid "Open" msgstr "開啟" -#: src/views/file/ListView.vue:396 src/views/file/ListView.vue:1666 +#: src/views/file/ListView.vue:396 +#: src/views/file/ListView.vue:1666 msgid "Preview" msgstr "預覽" -#: src/views/file/ListView.vue:398 src/views/file/ListView.vue:1012 +#: src/views/file/ListView.vue:398 +#: src/views/file/ListView.vue:1012 #: src/views/file/ListView.vue:1769 msgid "Uncompress" msgstr "解壓縮" -#: src/views/file/ListView.vue:416 src/views/file/ListView.vue:1017 +#: src/views/file/ListView.vue:416 +#: src/views/file/ListView.vue:1017 msgid "Share" msgstr "分享" -#: src/views/file/ListView.vue:433 src/views/file/ListView.vue:1035 +#: src/views/file/ListView.vue:433 +#: src/views/file/ListView.vue:1035 #: src/views/file/PropertyModal.vue:11 msgid "Properties" msgstr "屬性" @@ -6971,7 +8170,8 @@ msgstr "某些檔案是不可變的,無法刪除" msgid "Are you sure you want to delete %{count} items?" msgstr "您確定要刪除 %{count} 項嗎?" -#: src/views/file/ListView.vue:908 src/views/file/PathInput.vue:34 +#: src/views/file/ListView.vue:908 +#: src/views/file/PathInput.vue:34 msgid "Path copied to clipboard" msgstr "路徑已複製到剪貼板" @@ -6980,8 +8180,7 @@ msgid "Copy Path" msgstr "複製路徑" #: src/views/file/ListView.vue:1291 -msgid "" -"Uncompress task created successfully, please check the task list for progress" +msgid "Uncompress task created successfully, please check the task list for progress" msgstr "解壓任務建立成功,請在任務清單中檢視進度" #: src/views/file/ListView.vue:1706 @@ -7008,7 +8207,8 @@ msgstr "解壓 - %{ file }" msgid "Uncompress to" msgstr "解壓到" -#: src/views/file/ListView.vue:1779 src/views/file/ToolBar.vue:237 +#: src/views/file/ListView.vue:1779 +#: src/views/file/ToolBar.vue:237 msgid "Terminal - %{ path }" msgstr "終端 - %{ path }" @@ -7016,7 +8216,8 @@ msgstr "終端 - %{ path }" msgid "Failed to copy path" msgstr "無法複製路徑" -#: src/views/file/PathInput.vue:109 src/views/home/UpdateView.vue:176 +#: src/views/file/PathInput.vue:109 +#: src/views/home/UpdateView.vue:176 #: src/views/toolbox/MigrationView.vue:589 msgid "Back" msgstr "返回" @@ -7059,22 +8260,27 @@ msgid "Modify permissions - %{ path }" msgstr "修改權限 - %{ path }" #: src/views/file/PermissionModal.vue:119 -#: src/views/file/PermissionModal.vue:149 src/views/file/PropertyModal.vue:45 +#: src/views/file/PermissionModal.vue:149 +#: src/views/file/PropertyModal.vue:45 msgid "Owner" msgstr "擁有者" #: src/views/file/PermissionModal.vue:121 #: src/views/file/PermissionModal.vue:130 -#: src/views/file/PermissionModal.vue:139 src/views/home/IndexView.vue:212 -#: src/views/home/IndexView.vue:228 src/views/home/IndexView.vue:1012 +#: src/views/file/PermissionModal.vue:139 +#: src/views/home/IndexView.vue:212 +#: src/views/home/IndexView.vue:228 +#: src/views/home/IndexView.vue:1012 #: src/views/monitor/SystemView.vue:627 msgid "Read" msgstr "讀取" #: src/views/file/PermissionModal.vue:122 #: src/views/file/PermissionModal.vue:131 -#: src/views/file/PermissionModal.vue:140 src/views/home/IndexView.vue:212 -#: src/views/home/IndexView.vue:252 src/views/home/IndexView.vue:1013 +#: src/views/file/PermissionModal.vue:140 +#: src/views/home/IndexView.vue:212 +#: src/views/home/IndexView.vue:252 +#: src/views/home/IndexView.vue:1013 #: src/views/monitor/SystemView.vue:636 msgid "Write" msgstr "寫入" @@ -7133,7 +8339,8 @@ msgstr "30 天" msgid "Share link created successfully" msgstr "分享連結建立成功" -#: src/views/file/ShareModal.vue:55 src/views/file/ShareModal.vue:64 +#: src/views/file/ShareModal.vue:55 +#: src/views/file/ShareModal.vue:64 msgid "Link copied to clipboard" msgstr "連結已複製到剪貼簿" @@ -7177,9 +8384,12 @@ msgstr "有效期限" msgid "Download Limit" msgstr "下載次數限制" -#: src/views/file/ShareModal.vue:162 src/views/website/EditModal.vue:1564 -#: src/views/website/EditModal.vue:1579 src/views/website/EditModal.vue:2001 -#: src/views/website/EditModal.vue:2014 src/views/website/EditModal.vue:2027 +#: src/views/file/ShareModal.vue:162 +#: src/views/website/EditModal.vue:1564 +#: src/views/website/EditModal.vue:1579 +#: src/views/website/EditModal.vue:2001 +#: src/views/website/EditModal.vue:2014 +#: src/views/website/EditModal.vue:2027 msgid "Unlimited" msgstr "無限制" @@ -7188,8 +8398,7 @@ msgid "Create Share Link" msgstr "建立分享連結" #: src/views/file/ToolBar.vue:57 -msgid "" -"Download task created successfully, please check the task list for progress" +msgid "Download task created successfully, please check the task list for progress" msgstr "下載任務建立成功,請在任務清單中檢視進度" #: src/views/file/ToolBar.vue:67 @@ -7204,7 +8413,8 @@ msgstr "請選擇要移動的檔案/資料夾" msgid "Sort" msgstr "排序" -#: src/views/file/ToolBar.vue:155 src/views/file/ToolBar.vue:209 +#: src/views/file/ToolBar.vue:155 +#: src/views/file/ToolBar.vue:209 msgid "Remote Download" msgstr "遠程下載" @@ -7240,18 +8450,19 @@ msgstr "無效的新名稱「%{name}」" msgid "Duplicate new name \"%{name}\"" msgstr "重複的新名稱「%{name}」" -#: src/views/file/UploadModal.vue:471 src/views/file/UploadModal.vue:591 +#: src/views/file/UploadModal.vue:471 +#: src/views/file/UploadModal.vue:591 msgid "Upload %{ fileName } successful" msgstr "上傳 %{ fileName } 成功" -#: src/views/file/UploadModal.vue:499 src/views/file/UploadModal.vue:634 +#: src/views/file/UploadModal.vue:499 +#: src/views/file/UploadModal.vue:634 msgid "Confirm Upload" msgstr "確認上傳" -#: src/views/file/UploadModal.vue:500 src/views/file/UploadModal.vue:635 -msgid "" -"You are about to upload %{count} files. This may take a while. Do you want " -"to continue?" +#: src/views/file/UploadModal.vue:500 +#: src/views/file/UploadModal.vue:635 +msgid "You are about to upload %{count} files. This may take a while. Do you want to continue?" msgstr "您即將上傳 %{count} 個檔案。這可能需要一些時間。是否繼續?" #: src/views/file/UploadModal.vue:683 @@ -7263,8 +8474,7 @@ msgid "Preparing..." msgstr "準備中……" #: src/views/file/UploadModal.vue:713 -msgid "" -"For large files, it is recommended to use SFTP and other methods to upload" +msgid "For large files, it is recommended to use SFTP and other methods to upload" msgstr "對於大檔案,建議使用 SFTP 等方法上傳" #: src/views/file/UploadModal.vue:725 @@ -7272,16 +8482,15 @@ msgid "Files already exist" msgstr "檔案已存在" #: src/views/file/UploadModal.vue:736 -msgid "" -"The following files already exist in the target directory. Choose an action " -"for each." +msgid "The following files already exist in the target directory. Choose an action for each." msgstr "目標目錄中已經存在以下檔案。請為每個檔案選擇一個動作。" #: src/views/file/UploadModal.vue:742 msgid "Apply to all:" msgstr "應用於所有:" -#: src/views/file/UploadModal.vue:744 src/views/file/UploadModal.vue:775 +#: src/views/file/UploadModal.vue:744 +#: src/views/file/UploadModal.vue:775 msgid "Skip" msgstr "跳過" @@ -7296,8 +8505,10 @@ msgstr "建立轉發" #: src/views/firewall/CreateForwardModal.vue:64 #: src/views/firewall/CreateIpModal.vue:104 -#: src/views/firewall/CreateModal.vue:144 src/views/firewall/ForwardView.vue:16 -#: src/views/firewall/IpRuleView.vue:16 src/views/firewall/RuleView.vue:56 +#: src/views/firewall/CreateModal.vue:144 +#: src/views/firewall/ForwardView.vue:16 +#: src/views/firewall/IpRuleView.vue:16 +#: src/views/firewall/RuleView.vue:56 msgid "Transport Protocol" msgstr "傳輸協議" @@ -7316,25 +8527,29 @@ msgid "Target Port" msgstr "目標連接埠" #: src/views/firewall/CreateIpModal.vue:39 -#: src/views/firewall/CreateModal.vue:42 src/views/firewall/IpRuleView.vue:70 +#: src/views/firewall/CreateModal.vue:42 +#: src/views/firewall/IpRuleView.vue:70 #: src/views/firewall/RuleView.vue:15 msgid "Accept" msgstr "接受" #: src/views/firewall/CreateIpModal.vue:43 -#: src/views/firewall/CreateModal.vue:46 src/views/firewall/IpRuleView.vue:72 +#: src/views/firewall/CreateModal.vue:46 +#: src/views/firewall/IpRuleView.vue:72 #: src/views/firewall/RuleView.vue:16 msgid "Drop" msgstr "丟棄" #: src/views/firewall/CreateIpModal.vue:47 -#: src/views/firewall/CreateModal.vue:50 src/views/firewall/IpRuleView.vue:74 +#: src/views/firewall/CreateModal.vue:50 +#: src/views/firewall/IpRuleView.vue:74 #: src/views/firewall/RuleView.vue:17 msgid "Reject" msgstr "拒絕" #: src/views/firewall/CreateIpModal.vue:54 -#: src/views/firewall/CreateModal.vue:57 src/views/firewall/IpRuleView.vue:99 +#: src/views/firewall/CreateModal.vue:57 +#: src/views/firewall/IpRuleView.vue:99 #: src/views/firewall/RuleView.vue:236 #: src/views/website/stats/OverviewTab.vue:390 #: src/views/website/stats/OverviewTab.vue:424 @@ -7344,7 +8559,8 @@ msgid "Inbound" msgstr "入站" #: src/views/firewall/CreateIpModal.vue:58 -#: src/views/firewall/CreateModal.vue:61 src/views/firewall/IpRuleView.vue:101 +#: src/views/firewall/CreateModal.vue:61 +#: src/views/firewall/IpRuleView.vue:101 #: src/views/firewall/RuleView.vue:238 #: src/views/website/stats/OverviewTab.vue:388 #: src/views/website/stats/OverviewTab.vue:389 @@ -7360,13 +8576,15 @@ msgid "%{ address } created successfully" msgstr "%{ address } 建立成功" #: src/views/firewall/CreateIpModal.vue:96 -#: src/views/firewall/CreateModal.vue:136 src/views/firewall/IpRuleView.vue:195 +#: src/views/firewall/CreateModal.vue:136 +#: src/views/firewall/IpRuleView.vue:195 #: src/views/firewall/RuleView.vue:352 msgid "Create Rule" msgstr "建立規則" #: src/views/firewall/CreateIpModal.vue:107 -#: src/views/firewall/CreateModal.vue:147 src/views/firewall/IpRuleView.vue:33 +#: src/views/firewall/CreateModal.vue:147 +#: src/views/firewall/IpRuleView.vue:33 #: src/views/firewall/RuleView.vue:73 msgid "Network Protocol" msgstr "網路協議" @@ -7381,13 +8599,15 @@ msgid "IP or IP range: 172.16.0.1 or 172.16.0.0/16" msgstr "IP 或 IP 範圍:172.16.0.1 或 172.16.0.0/16" #: src/views/firewall/CreateIpModal.vue:117 -#: src/views/firewall/CreateModal.vue:197 src/views/firewall/IpRuleView.vue:50 +#: src/views/firewall/CreateModal.vue:197 +#: src/views/firewall/IpRuleView.vue:50 #: src/views/firewall/RuleView.vue:178 msgid "Strategy" msgstr "策略" #: src/views/firewall/CreateIpModal.vue:120 -#: src/views/firewall/CreateModal.vue:200 src/views/firewall/IpRuleView.vue:86 +#: src/views/firewall/CreateModal.vue:200 +#: src/views/firewall/IpRuleView.vue:86 #: src/views/firewall/RuleView.vue:223 msgid "Direction" msgstr "方向" @@ -7412,18 +8632,23 @@ msgstr "起始連接埠" msgid "End Port" msgstr "結束連接埠" -#: src/views/firewall/CreateModal.vue:190 src/views/firewall/IpRuleView.vue:111 -#: src/views/firewall/RuleView.vue:248 src/views/monitor/AlertRuleModal.vue:148 -#: src/views/toolbox/MigrationView.vue:159 src/views/website/EditModal.vue:1869 +#: src/views/firewall/CreateModal.vue:190 +#: src/views/firewall/IpRuleView.vue:111 +#: src/views/firewall/RuleView.vue:248 +#: src/views/monitor/AlertRuleModal.vue:148 +#: src/views/toolbox/MigrationView.vue:159 +#: src/views/website/EditModal.vue:1869 msgid "Target" msgstr "目標" -#: src/views/firewall/ForwardView.vue:125 src/views/firewall/IpRuleView.vue:167 +#: src/views/firewall/ForwardView.vue:125 +#: src/views/firewall/IpRuleView.vue:167 #: src/views/firewall/RuleView.vue:328 msgid "Please select rules to delete" msgstr "請選擇要刪除的規則" -#: src/views/firewall/ForwardView.vue:157 src/views/firewall/IpRuleView.vue:199 +#: src/views/firewall/ForwardView.vue:157 +#: src/views/firewall/IpRuleView.vue:199 #: src/views/firewall/RuleView.vue:356 msgid "Are you sure you want to delete the selected rules?" msgstr "您確定要刪除所選規則嗎?" @@ -7440,7 +8665,8 @@ msgstr "IP 規則" msgid "Port Forwarding" msgstr "連接埠轉發" -#: src/views/firewall/IndexView.vue:26 src/views/firewall/SettingView.vue:96 +#: src/views/firewall/IndexView.vue:26 +#: src/views/firewall/SettingView.vue:96 msgid "Scan Awareness" msgstr "掃描感知" @@ -7448,7 +8674,8 @@ msgstr "掃描感知" msgid "Tamper Protection" msgstr "防竄改" -#: src/views/firewall/IpRuleView.vue:76 src/views/firewall/RuleView.vue:213 +#: src/views/firewall/IpRuleView.vue:76 +#: src/views/firewall/RuleView.vue:213 msgid "Mark" msgstr "標記" @@ -7456,7 +8683,8 @@ msgstr "標記" msgid "Not Used" msgstr "未使用" -#: src/views/firewall/RuleView.vue:129 src/views/toolbox/PanelView.vue:154 +#: src/views/firewall/RuleView.vue:129 +#: src/views/toolbox/PanelView.vue:154 msgid "In Use" msgstr "使用中" @@ -7476,14 +8704,19 @@ msgstr "匯出" msgid "Import" msgstr "匯入" -#: src/views/firewall/ScanView.vue:193 src/views/firewall/ScanView.vue:211 -#: src/views/firewall/ScanView.vue:223 src/views/firewall/ScanView.vue:288 -#: src/views/firewall/ScanView.vue:302 src/views/firewall/ScanView.vue:318 +#: src/views/firewall/ScanView.vue:193 +#: src/views/firewall/ScanView.vue:211 +#: src/views/firewall/ScanView.vue:223 +#: src/views/firewall/ScanView.vue:288 +#: src/views/firewall/ScanView.vue:302 +#: src/views/firewall/ScanView.vue:318 msgid "Scan Count" msgstr "掃描次數" -#: src/views/firewall/ScanView.vue:193 src/views/firewall/ScanView.vue:216 -#: src/views/firewall/ScanView.vue:229 src/views/firewall/ScanView.vue:440 +#: src/views/firewall/ScanView.vue:193 +#: src/views/firewall/ScanView.vue:216 +#: src/views/firewall/ScanView.vue:229 +#: src/views/firewall/ScanView.vue:440 msgid "Source IPs" msgstr "來源 IP 數" @@ -7506,13 +8739,16 @@ msgctxt "firewall" msgid "Block" msgstr "阻止" -#: src/views/firewall/ScanView.vue:279 src/views/firewall/ScanView.vue:307 +#: src/views/firewall/ScanView.vue:279 +#: src/views/firewall/ScanView.vue:307 #: src/views/log/SSHLog.vue:78 msgid "Source IP" msgstr "來源 IP" -#: src/views/firewall/ScanView.vue:281 src/views/firewall/ScanView.vue:309 -#: src/views/firewall/ScanView.vue:390 src/views/website/stats/IPsTab.vue:122 +#: src/views/firewall/ScanView.vue:281 +#: src/views/firewall/ScanView.vue:309 +#: src/views/firewall/ScanView.vue:390 +#: src/views/website/stats/IPsTab.vue:122 msgid "Location" msgstr "位置" @@ -7520,7 +8756,8 @@ msgstr "位置" msgid "Port Count" msgstr "連接埠數" -#: src/views/firewall/ScanView.vue:291 src/views/firewall/ScanView.vue:326 +#: src/views/firewall/ScanView.vue:291 +#: src/views/firewall/ScanView.vue:326 msgid "Last Seen" msgstr "最後記錄" @@ -7537,11 +8774,11 @@ msgid "Scan Awareness Disabled" msgstr "掃描感知已禁用" #: src/views/firewall/ScanView.vue:348 -msgid "" -"Enable scan awareness in the Settings tab to start detecting port scans." +msgid "Enable scan awareness in the Settings tab to start detecting port scans." msgstr "在設定分頁中啟用掃描感知以開始偵測連接埠掃描。" -#: src/views/firewall/ScanView.vue:356 src/views/website/StatsView.vue:194 +#: src/views/firewall/ScanView.vue:356 +#: src/views/website/StatsView.vue:194 msgid "Overview" msgstr "概覽" @@ -7557,7 +8794,8 @@ msgstr "搜尋 IP" msgid "Are you sure you want to clear all scan data?" msgstr "您確定要清除所有掃描資料嗎?" -#: src/views/firewall/ScanView.vue:403 src/views/website/StatsView.vue:185 +#: src/views/firewall/ScanView.vue:403 +#: src/views/website/StatsView.vue:185 msgid "Clear Data" msgstr "清除資料" @@ -7582,14 +8820,11 @@ msgid "Top 10 Scanned Ports" msgstr "掃描連接埠前 10" #: src/views/firewall/ScanView.vue:489 -msgid "" -"Scan awareness runs before the system firewall, so it is normal for blocked " -"IPs to continue generating scan records." -msgstr "" -"掃描感知執行在系統防火牆之前,因此被拉黑的 IP 仍繼續產生掃描記錄屬於正常現" -"象。" +msgid "Scan awareness runs before the system firewall, so it is normal for blocked IPs to continue generating scan records." +msgstr "掃描感知執行在系統防火牆之前,因此被拉黑的 IP 仍繼續產生掃描記錄屬於正常現象。" -#: src/views/firewall/SettingView.vue:22 src/views/firewall/SettingView.vue:28 +#: src/views/firewall/SettingView.vue:22 +#: src/views/firewall/SettingView.vue:28 #: src/views/firewall/SettingView.vue:79 msgid "Settings saved successfully" msgstr "設定儲存成功" @@ -7650,17 +8885,22 @@ msgstr "執行正常" msgid "Running smoothly" msgstr "執行流暢" -#: src/views/home/IndexView.vue:188 src/views/home/IndexView.vue:968 -#: src/views/home/IndexView.vue:988 src/views/toolbox/BenchmarkView.vue:204 -#: src/views/toolbox/DiskView.vue:758 src/views/toolbox/IndexView.vue:31 +#: src/views/home/IndexView.vue:188 +#: src/views/home/IndexView.vue:968 +#: src/views/home/IndexView.vue:988 +#: src/views/toolbox/BenchmarkView.vue:204 +#: src/views/toolbox/DiskView.vue:758 +#: src/views/toolbox/IndexView.vue:31 msgid "Disk" msgstr "磁碟" -#: src/views/home/IndexView.vue:211 src/views/home/IndexView.vue:228 +#: src/views/home/IndexView.vue:211 +#: src/views/home/IndexView.vue:228 msgid "Send" msgstr "發送" -#: src/views/home/IndexView.vue:211 src/views/home/IndexView.vue:252 +#: src/views/home/IndexView.vue:211 +#: src/views/home/IndexView.vue:252 msgid "Receive" msgstr "接收" @@ -7668,20 +8908,26 @@ msgstr "接收" msgid "Unit %{unit}" msgstr "單位 %{unit}" -#: src/views/home/IndexView.vue:234 src/views/home/IndexView.vue:258 -#: src/views/monitor/SystemView.vue:421 src/views/monitor/SystemView.vue:490 +#: src/views/home/IndexView.vue:234 +#: src/views/home/IndexView.vue:258 +#: src/views/monitor/SystemView.vue:421 +#: src/views/monitor/SystemView.vue:490 #: src/views/monitor/SystemView.vue:552 msgid "Maximum" msgstr "最大值" -#: src/views/home/IndexView.vue:235 src/views/home/IndexView.vue:259 -#: src/views/monitor/SystemView.vue:422 src/views/monitor/SystemView.vue:491 +#: src/views/home/IndexView.vue:235 +#: src/views/home/IndexView.vue:259 +#: src/views/monitor/SystemView.vue:422 +#: src/views/monitor/SystemView.vue:491 #: src/views/monitor/SystemView.vue:553 msgid "Minimum" msgstr "最小值" -#: src/views/home/IndexView.vue:239 src/views/home/IndexView.vue:263 -#: src/views/monitor/SystemView.vue:426 src/views/monitor/SystemView.vue:495 +#: src/views/home/IndexView.vue:239 +#: src/views/home/IndexView.vue:263 +#: src/views/monitor/SystemView.vue:426 +#: src/views/monitor/SystemView.vue:495 #: src/views/monitor/SystemView.vue:557 msgid "Average" msgstr "平均值" @@ -7702,7 +8948,8 @@ msgstr "伺服器重新啟動中……" msgid "Restart Panel" msgstr "重新啟動面板" -#: src/views/home/IndexView.vue:394 src/views/home/IndexView.vue:1037 +#: src/views/home/IndexView.vue:394 +#: src/views/home/IndexView.vue:1037 msgid "Restart Server" msgstr "重啟伺服器" @@ -7711,24 +8958,15 @@ msgid "Current version is the latest" msgstr "當前版本是最新版本" #: src/views/home/IndexView.vue:513 -msgid "" -"Your operating system %{ os_name } has reached its end-of-life. Please " -"consider upgrading to a supported version to ensure optimal performance and " -"security." -msgstr "" -"您的作業系統 %{ os_name } 已終止支援。請考慮升級到受支援的版本,以確保最佳的" -"效能與安全性。" +msgid "Your operating system %{ os_name } has reached its end-of-life. Please consider upgrading to a supported version to ensure optimal performance and security." +msgstr "您的作業系統 %{ os_name } 已終止支援。請考慮升級到受支援的版本,以確保最佳的效能與安全性。" #: src/views/home/IndexView.vue:524 -msgid "" -"Your operating system %{ os_name } is not officially supported. Some " -"features may not work as expected. Please consider using a supported " -"operating system for the best experience." -msgstr "" -"您的作業系統 %{ os_name } 不受官方支援。某些功能可能無法如預期運作。請考慮使" -"用受支援的作業系統以獲得最佳體驗。" +msgid "Your operating system %{ os_name } is not officially supported. Some features may not work as expected. Please consider using a supported operating system for the best experience." +msgstr "您的作業系統 %{ os_name } 不受官方支援。某些功能可能無法如預期運作。請考慮使用受支援的作業系統以獲得最佳體驗。" -#: src/views/home/IndexView.vue:555 src/views/task/IndexView.vue:25 +#: src/views/home/IndexView.vue:555 +#: src/views/task/IndexView.vue:25 msgid "Scheduled Tasks" msgstr "計劃任務" @@ -7756,7 +8994,8 @@ msgstr "最近 15 分鐘" msgid "cores" msgstr "核心" -#: src/views/home/IndexView.vue:629 src/views/toolbox/disk/RaidView.vue:111 +#: src/views/home/IndexView.vue:629 +#: src/views/toolbox/disk/RaidView.vue:111 #: src/views/toolbox/disk/RaidView.vue:142 #: src/views/toolbox/disk/SmartView.vue:104 msgid "Model" @@ -7790,7 +9029,8 @@ msgstr "已用物理記憶體" msgid "Physical Memory Available" msgstr "可用實體記憶體" -#: src/views/home/IndexView.vue:721 src/views/toolbox/DiskView.vue:218 +#: src/views/home/IndexView.vue:721 +#: src/views/toolbox/DiskView.vue:218 msgid "Free" msgstr "空閒" @@ -7798,7 +9038,8 @@ msgstr "空閒" msgid "Active" msgstr "活躍" -#: src/views/home/IndexView.vue:727 src/views/project/ListView.vue:76 +#: src/views/home/IndexView.vue:727 +#: src/views/project/ListView.vue:76 msgid "Inactive" msgstr "非活躍" @@ -7858,7 +9099,8 @@ msgstr "您尚未設定任何要在此處顯示的應用!" msgid "Environment Information" msgstr "環境資訊" -#: src/views/home/IndexView.vue:901 src/views/toolbox/SystemView.vue:178 +#: src/views/home/IndexView.vue:901 +#: src/views/toolbox/SystemView.vue:178 msgid "System Hostname" msgstr "系統主機名" @@ -7919,9 +9161,7 @@ msgid "Read/Write Latency" msgstr "讀/寫延遲" #: src/views/home/IndexView.vue:1039 -msgid "" -"Are you sure you want to restart the server? This will disconnect all " -"connections." +msgid "Are you sure you want to restart the server? This will disconnect all connections." msgstr "您確定要重新啟動伺服器嗎?這將斷開所有連接。" #: src/views/home/UpdateView.vue:117 @@ -7949,8 +9189,7 @@ msgid "Panel is restarting, please wait..." msgstr "正在重新啟動面板,請稍候……" #: src/views/home/UpdateView.vue:164 -msgid "" -"Update may have failed, please check the panel logs and refresh manually." +msgid "Update may have failed, please check the panel logs and refresh manually." msgstr "更新可能失敗,請檢查面板日誌並手動重新整理。" #: src/views/home/UpdateView.vue:170 @@ -7965,7 +9204,8 @@ msgstr "有新版本可用" msgid "Current" msgstr "當前" -#: src/views/home/UpdateView.vue:201 src/views/home/UpdateView.vue:223 +#: src/views/home/UpdateView.vue:201 +#: src/views/home/UpdateView.vue:223 msgid "Latest" msgstr "最新" @@ -7977,23 +9217,31 @@ msgstr "立即更新" msgid "Changelog" msgstr "變更日誌" -#: src/views/log/DatabaseLog.vue:30 src/views/log/HttpLog.vue:30 -#: src/views/log/OperationLog.vue:33 src/views/monitor/SystemView.vue:697 -#: src/views/monitor/SystemView.vue:751 src/views/monitor/SystemView.vue:803 -#: src/views/monitor/SystemView.vue:859 src/views/monitor/SystemView.vue:926 +#: src/views/log/DatabaseLog.vue:30 +#: src/views/log/HttpLog.vue:30 +#: src/views/log/OperationLog.vue:33 +#: src/views/monitor/SystemView.vue:697 +#: src/views/monitor/SystemView.vue:751 +#: src/views/monitor/SystemView.vue:803 +#: src/views/monitor/SystemView.vue:859 +#: src/views/monitor/SystemView.vue:926 #: src/views/website/StatsView.vue:138 msgid "Today" msgstr "今天" -#: src/views/log/DatabaseLog.vue:48 src/views/log/HttpLog.vue:56 -#: src/views/log/OperationLog.vue:51 src/views/log/SSHLog.vue:58 -#: src/views/monitor/AlertView.vue:145 src/views/tamper/TamperView.vue:191 +#: src/views/log/DatabaseLog.vue:48 +#: src/views/log/HttpLog.vue:56 +#: src/views/log/OperationLog.vue:51 +#: src/views/log/SSHLog.vue:58 +#: src/views/monitor/AlertView.vue:145 +#: src/views/tamper/TamperView.vue:191 #: src/views/toolbox/SystemView.vue:197 #: src/views/website/stats/ErrorsTab.vue:87 msgid "Time" msgstr "時間" -#: src/views/log/DatabaseLog.vue:57 src/views/log/OperationLog.vue:60 +#: src/views/log/DatabaseLog.vue:57 +#: src/views/log/OperationLog.vue:60 msgid "Level" msgstr "級別" @@ -8001,7 +9249,8 @@ msgstr "級別" msgid "Query" msgstr "查詢" -#: src/views/log/DatabaseLog.vue:81 src/views/log/HttpLog.vue:107 +#: src/views/log/DatabaseLog.vue:81 +#: src/views/log/HttpLog.vue:107 #: src/views/toolbox/MigrationView.vue:222 msgid "Duration" msgstr "持續時間" @@ -8010,17 +9259,21 @@ msgstr "持續時間" msgid "Rows" msgstr "行" -#: src/views/log/DatabaseLog.vue:112 src/views/log/HttpLog.vue:141 +#: src/views/log/DatabaseLog.vue:112 +#: src/views/log/HttpLog.vue:141 #: src/views/log/OperationLog.vue:164 msgid "Date" msgstr "日期" -#: src/views/log/DatabaseLog.vue:119 src/views/log/HttpLog.vue:148 -#: src/views/log/OperationLog.vue:171 src/views/log/SSHLog.vue:102 +#: src/views/log/DatabaseLog.vue:119 +#: src/views/log/HttpLog.vue:148 +#: src/views/log/OperationLog.vue:171 +#: src/views/log/SSHLog.vue:102 msgid "Show entries" msgstr "顯示條目" -#: src/views/log/HttpLog.vue:65 src/views/website/stats/ErrorsTab.vue:94 +#: src/views/log/HttpLog.vue:65 +#: src/views/website/stats/ErrorsTab.vue:94 msgid "Method" msgstr "方法" @@ -8048,8 +9301,10 @@ msgstr "SSH 日誌" msgid "Operator" msgstr "操作員" -#: src/views/log/OperationLog.vue:87 src/views/monitor/IndexView.vue:20 -#: src/views/toolbox/IndexView.vue:29 src/views/toolbox/PanelView.vue:129 +#: src/views/log/OperationLog.vue:87 +#: src/views/monitor/IndexView.vue:20 +#: src/views/toolbox/IndexView.vue:29 +#: src/views/toolbox/PanelView.vue:129 #: src/views/toolbox/PanelView.vue:148 msgid "System" msgstr "系統" @@ -8070,8 +9325,10 @@ msgstr "%{count} 個欄位" msgid "Accepted" msgstr "已接受" -#: src/views/log/SSHLog.vue:46 src/views/project/ListView.vue:74 -#: src/views/task/TaskView.vue:44 src/views/toolbox/MigrationView.vue:86 +#: src/views/log/SSHLog.vue:46 +#: src/views/project/ListView.vue:74 +#: src/views/task/TaskView.vue:44 +#: src/views/toolbox/MigrationView.vue:86 msgid "Failed" msgstr "失敗" @@ -8100,8 +9357,7 @@ msgid "Please enter captcha code" msgstr "請輸入驗證碼" #: src/views/login/IndexView.vue:153 -msgid "" -"Failed to get encryption public key, please refresh the page and try again" +msgid "Failed to get encryption public key, please refresh the page and try again" msgstr "取得加密公鑰失敗,請重新整理頁面後重試" #: src/views/login/IndexView.vue:238 @@ -8136,7 +9392,8 @@ msgstr "使用通行金鑰登入" msgid "Please enter the target" msgstr "請輸入目標" -#: src/views/monitor/AlertRuleModal.vue:129 src/views/tamper/RuleModal.vue:89 +#: src/views/monitor/AlertRuleModal.vue:129 +#: src/views/tamper/RuleModal.vue:89 msgid "Edit Rule" msgstr "編輯規則" @@ -8144,16 +9401,19 @@ msgstr "編輯規則" msgid "Rule name" msgstr "規則名稱" -#: src/views/monitor/AlertRuleModal.vue:139 src/views/monitor/AlertView.vue:55 +#: src/views/monitor/AlertRuleModal.vue:139 +#: src/views/monitor/AlertView.vue:55 #: src/views/monitor/AlertView.vue:152 msgid "Metric" msgstr "指標" -#: src/views/monitor/AlertRuleModal.vue:153 src/views/monitor/AlertView.vue:64 +#: src/views/monitor/AlertRuleModal.vue:153 +#: src/views/monitor/AlertView.vue:64 msgid "Condition" msgstr "條件" -#: src/views/monitor/AlertRuleModal.vue:161 src/views/monitor/AlertView.vue:70 +#: src/views/monitor/AlertRuleModal.vue:161 +#: src/views/monitor/AlertView.vue:70 msgid "Trigger After" msgstr "連續滿足" @@ -8161,17 +9421,22 @@ msgstr "連續滿足" msgid "consecutive checks" msgstr "次檢查後觸發" -#: src/views/monitor/AlertRuleModal.vue:166 src/views/monitor/AlertView.vue:76 +#: src/views/monitor/AlertRuleModal.vue:166 +#: src/views/monitor/AlertView.vue:76 msgid "Silence Period" msgstr "靜默期" -#: src/views/monitor/AlertRuleModal.vue:168 src/views/monitor/AlertView.vue:79 -#: src/views/monitor/SettingView.vue:210 src/views/setting/SettingSafe.vue:45 +#: src/views/monitor/AlertRuleModal.vue:168 +#: src/views/monitor/AlertView.vue:79 +#: src/views/monitor/SettingView.vue:210 +#: src/views/setting/SettingSafe.vue:45 msgid "minutes" msgstr "分鐘" -#: src/views/monitor/AlertRuleModal.vue:171 src/views/monitor/AlertView.vue:82 -#: src/views/monitor/SettingView.vue:236 src/views/monitor/SettingView.vue:276 +#: src/views/monitor/AlertRuleModal.vue:171 +#: src/views/monitor/AlertView.vue:82 +#: src/views/monitor/SettingView.vue:236 +#: src/views/monitor/SettingView.vue:276 msgid "Notify Channels" msgstr "通知渠道" @@ -8179,24 +9444,12 @@ msgstr "通知渠道" msgid "Record only when empty" msgstr "留空則僅記錄不通知" -#: src/views/monitor/AlertRuleModal.vue:180 src/views/monitor/AlertView.vue:98 -#: src/views/monitor/ChannelModal.vue:142 src/views/monitor/SettingView.vue:121 -#: src/views/tamper/RuleModal.vue:121 src/views/tamper/TamperView.vue:136 -#: src/views/task/CronView.vue:76 src/views/toolbox/WebHookView.vue:91 -#: src/views/toolbox/WebHookView.vue:386 -msgid "Enabled" -msgstr "已啟用" - #: src/views/monitor/AlertRuleModal.vue:186 -msgid "" -"Metrics are checked every minute. The alert fires only after the condition " -"holds for the configured consecutive checks, and is not repeated within the " -"silence period." -msgstr "" -"指標每分鐘檢查一次。條件連續滿足設定的次數後才會觸發警示,靜默期內不重複通" -"知。" +msgid "Metrics are checked every minute. The alert fires only after the condition holds for the configured consecutive checks, and is not repeated within the silence period." +msgstr "指標每分鐘檢查一次。條件連續滿足設定的次數後才會觸發警示,靜默期內不重複通知。" -#: src/views/monitor/AlertView.vue:73 src/views/monitor/metrics.ts:92 +#: src/views/monitor/AlertView.vue:73 +#: src/views/monitor/metrics.ts:92 msgid "times" msgstr "次" @@ -8204,25 +9457,19 @@ msgstr "次" msgid "Record only" msgstr "僅記錄" -#: src/views/monitor/AlertView.vue:98 src/views/monitor/SettingView.vue:121 -#: src/views/project/EditModal.vue:72 src/views/setting/SettingBase.vue:187 -#: src/views/setting/SettingSafe.vue:246 src/views/tamper/TamperView.vue:136 -#: src/views/toolbox/network/InterfaceView.vue:67 -#: src/views/website/EditModal.vue:850 src/views/website/EditModal.vue:854 -#: src/views/website/EditModal.vue:1069 -msgid "Disabled" -msgstr "禁用" - -#: src/views/monitor/AlertView.vue:120 src/views/tamper/TamperView.vue:158 +#: src/views/monitor/AlertView.vue:120 +#: src/views/tamper/TamperView.vue:158 msgid "Are you sure to delete this rule?" msgstr "確定要刪除此規則嗎?" -#: src/views/monitor/AlertView.vue:150 src/views/website/EditModal.vue:1151 +#: src/views/monitor/AlertView.vue:150 +#: src/views/website/EditModal.vue:1151 #: src/views/website/EditModal.vue:1831 msgid "Rule" msgstr "規則" -#: src/views/monitor/AlertView.vue:160 src/views/toolbox/MigrationView.vue:228 +#: src/views/monitor/AlertView.vue:160 +#: src/views/toolbox/MigrationView.vue:228 msgid "Detail" msgstr "詳情" @@ -8238,7 +9485,8 @@ msgstr "已發送" msgid "Not sent" msgstr "未發送" -#: src/views/monitor/AlertView.vue:175 src/views/monitor/AlertView.vue:234 +#: src/views/monitor/AlertView.vue:175 +#: src/views/monitor/AlertView.vue:234 msgid "Clear Records" msgstr "清除記錄" @@ -8251,16 +9499,15 @@ msgid "Alert Rules" msgstr "警示規則" #: src/views/monitor/AlertView.vue:193 -msgid "" -"Rules are checked every minute and notifications are sent through the " -"selected channels." +msgid "Rules are checked every minute and notifications are sent through the selected channels." msgstr "規則每分鐘檢查一次,命中後透過所選渠道發送通知。" #: src/views/monitor/AlertView.vue:227 msgid "Alert Records" msgstr "警示記錄" -#: src/views/monitor/ChannelModal.vue:17 src/views/monitor/SettingView.vue:107 +#: src/views/monitor/ChannelModal.vue:17 +#: src/views/monitor/SettingView.vue:107 msgid "SMTP Email" msgstr "SMTP 郵件" @@ -8280,7 +9527,8 @@ msgstr "不加密(25)" msgid "Edit Channel" msgstr "編輯渠道" -#: src/views/monitor/ChannelModal.vue:83 src/views/monitor/SettingView.vue:242 +#: src/views/monitor/ChannelModal.vue:83 +#: src/views/monitor/SettingView.vue:242 msgid "Add Channel" msgstr "新增渠道" @@ -8316,7 +9564,8 @@ msgstr "預設與登入帳號相同" msgid "Sender Name" msgstr "寄件者名稱" -#: src/views/monitor/ChannelModal.vue:136 src/views/monitor/SettingView.vue:110 +#: src/views/monitor/ChannelModal.vue:136 +#: src/views/monitor/SettingView.vue:110 msgid "Recipients" msgstr "收件者" @@ -8356,7 +9605,8 @@ msgstr "15 分鐘負載" msgid "Disk Usage" msgstr "磁碟使用率" -#: src/views/monitor/metrics.ts:52 src/views/monitor/metrics.ts:59 +#: src/views/monitor/metrics.ts:52 +#: src/views/monitor/metrics.ts:59 msgid "Mount point, e.g. /, empty for all" msgstr "掛載點,如 /,留空表示全部" @@ -8368,7 +9618,8 @@ msgstr "磁碟 Inode 使用率" msgid "Disk Read Speed" msgstr "磁碟讀取速率" -#: src/views/monitor/metrics.ts:66 src/views/monitor/metrics.ts:73 +#: src/views/monitor/metrics.ts:66 +#: src/views/monitor/metrics.ts:73 msgid "Device name, e.g. sda, empty for all" msgstr "裝置名稱,如 sda,留空表示全部" @@ -8380,7 +9631,8 @@ msgstr "磁碟寫入速率" msgid "Network Download Speed" msgstr "網路下行速率" -#: src/views/monitor/metrics.ts:80 src/views/monitor/metrics.ts:87 +#: src/views/monitor/metrics.ts:80 +#: src/views/monitor/metrics.ts:87 msgid "Interface name, e.g. eth0, empty for all" msgstr "網路卡名稱,如 eth0,留空表示全部" @@ -8392,7 +9644,8 @@ msgstr "網路上行速率" msgid "Website 5xx Responses (this hour)" msgstr "網站 5xx 回應數(本小時)" -#: src/views/monitor/metrics.ts:94 src/views/monitor/metrics.ts:101 +#: src/views/monitor/metrics.ts:94 +#: src/views/monitor/metrics.ts:101 #: src/views/monitor/metrics.ts:150 msgid "Website name, empty for all" msgstr "網站名稱,留空表示全部" @@ -8445,8 +9698,10 @@ msgstr "資料庫伺服器名稱,留空表示全部" msgid "Certificate Remaining Days" msgstr "證書剩餘天數" -#: src/views/monitor/metrics.ts:141 src/views/monitor/metrics.ts:148 -#: src/views/monitor/SettingView.vue:205 src/views/monitor/SettingView.vue:215 +#: src/views/monitor/metrics.ts:141 +#: src/views/monitor/metrics.ts:148 +#: src/views/monitor/SettingView.vue:205 +#: src/views/monitor/SettingView.vue:215 msgid "days" msgstr "天" @@ -8522,11 +9777,13 @@ msgstr "SSH 登入" msgid "SSH brute-force attempts" msgstr "SSH 暴力破解嘗試" -#: src/views/monitor/SettingView.vue:44 src/views/monitor/SettingView.vue:229 +#: src/views/monitor/SettingView.vue:44 +#: src/views/monitor/SettingView.vue:229 msgid "Clear Monitoring Records" msgstr "清除監控記錄" -#: src/views/monitor/SettingView.vue:45 src/views/website/EditModal.vue:2219 +#: src/views/monitor/SettingView.vue:45 +#: src/views/website/EditModal.vue:2219 msgid "Are you sure you want to clear?" msgstr "確定要清除嗎?" @@ -8570,8 +9827,10 @@ msgstr "事件" msgid "Select channels to receive event notifications" msgstr "選擇接收事件通知的渠道" -#: src/views/monitor/SystemView.vue:323 src/views/monitor/SystemView.vue:335 -#: src/views/tamper/TamperView.vue:205 src/views/toolbox/IndexView.vue:27 +#: src/views/monitor/SystemView.vue:323 +#: src/views/monitor/SystemView.vue:335 +#: src/views/tamper/TamperView.vue:205 +#: src/views/toolbox/IndexView.vue:27 #: src/views/toolbox/NetworkView.vue:78 msgid "Process" msgstr "處理程序" @@ -8600,7 +9859,8 @@ msgstr "15 分鐘" msgid "Usage %" msgstr "使用率 %" -#: src/views/monitor/SystemView.vue:481 src/views/toolbox/DiskView.vue:259 +#: src/views/monitor/SystemView.vue:481 +#: src/views/toolbox/DiskView.vue:259 msgid "Usage" msgstr "使用率" @@ -8612,17 +9872,22 @@ msgstr "單位 MB" msgid "Load" msgstr "負載" -#: src/views/monitor/SystemView.vue:691 src/views/monitor/SystemView.vue:745 -#: src/views/monitor/SystemView.vue:797 src/views/monitor/SystemView.vue:853 +#: src/views/monitor/SystemView.vue:691 +#: src/views/monitor/SystemView.vue:745 +#: src/views/monitor/SystemView.vue:797 +#: src/views/monitor/SystemView.vue:853 #: src/views/monitor/SystemView.vue:920 #: src/views/website/stats/OverviewTab.vue:259 #: src/views/website/StatsView.vue:144 msgid "Yesterday" msgstr "昨天" -#: src/views/monitor/SystemView.vue:703 src/views/monitor/SystemView.vue:757 -#: src/views/monitor/SystemView.vue:809 src/views/monitor/SystemView.vue:865 -#: src/views/monitor/SystemView.vue:932 src/views/website/StatsView.vue:147 +#: src/views/monitor/SystemView.vue:703 +#: src/views/monitor/SystemView.vue:757 +#: src/views/monitor/SystemView.vue:809 +#: src/views/monitor/SystemView.vue:865 +#: src/views/monitor/SystemView.vue:932 +#: src/views/website/StatsView.vue:147 msgid "Last 7 Days" msgstr "近 7 天" @@ -8682,26 +9947,28 @@ msgstr "建立 Python 專案" msgid "Create .NET Project" msgstr "建立 .NET 專案" -#: src/views/project/CreateModal.vue:407 src/views/project/ListView.vue:295 +#: src/views/project/CreateModal.vue:407 +#: src/views/project/ListView.vue:295 msgid "Create Project" msgstr "建立專案" -#: src/views/project/CreateModal.vue:423 src/views/project/EditModal.vue:184 +#: src/views/project/CreateModal.vue:423 +#: src/views/project/EditModal.vue:184 msgid "Project Name" msgstr "項目名" -#: src/views/project/CreateModal.vue:428 src/views/project/EditModal.vue:189 +#: src/views/project/CreateModal.vue:428 +#: src/views/project/EditModal.vue:189 msgid "Project name, used as service identifier" msgstr "項目名稱,用作服務標識符" -#: src/views/project/CreateModal.vue:432 src/views/project/EditModal.vue:203 +#: src/views/project/CreateModal.vue:432 +#: src/views/project/EditModal.vue:203 msgid "Project Directory" msgstr "項目目錄" #: src/views/project/CreateModal.vue:439 -msgid "" -"Project root directory (if left empty, defaults to project directory/project " -"name)" +msgid "Project root directory (if left empty, defaults to project directory/project name)" msgstr "專案根目錄(留空則預設為專案目錄/專案名稱)" #: src/views/project/CreateModal.vue:454 @@ -8732,14 +9999,18 @@ msgstr "Java 版本" msgid "Select Java Version" msgstr "選擇 Java 版本" -#: src/views/project/CreateModal.vue:506 src/views/project/CreateModal.vue:532 -#: src/views/project/CreateModal.vue:558 src/views/project/CreateModal.vue:584 +#: src/views/project/CreateModal.vue:506 +#: src/views/project/CreateModal.vue:532 +#: src/views/project/CreateModal.vue:558 +#: src/views/project/CreateModal.vue:584 #: src/views/project/CreateModal.vue:610 msgid "Framework" msgstr "框架" -#: src/views/project/CreateModal.vue:510 src/views/project/CreateModal.vue:536 -#: src/views/project/CreateModal.vue:562 src/views/project/CreateModal.vue:588 +#: src/views/project/CreateModal.vue:510 +#: src/views/project/CreateModal.vue:536 +#: src/views/project/CreateModal.vue:562 +#: src/views/project/CreateModal.vue:588 #: src/views/project/CreateModal.vue:614 msgid "Select Framework" msgstr "選擇框架" @@ -8752,13 +10023,17 @@ msgstr "Node.js 版本" msgid "Select Node.js Version" msgstr "選擇 Node.js 版本" -#: src/views/project/CreateModal.vue:548 src/views/website/CreateModal.vue:236 -#: src/views/website/EditModal.vue:998 src/views/website/EditModal.vue:1917 +#: src/views/project/CreateModal.vue:548 +#: src/views/website/CreateModal.vue:236 +#: src/views/website/EditModal.vue:998 +#: src/views/website/EditModal.vue:1917 msgid "PHP Version" msgstr "PHP 版本" -#: src/views/project/CreateModal.vue:552 src/views/website/CreateModal.vue:240 -#: src/views/website/EditModal.vue:1003 src/views/website/EditModal.vue:1921 +#: src/views/project/CreateModal.vue:552 +#: src/views/website/CreateModal.vue:240 +#: src/views/website/EditModal.vue:1003 +#: src/views/website/EditModal.vue:1921 msgid "Select PHP Version" msgstr "選擇 PHP 版本" @@ -8778,7 +10053,8 @@ msgstr ".NET 版本" msgid "Select .NET Version" msgstr "選擇 .NET 版本" -#: src/views/project/CreateModal.vue:630 src/views/project/EditModal.vue:245 +#: src/views/project/CreateModal.vue:630 +#: src/views/project/EditModal.vue:245 msgid "Select or enter user" msgstr "選擇或輸入使用者" @@ -8786,14 +10062,17 @@ msgstr "選擇或輸入使用者" msgid "Select www user if no special requirements" msgstr "如果沒有特殊要求,請選擇 www 使用者" -#: src/views/project/CreateModal.vue:646 src/views/project/EditModal.vue:262 +#: src/views/project/CreateModal.vue:646 +#: src/views/project/EditModal.vue:262 msgid "e.g., php artisan serve, node app.js" msgstr "例如,php artisan serve、node app.js" #: src/views/project/CreateModal.vue:649 #: src/views/website/BulkCreateModal.vue:59 -#: src/views/website/CreateModal.vue:28 src/views/website/EditModal.vue:106 -#: src/views/website/IndexView.vue:26 src/views/website/ListView.vue:126 +#: src/views/website/CreateModal.vue:28 +#: src/views/website/EditModal.vue:106 +#: src/views/website/IndexView.vue:26 +#: src/views/website/ListView.vue:126 msgid "Reverse Proxy" msgstr "反向代理" @@ -8934,12 +10213,8 @@ msgid "Dependencies" msgstr "依賴" #: src/views/project/EditModal.vue:411 -msgid "" -"Configure service dependencies to control startup order. Common services: " -"network.target, mysqld.service, postgresql.service, redis.service" -msgstr "" -"配置服務依賴關係以控制啟動順序。常見服務:network.target、mysqld.service、" -"postgresql.service、redis.service" +msgid "Configure service dependencies to control startup order. Common services: network.target, mysqld.service, postgresql.service, redis.service" +msgstr "配置服務依賴關係以控制啟動順序。常見服務:network.target、mysqld.service、postgresql.service、redis.service" #: src/views/project/EditModal.vue:417 msgid "Requires" @@ -8974,19 +10249,13 @@ msgid "Start this service before the specified services" msgstr "在指定的服務之前啟動此服務" #: src/views/project/EditModal.vue:462 -msgid "" -"Set resource limits to prevent the service from consuming too many system " -"resources" +msgid "Set resource limits to prevent the service from consuming too many system resources" msgstr "設定資源限制以防止服務消耗過多系統資源" #: src/views/project/EditModal.vue:470 msgid "Memory Limit (MB)" msgstr "記憶體限制(MB)" -#: src/views/project/EditModal.vue:476 -msgid "0 means no limit" -msgstr "0 表示無限制" - #: src/views/project/EditModal.vue:480 msgid "Set to 0 to disable memory limit" msgstr "設為 0 以停用記憶體限制" @@ -9008,9 +10277,7 @@ msgid "Security Settings" msgstr "安全設定" #: src/views/project/EditModal.vue:509 -msgid "" -"Security settings can enhance service isolation but may affect " -"functionality. Please test thoroughly before enabling." +msgid "Security settings can enhance service isolation but may affect functionality. Please test thoroughly before enabling." msgstr "安全設定可以增強服務隔離,但可能會影響功能。請在啟用之前充分測試。" #: src/views/project/EditModal.vue:515 @@ -9034,9 +10301,7 @@ msgid "Protect System" msgstr "保護系統" #: src/views/project/EditModal.vue:544 -msgid "" -"true: /usr, /boot read-only; full: + /etc read-only; strict: entire " -"filesystem read-only" +msgid "true: /usr, /boot read-only; full: + /etc read-only; strict: entire filesystem read-only" msgstr "true:/usr、/boot 唯讀;full:加上 /etc 唯讀;strict:整個檔案系統唯讀" #: src/views/project/EditModal.vue:552 @@ -9071,9 +10336,12 @@ msgstr "Java" msgid "Node.js" msgstr "Node.js" -#: src/views/project/IndexView.vue:26 src/views/website/BulkCreateModal.vue:60 -#: src/views/website/CreateModal.vue:29 src/views/website/EditModal.vue:107 -#: src/views/website/IndexView.vue:27 src/views/website/ListView.vue:127 +#: src/views/project/IndexView.vue:26 +#: src/views/website/BulkCreateModal.vue:60 +#: src/views/website/CreateModal.vue:29 +#: src/views/website/EditModal.vue:107 +#: src/views/website/IndexView.vue:27 +#: src/views/website/ListView.vue:127 msgid "PHP" msgstr "PHP" @@ -9109,7 +10377,8 @@ msgstr "您確定要刪除所選項目嗎?" msgid "Enter user name" msgstr "輸入使用者名稱" -#: src/views/setting/CreateModal.vue:59 src/views/setting/PasswordModal.vue:48 +#: src/views/setting/CreateModal.vue:59 +#: src/views/setting/PasswordModal.vue:48 msgid "Enter user password" msgstr "輸入使用者密碼" @@ -9117,11 +10386,13 @@ msgstr "輸入使用者密碼" msgid "Enter user email" msgstr "輸入使用者信箱" -#: src/views/setting/IndexView.vue:100 src/views/setting/IndexView.vue:124 +#: src/views/setting/IndexView.vue:100 +#: src/views/setting/IndexView.vue:124 msgid "Panel is restarting, page will refresh in 5 seconds" msgstr "面板正在重啟,頁面將在 5 秒後重新整理" -#: src/views/setting/IndexView.vue:118 src/views/website/EditModal.vue:297 +#: src/views/setting/IndexView.vue:118 +#: src/views/website/EditModal.vue:297 msgid "Please wait..." msgstr "請稍候……" @@ -9145,10 +10416,6 @@ msgstr "重新產生憑證" msgid "Last Used" msgstr "最後使用" -#: src/views/setting/PasskeyModal.vue:47 -msgid "Never" -msgstr "從未" - #: src/views/setting/PasskeyModal.vue:63 msgid "Are you sure you want to delete this passkey?" msgstr "您確定要刪除此通行金鑰嗎?" @@ -9169,14 +10436,13 @@ msgstr "註冊已取消" msgid "Passkey registration failed: %{msg}" msgstr "通行金鑰註冊失敗:%{msg}" -#: src/views/setting/PasskeyModal.vue:152 src/views/setting/SettingUser.vue:116 +#: src/views/setting/PasskeyModal.vue:152 +#: src/views/setting/SettingUser.vue:116 msgid "Passkeys" msgstr "通行金鑰" #: src/views/setting/PasskeyModal.vue:162 -msgid "" -"Passkeys are only available when using a bound domain with a trusted HTTPS " -"certificate." +msgid "Passkeys are only available when using a bound domain with a trusted HTTPS certificate." msgstr "通行金鑰只有在綁定網域和使用可信任 HTTPS 憑證時才可用。" #: src/views/setting/PasskeyModal.vue:171 @@ -9195,7 +10461,8 @@ msgstr "穩定版" msgid "Beta" msgstr "測試版" -#: src/views/setting/SettingBase.vue:128 src/views/setting/SettingBase.vue:129 +#: src/views/setting/SettingBase.vue:128 +#: src/views/setting/SettingBase.vue:129 msgid "Panel Name" msgstr "面板名稱" @@ -9288,9 +10555,7 @@ msgid "Login Timeout" msgstr "登入逾時" #: src/views/setting/SettingSafe.vue:31 -msgid "" -"Set the maximum lifetime (in minutes) of the login state, after which you " -"need to log in again" +msgid "Set the maximum lifetime (in minutes) of the login state, after which you need to log in again" msgstr "設定登入狀態的最長存留時間(單位:分鐘),超過該時間後需要重新登入" #: src/views/setting/SettingSafe.vue:39 @@ -9302,26 +10567,19 @@ msgid "Access Entrance" msgstr "存取入口" #: src/views/setting/SettingSafe.vue:59 -msgid "" -"Set the access entrance of the panel (e.g. /mypanel) to prevent some " -"malicious access. Leave blank to disable (not recommended)" -msgstr "" -"設定面板的存取入口(例如 /mypanel)以防止惡意存取。留空以停用(不建議)" +msgid "Set the access entrance of the panel (e.g. /mypanel) to prevent some malicious access. Leave blank to disable (not recommended)" +msgstr "設定面板的存取入口(例如 /mypanel)以防止惡意存取。留空以停用(不建議)" #: src/views/setting/SettingSafe.vue:72 msgid "Entrance Error Page" msgstr "入口錯誤頁" #: src/views/setting/SettingSafe.vue:77 -msgid "" -"Set the error page to display when accessing with wrong entrance. 418 shows " -"teapot page, Nginx 404 shows nginx style 404 page, Close Connection will " -"close the connection immediately" -msgstr "" -"設定透過錯誤入口存取時顯示的錯誤頁面。418 顯示茶壺頁面,Nginx 404 顯示 Nginx " -"風格的 404 頁面,關閉連線將立即關閉連線" +msgid "Set the error page to display when accessing with wrong entrance. 418 shows teapot page, Nginx 404 shows nginx style 404 page, Close Connection will close the connection immediately" +msgstr "設定透過錯誤入口存取時顯示的錯誤頁面。418 顯示茶壺頁面,Nginx 404 顯示 Nginx 風格的 404 頁面,關閉連線將立即關閉連線" -#: src/views/setting/SettingSafe.vue:86 src/views/setting/SettingSafe.vue:90 +#: src/views/setting/SettingSafe.vue:86 +#: src/views/setting/SettingSafe.vue:90 msgid "418 I'm a teapot" msgstr "418 I'm a teapot" @@ -9338,9 +10596,7 @@ msgid "Login Captcha" msgstr "登入驗證碼" #: src/views/setting/SettingSafe.vue:103 -msgid "" -"When enabled, a captcha will be required after 3 failed login attempts to " -"prevent brute force attacks" +msgid "When enabled, a captcha will be required after 3 failed login attempts to prevent brute force attacks" msgstr "啟用後,在 3 次登入失敗後將要求輸入驗證碼,以防止暴力破解攻擊" #: src/views/setting/SettingSafe.vue:116 @@ -9348,12 +10604,8 @@ msgid "Request IP Header" msgstr "請求 IP 頭" #: src/views/setting/SettingSafe.vue:121 -msgid "" -"Set the header that carries the real IP of the client, useful when using CDN " -"or reverse proxy. Leave blank to use the client IP directly" -msgstr "" -"設定攜帶用戶端真實 IP 的請求標頭,在使用 CDN 或反向代理時非常有用。留空以直接" -"使用用戶端 IP" +msgid "Set the header that carries the real IP of the client, useful when using CDN or reverse proxy. Leave blank to use the client IP directly" +msgstr "設定攜帶用戶端真實 IP 的請求標頭,在使用 CDN 或反向代理時非常有用。留空以直接使用用戶端 IP" #: src/views/setting/SettingSafe.vue:127 msgid "X-Real-IP" @@ -9364,9 +10616,7 @@ msgid "Bind Domain" msgstr "綁定域名" #: src/views/setting/SettingSafe.vue:139 -msgid "" -"Restrict panel access to the specified domain names. Leave blank to allow " -"access from any domain" +msgid "Restrict panel access to the specified domain names. Leave blank to allow access from any domain" msgstr "限制僅允許指定網域存取面板。留空以允許來自任何網域的存取" #: src/views/setting/SettingSafe.vue:156 @@ -9374,9 +10624,7 @@ msgid "Bind IP" msgstr "綁定 IP" #: src/views/setting/SettingSafe.vue:161 -msgid "" -"Restrict panel access to the specified IP addresses. Leave blank to allow " -"access from any IP" +msgid "Restrict panel access to the specified IP addresses. Leave blank to allow access from any IP" msgstr "限制僅允許指定 IP 位址存取面板。留空以允許來自任何 IP 的存取" #: src/views/setting/SettingSafe.vue:174 @@ -9384,9 +10632,7 @@ msgid "Bind UA" msgstr "綁定 UA" #: src/views/setting/SettingSafe.vue:179 -msgid "" -"Restrict panel access to the specified User-Agent strings. Leave blank to " -"allow access from any User-Agent" +msgid "Restrict panel access to the specified User-Agent strings. Leave blank to allow access from any User-Agent" msgstr "限制僅允許指定 User-Agent 字串存取面板。留空以允許任何 User-Agent 存取" #: src/views/setting/SettingSafe.vue:196 @@ -9394,38 +10640,24 @@ msgid "Offline Mode" msgstr "離線模式" #: src/views/setting/SettingSafe.vue:201 -msgid "" -"When enabled, the panel will not attempt to connect to external services for " -"updates or other features. This may limit some functionalities" -msgstr "" -"啟用後,面板將不會嘗試連線外部服務以取得更新或其他功能。這可能會限制某些功能" +msgid "When enabled, the panel will not attempt to connect to external services for updates or other features. This may limit some functionalities" +msgstr "啟用後,面板將不會嘗試連線外部服務以取得更新或其他功能。這可能會限制某些功能" #: src/views/setting/SettingSafe.vue:214 msgid "Auto Update" msgstr "自動更新" #: src/views/setting/SettingSafe.vue:219 -msgid "" -"When enabled, the panel will automatically check for and install updates " -"when they are available. It is recommended to keep this enabled to ensure " -"you have the latest features and security patches" -msgstr "" -"啟用後,面板將自動檢查並安裝可用的更新。建議保持此功能啟用,以確保您擁有最新" -"的功能和安全補丁" +msgid "When enabled, the panel will automatically check for and install updates when they are available. It is recommended to keep this enabled to ensure you have the latest features and security patches" +msgstr "啟用後,面板將自動檢查並安裝可用的更新。建議保持此功能啟用,以確保您擁有最新的功能和安全補丁" #: src/views/setting/SettingSafe.vue:232 msgid "Panel HTTPS" msgstr "面板 HTTPS" #: src/views/setting/SettingSafe.vue:237 -msgid "" -"Enable HTTPS for the panel. ACME will automatically obtain and renew the " -"certificate daily (requires panel accessible via public IP). Self-Signed " -"generates a certificate automatically (browsers will show a warning). Custom " -"allows you to provide your own certificate" -msgstr "" -"為面板啟用 HTTPS。ACME 將每天自動取得並更新憑證(需支援透過公網 IP 存取面" -"板)。自簽名會自動產生憑證(瀏覽器會顯示警告)。自訂允許您提供自己的憑證" +msgid "Enable HTTPS for the panel. ACME will automatically obtain and renew the certificate daily (requires panel accessible via public IP). Self-Signed generates a certificate automatically (browsers will show a warning). Custom allows you to provide your own certificate" +msgstr "為面板啟用 HTTPS。ACME 將每天自動取得並更新憑證(需支援透過公網 IP 存取面板)。自簽名會自動產生憑證(瀏覽器會顯示警告)。自訂允許您提供自己的憑證" #: src/views/setting/SettingSafe.vue:247 msgid "ACME (Auto)" @@ -9439,16 +10671,14 @@ msgstr "自簽名" msgid "Custom Certificate" msgstr "自訂證書" -#: src/views/setting/SettingSafe.vue:257 src/views/setting/SettingSafe.vue:262 +#: src/views/setting/SettingSafe.vue:257 +#: src/views/setting/SettingSafe.vue:262 msgid "Panel Public IP" msgstr "面板公網 IP" #: src/views/setting/SettingSafe.vue:267 -msgid "" -"Panel public IP is used to issue HTTPS certificates using ACME. Ensure that " -"the entered IP address is accessible from the public network." -msgstr "" -"面板公網 IP 用於透過 ACME 簽發 HTTPS 憑證。請確保輸入的 IP 位址可從公網存取。" +msgid "Panel public IP is used to issue HTTPS certificates using ACME. Ensure that the entered IP address is accessible from the public network." +msgstr "面板公網 IP 用於透過 ACME 簽發 HTTPS 憑證。請確保輸入的 IP 位址可從公網存取。" #: src/views/setting/SettingUser.vue:56 msgid "2FA" @@ -9458,7 +10688,8 @@ msgstr "兩步驗證" msgid "Disabled successfully" msgstr "禁用成功" -#: src/views/setting/SettingUser.vue:104 src/views/setting/TokenModal.vue:202 +#: src/views/setting/SettingUser.vue:104 +#: src/views/setting/TokenModal.vue:202 msgid "Access Tokens" msgstr "存取權杖" @@ -9486,19 +10717,23 @@ msgstr "複製並關閉" msgid "Copy failed" msgstr "複製失敗" -#: src/views/setting/TokenModal.vue:212 src/views/setting/TokenModal.vue:239 +#: src/views/setting/TokenModal.vue:212 +#: src/views/setting/TokenModal.vue:239 msgid "Create Access Token" msgstr "建立存取權杖" -#: src/views/setting/TokenModal.vue:248 src/views/setting/TokenModal.vue:286 +#: src/views/setting/TokenModal.vue:248 +#: src/views/setting/TokenModal.vue:286 msgid "IP White List" msgstr "IP 白名單" -#: src/views/setting/TokenModal.vue:251 src/views/setting/TokenModal.vue:289 +#: src/views/setting/TokenModal.vue:251 +#: src/views/setting/TokenModal.vue:289 msgid "127.0.0.1" msgstr "127.0.0.1" -#: src/views/setting/TokenModal.vue:259 src/views/setting/TokenModal.vue:297 +#: src/views/setting/TokenModal.vue:259 +#: src/views/setting/TokenModal.vue:297 msgid "Please select the expiration time" msgstr "請選擇到期時間" @@ -9519,8 +10754,7 @@ msgid "Scan the QR code with your 2FA app and enter the code below" msgstr "使用您的兩步驟驗證應用掃描 QR Code 並在下方輸入驗證碼" #: src/views/setting/TwoFaModal.vue:73 -msgid "" -"If you cannot scan the QR code, please enter the URL below in your 2FA app" +msgid "If you cannot scan the QR code, please enter the URL below in your 2FA app" msgstr "如果無法掃描 QR Code,請在您的兩步驟驗證應用中輸入下方的 URL" #: src/views/setting/TwoFaModal.vue:86 @@ -9531,32 +10765,37 @@ msgstr "驗證碼" msgid "Enter the code" msgstr "輸入驗證碼" -#: src/views/ssh/CreateModal.vue:53 src/views/ssh/IndexView.vue:586 +#: src/views/ssh/CreateModal.vue:53 +#: src/views/ssh/IndexView.vue:586 msgid "Create Host" msgstr "建立主機" -#: src/views/ssh/CreateModal.vue:76 src/views/ssh/UpdateModal.vue:82 +#: src/views/ssh/CreateModal.vue:76 +#: src/views/ssh/UpdateModal.vue:82 msgid "Authentication Method" msgstr "驗證方式" -#: src/views/ssh/CreateModal.vue:95 src/views/ssh/UpdateModal.vue:101 +#: src/views/ssh/CreateModal.vue:95 +#: src/views/ssh/UpdateModal.vue:101 msgid "Passphrase" msgstr "密碼短語" -#: src/views/ssh/CreateModal.vue:100 src/views/ssh/UpdateModal.vue:106 +#: src/views/ssh/CreateModal.vue:100 +#: src/views/ssh/UpdateModal.vue:106 msgid "Leave empty if key has no passphrase" msgstr "如果密鑰沒有密碼短語,請留空" -#: src/views/ssh/CreateModal.vue:103 src/views/ssh/UpdateModal.vue:109 +#: src/views/ssh/CreateModal.vue:103 +#: src/views/ssh/UpdateModal.vue:109 msgid "Remarks" msgstr "備註" #: src/views/ssh/IndexView.vue:67 -msgid "" -"Clipboard is unavailable in non-HTTPS context, please use Ctrl+V to paste" +msgid "Clipboard is unavailable in non-HTTPS context, please use Ctrl+V to paste" msgstr "剪貼簿在非 HTTPS 環境下不可用,請使用 Ctrl+V 貼上" -#: src/views/ssh/IndexView.vue:97 src/views/ssh/IndexView.vue:178 +#: src/views/ssh/IndexView.vue:97 +#: src/views/ssh/IndexView.vue:178 msgid "File Transfer" msgstr "檔案互傳" @@ -9580,7 +10819,8 @@ msgstr "新建會話" msgid "Manage Hosts" msgstr "管理主機" -#: src/views/ssh/IndexView.vue:580 src/views/toolbox/SystemView.vue:184 +#: src/views/ssh/IndexView.vue:580 +#: src/views/toolbox/SystemView.vue:184 msgid "Hosts" msgstr "Hosts" @@ -9617,13 +10857,8 @@ msgid "Transfer Directories" msgstr "傳送目錄" #: src/views/ssh/SftpPanel.vue:77 -msgid "" -"The selection contains %{ count } directory(ies), which will be transferred " -"recursively and may take a long time. For large directories, compressing " -"before transferring is recommended. Continue?" -msgstr "" -"選擇包含 %{ count } 個目錄,這將被遞迴轉移並可能需要很長時間。對於大型目錄," -"建議在轉移之前壓縮。繼續嗎?" +msgid "The selection contains %{ count } directory(ies), which will be transferred recursively and may take a long time. For large directories, compressing before transferring is recommended. Continue?" +msgstr "選擇包含 %{ count } 個目錄,這將被遞迴轉移並可能需要很長時間。對於大型目錄,建議在轉移之前壓縮。繼續嗎?" #: src/views/ssh/SftpPanel.vue:152 msgid "Connection closed" @@ -9649,8 +10884,10 @@ msgstr "傳輸佇列" msgid "Clear Finished" msgstr "清除已完成" -#: src/views/ssh/SftpPanel.vue:294 src/views/task/TaskView.vue:42 -#: src/views/toolbox/ProcessView.vue:53 src/views/toolbox/ProcessView.vue:89 +#: src/views/ssh/SftpPanel.vue:294 +#: src/views/task/TaskView.vue:42 +#: src/views/toolbox/ProcessView.vue:53 +#: src/views/toolbox/ProcessView.vue:89 msgid "Waiting" msgstr "正在駐留等待" @@ -9670,7 +10907,8 @@ msgstr "選擇網站以自動填入名稱與路徑" msgid "Rule identifier, usually the website name" msgstr "規則識別碼,通常為網站名稱" -#: src/views/tamper/RuleModal.vue:112 src/views/tamper/TamperView.vue:119 +#: src/views/tamper/RuleModal.vue:112 +#: src/views/tamper/TamperView.vue:119 msgid "Protected Directory" msgstr "保護目錄" @@ -9683,12 +10921,8 @@ msgid "Exclude Paths" msgstr "排除路徑" #: src/views/tamper/RuleModal.vue:127 -msgid "" -"Leave extensions empty to protect all files (directories become append-" -"only). Excludes accept a path segment name (e.g. cache) or an absolute path." -msgstr "" -"副檔名留空則保護全部檔案(目錄變為僅可附加)。排除項可填路徑區段名稱(如 " -"cache)或絕對路徑。" +msgid "Leave extensions empty to protect all files (directories become append-only). Excludes accept a path segment name (e.g. cache) or an absolute path." +msgstr "副檔名留空則保護全部檔案(目錄變為僅可附加)。排除項可填路徑區段名稱(如 cache)或絕對路徑。" #: src/views/tamper/TamperView.vue:49 msgid "eBPF mode is not available, please activate it first" @@ -9699,13 +10933,8 @@ msgid "Activate eBPF LSM" msgstr "啟用 eBPF LSM" #: src/views/tamper/TamperView.vue:67 -msgid "" -"The panel will modify the kernel boot parameters (append bpf to the LSM " -"list) and reboot the server immediately. All services will be interrupted " -"during the reboot. Continue?" -msgstr "" -"面板將修改核心開機參數(向 LSM 清單附加 bpf)並立即重新啟動伺服器,重啟期間所" -"有服務將中斷,是否繼續?" +msgid "The panel will modify the kernel boot parameters (append bpf to the LSM list) and reboot the server immediately. All services will be interrupted during the reboot. Continue?" +msgstr "面板將修改核心開機參數(向 LSM 清單附加 bpf)並立即重新啟動伺服器,重啟期間所有服務將中斷,是否繼續?" #: src/views/tamper/TamperView.vue:77 msgid "The server is rebooting, please reconnect later" @@ -9723,7 +10952,8 @@ msgstr "全部檔案" msgid "Operation" msgstr "操作" -#: src/views/tamper/TamperView.vue:211 src/views/tamper/TamperView.vue:373 +#: src/views/tamper/TamperView.vue:211 +#: src/views/tamper/TamperView.vue:373 #: src/views/website/EditModal.vue:2224 msgid "Clear Logs" msgstr "清除日誌" @@ -9761,42 +10991,31 @@ msgid "Mode Description" msgstr "模式說明" #: src/views/tamper/TamperView.vue:260 -msgid "" -"Locks files with the immutable attribute, enforced by the kernel at the VFS " -"layer. Works on all distributions with no kernel dependency. Blocks " -"tampering by web processes, but not root." -msgstr "" -"透過不可變屬性鎖定檔案,由核心在 VFS 層強制執行,適用於所有發行版且無核心相依" -"性,可阻止網站處理程序竄改,但無法阻止 root。" +msgid "Locks files with the immutable attribute, enforced by the kernel at the VFS layer. Works on all distributions with no kernel dependency. Blocks tampering by web processes, but not root." +msgstr "透過不可變屬性鎖定檔案,由核心在 VFS 層強制執行,適用於所有發行版且無核心相依性,可阻止網站處理程序竄改,但無法阻止 root。" #: src/views/tamper/TamperView.vue:267 -msgid "" -"Intercepts write/delete/rename via eBPF-LSM with per-process tracing. More " -"precise and auditable, but requires the bpf LSM to be active in the kernel." -msgstr "" -"透過 eBPF-LSM 攔截寫入/刪除/重新命名並追蹤處理程序,更精確且可稽核,但要求核" -"心已啟用 bpf LSM。" +msgid "Intercepts write/delete/rename via eBPF-LSM with per-process tracing. More precise and auditable, but requires the bpf LSM to be active in the kernel." +msgstr "透過 eBPF-LSM 攔截寫入/刪除/重新命名並追蹤處理程序,更精確且可稽核,但要求核心已啟用 bpf LSM。" #: src/views/tamper/TamperView.vue:273 msgid "Block New Files" msgstr "阻止新建檔案" #: src/views/tamper/TamperView.vue:278 -msgid "" -"Reject newly created files of protected types in protected directories " -"(denied by kernel in eBPF mode, deleted in chattr mode). When off, new files " -"are logged and protected instead." -msgstr "" -"在受保護的目錄中拒絕新建立的受保護類型檔案(在 eBPF 模式下被內核拒絕,在 " -"chattr 模式下被刪除)。關閉時,新的檔案將被記錄並受保護。" +msgid "Reject newly created files of protected types in protected directories (denied by kernel in eBPF mode, deleted in chattr mode). When off, new files are logged and protected instead." +msgstr "在受保護的目錄中拒絕新建立的受保護類型檔案(在 eBPF 模式下被內核拒絕,在 chattr 模式下被刪除)。關閉時,新的檔案將被記錄並受保護。" #: src/views/tamper/TamperView.vue:285 msgid "Log Retention (days)" msgstr "日誌保留(天)" -#: src/views/tamper/TamperView.vue:295 src/views/website/SettingView.vue:109 -#: src/views/website/SettingView.vue:124 src/views/website/SettingView.vue:139 -#: src/views/website/SettingView.vue:163 src/views/website/SettingView.vue:215 +#: src/views/tamper/TamperView.vue:295 +#: src/views/website/SettingView.vue:109 +#: src/views/website/SettingView.vue:124 +#: src/views/website/SettingView.vue:139 +#: src/views/website/SettingView.vue:163 +#: src/views/website/SettingView.vue:215 #: src/views/website/SettingView.vue:278 msgid "Save Changes" msgstr "儲存變更" @@ -9873,17 +11092,20 @@ msgstr "日誌輪轉 - 網站" msgid "Log Rotation - Container" msgstr "日誌輪轉 - 容器" -#: src/views/task/CreateModal.vue:152 src/views/task/CreateModal.vue:335 +#: src/views/task/CreateModal.vue:152 +#: src/views/task/CreateModal.vue:335 #: src/views/task/CronView.vue:71 msgid "Log Rotation" msgstr "日誌輪替" -#: src/views/task/CreateModal.vue:157 src/views/task/CreateModal.vue:336 +#: src/views/task/CreateModal.vue:157 +#: src/views/task/CreateModal.vue:336 #: src/views/task/CronView.vue:68 msgid "Access URL" msgstr "存取 URL" -#: src/views/task/CreateModal.vue:159 src/views/task/CreateModal.vue:337 +#: src/views/task/CreateModal.vue:159 +#: src/views/task/CreateModal.vue:337 #: src/views/task/CronView.vue:69 msgid "Sync Time" msgstr "同步時間" @@ -9896,25 +11118,32 @@ msgstr "建立排程任務" msgid "Edit Scheduled Task" msgstr "編輯計劃任務" -#: src/views/task/CreateModal.vue:329 src/views/task/CronView.vue:57 +#: src/views/task/CreateModal.vue:329 +#: src/views/task/CronView.vue:57 msgid "Task Type" msgstr "任務類型" -#: src/views/task/CreateModal.vue:333 src/views/task/CronView.vue:66 +#: src/views/task/CreateModal.vue:333 +#: src/views/task/CronView.vue:66 msgid "Run Script" msgstr "執行指令碼" -#: src/views/task/CreateModal.vue:334 src/views/task/CronView.vue:67 +#: src/views/task/CreateModal.vue:334 +#: src/views/task/CronView.vue:67 msgid "Backup Data" msgstr "備份資料" -#: src/views/task/CreateModal.vue:341 src/views/task/CreateModal.vue:342 -#: src/views/task/CronView.vue:50 src/views/task/CronView.vue:318 -#: src/views/task/CronView.vue:319 src/views/task/TaskView.vue:27 +#: src/views/task/CreateModal.vue:341 +#: src/views/task/CreateModal.vue:342 +#: src/views/task/CronView.vue:50 +#: src/views/task/CronView.vue:318 +#: src/views/task/CronView.vue:319 +#: src/views/task/TaskView.vue:27 msgid "Task Name" msgstr "任務名稱" -#: src/views/task/CreateModal.vue:349 src/views/task/CronView.vue:90 +#: src/views/task/CreateModal.vue:349 +#: src/views/task/CronView.vue:90 #: src/views/task/CronView.vue:321 msgid "Task Schedule" msgstr "任務週期" @@ -9923,14 +11152,14 @@ msgstr "任務週期" msgid "Retention Count" msgstr "保留數量" -#: src/views/task/CreateModal.vue:359 src/views/task/CronView.vue:324 +#: src/views/task/CreateModal.vue:359 +#: src/views/task/CronView.vue:324 msgid "Process Lock" msgstr "處理程序鎖" -#: src/views/task/CreateModal.vue:363 src/views/task/CronView.vue:328 -msgid "" -"Prevent duplicate execution: skip this run if the previous one is still " -"running" +#: src/views/task/CreateModal.vue:363 +#: src/views/task/CronView.vue:328 +msgid "Prevent duplicate execution: skip this run if the previous one is still running" msgstr "防止重複執行:如果上次執行未結束,則跳過本次執行" #: src/views/task/CreateModal.vue:370 @@ -9953,7 +11182,8 @@ msgstr "標頭名稱" msgid "Header Value" msgstr "標頭值" -#: src/views/task/CreateModal.vue:415 src/views/task/CreateModal.vue:420 +#: src/views/task/CreateModal.vue:415 +#: src/views/task/CreateModal.vue:420 msgid "Request Body" msgstr "請求體" @@ -9997,7 +11227,8 @@ msgstr "Valkey" msgid "Rotation Type" msgstr "輪轉類型" -#: src/views/task/CreateModal.vue:494 src/views/task/CreateModal.vue:500 +#: src/views/task/CreateModal.vue:494 +#: src/views/task/CreateModal.vue:500 #: src/views/website/CreateModal.vue:252 msgid "Select Database" msgstr "選擇資料庫" @@ -10006,7 +11237,8 @@ msgstr "選擇資料庫" msgid "Enter directory path" msgstr "輸入目錄路徑" -#: src/views/task/CreateModal.vue:526 src/views/task/CreateModal.vue:532 +#: src/views/task/CreateModal.vue:526 +#: src/views/task/CreateModal.vue:532 msgid "Select Container" msgstr "選擇容器" @@ -10086,11 +11318,8 @@ msgid "Pending benchmark" msgstr "待跑分" #: src/views/toolbox/BenchmarkView.vue:90 -msgid "" -"Benchmark results are for reference only and may differ from actual " -"performance due to system resource scheduling, caching, and other factors!" -msgstr "" -"跑分結果僅供參考,由於系統資源調度、快取和其他因素,可能與實際性能有所不同!" +msgid "Benchmark results are for reference only and may differ from actual performance due to system resource scheduling, caching, and other factors!" +msgstr "跑分結果僅供參考,由於系統資源調度、快取和其他因素,可能與實際性能有所不同!" #: src/views/toolbox/BenchmarkView.vue:97 msgid "Benchmarking in progress, it may take some time..." @@ -10168,7 +11397,8 @@ msgstr "跑分中……" msgid "Start Benchmark" msgstr "開始跑分" -#: src/views/toolbox/disk/RaidView.vue:93 src/views/toolbox/DiskView.vue:603 +#: src/views/toolbox/disk/RaidView.vue:93 +#: src/views/toolbox/DiskView.vue:603 #: src/views/toolbox/DiskView.vue:912 msgid "Device" msgstr "設備" @@ -10373,7 +11603,8 @@ msgstr "無可用 SMART 屬性" msgid "Failed to parse disk data, please refresh and try again" msgstr "無法解析磁碟資料,請重新整理後重試" -#: src/views/toolbox/DiskView.vue:231 src/views/toolbox/DiskView.vue:687 +#: src/views/toolbox/DiskView.vue:231 +#: src/views/toolbox/DiskView.vue:687 #: src/views/toolbox/DiskView.vue:726 msgid "Partition" msgstr "分區" @@ -10386,21 +11617,21 @@ msgstr "已用" msgid "Not Mounted" msgstr "未掛載" -#: src/views/toolbox/DiskView.vue:290 src/views/toolbox/DiskView.vue:605 +#: src/views/toolbox/DiskView.vue:290 +#: src/views/toolbox/DiskView.vue:605 msgid "FS" msgstr "檔案系統" -#: src/views/toolbox/DiskView.vue:340 src/views/toolbox/DiskView.vue:476 -#: src/views/toolbox/DiskView.vue:517 src/views/toolbox/DiskView.vue:560 +#: src/views/toolbox/DiskView.vue:340 +#: src/views/toolbox/DiskView.vue:476 +#: src/views/toolbox/DiskView.vue:517 +#: src/views/toolbox/DiskView.vue:560 msgid "Please fill in all fields" msgstr "請填寫所有欄位" #: src/views/toolbox/DiskView.vue:344 -msgid "" -"Are you sure you want to mount %{ device } to %{ path } and write to fstab " -"for auto-mount on boot?" -msgstr "" -"您確定要將 %{ device } 掛載到 %{ path } 並寫入 fstab 以在啟動時自動掛載嗎?" +msgid "Are you sure you want to mount %{ device } to %{ path } and write to fstab for auto-mount on boot?" +msgstr "您確定要將 %{ device } 掛載到 %{ path } 並寫入 fstab 以在啟動時自動掛載嗎?" #: src/views/toolbox/DiskView.vue:348 msgid "Are you sure you want to mount %{ device } to %{ path }?" @@ -10418,20 +11649,22 @@ msgstr "您確定要卸載這個分區嗎?" msgid "Unmounted successfully" msgstr "卸載成功" -#: src/views/toolbox/DiskView.vue:390 src/views/toolbox/DiskView.vue:437 +#: src/views/toolbox/DiskView.vue:390 +#: src/views/toolbox/DiskView.vue:437 msgid "Please select a device" msgstr "請選擇一個設備" -#: src/views/toolbox/DiskView.vue:394 src/views/toolbox/DiskView.vue:417 -#: src/views/toolbox/DiskView.vue:459 src/views/toolbox/DiskView.vue:499 -#: src/views/toolbox/DiskView.vue:542 src/views/toolbox/DiskView.vue:586 +#: src/views/toolbox/DiskView.vue:394 +#: src/views/toolbox/DiskView.vue:417 +#: src/views/toolbox/DiskView.vue:459 +#: src/views/toolbox/DiskView.vue:499 +#: src/views/toolbox/DiskView.vue:542 +#: src/views/toolbox/DiskView.vue:586 msgid "Dangerous Operation" msgstr "危險操作" #: src/views/toolbox/DiskView.vue:395 -msgid "" -"Formatting will erase all data on the partition. This operation is " -"irreversible. Are you sure?" +msgid "Formatting will erase all data on the partition. This operation is irreversible. Are you sure?" msgstr "格式化將清除分割區上的所有資料。此操作不可逆,您確定嗎?" #: src/views/toolbox/DiskView.vue:398 @@ -10447,12 +11680,8 @@ msgid "Please enter disk name" msgstr "請輸入磁碟名稱" #: src/views/toolbox/DiskView.vue:418 -msgid "" -"This will delete all partitions on %{ device } and create a single " -"partition. All data will be permanently lost. Are you absolutely sure?" -msgstr "" -"這將刪除 %{ device } 上的所有分割區並建立單一分割區。所有資料將永久遺失,您確" -"定嗎?" +msgid "This will delete all partitions on %{ device } and create a single partition. All data will be permanently lost. Are you absolutely sure?" +msgstr "這將刪除 %{ device } 上的所有分割區並建立單一分割區。所有資料將永久遺失,您確定嗎?" #: src/views/toolbox/DiskView.vue:422 msgid "Confirm Initialize" @@ -10487,9 +11716,7 @@ msgid "Volume group created successfully" msgstr "卷冊群組建立成功" #: src/views/toolbox/DiskView.vue:500 -msgid "" -"Are you sure you want to remove the volume group %{ name }? All logical " -"volumes in this group will be deleted!" +msgid "Are you sure you want to remove the volume group %{ name }? All logical volumes in this group will be deleted!" msgstr "您確定要刪除卷組 %{ name } 嗎?此組中的所有邏輯卷將被刪除!" #: src/views/toolbox/DiskView.vue:508 @@ -10497,8 +11724,7 @@ msgid "Volume group removed successfully" msgstr "卷組刪除成功" #: src/views/toolbox/DiskView.vue:522 -msgid "" -"Are you sure you want to create logical volume %{ name } with %{ size }GB?" +msgid "Are you sure you want to create logical volume %{ name } with %{ size }GB?" msgstr "您確定要建立大小為 %{ size }GB 的邏輯卷冊 %{ name } 嗎?" #: src/views/toolbox/DiskView.vue:530 @@ -10506,9 +11732,7 @@ msgid "Logical volume created successfully" msgstr "邏輯卷冊建立成功" #: src/views/toolbox/DiskView.vue:543 -msgid "" -"Are you sure you want to remove the logical volume %{ path }? All data on " -"this volume will be lost!" +msgid "Are you sure you want to remove the logical volume %{ path }? All data on this volume will be lost!" msgstr "您確定要刪除邏輯卷冊 %{ path } 嗎?該卷冊上的所有資料將遺失!" #: src/views/toolbox/DiskView.vue:551 @@ -10524,11 +11748,8 @@ msgid "Logical volume extended successfully" msgstr "邏輯卷擴展成功" #: src/views/toolbox/DiskView.vue:587 -msgid "" -"Are you sure you want to remove the fstab entry for %{ mountPoint }? This " -"will prevent auto-mount on boot." -msgstr "" -"您確定要刪除 %{ mountPoint } 的 fstab 條目嗎?這將阻止在啟動時自動掛載。" +msgid "Are you sure you want to remove the fstab entry for %{ mountPoint }? This will prevent auto-mount on boot." +msgstr "您確定要刪除 %{ mountPoint } 的 fstab 條目嗎?這將阻止在啟動時自動掛載。" #: src/views/toolbox/DiskView.vue:595 msgid "Fstab entry removed successfully" @@ -10550,11 +11771,13 @@ msgstr "%{ count } 個分區" msgid "No disks found" msgstr "未找到磁碟" -#: src/views/toolbox/DiskView.vue:683 src/views/toolbox/DiskView.vue:713 +#: src/views/toolbox/DiskView.vue:683 +#: src/views/toolbox/DiskView.vue:713 msgid "Mount" msgstr "掛載" -#: src/views/toolbox/DiskView.vue:691 src/views/toolbox/DiskView.vue:730 +#: src/views/toolbox/DiskView.vue:691 +#: src/views/toolbox/DiskView.vue:730 msgid "Select partition" msgstr "選擇分區" @@ -10574,7 +11797,8 @@ msgstr "例如 defaults,noatime" msgid "Auto-mount on boot" msgstr "啟動時自動掛載" -#: src/views/toolbox/DiskView.vue:719 src/views/toolbox/DiskView.vue:741 +#: src/views/toolbox/DiskView.vue:719 +#: src/views/toolbox/DiskView.vue:741 msgctxt "disk action" msgid "Format" msgstr "格式化" @@ -10583,18 +11807,18 @@ msgstr "格式化" msgid "Warning: Formatting will erase all data!" msgstr "警告:格式化將清除所有資料!" -#: src/views/toolbox/DiskView.vue:735 src/views/toolbox/DiskView.vue:767 +#: src/views/toolbox/DiskView.vue:735 +#: src/views/toolbox/DiskView.vue:767 msgid "Filesystem Type" msgstr "檔案系統類型" -#: src/views/toolbox/DiskView.vue:747 src/views/toolbox/DiskView.vue:773 +#: src/views/toolbox/DiskView.vue:747 +#: src/views/toolbox/DiskView.vue:773 msgid "Initialize" msgstr "初始化" #: src/views/toolbox/DiskView.vue:751 -msgid "" -"Warning: This will delete all partitions and create a single partition. All " -"data will be lost!" +msgid "Warning: This will delete all partitions and create a single partition. All data will be lost!" msgstr "警告:這將刪除所有分割區並建立單一分割區,所有資料將遺失!" #: src/views/toolbox/DiskView.vue:762 @@ -10613,7 +11837,8 @@ msgstr "無 fstab 條目" msgid "LVM Management" msgstr "LVM 管理" -#: src/views/toolbox/DiskView.vue:803 src/views/toolbox/DiskView.vue:935 +#: src/views/toolbox/DiskView.vue:803 +#: src/views/toolbox/DiskView.vue:935 msgid "Physical Volumes" msgstr "物理卷" @@ -10637,7 +11862,8 @@ msgstr "邏輯卷" msgid "No logical volumes" msgstr "無邏輯卷" -#: src/views/toolbox/DiskView.vue:909 src/views/toolbox/DiskView.vue:922 +#: src/views/toolbox/DiskView.vue:909 +#: src/views/toolbox/DiskView.vue:922 msgid "Create PV" msgstr "建立實體卷冊" @@ -10645,7 +11871,8 @@ msgstr "建立實體卷冊" msgid "Select device" msgstr "選擇設備" -#: src/views/toolbox/DiskView.vue:928 src/views/toolbox/DiskView.vue:946 +#: src/views/toolbox/DiskView.vue:928 +#: src/views/toolbox/DiskView.vue:946 msgid "Create VG" msgstr "建立卷冊群組" @@ -10661,7 +11888,8 @@ msgstr "輸入卷組名" msgid "Select PVs" msgstr "選擇物理卷" -#: src/views/toolbox/DiskView.vue:952 src/views/toolbox/DiskView.vue:975 +#: src/views/toolbox/DiskView.vue:952 +#: src/views/toolbox/DiskView.vue:975 msgid "Create LV" msgstr "建立邏輯卷冊" @@ -10685,7 +11913,8 @@ msgstr "選擇卷組" msgid "Size (GB)" msgstr "大小(GB)" -#: src/views/toolbox/DiskView.vue:981 src/views/toolbox/DiskView.vue:1004 +#: src/views/toolbox/DiskView.vue:981 +#: src/views/toolbox/DiskView.vue:1004 msgid "Extend LV" msgstr "擴展邏輯卷" @@ -10774,9 +12003,7 @@ msgid "Log Cleaner" msgstr "日誌清理" #: src/views/toolbox/LogView.vue:142 -msgid "" -"Scan and clean redundant logs to free up disk space. Cleaning is " -"irreversible." +msgid "Scan and clean redundant logs to free up disk space. Cleaning is irreversible." msgstr "掃描並清理冗餘日誌以釋放磁碟空間。清理操作不可逆。" #: src/views/toolbox/LogView.vue:158 @@ -10835,7 +12062,8 @@ msgstr "1Panel → AcePanel" msgid "Pull websites and databases from 1Panel." msgstr "從 1Panel 拉取網站和資料庫。" -#: src/views/toolbox/MigrationView.vue:77 src/views/website/CreateModal.vue:280 +#: src/views/toolbox/MigrationView.vue:77 +#: src/views/website/CreateModal.vue:280 #: src/views/website/CreateModal.vue:285 msgid "Database User" msgstr "資料庫使用者" @@ -10914,9 +12142,7 @@ msgid "Please select at least one resource to migrate." msgstr "請至少選擇一個要遷移的資源。" #: src/views/toolbox/MigrationView.vue:337 -msgid "" -"The selection contains blocked resources. Resolve them or enable skipping " -"first." +msgid "The selection contains blocked resources. Resolve them or enable skipping first." msgstr "所選內容包含受阻資源。請先解決問題或啟用跳過。" #: src/views/toolbox/MigrationView.vue:343 @@ -10988,12 +12214,8 @@ msgid "API key of the source panel" msgstr "源面板 API 金鑰" #: src/views/toolbox/MigrationView.vue:543 -msgid "" -"The target API must allow this server address. Missing database servers and " -"runtimes are reported in the next step." -msgstr "" -"目標 API 必須允許本伺服器地址存取。缺少的資料庫伺服器和執行環境將在下一步提" -"示。" +msgid "The target API must allow this server address. Missing database servers and runtimes are reported in the next step." +msgstr "目標 API 必須允許本伺服器地址存取。缺少的資料庫伺服器和執行環境將在下一步提示。" #: src/views/toolbox/MigrationView.vue:546 msgid "The source panel API must be enabled and allow this server address." @@ -11186,18 +12408,11 @@ msgid "Confirm Network Configuration Change" msgstr "確認更改網路配置" #: src/views/toolbox/network/InterfaceView.vue:293 -msgid "" -"Changing the primary IP address, gateway, or automatic address assignment " -"may interrupt the panel connection. The change will be rolled back " -"automatically unless you confirm it afterwards. Continue?" -msgstr "" -"更改主 IP 地址、網關或自動地址分配可能會中斷面板連接。除非隨後進行確認,否則" -"更改將自動回滾。是否繼續?" +msgid "Changing the primary IP address, gateway, or automatic address assignment may interrupt the panel connection. The change will be rolled back automatically unless you confirm it afterwards. Continue?" +msgstr "更改主 IP 地址、網關或自動地址分配可能會中斷面板連接。除非隨後進行確認,否則更改將自動回滾。是否繼續?" #: src/views/toolbox/network/InterfaceView.vue:323 -msgid "" -"Network configuration changed. Confirm within %{ seconds }s to keep it, " -"otherwise it will be rolled back automatically." +msgid "Network configuration changed. Confirm within %{ seconds }s to keep it, otherwise it will be rolled back automatically." msgstr "網路配置已更改。請在 %{ seconds } 秒內確認以保留更改,否則將自動回滾。" #: src/views/toolbox/network/InterfaceView.vue:327 @@ -11248,7 +12463,8 @@ msgstr "本地地址" msgid "Remote Address" msgstr "遠端地址" -#: src/views/toolbox/NetworkView.vue:150 src/views/toolbox/ProcessView.vue:477 +#: src/views/toolbox/NetworkView.vue:150 +#: src/views/toolbox/ProcessView.vue:477 msgid "Network Connections" msgstr "網路連接" @@ -11284,7 +12500,8 @@ msgstr "Goroutines" msgid "Cgo Calls" msgstr "Cgo 調用" -#: src/views/toolbox/PanelView.vue:123 src/views/toolbox/PanelView.vue:145 +#: src/views/toolbox/PanelView.vue:123 +#: src/views/toolbox/PanelView.vue:145 msgid "Allocated" msgstr "已分配" @@ -11304,7 +12521,8 @@ msgstr "分配次數" msgid "Frees" msgstr "釋放次數" -#: src/views/toolbox/PanelView.vue:151 src/views/toolbox/ProcessView.vue:51 +#: src/views/toolbox/PanelView.vue:151 +#: src/views/toolbox/ProcessView.vue:51 #: src/views/toolbox/ProcessView.vue:85 msgid "Idle" msgstr "空閒" @@ -11385,15 +12603,18 @@ msgstr "總計:%{ count }" msgid "All Status" msgstr "所有狀態" -#: src/views/toolbox/ProcessView.vue:49 src/views/toolbox/ProcessView.vue:81 +#: src/views/toolbox/ProcessView.vue:49 +#: src/views/toolbox/ProcessView.vue:81 msgid "Sleeping" msgstr "睡眠" -#: src/views/toolbox/ProcessView.vue:52 src/views/toolbox/ProcessView.vue:87 +#: src/views/toolbox/ProcessView.vue:52 +#: src/views/toolbox/ProcessView.vue:87 msgid "Zombie" msgstr "殭屍處理程序" -#: src/views/toolbox/ProcessView.vue:54 src/views/toolbox/ProcessView.vue:91 +#: src/views/toolbox/ProcessView.vue:54 +#: src/views/toolbox/ProcessView.vue:91 msgid "Locked" msgstr "已鎖定" @@ -11437,15 +12658,18 @@ msgstr "使用者訊號 2(SIGUSR2)" msgid "Blocked" msgstr "阻塞" -#: src/views/toolbox/ProcessView.vue:114 src/views/toolbox/ProcessView.vue:390 +#: src/views/toolbox/ProcessView.vue:114 +#: src/views/toolbox/ProcessView.vue:390 msgid "Parent PID" msgstr "父處理程序 PID" -#: src/views/toolbox/ProcessView.vue:121 src/views/toolbox/ProcessView.vue:402 +#: src/views/toolbox/ProcessView.vue:121 +#: src/views/toolbox/ProcessView.vue:402 msgid "Threads" msgstr "執行緒" -#: src/views/toolbox/ProcessView.vue:162 src/views/toolbox/ProcessView.vue:423 +#: src/views/toolbox/ProcessView.vue:162 +#: src/views/toolbox/ProcessView.vue:423 msgid "Start Time" msgstr "啟動時間" @@ -11545,7 +12769,8 @@ msgstr "請輸入密碼" msgid "Root password updated" msgstr "Root 密碼已更新" -#: src/views/toolbox/SshView.vue:135 src/views/toolbox/SshView.vue:148 +#: src/views/toolbox/SshView.vue:135 +#: src/views/toolbox/SshView.vue:148 msgid "SSH key generated" msgstr "SSH 密鑰已生成" @@ -11626,9 +12851,7 @@ msgid "Root Private Key" msgstr "Root 私鑰" #: src/views/toolbox/SshView.vue:365 -msgid "" -"This is the private key of the root user. Keep it safe and use it to login " -"to this server." +msgid "This is the private key of the root user. Keep it safe and use it to login to this server." msgstr "這是 root 使用者的私鑰。請妥善保管,並使用它登入此伺服器。" #: src/views/toolbox/SshView.vue:375 @@ -11660,9 +12883,7 @@ msgid "Enter hostname, e.g. myserver" msgstr "輸入主機名,例如 myserver" #: src/views/toolbox/SystemView.vue:201 -msgid "" -"After manually changing the time, it may still be overwritten by system " -"automatic time synchronization." +msgid "After manually changing the time, it may still be overwritten by system automatic time synchronization." msgstr "手動更改時間後,仍可能被系統自動時間同步覆蓋。" #: src/views/toolbox/SystemView.vue:207 @@ -11698,15 +12919,11 @@ msgid "System NTP Server Configuration" msgstr "系統 NTP 伺服器設定" #: src/views/toolbox/SystemView.vue:265 -msgid "" -"Unable to detect NTP service. Please ensure chrony or systemd-timesyncd is " -"installed." +msgid "Unable to detect NTP service. Please ensure chrony or systemd-timesyncd is installed." msgstr "無法檢測到 NTP 服務。請確保已安裝 chrony 或 systemd-timesyncd。" #: src/views/toolbox/SystemView.vue:272 -msgid "" -"Current NTP service: %{ service }. Changes will be applied to system " -"configuration." +msgid "Current NTP service: %{ service }. Changes will be applied to system configuration." msgstr "當前 NTP 服務:%{ service }。更改將應用於系統配置。" #: src/views/toolbox/SystemView.vue:285 @@ -11737,31 +12954,38 @@ msgstr "您確定要刪除此 Web 掛鉤嗎?" msgid "URL copied to clipboard" msgstr "URL 已複製到剪貼板" -#: src/views/toolbox/WebHookView.vue:232 src/views/toolbox/WebHookView.vue:259 +#: src/views/toolbox/WebHookView.vue:232 +#: src/views/toolbox/WebHookView.vue:259 msgid "Please enter a name" msgstr "請輸入名稱" -#: src/views/toolbox/WebHookView.vue:236 src/views/toolbox/WebHookView.vue:263 +#: src/views/toolbox/WebHookView.vue:236 +#: src/views/toolbox/WebHookView.vue:263 msgid "Please enter a script" msgstr "請輸入腳本" -#: src/views/toolbox/WebHookView.vue:295 src/views/toolbox/WebHookView.vue:323 +#: src/views/toolbox/WebHookView.vue:295 +#: src/views/toolbox/WebHookView.vue:323 msgid "Create WebHook" msgstr "建立 WebHook" -#: src/views/toolbox/WebHookView.vue:331 src/views/toolbox/WebHookView.vue:372 +#: src/views/toolbox/WebHookView.vue:331 +#: src/views/toolbox/WebHookView.vue:372 msgid "Enter WebHook name" msgstr "輸入 Web 掛鉤名稱" -#: src/views/toolbox/WebHookView.vue:336 src/views/toolbox/WebHookView.vue:377 +#: src/views/toolbox/WebHookView.vue:336 +#: src/views/toolbox/WebHookView.vue:377 msgid "User to run the script (default: root)" msgstr "執行指令碼的使用者(預設:root)" -#: src/views/toolbox/WebHookView.vue:342 src/views/toolbox/WebHookView.vue:383 +#: src/views/toolbox/WebHookView.vue:342 +#: src/views/toolbox/WebHookView.vue:383 msgid "Return script output as raw text instead of JSON" msgstr "將腳本輸出作為原始文本而非 JSON 返回" -#: src/views/toolbox/WebHookView.vue:345 src/views/toolbox/WebHookView.vue:389 +#: src/views/toolbox/WebHookView.vue:345 +#: src/views/toolbox/WebHookView.vue:389 msgid "Script" msgstr "腳本" @@ -11770,13 +12994,16 @@ msgid "Edit WebHook" msgstr "編輯 Web 掛鉤" #: src/views/website/BulkCreateModal.vue:32 -#: src/views/website/CreateModal.vue:57 src/views/website/EditModal.vue:90 +#: src/views/website/CreateModal.vue:57 +#: src/views/website/EditModal.vue:90 msgid "Not used" msgstr "未使用" #: src/views/website/BulkCreateModal.vue:61 -#: src/views/website/CreateModal.vue:30 src/views/website/EditModal.vue:108 -#: src/views/website/IndexView.vue:28 src/views/website/ListView.vue:128 +#: src/views/website/CreateModal.vue:30 +#: src/views/website/EditModal.vue:108 +#: src/views/website/IndexView.vue:28 +#: src/views/website/ListView.vue:128 msgid "Pure Static" msgstr "純靜態" @@ -11792,7 +13019,8 @@ msgstr "批次建立 PHP 網站" msgid "Bulk Create Pure Static Website" msgstr "批次建立純靜態網站" -#: src/views/website/BulkCreateModal.vue:74 src/views/website/ListView.vue:409 +#: src/views/website/BulkCreateModal.vue:74 +#: src/views/website/ListView.vue:409 msgid "Bulk Create Website" msgstr "批次建立網站" @@ -11809,9 +13037,7 @@ msgid "name|domain|port|path|remark" msgstr "名稱|網域|連接埠|路徑|備註" #: src/views/website/BulkCreateModal.vue:92 -msgid "" -"Proxy Target: The target address for reverse proxy (e.g., " -"http://127.0.0.1:3000)." +msgid "Proxy Target: The target address for reverse proxy (e.g., http://127.0.0.1:3000)." msgstr "代理目標:反向代理的目標地址(例如:http://127.0.0.1:3000)。" #: src/views/website/BulkCreateModal.vue:96 @@ -11832,38 +13058,32 @@ msgid "Website %{ name } created successfully" msgstr "網站 %{ name } 建立成功" #: src/views/website/BulkCreateModal.vue:189 -#: src/views/website/CreateModal.vue:180 src/views/website/EditModal.vue:1905 +#: src/views/website/CreateModal.vue:180 +#: src/views/website/EditModal.vue:1905 #: src/views/website/ListView.vue:120 msgid "Website Type" msgstr "網站類型" #: src/views/website/BulkCreateModal.vue:193 -#: src/views/website/CreateModal.vue:184 src/views/website/EditModal.vue:1914 +#: src/views/website/CreateModal.vue:184 +#: src/views/website/EditModal.vue:1914 msgid "Select Website Type" msgstr "選擇網站類型" #: src/views/website/BulkCreateModal.vue:198 -msgid "" -"Please enter the website name, domain, port, path, and remark in the text " -"area below, one per line." +msgid "Please enter the website name, domain, port, path, and remark in the text area below, one per line." msgstr "請在下方文字區域輸入網站名稱、網域、連接埠、路徑與備註,每行一個。" #: src/views/website/BulkCreateModal.vue:211 -msgid "" -"Name: The name of the website, which will be displayed in the website list, " -"must be unique." +msgid "Name: The name of the website, which will be displayed in the website list, must be unique." msgstr "名稱:網站的名稱,將顯示在網站列表中,必須是唯一的。" #: src/views/website/BulkCreateModal.vue:218 -msgid "" -"Domain: The domain name of the website, multiple domains can be separated by " -"commas." +msgid "Domain: The domain name of the website, multiple domains can be separated by commas." msgstr "域名:網站的域名,多個域名可以用英文逗號分隔。" #: src/views/website/BulkCreateModal.vue:225 -msgid "" -"Port: The port number of the website, multiple ports can be separated by " -"commas." +msgid "Port: The port number of the website, multiple ports can be separated by commas." msgstr "連接埠:網站的連接埠號,多個連接埠可以用英文逗號分隔。" #: src/views/website/BulkCreateModal.vue:237 @@ -11882,27 +13102,26 @@ msgstr "建立 PHP 網站" msgid "Create Pure Static Website" msgstr "建立純靜態網站" -#: src/views/website/CreateModal.vue:80 src/views/website/ListView.vue:406 +#: src/views/website/CreateModal.vue:80 +#: src/views/website/ListView.vue:406 msgid "Create Website" msgstr "建立網站" #: src/views/website/CreateModal.vue:193 -msgid "" -"Must be unique, used for directory naming, database naming, etc., and only " -"supports letters, numbers, hyphens, and underscores" +msgid "Must be unique, used for directory naming, database naming, etc., and only supports letters, numbers, hyphens, and underscores" msgstr "必須唯一,用於目錄命名、資料庫命名等,僅支援字母、數字、連字號和底線" -#: src/views/website/CreateModal.vue:294 src/views/website/CreateModal.vue:300 +#: src/views/website/CreateModal.vue:294 +#: src/views/website/CreateModal.vue:300 msgid "Database Password" msgstr "資料庫密碼" #: src/views/website/CreateModal.vue:312 -msgid "" -"Website root directory (if left empty, defaults to website directory/website " -"name/public)" +msgid "Website root directory (if left empty, defaults to website directory/website name/public)" msgstr "網站根目錄(如果留空,預設為網站目錄/網站名稱/public)" -#: src/views/website/CreateModal.vue:324 src/views/website/EditModal.vue:1926 +#: src/views/website/CreateModal.vue:324 +#: src/views/website/EditModal.vue:1926 msgid "Proxy Target" msgstr "代理目標" @@ -11910,7 +13129,8 @@ msgstr "代理目標" msgid "Proxy target address (e.g., http://127.0.0.1:3000)" msgstr "代理目標地址(如:http://127.0.0.1:3000)" -#: src/views/website/CreateModal.vue:332 src/views/website/CreateModal.vue:337 +#: src/views/website/CreateModal.vue:332 +#: src/views/website/CreateModal.vue:337 #: src/views/website/ListView.vue:229 msgid "Remark" msgstr "備註" @@ -11928,13 +13148,8 @@ msgid "Confirm Website Type Switch" msgstr "確認切換網站類型" #: src/views/website/EditModal.vue:210 -msgid "" -"Switch the website type from %{ from } to %{ to }? Common settings and " -"website files will be preserved. The original type-specific configuration " -"will be deleted and rebuilt for the new type." -msgstr "" -"將網站類型從 %{ from } 切換為 %{ to }?通用設定和網站檔案將被保留。原類型專用" -"配置將被刪除,並按新類型重新生成。" +msgid "Switch the website type from %{ from } to %{ to }? Common settings and website files will be preserved. The original type-specific configuration will be deleted and rebuilt for the new type." +msgstr "將網站類型從 %{ from } 切換為 %{ to }?通用設定和網站檔案將被保留。原類型專用配置將被刪除,並按新類型重新生成。" #: src/views/website/EditModal.vue:214 msgid "Confirm Switch" @@ -11949,12 +13164,8 @@ msgid "Reset successfully" msgstr "重設成功" #: src/views/website/EditModal.vue:271 -msgid "" -"Your website contains wildcard domains, which require DNS verification. " -"Please add a DNS provider in Certificate Management first." -msgstr "" -"您的網站包含萬用字元域名,這需要進行 DNS 驗證。請先在憑證管理中新增一個 DNS " -"提供商。" +msgid "Your website contains wildcard domains, which require DNS verification. Please add a DNS provider in Certificate Management first." +msgstr "您的網站包含萬用字元域名,這需要進行 DNS 驗證。請先在憑證管理中新增一個 DNS 提供商。" #: src/views/website/EditModal.vue:288 msgid "Please select a DNS provider" @@ -12016,7 +13227,8 @@ msgstr "臨時重定向" msgid "Permanent Redirect" msgstr "永久重定向" -#: src/views/website/EditModal.vue:851 src/views/website/EditModal.vue:855 +#: src/views/website/EditModal.vue:851 +#: src/views/website/EditModal.vue:855 msgid "Default Path" msgstr "預設路徑" @@ -12060,7 +13272,8 @@ msgstr "上游" msgid "Upstream name" msgstr "上游名稱" -#: src/views/website/EditModal.vue:1049 src/views/website/EditModal.vue:1056 +#: src/views/website/EditModal.vue:1049 +#: src/views/website/EditModal.vue:1056 msgid "Round Robin (default)" msgstr "輪詢(預設)" @@ -12204,7 +13417,8 @@ msgstr "自訂快取鍵,例如 $scheme$host$request_uri" msgid "Custom Request Headers" msgstr "自定義請求頭" -#: src/views/website/EditModal.vue:1345 src/views/website/EditModal.vue:1644 +#: src/views/website/EditModal.vue:1345 +#: src/views/website/EditModal.vue:1644 msgid "Header name" msgstr "請求頭" @@ -12232,7 +13446,8 @@ msgstr "替換內容" msgid "Add Replacement Rule" msgstr "新增替換規則" -#: src/views/website/EditModal.vue:1373 src/views/website/EditModal.vue:1903 +#: src/views/website/EditModal.vue:1373 +#: src/views/website/EditModal.vue:1903 msgid "Advanced Settings" msgstr "進階設定" @@ -12450,12 +13665,8 @@ msgid "For example: http://127.0.0.1:3000" msgstr "例如:http://127.0.0.1:3000" #: src/views/website/EditModal.vue:1935 -msgid "" -"After switching, common settings and website files will be preserved. The " -"original type-specific configuration will be deleted and rebuilt for the new " -"type." -msgstr "" -"切換後將保留通用設定和網站檔案。原類型專用配置將被刪除,並按新類型重新生成。" +msgid "After switching, common settings and website files will be preserved. The original type-specific configuration will be deleted and rebuilt for the new type." +msgstr "切換後將保留通用設定和網站檔案。原類型專用配置將被刪除,並按新類型重新生成。" #: src/views/website/EditModal.vue:1946 msgid "Switch Website Type" @@ -12473,11 +13684,13 @@ msgstr "啟用統計" msgid "Log Settings" msgstr "日誌設定" -#: src/views/website/EditModal.vue:1967 src/views/website/EditModal.vue:2184 +#: src/views/website/EditModal.vue:1967 +#: src/views/website/EditModal.vue:2184 msgid "Access Log" msgstr "存取日誌" -#: src/views/website/EditModal.vue:1976 src/views/website/EditModal.vue:2200 +#: src/views/website/EditModal.vue:1976 +#: src/views/website/EditModal.vue:2200 msgid "Error Log" msgstr "錯誤日誌" @@ -12518,18 +13731,12 @@ msgid "Real IP" msgstr "真實 IP" #: src/views/website/EditModal.vue:2042 -msgid "" -"Configure trusted proxy IPs (e.g., CDN or Frp) to identify real visitor IPs." +msgid "Configure trusted proxy IPs (e.g., CDN or Frp) to identify real visitor IPs." msgstr "配置可信的代理 IP(例如 CDN 或 Frp)以識別真實的訪客 IP。" #: src/views/website/EditModal.vue:2049 -msgid "" -"If using Frp, fill in the Frp IP address (e.g., 127.0.0.1). If using CDN, " -"fill in the CDN IP ranges. If unsure, you can fill in 0.0.0.0/0 (ipv4) " -"or ::/0 (ipv6) [insecure]." -msgstr "" -"如果使用 Frp,請填寫 Frp IP 地址(例如 127.0.0.1)。如果使用 CDN,請填寫 CDN " -"IP 範圍。如果不確定,可以填寫 0.0.0.0/0(ipv4)或 ::/0(ipv6)[不安全]。" +msgid "If using Frp, fill in the Frp IP address (e.g., 127.0.0.1). If using CDN, fill in the CDN IP ranges. If unsure, you can fill in 0.0.0.0/0 (ipv4) or ::/0 (ipv6) [insecure]." +msgstr "如果使用 Frp,請填寫 Frp IP 地址(例如 127.0.0.1)。如果使用 CDN,請填寫 CDN IP 範圍。如果不確定,可以填寫 0.0.0.0/0(ipv4)或 ::/0(ipv6)[不安全]。" #: src/views/website/EditModal.vue:2055 msgid "Enable" @@ -12564,8 +13771,7 @@ msgid "User Credentials" msgstr "使用者憑據" #: src/views/website/EditModal.vue:2109 -msgid "" -"Visitors will need to enter a username and password to access this website." +msgid "Visitors will need to enter a username and password to access this website." msgstr "訪客需要輸入使用者名稱和密碼才能存取此網站。" #: src/views/website/EditModal.vue:2117 @@ -12596,11 +13802,13 @@ msgstr "沒有自定義配置" msgid "Add Custom Config" msgstr "新增自訂設定" -#: src/views/website/EditModal.vue:2189 src/views/website/EditModal.vue:2205 +#: src/views/website/EditModal.vue:2189 +#: src/views/website/EditModal.vue:2205 msgid "All logs can be viewed by downloading the file" msgstr "所有日誌可透過下載檔案檢視" -#: src/views/website/EditModal.vue:2191 src/views/website/EditModal.vue:2207 +#: src/views/website/EditModal.vue:2191 +#: src/views/website/EditModal.vue:2207 msgid "view" msgstr "查看" @@ -12621,11 +13829,8 @@ msgid "Select DNS Provider" msgstr "選擇 DNS 提供商" #: src/views/website/EditModal.vue:2274 -msgid "" -"Your website contains wildcard domains (e.g. *.example.com), which require " -"DNS verification to issue certificates." -msgstr "" -"您網站包含萬用字元域名(例如 *.example.com),這需要 DNS 驗證才能簽發憑證。" +msgid "Your website contains wildcard domains (e.g. *.example.com), which require DNS verification to issue certificates." +msgstr "您網站包含萬用字元域名(例如 *.example.com),這需要 DNS 驗證才能簽發憑證。" #: src/views/website/IndexView.vue:29 msgid "Stats" @@ -12676,9 +13881,7 @@ msgid "Delete local database with the same name" msgstr "刪除同名的本機資料庫" #: src/views/website/ListView.vue:415 -msgid "" -"This will delete the website directory but not the database with the same " -"name. Are you sure you want to delete the selected websites?" +msgid "This will delete the website directory but not the database with the same name. Are you sure you want to delete the selected websites?" msgstr "這將刪除網站目錄,但不會刪除同名的資料庫。您確定要刪除所選網站嗎?" #: src/views/website/SettingView.vue:81 @@ -12697,33 +13900,25 @@ msgstr "停止頁面" msgid "404 Page" msgstr "404 頁面" -#: src/views/website/SettingView.vue:144 src/views/website/SettingView.vue:154 +#: src/views/website/SettingView.vue:144 +#: src/views/website/SettingView.vue:154 msgid "Default Site" msgstr "預設網站" #: src/views/website/SettingView.vue:148 -msgid "" -"The default site handles requests that do not match any website domain, such " -"as direct access via IP address. By default, the panel built-in page is " -"displayed." -msgstr "" -"預設站點處理未符合任何網站網域的請求(如透過 IP 直接存取),預設顯示面板內建" -"頁面。" +msgid "The default site handles requests that do not match any website domain, such as direct access via IP address. By default, the panel built-in page is displayed." +msgstr "預設站點處理未符合任何網站網域的請求(如透過 IP 直接存取),預設顯示面板內建頁面。" #: src/views/website/SettingView.vue:168 msgid "Default Settings" msgstr "預設設定" #: src/views/website/SettingView.vue:172 -msgid "" -"Modifying the default TLS version will affect all newly created websites. " -"Existing websites will not be affected." +msgid "Modifying the default TLS version will affect all newly created websites. Existing websites will not be affected." msgstr "修改預設 TLS 版本將影響所有新建立的網站。現有網站不受影響。" #: src/views/website/SettingView.vue:179 -msgid "" -"Please adjust the settings carefully, improper configuration may lead to " -"website inaccessible." +msgid "Please adjust the settings carefully, improper configuration may lead to website inaccessible." msgstr "請謹慎調整設定,設定不當可能導致網站無法存取。" #: src/views/website/SettingView.vue:185 @@ -12735,8 +13930,7 @@ msgid "Listen IPv6" msgstr "監聽 IPv6" #: src/views/website/SettingView.vue:202 -msgid "" -"When enabled, new websites will listen on IPv6 for all configured ports." +msgid "When enabled, new websites will listen on IPv6 for all configured ports." msgstr "啟用後,新建網站將在所有已配置連接埠上監聽 IPv6。" #: src/views/website/SettingView.vue:220 @@ -12744,9 +13938,7 @@ msgid "Statistics" msgstr "統計" #: src/views/website/SettingView.vue:224 -msgid "" -"Modifications to the limits below will take effect after restarting the " -"panel." +msgid "Modifications to the limits below will take effect after restarting the panel." msgstr "下面的限制修改將在重啟面板後生效。" #: src/views/website/SettingView.vue:230 @@ -12785,7 +13977,8 @@ msgstr "操作系統" #: src/views/website/stats/ClientsTab.vue:95 #: src/views/website/stats/GeoTab.vue:108 #: src/views/website/stats/GeoTab.vue:165 -#: src/views/website/stats/GeoTab.vue:218 src/views/website/stats/IPsTab.vue:91 +#: src/views/website/stats/GeoTab.vue:218 +#: src/views/website/stats/IPsTab.vue:91 #: src/views/website/stats/IPsTab.vue:134 #: src/views/website/stats/OverviewTab.vue:141 #: src/views/website/stats/SitesTab.vue:53 @@ -12809,13 +14002,15 @@ msgstr "沒有請求體" msgid "Site" msgstr "站點" -#: src/views/website/stats/GeoTab.vue:92 src/views/website/stats/GeoTab.vue:247 +#: src/views/website/stats/GeoTab.vue:92 +#: src/views/website/stats/GeoTab.vue:247 msgid "Country" msgstr "國家" #: src/views/website/stats/GeoTab.vue:113 #: src/views/website/stats/GeoTab.vue:165 -#: src/views/website/stats/GeoTab.vue:218 src/views/website/stats/IPsTab.vue:91 +#: src/views/website/stats/GeoTab.vue:218 +#: src/views/website/stats/IPsTab.vue:91 #: src/views/website/stats/IPsTab.vue:139 #: src/views/website/stats/OverviewTab.vue:140 #: src/views/website/stats/SlowURIsTab.vue:76 @@ -12838,12 +14033,14 @@ msgstr "ISP 分佈" #: src/views/website/stats/OverviewTab.vue:142 #: src/views/website/stats/SitesTab.vue:57 #: src/views/website/stats/SlowURIsTab.vue:81 -#: src/views/website/stats/URIsTab.vue:59 src/views/website/StatsView.vue:221 +#: src/views/website/stats/URIsTab.vue:59 +#: src/views/website/StatsView.vue:221 msgid "Errors" msgstr "錯誤" #: src/views/website/stats/OverviewTab.vue:143 -#: src/views/website/stats/SitesTab.vue:59 src/views/website/StatsView.vue:200 +#: src/views/website/stats/SitesTab.vue:59 +#: src/views/website/StatsView.vue:200 msgid "Spiders" msgstr "蜘蛛" @@ -12919,3 +14116,4 @@ msgstr "URIs" #: src/views/website/StatsView.vue:218 msgid "Slow Requests" msgstr "慢請求" +