Files
One-KVM/web/src/i18n/zh-CN.ts

1137 lines
47 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export default {
common: {
loading: '加载中...',
save: '保存',
cancel: '取消',
confirm: '确认',
delete: '删除',
upload: '上传',
download: '下载',
refresh: '刷新',
close: '关闭',
success: '成功',
error: '错误',
warning: '警告',
info: '信息',
yes: '是',
no: '否',
on: '开',
off: '关',
enabled: '已启用',
later: '稍后',
restartNow: '立即重启',
disabled: '已禁用',
connected: '已连接',
disconnected: '已断开',
connecting: '连接中...',
disconnecting: '断开中...',
unknown: '未知',
back: '上一步',
next: '下一步',
apply: '应用',
menu: '菜单',
optional: '可选',
recommended: '推荐',
notSupportedYet: '(尚未支持)',
create: '创建',
creating: '创建中...',
deleting: '删除中...',
more: '更多',
collapse: '收起',
expand: '展开',
toggleTheme: '切换主题',
toggleLanguage: '切换语言',
retry: '重试',
},
toast: {
closeNotification: '关闭通知',
notificationsRegion: '通知',
},
api: {
operationFailed: '操作失败',
operationFailedDesc: '操作失败',
parseResponseFailed: '解析响应失败',
networkError: '网络错误',
networkErrorDesc: '无法连接到服务器,请检查网络连接。',
},
nav: {
console: '控制台',
msd: '虚拟媒体',
settings: '设置',
logout: '退出登录',
},
auth: {
login: '登录',
logout: '退出登录',
username: '用户名',
password: '密码',
enterUsername: '请输入用户名',
enterPassword: '请输入密码',
loginFailed: '登录失败',
invalidPassword: '用户名或密码错误',
systemNotInitialized: '系统尚未初始化,请先完成向导设置。',
changePassword: '修改密码',
currentPassword: '当前密码',
currentPasswordPlaceholder: '请输入当前密码',
newPassword: '新密码',
newPasswordPlaceholder: '请输入新密码',
confirmPassword: '确认密码',
confirmPasswordPlaceholder: '请再次输入新密码',
passwordRequired: '请填写所有密码字段',
passwordMismatch: '两次输入的密码不一致',
passwordTooShort: '密码至少需要4个字符',
passwordChanged: '密码修改成功',
userNotFound: '用户不存在',
sessionExpired: '会话已过期',
loggedInElsewhere: '已在别处登录',
forgotPassword: '忘记密码',
forgotPasswordHint:
'忘记密码?在运行本服务的设备上打开终端,执行 one-kvm user set-password按提示输入并确认新密码即可重置。',
},
status: {
connected: '已连接',
connecting: '连接中',
disconnected: '已断开',
error: '错误',
},
actionbar: {
paste: '粘贴文本',
virtualMedia: '虚拟媒体',
virtualMediaTip: '管理虚拟媒体设备',
power: '电源',
keyboard: '虚拟键盘',
keyboardTip: '显示虚拟键盘',
mouseAbsolute: '绝对鼠标',
mouseRelative: '相对鼠标',
mouseAbsoluteTip: '绝对定位模式 - 直接映射屏幕坐标',
mouseRelativeTip: '相对定位模式 - 发送鼠标移动增量',
extension: '扩展',
extensionTip: '扩展功能',
stats: '连接统计',
statsTip: '查看连接状态',
settings: '设置',
settingsTip: '系统设置',
fullscreen: '全屏',
fullscreenTip: '切换全屏模式',
videoConfig: '视频配置',
streamSettings: '流设置',
deviceSettings: '设备配置',
videoMode: '视频模式',
selectMode: '选择模式...',
h264Hint: 'H.264 模式需要 WebRTC 支持,延迟更低',
webrtcHint: 'WebRTC 模式延迟更低,需要浏览器支持',
videoDevice: '视频设备',
videoFormat: '视频格式',
videoResolution: '分辨率',
videoFps: '帧率',
selectDevice: '选择设备...',
selectFormat: '选择格式...',
selectResolution: '选择分辨率...',
selectFps: '选择帧率...',
bitratePreset: '码率',
bitrateSpeed: '速度优先',
bitrateSpeedDesc: '1 Mbps - 最低延迟',
bitrateBalanced: '均衡',
bitrateBalancedDesc: '4 Mbps - 推荐',
bitrateQuality: '质量优先',
bitrateQualityDesc: '8 Mbps - 最佳画质',
browserUnsupported: '浏览器不支持',
encoder: '编码器',
changeEncoderBackend: '更改编码器后端...',
backendSoftware: '软件编码',
backendAuto: '自动',
recommended: '推荐',
notRecommended: '不推荐',
multiSourceCodecLocked: '{sources} 已启用,当前编码已锁定',
multiSourceVideoParamsWarning: '{sources} 已启用,修改视频设备和输入参数将导致流中断',
hidConfig: '鼠键配置',
mouseSettings: '鼠标设置',
hidDeviceSettings: 'HID 设备设置',
positioningMode: '定位模式',
sendInterval: '发送间隔',
showCursor: '显示指针',
backend: '后端类型',
devicePath: '设备路径',
baudrate: '波特率',
absolute: '绝对定位',
relative: '相对定位',
applying: '应用中...',
audioConfig: '音频',
playbackControl: '播放控制',
volume: '音量',
mute: '静音',
audioDeviceSettings: '设备配置',
audioEnabled: '启用音频',
audioDevice: '音频设备',
audioQuality: '音频质量',
qualityVoice: '语音',
qualityBalanced: '均衡',
qualityHigh: '高品质',
selectAudioDevice: '选择设备...',
},
infobar: {
keys: '按键',
pointer: '指针',
caps: 'Caps',
num: 'Num',
scroll: 'Scroll',
keyboardLedUnavailable: '键盘状态灯功能未开启或不支持',
},
paste: {
title: '粘贴文本',
description: '输入要发送到远程主机的文本,将以键盘输入方式发送',
label: '文本内容',
placeholder: '在此输入要粘贴的文本...',
hint: '按 Ctrl+Enter 快速发送',
confirm: '发送',
typing: '正在输入...',
escToCancel: '按 Esc 取消',
stop: '停止',
untypableWarning: '部分字符无法通过键盘输入',
untypableChars: '无法输入的字符: {chars}',
},
atx: {
title: '电源控制',
description: '控制远程主机的电源状态',
powerState: '电源状态',
stateOn: '已开机',
stateOff: '已关机',
stateUnknown: '未知',
shortPress: '短按电源',
longPress: '长按电源 (强制关机)',
reset: '重启',
confirmShortTitle: '确认短按电源',
confirmShortDesc: '这将模拟按下电源按钮,与物理短按电源键效果相同。',
confirmLongTitle: '确认强制关机',
confirmLongDesc: '这将强制关闭主机,可能导致数据丢失。确定继续吗?',
confirmResetTitle: '确认重启',
confirmResetDesc: '这将重启主机,可能导致未保存的数据丢失。确定继续吗?',
wol: '网络唤醒',
wolDescription: '发送 Wake-on-LAN 魔术包以远程开机。',
macAddress: 'MAC 地址',
invalidMac: 'MAC 地址格式无效',
recentMac: '最近使用',
send: '发送',
wolSent: 'WOL 唤醒包已发送',
wolFailed: 'WOL 发送失败',
},
setup: {
title: '初始化设置',
welcome: '欢迎使用 One-KVM',
description: '请完成初始设置以开始使用',
stepAccount: '账号设置',
stepVideo: '视频设置',
stepAudioVideo: '音视频设置',
stepHid: '鼠键设置',
setUsername: '设置管理员用户名',
usernameHint: '用户名至少2个字符',
setPassword: '设置管理员密码',
passwordHint: '密码至少4个字符',
confirmPassword: '确认密码',
passwordMismatch: '两次输入的密码不一致',
videoDevice: '视频设备',
selectVideoDevice: '选择视频采集设备',
videoFormat: '画面格式',
selectFormat: '选择画面格式',
resolution: '分辨率',
selectResolution: '选择分辨率',
fps: '帧率',
selectFps: '选择帧率',
noVideoDevices: '未检测到视频设备',
noSignalDetected: '未检测到 HDMI 信号,请连接 HDMI 线缆后刷新。',
refreshDevices: '刷新设备',
audioDevice: '音频设备',
selectAudioDevice: '选择音频采集设备',
noAudio: '不使用音频',
noAudioDevices: '未检测到音频设备',
audioDeviceHelp: '选择用于捕获远程主机音频的设备。通常与视频采集卡在同一 USB 设备上。',
hidBackend: 'HID 后端',
selectHidBackend: '选择 HID 控制方式',
serialHid: '串口 HID',
disableHid: '禁用',
serialPort: '串口设备',
selectSerialPort: '选择串口设备',
noSerialDevices: '未检测到串口设备',
baudRate: '波特率',
udc: 'USB 设备控制器',
selectUdc: '选择 UDC',
noUdcDevices: '未检测到 UDC 设备',
hidDisabledHint: '禁用 HID 后将无法控制远程主机的键盘和鼠标',
complete: '完成设置',
setupFailed: '设置失败',
advancedEncoder: '高级选项:编码器后端',
encoderHint: '默认的"自动"选项适用于大多数情况。仅在需要特定编码器后端时更改。',
autoRecommended: '自动(推荐)',
hardware: '硬件',
software: '软件',
progress: '步骤 {current} / {total}',
ch9329Help: 'CH9329 是一款串口转 HID 芯片,通过串口连接到主机。适用于大多数硬件配置。',
otgHelp: 'USB OTG 模式通过 USB 设备控制器直接模拟 HID 设备。需要硬件支持 USB OTG 功能。',
otgLowEndpointHint: '检测到低端点 UDC将自动禁用多媒体键盘。',
videoDeviceHelp: '选择用于捕获远程主机画面的视频采集设备。通常是 HDMI 采集卡。',
videoFormatHelp: 'MJPEG 格式兼容性最好H.264/H.265 带宽占用更低但需要编码支持。',
stepExtensions: '扩展设置',
extensionsDescription: '选择要自动启动的扩展服务',
ttydTitle: 'Web 终端 (ttyd)',
ttydDescription: '在浏览器中访问设备的命令行终端',
ttydWindowsUnsupportedDescription: 'Windows 平台暂不支持 ttyd Web 终端,此扩展不会启用。',
extensionsHint: '这些设置可以在设置页面中随时更改',
notInstalled: '未安装',
notSupportedOnWindows: 'Windows 不支持',
passwordStrength: '密码强度',
passwordWeak: '弱',
passwordMedium: '中',
passwordStrong: '强',
passwordVeryStrong: '很强',
},
console: {
title: '远程控制台',
videoAlt: 'KVM 视频',
videoMode: '视频模式',
mjpeg: 'MJPEG',
webrtc: 'WebRTC',
fullscreen: '全屏',
exitFullscreen: '退出全屏',
screenshot: '截图',
reconnect: '刷新网页',
noVideo: '无视频信号',
connecting: '正在连接...',
streamOffline: '视频流离线',
connectionFailed: '连接失败',
connectionFailedDesc: '无法连接到视频流,请刷新网页或检查设备状态',
videoRestarting: '视频流正在重启',
deviceSwitching: '正在切换视频设备...',
configChanging: '正在应用新配置...',
videoRestarted: '视频流已更新',
streamError: '视频流错误',
// 四档视频状态(对应后端 StreamStateChangedstreaming / no_signal /
// device_lost / device_busy. `reason` 子键可选,用于在副文案中补充细节。
signal: {
noSignal: {
title: '暂无视频信号',
detail: '采集卡已就绪,正在等待被控机画面',
},
deviceLost: {
title: '视频设备已断开',
detail: '采集卡离线,正在尝试重新识别…',
},
audioDeviceLost: {
title: '音频设备已断开',
detail: '正在尝试重新连接音频采集设备…',
},
deviceBusy: {
title: '视频通道忙',
detail: '正在切换配置或被其他组件占用,请稍候…',
},
uvc_usb_error: {
title: 'USB 采集传输异常',
detail: 'USB 采集卡遇到协议错误EPROTO可在 设置 → 环境 → USB 设备 中尝试复位。',
},
uvc_capture_stall: {
title: 'UVC 采集超时',
detail: '检查设备连接,若设备已连接,可尝试修改采集格式并复位设备。',
},
reason: {
no_cable: '未检测到 HDMI 线缆,请检查连接或被控机是否已开机',
no_sync: '信号不稳定,无法锁定时序,可尝试降低被控机分辨率/刷新率',
out_of_range: '分辨率或刷新率超出采集卡能力,建议切换到 1080p60 以内',
no_signal: '采集卡已就绪,正在等待画面…',
recovering: '正在自动重连视频设备',
device_lost: '视频节点丢失,等待驱动恢复',
config_changing: '正在应用新配置',
mode_switching: '正在切换视频模式',
audio_device_lost: '音频采集不可用,正在自动恢复',
audio_reconnecting: '正在重试连接音频设备',
uvc_usb_error:
'可尝试更换 USB 口或线、避免 HUB、或重新插拔设备也可在 设置 → 环境 → USB 设备 中复位。',
uvc_capture_stall: '',
},
},
webrtcConnected: 'WebRTC 已连接',
webrtcConnectedDesc: '正在使用 H.264 低延迟视频流',
webrtcFailed: 'WebRTC 连接失败',
fallingBackToMjpeg: '自动切换到 MJPEG 模式',
webrtcPhaseIceServers: '正在加载 ICE 服务器...',
webrtcPhaseCreatePeer: '正在创建点对点连接...',
webrtcPhaseCreateChannel: '正在创建数据通道...',
webrtcPhaseCreateOffer: '正在创建本地会话描述...',
webrtcPhaseWaitAnswer: '正在等待远端应答...',
webrtcPhaseSetRemote: '正在应用远端会话描述...',
webrtcPhaseApplyIce: '正在应用 ICE 候选...',
webrtcPhaseNegotiating: '正在协商安全连接...',
mjpegPhaseWebsocket: '正在连接控制通道...',
mjpegPhaseStream: '正在请求视频流...',
mjpegPhaseFirstFrame: '正在等待首帧...',
stepProgress: '第 {current}/{total} 步',
pointerLocked: '鼠标已锁定',
pointerLockedDesc: '按 Escape 键释放鼠标',
pointerLockFailed: '鼠标锁定失败',
relativeModeHint: '相对鼠标模式',
relativeModeHintDesc: '点击视频区域以锁定鼠标,按 Escape 释放',
metaKeyHint: '检测到系统键',
metaKeyHintDesc: '请进入全屏模式以捕获 Win/Meta 键',
streamModeChanged: '视频模式已切换',
streamModeChangedDesc: '服务器已切换到 {mode} 模式',
deviceLost: '视频设备丢失',
deviceLostDesc: '{device}: {reason}',
deviceRecovering: '视频设备恢复中',
deviceRecoveringDesc: '正在尝试恢复视频设备(第 {attempt} 次)',
deviceRecovered: '视频设备已恢复',
deviceRecoveredDesc: '视频设备已成功重连',
pleaseWait: '请稍候...',
retryCount: '正在重试 (第 {count} 次)',
errorDetails: '错误详情',
},
hid: {
title: 'HID 控制',
keyboard: '键盘',
mouse: '鼠标',
reset: '重置 HID',
sendCtrlAltDel: '发送 Ctrl+Alt+Del',
pasteText: '粘贴文本',
absoluteMouse: '绝对定位',
relativeMouse: '相对定位',
deviceLost: 'HID 设备丢失',
deviceLostDesc: '{backend}: {reason}',
reconnecting: 'HID 重连中',
reconnectingDesc: '正在尝试重连(第 {attempt} 次)',
recovered: 'HID 已恢复',
recoveredDesc: '{backend} HID 设备已成功重连',
errorHints: {
udcNotConfigured: 'OTG 已就绪,等待被控机连接并完成 USB 枚举',
disabled: 'HID 后端已禁用',
hidDeviceMissing: '未找到 HID 设备节点,可尝试重启 HID 服务',
notOpened: 'HID 设备尚未打开,可尝试重启 HID 服务',
portNotFound: '找不到串口设备,请检查 CH9329 接线与设备路径',
noResponse: 'CH9329 无响应,请检查波特率与供电',
noResponseWithCmd: 'CH9329 无响应,请检查波特率与供电(命令 {cmd}',
invalidConfig: '串口参数无效,请检查设备路径与波特率配置',
protocolError: 'CH9329 返回了无效协议数据',
deviceDisconnected: 'HID 设备已断开,请检查线缆与接口',
ioError: '检测到 I/O 通信异常',
otgIoError: 'OTG 链路不稳定,请检查 USB 线和被控机接口',
ch9329IoError: 'CH9329 串口链路不稳定,请检查接线与供电',
serialError: '串口通信异常,请检查 CH9329 接线与配置',
initFailed: 'CH9329 初始化失败,请检查串口参数与供电',
shutdown: 'HID 后端已停止',
reconnecting: 'CH9329 正在重连,请稍后重试',
workerStopped: 'CH9329 后台通信已停止,请检查设备连接后重启 HID 服务或重新保存 HID 设置',
backendError: '{backend} HID 后端异常,请检查设备连接与配置',
},
},
audio: {
deviceLost: '音频设备丢失',
deviceLostDesc: '{device}: {reason}',
reconnecting: '音频重连中',
reconnectingDesc: '正在尝试重连(第 {attempt} 次)',
recovered: '音频已恢复',
recoveredDesc: '音频设备已成功重连',
},
msd: {
title: '虚拟媒体',
images: 'ISO/IMG 挂载',
imagesDesc: '将 ISO/IMG 镜像挂载到目标设备',
drive: '虚拟U盘',
driveDesc: '像U盘一样向目标设备传输文件支持 Ventoy 引导',
imageList: '镜像列表',
uploadImage: '上传镜像',
noImages: '暂无镜像',
connect: '连接',
disconnect: '断开',
connectedTo: '已连接至',
cdrom: 'CD-ROM',
flash: 'Flash',
storageMode: '存储模式',
accessMode: '访问模式',
readOnly: '只读',
readWrite: '读写',
fileList: '文件列表',
uploadFile: '上传文件',
createFolder: '新建文件夹',
driveNotInitialized: '虚拟驱动器未初始化',
initializeDrive: '初始化驱动器',
driveSize: '驱动器大小',
usedSpace: '已用',
freeSpace: '剩余',
deleteDrive: '删除驱动器',
confirmDeleteDrive: '确定要删除虚拟驱动器吗?所有文件将被清除。',
driveDeleted: '驱动器已删除',
systemAvailable: '系统可用',
emptyFolder: '空文件夹',
confirmDelete: '确定要删除 "{name}" 吗?',
folderName: '文件夹名称',
uploadImageHint: '点击上传 ISO/IMG 镜像',
imageMounted: '镜像 {name} 已挂载',
imageUnmounted: '镜像已卸载',
downloadFromUrl: '从 URL 下载',
downloadFromUrlDesc: '输入镜像文件的 URL 地址,支持 ISO/IMG 格式',
url: 'URL 地址',
filename: '文件名',
filenameAutoDetect: '自动从 URL 获取',
download: '下载',
downloadComplete: '下载完成',
downloadFailed: '下载失败',
largeFileWarning: '>2.2GB',
largeFileTooltip: '文件大于 2.2GB,请使用 Flash 模式挂载',
error: 'MSD 错误',
errorDesc: '{reason}',
recovered: 'MSD 已恢复',
recoveredDesc: 'MSD 设备已恢复正常',
operationInProgress: '操作进行中,请稍候',
driveConnected: '虚拟U盘已连接',
imageConnected: '镜像 {name} 已连接',
selectDriveSize: '选择虚拟驱动器大小',
selectedSize: '选定大小',
customSize: '自定义大小',
driveSizeHint: '输入自定义大小会覆盖上方选择 (64MB - 32GB)',
driveCreated: '虚拟驱动器已创建 ({size} MB)',
fileDeleted: '文件已删除',
imageDeleted: '镜像已删除',
},
settings: {
title: '系统设置',
sidebarSubtitle: '管理设备、网络与扩展',
basic: '基础',
general: '通用',
appearance: '外观',
account: '账户',
access: '访问',
video: '视频',
encoder: '编码器',
hid: 'HID',
msd: 'MSD',
atx: 'ATX',
environment: '环境',
network: '网络',
users: '用户',
hardware: '硬件',
system: '系统',
other: '其他',
extensions: '扩展',
configured: '已配置',
security: '安全',
about: '关于',
appearanceSubtitle: '自定义界面外观与显示语言',
accountSubtitle: '管理登录凭据与会话策略',
networkSubtitle: '配置 Web 服务端口、监听地址与 SSL 证书',
videoSubtitle: '配置采集设备、视频编码器与 WebRTC 信令服务器',
hidSubtitle: '配置键盘鼠标后端与 USB Gadget 描述符',
msdSubtitle: '管理虚拟存储设备 (MSD) 镜像目录',
atxSubtitle: '配置远程电源控制硬件与网络唤醒',
environmentSubtitle: '系统级运行环境与 USB 设备维护',
aboutSubtitle: '在线升级、版本信息与设备硬件概览',
extTtydSubtitle: '在浏览器中打开本机 Shell 终端',
extRustdeskSubtitle: '通过 RustDesk 实现远程图形访问',
extRtspSubtitle: '提供 RTSP 视频流以供其他客户端拉流',
extRemoteAccessSubtitle: '通过内网穿透服务实现远程访问',
extFrpcSubtitle: '通过 FRP 客户端实现内网穿透',
aboutDesc: '开放轻量的 IP-KVM 解决方案',
deviceInfo: '设备信息',
deviceInfoDesc: '主机系统信息',
hostname: '主机名',
cpuModel: '处理器 / 平台',
cpuUsage: 'CPU 利用率',
memoryUsage: '内存使用',
networkAddresses: '网络地址',
language: '语言',
theme: '主题',
lightMode: '浅色模式',
darkMode: '深色模式',
systemMode: '跟随系统',
changePassword: '修改密码',
currentPassword: '当前密码',
newPassword: '新密码',
usernameDesc: '修改控制台登录用户名',
passwordDesc: '修改控制台登录密码',
version: '版本',
buildInfo: '构建信息',
detectDevices: '探测设备',
detecting: '探测中...',
networkSettings: '网络设置',
msdSettings: 'MSD 设置',
atxSettings: 'ATX 设置',
httpSettings: 'HTTP 设置',
httpPort: 'HTTP 端口',
configureHttpPort: '配置 HTTP 服务器端口',
webServer: '访问地址',
webServerDesc: '配置 HTTP/HTTPS 端口和监听地址,修改后需要重启生效',
httpsPort: 'HTTPS 端口',
bindAddress: '绑定地址',
bindAddressDesc: '服务器监听的 IP 地址0.0.0.0 表示监听所有网络接口',
bindMode: '监听地址',
bindModeDesc: '选择 Web 服务监听哪些地址。',
bindModeAll: '所有地址',
bindModeLocal: '仅本地 (127.0.0.1)',
bindModeCustom: '自定义地址列表',
bindIpv6: '启用 IPv6',
bindAllDesc: '同时监听 ::(所有 IPv6 地址)。',
bindLocalDesc: '同时监听 ::1IPv6 本地回环)。',
bindAddressList: '地址列表',
bindAddressListDesc: '每行一个 IPIPv4 或 IPv6。',
addBindAddress: '添加地址',
bindAddressListEmpty: '请至少填写一个 IP 地址。',
httpsEnabled: '启用 HTTPS',
httpsEnabledDesc: '使用加密连接对外提供服务,未配置证书时自动生成自签名证书',
portConfig: '端口与协议',
portConfigDesc: '服务一次仅监听一个端口,由 HTTPS 开关决定生效端口',
redfishTitle: 'Redfish API',
redfishDesc: 'DMTF Redfish 标准管理接口',
redfishEnabled: '启用 Redfish API',
redfishEnabledDesc: '开启后可通过 /redfish/v1/ 访问标准 Redfish 管理接口',
httpPortReserved: 'HTTP 端口(备用)',
httpsPortReserved: 'HTTPS 端口(备用)',
portActive: '当前生效',
portReserved: '备用',
portReservedHint: '备用端口仅在切换协议后生效,可提前配置',
previewUrl: '访问地址预览',
copyUrl: '复制访问地址',
openInBrowser: '在浏览器中打开',
listenAddress: '监听地址',
listenAddressDesc: '配置 Web 服务监听哪些网络接口',
bindModeAllDesc: '0.0.0.0 — 监听所有网络接口',
bindModeLocalDesc: '127.0.0.1 — 仅允许本机访问',
bindModeCustomDesc: '指定一组 IP 地址',
effectiveAddresses: '生效监听地址',
sslCertificate: 'SSL 证书',
sslCertificateDesc: '上传自定义 PEM 证书替换自签名证书,保存后需重启服务生效',
sslCertCustom: '自定义证书',
sslCertSelfSigned: '自签名证书',
sslCertActive: '自定义证书已启用',
sslCertClear: '恢复自签名',
sslCertSave: '保存证书',
sslCertPem: '证书内容 (.crt / .pem)',
sslKeyPem: '私钥内容 (.key)',
sslCertPemPlaceholder: '-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----',
sslKeyPemPlaceholder: '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----',
sslCertSaved: '证书已保存,重启后生效',
sslCertCleared: '已恢复自签名证书,重启后生效',
restartRequired: '需要重启',
restartRequiredHint: '保存后将自动重启服务以应用新配置',
unsavedChangesHint: '点击右侧按钮保存当前配置',
restartMessage: 'Web 服务器配置已保存,需要重启程序才能生效。',
restarting: '正在重启...',
autoRestarting: '正在自动重启',
autoRestartingDesc: '配置已保存,服务恢复后将自动跳转到新地址...',
autoRestartingHttpsDesc: '服务即将重启,{sec} 秒后将显示跳转链接...',
autoRestartFailed: '自动重启超时,请手动刷新页面或检查服务状态。',
httpsManualRedirectTitle: '请点击下方链接前往新地址',
httpsManualRedirectDesc: 'HTTPS 自签名证书需要在浏览器中手动接受,点击链接后在安全警告页选择"继续访问"即可。',
onlineUpgrade: '在线升级',
onlineUpgradeDesc: '检查并升级 One-KVM',
updateChannel: '升级通道',
currentVersion: '当前版本',
latestVersion: '最新版本',
updateStatus: '升级状态',
updateStatusIdle: '空闲',
releaseNotes: '更新说明',
noUpdates: '当前通道暂无可升级新版本',
updateOverviewLoadFailed: '获取版本更新信息失败',
startUpgrade: '开始升级',
updatePhaseIdle: '空闲',
updatePhaseChecking: '检查中',
updatePhaseDownloading: '下载中',
updatePhaseVerifying: '校验中',
updatePhaseInstalling: '安装中',
updatePhaseRestarting: '重启中',
updatePhaseSuccess: '成功',
updatePhaseFailed: '失败',
updateMsgChecking: '检查更新中',
updateMsgDownloading: '下载中',
updateMsgVerifying: '校验中SHA256',
updateMsgInstalling: '替换程序中',
updateMsgRestarting: '服务重启中',
auth: '访问控制',
authSettings: '会话策略',
authSettingsDesc: '配置单用户登录与并发会话规则',
allowMultipleSessions: '允许多个 Web 会话并存',
allowMultipleSessionsDesc: '关闭后,新登录将自动踢出旧会话',
userManagement: '用户管理',
userManagementDesc: '管理用户账号和权限',
addUser: '添加用户',
editUser: '编辑用户',
deleteUser: '删除用户',
username: '用户名',
password: '密码',
role: '角色',
roleAdmin: '管理员',
roleUser: '普通用户',
loadingUsers: '加载用户中...',
noUsers: '暂无用户',
create: '创建',
confirmDeleteUser: '确定要删除用户 "{name}" 吗?',
msdStatus: 'MSD 状态',
atxStatus: 'ATX 状态',
available: '可用',
notAvailable: '不可用',
msdEnable: '启用 MSD',
msdEnableDesc: '启用后可以挂载 ISO 镜像和虚拟驱动器到目标机器',
msdCh9329Warning: '当前 HID 后端为 CH9329MSD 功能不可用',
msdCh9329WarningDesc: 'CH9329 为串口 HID 方案,不支持 USB Gadget 的 MSD 功能',
msdDir: 'MSD 目录',
msdDirDesc: 'MSD 根目录,内部包含 images/ 和 ventoy/ 两个子目录',
msdDirHint: '修改后会重建 MSD控制台容量统计以该目录为准',
willBeEnabledAfterSave: '保存后生效',
disabled: '已禁用',
msdDesc: '虚拟存储设备允许您将 ISO 镜像和虚拟驱动器挂载到目标机器。请在主页面的 MSD 面板中管理镜像。',
atxDesc: 'ATX 电源控制允许您远程开关机和重启目标机器。请在主页面的 ATX 面板中控制电源。',
atxSettingsDesc: '配置 ATX 电源控制硬件绑定',
atxEnable: '启用 ATX 控制',
atxEnableDesc: '启用后可以远程控制电源和重启按钮',
atxPowerButton: '电源按钮',
atxPowerButtonDesc: '用于开机(短按)和强制关机(长按)',
atxResetButton: '重启按钮',
atxResetButtonDesc: '用于重启目标机器',
atxDriver: '驱动类型',
atxDriverNone: '禁用',
atxDriverGpio: 'GPIO',
atxDriverUsbRelay: 'USB LCUS HID继电器',
atxDriverSerial: 'USB LCUS 串口继电器',
atxDevice: '设备',
atxPin: 'GPIO 引脚',
atxChannel: '继电器通道',
atxSharedSerialBaudHint: 'Power 与 Reset 使用同一串口继电器时,波特率由第一个配置统一控制',
atxActiveLevel: '有效电平',
atxLevelHigh: '高电平有效',
atxLevelLow: '低电平有效',
atxLedSensing: 'LED 状态检测',
atxLedSensingDesc: '检测主机电源 LED 以确定电源状态(可选)',
atxLedEnable: '启用 LED 检测',
atxLedEnableDesc: '通过 GPIO 读取电源 LED 状态',
atxLedChip: 'GPIO 芯片',
atxLedPin: 'GPIO 引脚',
atxLedInverted: '反转逻辑',
atxLedInvertedDesc: 'LED 亮起时 GPIO 为低电平',
atxWolSettings: '网络唤醒设置',
atxWolSettingsDesc: '配置 Wake-on-LAN 魔术包发送选项',
atxWolInterface: '网络接口',
atxWolInterfacePlaceholder: '例如: eth0, enp0s3',
atxWolInterfaceHint: '指定发送 WOL 包的网络接口,留空则使用系统默认路由',
themeDesc: '选择界面颜色方案',
languageDesc: '选择界面显示语言',
videoSettings: '视频采集',
videoSettingsDesc: '配置视频采集设备的格式、分辨率与帧率',
videoDevice: '视频设备',
selectDevice: '选择设备...',
videoFormat: '视频格式',
selectFormat: '选择格式...',
driver: '驱动',
resolution: '分辨率',
frameRate: '帧率',
encoderBackend: '视频编码器',
encoderBackendDesc: '选择 WebRTC 输出使用的视频编码器后端',
backend: '后端',
autoRecommended: '自动(推荐)',
software: '软件',
supportedFormats: '支持的编码格式',
encoderHint: '硬件编码器延迟和 CPU 占用比软件编码低,画质预设更好',
hidSettings: 'HID 设置',
hidSettingsDesc: '配置键盘和鼠标控制',
hidBackend: 'HID 后端',
serialDevice: '串口设备',
baudRate: '波特率',
ch9329Options: 'CH9329 选项',
ch9329OptionsDesc: '配置 CH9329 串口 HID 芯片的运行兼容性',
ch9329HybridMouse: 'Linux 绝对鼠标兼容模式',
ch9329HybridMouseDesc: '绝对移动仍使用绝对鼠标包,点击和滚轮改用相对鼠标包发送',
ch9329Descriptor: 'CH9329 USB 设备描述符',
ch9329DescriptorDesc: '先从 CH9329 芯片读取 USB 标识信息,读取成功后再修改',
ch9329DescriptorLoading: '正在读取 CH9329 描述符...',
ch9329DescriptorLoadFailed: '读取 CH9329 描述符失败',
ch9329ConfigModeUnavailable: 'CH9329 配置模式不可用。读取或写入芯片参数需要将 SET 拉低;当前显示上次保存的描述符。',
ch9329DescriptorReadRequired: '需要先成功读取 CH9329 描述符才能保存',
ch9329DescriptorWarning: '保存会写入 CH9329 参数;需要重新上电或重新插拔后才会变化',
ch9329StringLengthWarning: 'CH9329 字符串最长为 23 字节',
otgHidProfile: 'OTG HID 功能',
otgHidProfileDesc: '选择对目标主机暴露的 HID 功能',
otgEndpointBudget: '最大端点数量',
otgEndpointBudgetUnlimited: '无限制',
otgEndpointBudgetHint: '此为硬件限制。若超出硬件端点数量OTG 功能将无法使用。',
otgEndpointUsage: '当前端点占用:{used} / {limit}',
otgEndpointUsageUnlimited: '当前端点占用:{used} / 不限',
otgEndpointExceeded: '当前 OTG 组合需要 {used} 个端点,已超出上限 {limit}。',
otgFunctionKeyboard: '键盘',
otgFunctionKeyboardDesc: '标准 HID 键盘设备',
otgKeyboardLeds: '键盘状态灯',
otgKeyboardLedsDesc: '启用 Caps/Num/Scroll 状态灯回读',
otgFunctionMouseRelative: '相对鼠标',
otgFunctionMouseRelativeDesc: '传统鼠标移动HID 启动鼠标)',
otgFunctionMouseAbsolute: '绝对鼠标',
otgFunctionMouseAbsoluteDesc: '绝对定位(类似触控)',
otgFunctionConsumer: '多媒体键盘',
otgFunctionConsumerDesc: '音量/播放/暂停等多媒体按键',
otgFunctionMsd: '虚拟媒体MSD',
otgFunctionMsdDesc: '向目标主机暴露 USB 存储',
otgProfileWarning: '修改 HID 功能将导致 USB 设备重新连接',
otgLowEndpointHint: '检测到低端点 UDC将自动禁用多媒体键盘。',
otgFunctionMinWarning: '请至少启用一个 HID 功能后再保存',
otgDescriptor: 'USB 设备描述符',
otgDescriptorDesc: '配置 USB 设备标识信息',
vendorId: '厂商 ID (VID)',
productId: '产品 ID (PID)',
manufacturer: '制造商',
productName: '产品名称',
serialNumber: '序列号',
serialNumberAuto: '自动生成',
descriptorWarning: '修改这些设置将导致 USB 设备重新连接',
otgSelfCheck: {
title: 'OTG 自检',
desc: '检查 UDC、gadget 绑定和连接状态',
run: '运行自检',
failed: '执行 OTG 自检失败',
overall: '总体状态',
ok: '正常',
hasIssues: '存在问题',
summary: '问题统计',
counts: '错误 {errors},警告 {warnings}',
groupCounts: '通过 {ok},警告 {warnings},错误 {errors}',
notRun: '未执行',
status: {
ok: '正常',
warn: '告警',
error: '异常',
skipped: '跳过',
},
groups: {
udc: 'UDC 基础',
gadgetConfig: 'gadget 配置',
oneKvm: 'one-kvm gadget',
functions: '功能与设备节点',
link: '连接状态',
},
values: {
missing: '不存在',
notConfigured: '未配置',
mounted: '已挂载',
unmounted: '未挂载',
available: '可用',
unavailable: '不可用',
exists: '存在',
none: '无',
unbound: '未绑定',
noConflict: '无冲突',
conflict: '冲突',
unknown: '未知',
normal: '正常',
abnormal: '异常',
},
selectedUdc: '目标 UDC',
boundUdc: '已绑定 UDC',
messages: {
udc_dir_exists: 'UDC 目录检查',
udc_has_entries: 'UDC 检查',
configfs_mounted: 'configfs 检查',
usb_gadget_dir_exists: 'usb_gadget 检查',
libcomposite_loaded: 'libcomposite 检查',
one_kvm_gadget_exists: 'one-kvm gadget 检查',
other_gadgets: '其他 gadget 检查',
configured_udc_valid: '配置 UDC 检查',
one_kvm_bound_udc: 'gadget 绑定 UDC 检查',
hid_functions_present: 'HID 函数检查',
config_c1_exists: 'configs/c.1 检查',
function_links_ok: 'functions 链接检查',
hid_device_nodes: 'HID 设备节点检查',
udc_conflict: 'UDC 冲突检查',
udc_state: 'UDC 状态检查',
udc_speed: 'UDC 速率检查',
},
hints: {
udc_dir_exists: '请确认内核已启用 UDC/OTG 驱动',
udc_has_entries: '请确认 OTG 控制器已在设备树中启用',
configfs_mounted: '可执行: mount -t configfs none /sys/kernel/config',
usb_gadget_dir_exists: '请确认 configfs 与 USB gadget 支持已启用',
libcomposite_loaded: '可执行: modprobe libcomposite',
one_kvm_gadget_exists: '启用 OTG HID 或 MSD 后会自动创建 one-kvm gadget',
other_gadgets: '可能与 one-kvm 抢占 UDC请检查是否有其他 OTG 服务',
configured_udc_valid: '请在 HID OTG 设置中重新选择 UDC',
one_kvm_bound_udc: '请确认 HID/MSD 已启用并成功初始化',
hid_functions_present: '请检查 OTG HID 配置是否至少启用了一个 HID 功能',
config_c1_exists: 'gadget 结构不完整,请尝试重启 One-KVM',
function_links_ok: '建议重新初始化 OTG切换一次 HID 后端或重启服务)',
hid_device_nodes: '请确认 gadget 已绑定并检查内核日志',
udc_conflict: '请停用其他 OTG 服务或切换 one-kvm 到空闲 UDC',
udc_state: '请确认已连接被控机,且被控机已识别 USB 设备',
udc_speed: '设备可能未完成枚举,可尝试重插 USB',
},
},
encoderSelfCheck: {
title: '硬件编码能力测试',
desc: '按 720p、1080p、2K、4K 测试硬件编码能力',
run: '开始测试',
failed: '执行硬件编码能力测试失败',
resolution: '分辨率',
currentHardwareEncoder: '当前硬件编码器',
none: '无',
},
usbDevices: {
title: 'USB 设备',
desc: '查看已连接的 USB 设备,可通过复位恢复异常设备',
refresh: '刷新',
loadFailed: '加载 USB 设备列表失败',
noDevices: '未发现 USB 设备',
colDevice: '设备',
colSpeed: '速度',
colVideo: '视频',
colAction: '操作',
reset: '复位',
resetConfirmTitle: '确认复位 USB 设备',
resetConfirmDesc: '将通过 authorized 属性复位 USB 设备「{device}」,该设备上的所有连接将短暂中断。确定继续?',
resetAction: '确认复位',
},
webrtcSettings: 'WebRTC 信令',
webrtcSettingsDesc: '配置 STUN/TURN 服务器以辅助 NAT 穿透',
publicIceServersHint: '留空将使用 Google 公共 STUN 服务器TURN 服务器需自行部署',
stunServer: 'STUN 服务器',
stunServerPlaceholder: 'stun:stun.l.google.com:19302',
stunServerHint: '留空将使用 Google 公共 STUN 服务器',
turnServer: 'TURN 服务器',
turnServerPlaceholder: 'turn:turn.example.com:3478',
turnServerHint: 'P2P 连接失败时进行流量中继',
turnUsername: 'TURN 用户名',
turnPassword: 'TURN 密码',
turnCredentialsHint: '用于 TURN 服务器身份验证的凭据',
iceConfigNote: '更改后将在下一次 WebRTC 会话建立时生效',
},
virtualKeyboard: {
title: '虚拟键盘',
attach: '固定',
detach: '浮动',
hide: '隐藏',
show: '显示虚拟键盘',
layoutSelect: '键盘布局',
osWindows: 'Windows',
osMac: 'Mac',
osAndroid: 'Android',
mediaKeys: '多媒体键盘',
},
config: {
applied: '配置已应用',
applyFailed: '配置应用失败',
loadDevicesFailed: '加载设备列表失败',
updateFailed: '更新失败',
},
statusCard: {
device: '设备',
video: '视频',
hid: 'HID',
audio: '音频',
msd: 'MSD',
online: '在线',
offline: '离线',
connecting: '连接中...',
version: '版本',
uptime: '运行时间',
running: '运行中',
format: '格式',
resolution: '分辨率',
fps: '帧率',
fpsTarget: '目标帧率',
fpsActual: '实际帧率',
fpsStaticHint: '画面静止时会自动降帧',
paused: '已暂停',
clients: '客户端',
backend: '后端',
mouse: '鼠标',
mouseSupport: '鼠标支持',
currentMode: '当前模式',
absolute: '绝对定位',
relative: '相对定位',
channel: '通道',
networkError: '网络错误',
disconnected: '已断开',
hidUnavailable: 'HID不可用',
sampleRate: '采样率',
channels: '声道',
quality: '质量',
streaming: '传输中',
off: '关闭',
defaultDevice: '默认',
notConnected: '未连接',
connected: '已连接',
image: '镜像',
msdStatus: '状态',
msdStandby: '空闲',
msdImageMode: '镜像模式',
msdDriveMode: '虚拟U盘',
msdMountType: '挂载类型',
msdCurrentImage: '当前镜像',
msdNoImage: '无',
},
extensions: {
available: '可用',
unavailable: '不可用',
running: '运行中',
starting: '启动中',
stopped: '已停止',
failed: '启动失败',
start: '启动',
stop: '停止',
autoStart: '开机自启',
viewLogs: '查看日志',
noLogs: '暂无日志',
binaryNotFound: '未找到 {path},请先安装对应程序',
remoteAccess: {
title: '远程访问',
desc: 'GOSTC/FRPC 内网穿透与 Easytier 组网',
},
ttyd: {
title: 'Ttyd 网页终端',
desc: '通过 ttyd 提供网页终端访问',
open: '打开终端',
openInNewTab: '在新标签页打开',
port: '端口',
shell: 'Shell',
},
gostc: {
title: 'GOSTC 内网穿透',
desc: '通过 GOSTC 实现内网穿透',
addr: '服务器地址',
addrPlaceholder: '主机名或 IP必填',
addrRequired: '请填写 GOSTC 服务器地址',
key: '客户端密钥',
keyRequired: '请填写 GOSTC 客户端密钥',
tls: '启用 TLS',
},
easytier: {
title: 'Easytier 组网',
desc: '通过 EasyTier 实现 P2P VPN 组网',
networkName: '网络名称',
networkNameRequired: '请填写 EasyTier 网络名称',
networkSecret: '网络密钥',
peers: '对等节点',
addPeer: '添加节点',
virtualIp: '虚拟 IP',
virtualIpHint: '留空则自动分配,手动指定需包含网段(如 10.0.0.1/24',
},
frpc: {
title: 'FRPC 内网穿透',
desc: '通过 FRP 客户端连接 frps 服务',
quickConfig: '快速配置',
fullConfig: '完整配置',
fullConfigHint: '可在此粘贴供应商 TOML 配置文件',
fullConfigRequired: '请填写完整 frpc.toml 配置',
proxyType: '代理类型',
proxyName: '代理名称',
proxyNamePlaceholder: 'one-kvm-ssh',
proxyNameRequired: '请填写 FRPC 代理名称',
serverAddr: '服务器地址',
serverAddrPlaceholder: 'frps.example.com',
serverAddrRequired: '请填写 FRPC 服务器地址',
serverPort: '服务器端口',
token: '认证令牌',
tokenRequired: '请填写 FRPC 认证令牌',
localIp: '本地地址',
localIpRequired: '请填写 FRPC 本地地址',
localPort: '本地端口',
remotePort: '远程端口',
remotePortRequired: 'TCP/UDP 代理需要填写远程端口',
customDomain: '自定义域名',
customDomainPlaceholder: 'kvm.example.com',
secretKey: '访问密钥',
tls: '启用 TLS',
},
rustdesk: {
title: 'RustDesk 远程',
desc: '使用 RustDesk 客户端进行远程访问',
serverSettings: '服务器设置',
rendezvousServer: 'ID 服务器',
rendezvousServerPlaceholder: 'hbbs.example.com:21116',
rendezvousServerRequired: '请填写 RustDesk ID 服务器',
relayServer: '中继服务器',
relayServerPlaceholder: 'hbbr.example.com:21117',
relayKey: '中继密钥',
deviceInfo: '设备信息',
deviceId: '设备 ID',
deviceIdHint: '此 ID 用于 RustDesk 客户端连接',
devicePassword: '设备密码',
showPassword: '显示密码',
hidePassword: '隐藏密码',
regenerateId: '重新生成 ID',
regeneratePassword: '重新生成密码',
confirmRegenerateId: '确定要重新生成设备 ID 吗?现有客户端需要使用新 ID 重新连接。',
confirmRegeneratePassword: '确定要重新生成设备密码吗?现有客户端需要使用新密码重新连接。',
serviceStatus: '服务状态',
rendezvousStatus: '注册状态',
registered: '已注册',
connected: '已连接',
disconnected: '未连接',
connecting: '连接中',
notConfigured: '未配置',
notInitialized: '未初始化',
copyId: '复制 ID',
copyPassword: '复制密码',
copied: '已复制',
keypairGenerated: '密钥对已生成',
noKeypair: '密钥对未生成',
},
rtsp: {
title: 'RTSP 视频流',
desc: '配置 RTSP 推流服务H.264/H.265',
bind: '监听地址',
port: '端口',
path: '流路径',
pathPlaceholder: 'live',
pathHint: '访问路径,例如 rtsp://设备IP:8554/live',
codec: '编码格式',
codecHint: '启用 RTSP 后将锁定编码为所选项,并禁用 MJPEG。',
allowOneClient: '仅允许单客户端',
username: '用户名',
usernamePlaceholder: '留空表示无需认证',
password: '密码',
passwordPlaceholder: '输入新密码',
urlPreview: 'RTSP 地址预览',
},
},
stats: {
title: '连接统计',
webrtcMode: 'WebRTC 实时统计',
mjpegMode: 'MJPEG 实时统计',
current: '当前状态',
video: '视频',
videoDesc: '从服务器到客户端的视频流。',
stability: '网络稳定性',
stabilityDesc: '入站视频数据包在网络中的平稳程度。',
jitter: '抖动',
delay: '播放延迟',
delayDesc: '为平滑不均匀到达的帧而由抖动缓冲添加的延迟。',
packetLoss: '丢包',
packetLossDesc: '入站视频 RTP 数据包的丢失数量。',
total: '个',
frameRate: '帧率',
frameRateDesc: '每秒显示的入站视频帧数。',
additional: '其他信息',
latency: 'ICE 延迟',
bitrate: '码率',
fps: '帧率',
resolution: '分辨率',
packetsLost: '丢包数',
wsLatency: 'WS 延迟',
connection: '连接信息',
connectionType: '连接类型',
transport: '传输协议',
localCandidate: '本地候选',
remoteCandidate: '远程候选',
p2p: 'P2P 直连',
relay: 'TURN 中继',
},
help: {
flashMode: 'Flash 模式将镜像作为 U 盘挂载,支持大多数 BIOS 启动',
cdromMode: 'CDROM 模式将镜像作为光驱挂载,适用于需要光盘启动的系统',
readOnlyMode: '只读模式更安全,目标系统无法修改镜像内容',
readWriteMode: '读写模式允许目标系统写入数据,适用于需要保存配置的场景',
driveSize: '虚拟驱动器大小。较大的驱动器支持存放更多文件,但初始化时间更长',
mjpegMode: 'MJPEG 模式兼容性最好,适用于所有浏览器,但延迟较高',
webrtcMode: 'WebRTC 模式延迟更低,但需要浏览器支持相应编解码器',
videoBitratePreset: '速度优先:最低延迟,适合网络较差的场景;均衡:画质和延迟平衡;质量优先:最佳画质,需要较好的网络带宽',
encoderBackend: '硬件编码器性能更好功耗更低,软件编码器兼容性更好',
absoluteMode: '绝对定位模式直接映射鼠标坐标,适用于大多数场景',
relativeMode: '相对定位模式发送鼠标移动增量,适用于游戏或特殊软件',
mouseThrottle: '发送间隔控制鼠标事件的发送频率,较大的值可减少网络负载',
hidBackend: 'OTG 后端需要硬件支持 USB OTGCH9329 是串口 HID 芯片方案',
atxActiveLevel: '活跃电平取决于您的硬件接线方式。高电平表示触发时输出高电压,低电平相反',
wolInterface: '用于发送 Wake-on-LAN 魔术包的网络接口名称,如 eth0 或 br0',
stunServer: 'STUN 服务器用于 NAT 穿透,帮助建立 P2P 连接。留空使用公共服务器',
turnServer: 'TURN 服务器在 P2P 连接失败时提供中继。需要更多带宽但连接更可靠',
audioQuality: '更高的质量意味着更好的音频效果,但需要更多的网络带宽',
},
}