· 修复了一些已知问题

· 增加了局域网DHCP IP分配适配
· 完善了多盘兼容支持 #17
This commit is contained in:
MengMengCode
2026-07-18 19:44:32 +08:00
parent 3dabd93d2f
commit ebba97f1d6
34 changed files with 3309 additions and 417 deletions
+176
View File
@@ -392,6 +392,23 @@ const exact: Record<string, string> = {
'暂未获取到宿主机信息': 'No host information available',
'面板资源状态与容器概览': 'Panel resource status and container overview',
'宿主机资源状态与容器概览': 'Host resource status and container overview',
'存储管理': 'Storage Management',
'只显示已挂载磁盘;勾选后,对应功能可以选择该磁盘保存数据。': 'Only mounted disks are shown. Enable a content type to make that disk available to the corresponding feature.',
'空间分布': 'Space Distribution',
'用于存储': 'Storage Usage',
'未检测到已挂载磁盘': 'No mounted disks detected',
'镜像缓存': 'Image Cache',
'备份': 'Backups',
'默认盘': 'Default Disk',
'设为': 'Set as',
'CLICD 其他': 'Other CLICD Data',
'非 CLICD': 'Non-CLICD Data',
'可用空间': 'Free Space',
'存储配置已保存': 'Storage settings saved',
'保存存储配置失败': 'Failed to save storage settings',
'任务队列、账号、安全证书与访问记录': 'Task queue, account, certificates, and access records',
'设置分类': 'Settings categories',
'WebSSH 访问': 'WebSSH Access',
'账号设置': 'Account Settings',
'当前用户名': 'Current Username',
'新用户名,留空则不修改': 'New Username, leave blank to keep unchanged',
@@ -401,6 +418,12 @@ const exact: Record<string, string> = {
'至少 6 位': 'At least 6 characters',
'输入当前密码以确认修改': 'Enter current password to confirm changes',
'保存修改': 'Save Changes',
'总并发上限': 'Total Concurrency Limit',
'减少并发': 'Decrease concurrency',
'增加并发': 'Increase concurrency',
'保存队列设置': 'Save Queue Settings',
'任务队列并发设置已保存并立即生效': 'Task queue concurrency saved and applied immediately',
'任务队列设置保存失败': 'Failed to save task queue settings',
'SSL 证书': 'SSL Certificate',
'启用 HTTPS / WSS': 'Enable HTTPS / WSS',
'IP / 域名': 'IP / Domain',
@@ -761,6 +784,31 @@ const exact: Record<string, string> = {
'初始化失败': 'Initialization failed',
'初始化完成': 'Initialization complete',
'排队等待': 'Queued',
'当前阶段': 'Current Stage',
'准备初始化环境': 'Preparing initialization environment',
'检查模板与创建参数': 'Checking template and creation settings',
'下载模板并创建基础文件系统': 'Downloading template and creating root filesystem',
'复制容器数据到存储磁盘': 'Copying container data to storage disk',
'创建容量限制磁盘并复制 rootfs': 'Creating quota disk and copying rootfs',
'配置 CPU、内存与网络限制': 'Configuring CPU, memory, and network limits',
'分配 IPv4、IPv6 与 NAT 端口': 'Allocating IPv4, IPv6, and NAT ports',
'保存容器配置': 'Saving container configuration',
'写入容器网络配置': 'Writing container network configuration',
'安装并配置 SSH 服务': 'Installing and configuring SSH',
'转换非特权容器文件权限': 'Converting unprivileged container permissions',
'设置容器登录凭据': 'Setting container login credentials',
'启动容器并等待网络就绪': 'Starting container and waiting for network',
'启动虚拟机并等待网络就绪': 'Starting VM and waiting for network',
'检查 KVM 镜像与创建参数': 'Checking KVM image and creation settings',
'选择虚拟机存储磁盘': 'Selecting VM storage disk',
'分配 IPv4 与 IPv6 地址': 'Allocating IPv4 and IPv6 addresses',
'创建 Windows 虚拟磁盘': 'Creating Windows virtual disk',
'生成 Windows 自动应答配置': 'Generating Windows unattended setup',
'创建 KVM 系统磁盘': 'Creating KVM system disk',
'生成 cloud-init 初始化配置': 'Generating cloud-init configuration',
'注册 KVM 虚拟机': 'Registering KVM virtual machine',
'分配并配置 NAT 端口': 'Allocating and configuring NAT ports',
'保存虚拟机配置': 'Saving virtual machine configuration',
'处理中': 'Processing',
'未知系统': 'Unknown system',
'处理失败': 'Failed',
@@ -886,6 +934,132 @@ const exact: Record<string, string> = {
'生成新密码': 'Generate new password',
'自定义密码': 'Custom password',
'生成密码': 'Generate password',
'不限速': 'Unlimited',
'下': 'Down',
'不限': 'Unlimited',
'/ 上': '/ Up',
'请选择登录方式': 'Select a login method',
'未检测到可分配公网 IPv4': 'No allocatable public IPv4 detected',
'使用': 'Use',
'正在检测 IPv6 前缀...': 'Checking IPv6 prefixes...',
'公网 NAT': 'Public NAT',
'不分配 NAT 端口': 'Do not assign NAT ports',
'未检测到可分配 IPv6 前缀;宿主机只有 /128 单个 IPv6 地址,不能分配给容器。': 'No allocatable IPv6 prefix was detected. The host only has a single /128 IPv6 address, which cannot be assigned to containers.',
'宿主机检测到 IPv6 前缀,但 IPv6 出站连通性测试失败。': 'The host detected an IPv6 prefix, but the outbound IPv6 connectivity test failed.',
'个可分配地址': 'allocatable addresses',
'将分配': 'Will assign',
'请勾选任意一个可用网络': 'Select at least one available network',
'局域网 IPv4 配置有误': 'Invalid LAN IPv4 configuration',
'请填写有效的 IPv4 地址、子网掩码和网关': 'Enter a valid IPv4 address, subnet mask, and gateway',
'未配置存储': 'Storage not configured',
'请先在存储管理中为': 'In Storage Management, enable storage for',
'开启至少一块存储磁盘': 'Enable at least one storage disk',
'登录方式有误': 'Invalid login method',
'至': 'to',
'当前宿主机不支持 KVM': 'The current host does not support KVM',
'系统镜像,请先在「镜像管理」中下载镜像模板。': 'system images available. Download an image template from Images first.',
'存储磁盘': 'Storage Disk',
'自动选择(默认盘优先,空间不足自动切换)': 'Automatic selection (prefer default disk and switch when space is insufficient)',
'尚未开启': 'Not enabled',
'存储,当前无法创建。': 'storage is not enabled, so creation is currently unavailable.',
'去开启': 'Configure Now',
'默认勾选当前系统;取消后,子用户也不能重装该系统。': 'The current system is selected by default. Clearing it also prevents sub-users from reinstalling that system.',
'局域网 DHCP': 'LAN DHCP',
'macvlan 独立局域网 IP': 'Independent LAN IP via macvlan',
'未检测到可用上联网卡': 'No available uplink interface detected',
'DHCP 自动获取': 'Obtain automatically via DHCP',
'子网掩码': 'Subnet Mask',
'不选则长期有效': 'Leave blank for no expiration',
'均': 'Avg',
'/ 峰': '/ Peak',
'到期': 'Expires',
'未分配': 'Unassigned',
'下行': 'Download',
'上行': 'Upload',
'修改公网 IP 分配': 'Change Public IP Assignment',
'尚未开启快照存储,无法新建或启用定时快照。': 'Snapshot storage is not enabled. New and scheduled snapshots are unavailable.',
'新建快照存储磁盘': 'Storage Disk for New Snapshots',
'仅影响手动新建快照;定时快照使用默认磁盘。': 'Only affects manually created snapshots. Scheduled snapshots use the default disk.',
'在': 'at',
'IPv4 规则覆盖': 'IPv4 rules cover',
'独立公网 IPv4': 'independent public IPv4',
'公网 IP 分配': 'Public IP Assignment',
'修改后会重放端口映射、SNAT 和防火墙规则。': 'Changing assignments reapplies port mappings, SNAT, and firewall rules.',
'随机数量': 'Random Count',
'没有可选择的公网 IPv4,请先到路由管理配置 IPv4 池。': 'No public IPv4 addresses are available. Configure the IPv4 pool in Routing first.',
'独立 IPv6': 'Independent IPv6',
'自定义地址必须落在路由管理配置的 IPv6 前缀内。': 'Custom addresses must be within an IPv6 prefix configured in Routing.',
'未分配 IPv4 NAT 端口配额': 'No IPv4 NAT port quota assigned',
'已达到管理员分配的 IPv4 NAT 端口配额': 'The administrator-assigned IPv4 NAT port quota has been reached',
'不分配': 'Do Not Assign',
'随机分配': 'Random Allocation',
'自定义': 'Custom',
'SSH Key 格式不正确': 'Invalid SSH key format',
'公网 IP 分配失败': 'Public IP assignment failed',
'请检查地址是否可用或已被占用': 'Check whether the address is available or already in use',
'未分配 IPv4 NAT': 'IPv4 NAT not assigned',
'该容器未分配 IPv4 NAT 端口配额。': 'This container has no IPv4 NAT port quota.',
'未配置快照存储': 'Snapshot storage not configured',
'请先在存储管理中为快照开启至少一块存储磁盘。': 'Enable at least one snapshot storage disk in Storage Management first.',
'个月': 'months',
'个任务': 'tasks',
'剩余': 'Remaining',
'磨损': 'Wear',
'启停': 'Power Cycles',
'线程': 'threads',
'块硬盘': 'disks',
'个进程': 'processes',
'虚拟': 'Virtual',
'尚未开启镜像缓存存储,无法下载新镜像。': 'Image cache storage is not enabled, so new images cannot be downloaded.',
'请先在存储管理中开启镜像缓存存储': 'Enable image cache storage in Storage Management first',
'正在检查存储配置...': 'Checking storage configuration...',
'池内': 'In Pool',
'范围': 'Range',
'条映射': 'mappings',
'模式': 'Mode',
'NAT4、公网 IPv4 池和 IPv6 地址分配': 'NAT4, public IPv4 pool, and IPv6 address assignment',
'编辑 NAT4 范围': 'Edit NAT4 Range',
'起始端口': 'Start Port',
'结束端口': 'End Port',
'NAT4 范围必须是 1-65535,且起始端口不能大于结束端口': 'The NAT4 range must be within 1-65535, and the start port cannot exceed the end port',
'保存 NAT4 范围失败': 'Failed to save NAT4 range',
'剩余 / 总数': 'Remaining / Total',
'由局域网 DHCP 分配': 'Assigned by LAN DHCP',
'局域网 DHCP 分配': 'LAN DHCP Assignments',
'暂无局域网 DHCP 分配': 'No LAN DHCP assignments',
'公网 IPv4 池': 'Public IPv4 Pool',
'编辑 IP 池': 'Edit IP Pool',
'暂未配置公网 IPv4 池': 'No public IPv4 pool configured',
'掩码': 'Mask',
'分配给': 'Assigned To',
'空闲': 'Free',
'编辑 IPv4 池': 'Edit IPv4 Pool',
'IPv4 网关不能为空': 'IPv4 gateway is required',
'IPv4 地址不能为空': 'IPv4 address is required',
'保存 IPv4 池失败': 'Failed to save IPv4 pool',
'打开容器': 'Open Container',
'IPv4 池内暂无地址': 'No addresses in the IPv4 pool',
'添加 IPv4': 'Add IPv4',
'检测到的 IPv6 前缀': 'Detected IPv6 Prefixes',
'暂无 IPv6 前缀': 'No IPv6 prefixes',
'IPv6 网卡不能为空': 'IPv6 interface is required',
'本机': 'Local',
'暂无 IPv4 NAT 映射': 'No IPv4 NAT mappings',
'运行时名称': 'Runtime Name',
'客户机 IPv4': 'Guest IPv4',
'宿主 IPv4': 'Host IPv4',
'宿主端口': 'Host Port',
'客户机端口': 'Guest Port',
'大量': 'Large',
'的快照吗?此操作不可恢复。': ' snapshot? This action cannot be undone.',
'· 默认勾选当前系统,取消后将禁止重装该系统': ' · the current system is selected by default; clearing it prevents reinstalling that system',
'暂无已下载并启用的镜像': 'No downloaded and enabled images',
'已选择': 'Selected',
'加载失败': 'Loading failed',
'请填写 SSH 公钥': 'Enter an SSH public key',
'SSH 公钥长度不能超过 8192 字符': 'The SSH public key cannot exceed 8192 characters',
'SSH 公钥只能填写一行': 'The SSH public key must be on one line',
'SSH 公钥格式不正确': 'Invalid SSH public key format',
}
const artifactPatterns: RegExp[] = [
@@ -939,6 +1113,7 @@ const replacements: Array<[RegExp, string]> = [
[/告警列表\s*\((\d+)\)/g, 'Alert List ($1)'],
[/共\s*(\d+)\s*个\s*Container/g, 'Total $1 containers'],
[/共\s*(\d+)\s*个\s*容器/g, 'Total $1 containers'],
[/共\s*(\d+)\s*个\s*任务/g, 'Total $1 tasks'],
[/(\d+)\s*个前缀,(\d+)\s*个地址已分配/g, '$1 prefixes, $2 addresses assigned'],
[/共\s*(\d+)\s*条/g, 'Total $1'],
[/共\s*(\d+)\s*个/g, 'Total $1 items'],
@@ -988,6 +1163,7 @@ const replacements: Array<[RegExp, string]> = [
[/^(.+?)\s*-\s*登录日志$/g, '$1 - Login Logs'],
[/^(.+?)。下次登录生效$/g, '$1. Takes effect at next login'],
[/阶段:(.+)$/g, 'Stage: $1'],
[/正在初始化:(.+)$/g, 'Initializing: $1'],
[/\$\{days\}天/g, '${days} days'],
[/\$\{hours\}小时/g, '${hours} hours'],
[/\$\{hours\}\s*小时/g, '${hours} hours'],