mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-07-30 04:21:45 +08:00
refactor: 删除部分多余的代码和注释
This commit is contained in:
@@ -109,7 +109,6 @@ export default {
|
||||
settingsTip: 'System settings',
|
||||
fullscreen: 'Fullscreen',
|
||||
fullscreenTip: 'Toggle fullscreen mode',
|
||||
// Video Config
|
||||
videoConfig: 'Video',
|
||||
streamSettings: 'Stream Settings',
|
||||
deviceSettings: 'Device Settings',
|
||||
@@ -141,7 +140,6 @@ export default {
|
||||
notRecommended: 'Not Recommended',
|
||||
multiSourceCodecLocked: '{sources} are enabled. Current codec is locked.',
|
||||
multiSourceVideoParamsWarning: '{sources} are enabled. Changing video device and input parameters will interrupt the stream.',
|
||||
// HID Config
|
||||
hidConfig: 'HID',
|
||||
mouseSettings: 'Mouse Settings',
|
||||
hidDeviceSettings: 'HID Device Settings',
|
||||
@@ -154,7 +152,6 @@ export default {
|
||||
absolute: 'Absolute',
|
||||
relative: 'Relative',
|
||||
applying: 'Applying...',
|
||||
// Audio Config
|
||||
audioConfig: 'Audio',
|
||||
playbackControl: 'Playback',
|
||||
volume: 'Volume',
|
||||
@@ -218,19 +215,16 @@ export default {
|
||||
title: 'Initial Setup',
|
||||
welcome: 'Welcome to One-KVM',
|
||||
description: 'Complete the initial setup to get started',
|
||||
// Step titles
|
||||
stepAccount: 'Account Setup',
|
||||
stepVideo: 'Video Setup',
|
||||
stepAudioVideo: 'Audio/Video Setup',
|
||||
stepHid: 'HID Setup',
|
||||
// Account
|
||||
setUsername: 'Set Admin Username',
|
||||
usernameHint: 'Username must be at least 2 characters',
|
||||
setPassword: 'Set Admin Password',
|
||||
passwordHint: 'Password must be at least 4 characters',
|
||||
confirmPassword: 'Confirm Password',
|
||||
passwordMismatch: 'Passwords do not match',
|
||||
// Video
|
||||
videoDevice: 'Video Device',
|
||||
selectVideoDevice: 'Select video capture device',
|
||||
videoFormat: 'Video Format',
|
||||
@@ -242,13 +236,11 @@ export default {
|
||||
noVideoDevices: 'No video devices detected',
|
||||
noSignalDetected: 'No HDMI signal detected. Please connect an HDMI cable and refresh.',
|
||||
refreshDevices: 'Refresh Devices',
|
||||
// Audio
|
||||
audioDevice: 'Audio Device',
|
||||
selectAudioDevice: 'Select audio capture device',
|
||||
noAudio: 'No audio',
|
||||
noAudioDevices: 'No audio devices detected',
|
||||
audioDeviceHelp: 'Select the audio capture device for capturing remote host audio. Usually on the same USB device as the video capture card.',
|
||||
// HID
|
||||
hidBackend: 'HID Backend',
|
||||
selectHidBackend: 'Select HID control method',
|
||||
serialHid: 'Serial HID',
|
||||
@@ -261,31 +253,25 @@ export default {
|
||||
selectUdc: 'Select UDC',
|
||||
noUdcDevices: 'No UDC devices detected',
|
||||
hidDisabledHint: 'Disabling HID will prevent keyboard and mouse control of the remote host',
|
||||
// Complete
|
||||
complete: 'Complete Setup',
|
||||
setupFailed: 'Setup failed',
|
||||
// Advanced encoder
|
||||
advancedEncoder: 'Advanced: Encoder Backend',
|
||||
encoderHint: 'The default "Auto" option works for most cases. Only change if you need a specific encoder backend.',
|
||||
autoRecommended: 'Auto (Recommended)',
|
||||
hardware: 'Hardware',
|
||||
software: 'Software',
|
||||
// Progress
|
||||
progress: 'Step {current} of {total}',
|
||||
// Help tooltips
|
||||
ch9329Help: 'CH9329 is a serial-to-HID chip connected via serial port. Works with most hardware configurations.',
|
||||
otgHelp: 'USB OTG mode emulates HID devices directly through USB Device Controller. Requires hardware OTG support.',
|
||||
otgLowEndpointHint: 'Detected low-endpoint UDC; Consumer Control Keyboard will be disabled automatically.',
|
||||
videoDeviceHelp: 'Select the video capture device for capturing the remote host display. Usually an HDMI capture card.',
|
||||
videoFormatHelp: 'MJPEG has best compatibility. H.264/H.265 uses less bandwidth but requires encoding support.',
|
||||
// Extensions
|
||||
stepExtensions: 'Extensions',
|
||||
extensionsDescription: 'Choose which extensions to auto-start',
|
||||
ttydTitle: 'Web Terminal (ttyd)',
|
||||
ttydDescription: 'Access device command line in browser',
|
||||
extensionsHint: 'These settings can be changed later in Settings',
|
||||
notInstalled: 'Not installed',
|
||||
// Password strength
|
||||
passwordStrength: 'Password Strength',
|
||||
passwordWeak: 'Weak',
|
||||
passwordMedium: 'Medium',
|
||||
@@ -350,7 +336,6 @@ export default {
|
||||
uvc_capture_stall: '',
|
||||
},
|
||||
},
|
||||
// WebRTC
|
||||
webrtcConnected: 'WebRTC Connected',
|
||||
webrtcConnectedDesc: 'Using low-latency H.264 video stream',
|
||||
webrtcFailed: 'WebRTC Connection Failed',
|
||||
@@ -363,29 +348,23 @@ export default {
|
||||
webrtcPhaseSetRemote: 'Applying remote description...',
|
||||
webrtcPhaseApplyIce: 'Applying ICE candidates...',
|
||||
webrtcPhaseNegotiating: 'Negotiating secure connection...',
|
||||
// Pointer Lock
|
||||
pointerLocked: 'Pointer Locked',
|
||||
pointerLockedDesc: 'Press Escape to release the pointer',
|
||||
pointerLockFailed: 'Failed to lock pointer',
|
||||
relativeModeHint: 'Relative Mouse Mode',
|
||||
relativeModeHintDesc: 'Click on the video area to lock the pointer, press Escape to release',
|
||||
// Meta Key Hint
|
||||
metaKeyHint: 'System Key Detected',
|
||||
metaKeyHintDesc: 'Enter fullscreen mode to capture Win/Meta keys',
|
||||
// Stream mode change
|
||||
streamModeChanged: 'Video Mode Changed',
|
||||
streamModeChangedDesc: 'Server switched to {mode} mode',
|
||||
// Device monitoring
|
||||
deviceLost: 'Video Device Lost',
|
||||
deviceLostDesc: '{device}: {reason}',
|
||||
deviceRecovering: 'Video Device Recovering',
|
||||
deviceRecoveringDesc: 'Attempting to recover video device (attempt {attempt})',
|
||||
deviceRecovered: 'Video Device Recovered',
|
||||
deviceRecoveredDesc: 'Video device reconnected successfully',
|
||||
// Loading state
|
||||
pleaseWait: 'Please wait...',
|
||||
retryCount: 'Retrying (attempt {count})',
|
||||
// Error details
|
||||
errorDetails: 'Error details',
|
||||
},
|
||||
hid: {
|
||||
@@ -397,7 +376,6 @@ export default {
|
||||
pasteText: 'Paste Text',
|
||||
absoluteMouse: 'Absolute',
|
||||
relativeMouse: 'Relative',
|
||||
// Device monitoring
|
||||
deviceLost: 'HID Device Lost',
|
||||
deviceLostDesc: '{backend}: {reason}',
|
||||
reconnecting: 'HID Reconnecting',
|
||||
@@ -424,7 +402,6 @@ export default {
|
||||
},
|
||||
},
|
||||
audio: {
|
||||
// Device monitoring
|
||||
deviceLost: 'Audio Device Lost',
|
||||
deviceLostDesc: '{device}: {reason}',
|
||||
reconnecting: 'Audio Reconnecting',
|
||||
@@ -468,7 +445,6 @@ export default {
|
||||
uploadImageHint: 'Click to upload ISO/IMG',
|
||||
imageMounted: 'Image {name} mounted',
|
||||
imageUnmounted: 'Image unmounted',
|
||||
// URL download
|
||||
downloadFromUrl: 'Download from URL',
|
||||
downloadFromUrlDesc: 'Enter the URL of an image file (ISO/IMG supported)',
|
||||
url: 'URL',
|
||||
@@ -479,16 +455,13 @@ export default {
|
||||
downloadFailed: 'Download failed',
|
||||
largeFileWarning: '>2.2GB',
|
||||
largeFileTooltip: 'File is larger than 2.2GB, please use Flash mode to mount',
|
||||
// Device monitoring
|
||||
error: 'MSD Error',
|
||||
errorDesc: '{reason}',
|
||||
recovered: 'MSD Recovered',
|
||||
recoveredDesc: 'MSD operation completed successfully',
|
||||
// Operation status
|
||||
operationInProgress: 'Operation in progress, please wait',
|
||||
driveConnected: 'Virtual USB drive connected',
|
||||
imageConnected: 'Image {name} connected',
|
||||
// Drive initialization
|
||||
selectDriveSize: 'Select virtual drive size',
|
||||
selectedSize: 'Selected size',
|
||||
customSize: 'Custom size',
|
||||
@@ -520,7 +493,6 @@ export default {
|
||||
security: 'Security',
|
||||
about: 'About',
|
||||
aboutDesc: 'Open and Lightweight IP-KVM Solution',
|
||||
// Device info
|
||||
deviceInfo: 'Device Info',
|
||||
deviceInfoDesc: 'Host system information',
|
||||
hostname: 'Hostname',
|
||||
@@ -545,11 +517,9 @@ export default {
|
||||
networkSettings: 'Network Settings',
|
||||
msdSettings: 'MSD Settings',
|
||||
atxSettings: 'ATX Settings',
|
||||
// Network tab
|
||||
httpSettings: 'HTTP Settings',
|
||||
httpPort: 'HTTP Port',
|
||||
configureHttpPort: 'Configure HTTP server port',
|
||||
// Web server
|
||||
webServer: 'Access Address',
|
||||
webServerDesc: 'Configure HTTP/HTTPS ports and listening addresses. Restart required for changes to take effect.',
|
||||
httpsPort: 'HTTPS Port',
|
||||
@@ -569,20 +539,17 @@ export default {
|
||||
bindAddressListEmpty: 'Add at least one IP address.',
|
||||
httpsEnabled: 'Enable HTTPS',
|
||||
httpsEnabledDesc: 'Enable HTTPS encrypted connection (a self-signed certificate is generated if none is specified)',
|
||||
// Port config
|
||||
portConfig: 'Port & Protocol',
|
||||
portConfigDesc: 'The service runs on a single port at a time, determined by the HTTPS toggle',
|
||||
httpPortReserved: 'HTTP port (reserved)',
|
||||
httpsPortReserved: 'HTTPS port (reserved)',
|
||||
previewUrl: 'Access URL preview',
|
||||
// Listen address
|
||||
listenAddress: 'Listen Address',
|
||||
listenAddressDesc: 'Configure which network interfaces the web server listens on',
|
||||
bindModeAllDesc: '0.0.0.0 — Listen on all network interfaces',
|
||||
bindModeLocalDesc: '127.0.0.1 — Allow local access only',
|
||||
bindModeCustomDesc: 'Specify a list of IP addresses',
|
||||
effectiveAddresses: 'Listen address preview',
|
||||
// SSL certificate
|
||||
sslCertificate: 'SSL Certificate',
|
||||
sslCertificateDesc: 'Upload a custom PEM certificate to replace the self-signed one, restart required',
|
||||
sslCertCustom: 'Custom Certificate',
|
||||
@@ -628,13 +595,11 @@ export default {
|
||||
updateMsgVerifying: 'Verifying (SHA256)',
|
||||
updateMsgInstalling: 'Replacing binary',
|
||||
updateMsgRestarting: 'Restarting service',
|
||||
// Auth
|
||||
auth: 'Access',
|
||||
authSettings: 'Access Settings',
|
||||
authSettingsDesc: 'Single-user access and session behavior',
|
||||
allowMultipleSessions: 'Allow multiple web sessions',
|
||||
allowMultipleSessionsDesc: 'When disabled, a new login will kick the previous session.',
|
||||
// User management
|
||||
userManagement: 'User Management',
|
||||
userManagementDesc: 'Manage user accounts and permissions',
|
||||
addUser: 'Add User',
|
||||
@@ -649,7 +614,6 @@ export default {
|
||||
noUsers: 'No users found',
|
||||
create: 'Create',
|
||||
confirmDeleteUser: 'Are you sure you want to delete user "{name}"?',
|
||||
// MSD/ATX status
|
||||
msdStatus: 'MSD Status',
|
||||
atxStatus: 'ATX Status',
|
||||
available: 'Available',
|
||||
@@ -665,7 +629,6 @@ export default {
|
||||
disabled: 'Disabled',
|
||||
msdDesc: 'Mass Storage Device allows you to mount ISO images and virtual drives to the target machine. Use the MSD panel on the main page to manage images.',
|
||||
atxDesc: 'ATX power control allows you to remotely power on/off and reset the target machine. Use the ATX panel on the main page to control power.',
|
||||
// ATX configuration
|
||||
atxSettingsDesc: 'Configure ATX power control hardware bindings',
|
||||
atxEnable: 'Enable ATX Control',
|
||||
atxEnableDesc: 'Enable remote control of power and reset buttons',
|
||||
@@ -693,16 +656,13 @@ export default {
|
||||
atxLedPin: 'GPIO Pin',
|
||||
atxLedInverted: 'Invert Logic',
|
||||
atxLedInvertedDesc: 'GPIO is low when LED is on',
|
||||
// WOL configuration
|
||||
atxWolSettings: 'Wake-on-LAN Settings',
|
||||
atxWolSettingsDesc: 'Configure WOL magic packet sending options',
|
||||
atxWolInterface: 'Network Interface',
|
||||
atxWolInterfacePlaceholder: 'e.g. eth0, enp0s3',
|
||||
atxWolInterfaceHint: 'Specify network interface for WOL packets, leave empty for default routing',
|
||||
// Basic tab descriptions
|
||||
themeDesc: 'Choose your preferred color scheme',
|
||||
languageDesc: 'Select your preferred language',
|
||||
// Video tab
|
||||
videoSettings: 'Video Settings',
|
||||
videoSettingsDesc: 'Configure video capture device',
|
||||
videoDevice: 'Video Device',
|
||||
@@ -719,7 +679,6 @@ export default {
|
||||
software: 'Software',
|
||||
supportedFormats: 'Supported Formats',
|
||||
encoderHint: 'Hardware encoders provide better performance with lower CPU usage. Software encoders are more compatible but require more CPU resources.',
|
||||
// HID tab
|
||||
hidSettings: 'HID Settings',
|
||||
hidSettingsDesc: 'Configure keyboard and mouse control',
|
||||
hidBackend: 'HID Backend',
|
||||
@@ -748,7 +707,6 @@ export default {
|
||||
otgProfileWarning: 'Changing HID functions will reconnect the USB device',
|
||||
otgLowEndpointHint: 'Low-endpoint UDC detected; Consumer Control Keyboard will be disabled automatically.',
|
||||
otgFunctionMinWarning: 'Enable at least one HID function before saving',
|
||||
// OTG Descriptor
|
||||
otgDescriptor: 'USB Device Descriptor',
|
||||
otgDescriptorDesc: 'Configure USB device identification',
|
||||
vendorId: 'Vendor ID (VID)',
|
||||
@@ -862,7 +820,6 @@ export default {
|
||||
resetConfirmDesc: 'This will reset USB device "{device}" by cycling its authorized attribute. All connections to this device will be temporarily interrupted. Continue?',
|
||||
resetAction: 'Reset Device',
|
||||
},
|
||||
// WebRTC / ICE
|
||||
webrtcSettings: 'WebRTC Settings',
|
||||
webrtcSettingsDesc: 'Configure STUN/TURN servers for NAT traversal',
|
||||
publicIceServersHint: 'Empty uses Google public STUN, configure your own TURN for production',
|
||||
@@ -931,7 +888,6 @@ export default {
|
||||
notConnected: 'Not Connected',
|
||||
connected: 'Connected',
|
||||
image: 'Image',
|
||||
// MSD status details
|
||||
msdStatus: 'Status',
|
||||
msdStandby: 'Idle',
|
||||
msdImageMode: 'Image Mode',
|
||||
@@ -941,7 +897,6 @@ export default {
|
||||
msdNoImage: 'None',
|
||||
},
|
||||
extensions: {
|
||||
// Common
|
||||
available: 'Available',
|
||||
unavailable: 'Unavailable',
|
||||
running: 'Running',
|
||||
@@ -958,7 +913,6 @@ export default {
|
||||
title: 'Remote Access',
|
||||
desc: 'GOSTC NAT traversal and Easytier networking',
|
||||
},
|
||||
// ttyd
|
||||
ttyd: {
|
||||
title: 'Ttyd Web Terminal',
|
||||
desc: 'Web terminal access via ttyd',
|
||||
@@ -967,7 +921,6 @@ export default {
|
||||
port: 'Port',
|
||||
shell: 'Shell',
|
||||
},
|
||||
// gostc
|
||||
gostc: {
|
||||
title: 'GOSTC NAT Traversal',
|
||||
desc: 'NAT traversal via GOSTC',
|
||||
@@ -976,7 +929,6 @@ export default {
|
||||
key: 'Client Key',
|
||||
tls: 'Enable TLS',
|
||||
},
|
||||
// easytier
|
||||
easytier: {
|
||||
title: 'Easytier Network',
|
||||
desc: 'P2P VPN networking via EasyTier',
|
||||
@@ -987,7 +939,6 @@ export default {
|
||||
virtualIp: 'Virtual IP',
|
||||
virtualIpHint: 'Leave empty for DHCP, or specify with CIDR (e.g., 10.0.0.1/24)',
|
||||
},
|
||||
// rustdesk
|
||||
rustdesk: {
|
||||
title: 'RustDesk Remote',
|
||||
desc: 'Remote access via RustDesk client',
|
||||
@@ -1078,31 +1029,24 @@ export default {
|
||||
p2p: 'P2P Direct',
|
||||
relay: 'TURN Relay',
|
||||
},
|
||||
// Help tooltip texts
|
||||
help: {
|
||||
// MSD related
|
||||
flashMode: 'Flash mode mounts the image as a USB drive, compatible with most BIOS boot',
|
||||
cdromMode: 'CDROM mode mounts the image as a CD drive, for systems requiring optical boot',
|
||||
readOnlyMode: 'Read-only mode is safer, the target system cannot modify the image',
|
||||
readWriteMode: 'Read-write mode allows writing data, useful for saving configurations',
|
||||
driveSize: 'Virtual drive size. Larger drives can store more files but take longer to initialize',
|
||||
// Video related
|
||||
mjpegMode: 'MJPEG mode has best compatibility, works with all browsers, but higher latency',
|
||||
webrtcMode: 'WebRTC mode has lower latency, but requires browser codec support',
|
||||
videoBitratePreset: 'Speed: lowest latency, best for slow networks. Balanced: good quality and latency. Quality: best visual, needs good bandwidth',
|
||||
encoderBackend: 'Hardware encoder has better performance and lower power. Software encoder has better compatibility',
|
||||
// HID related
|
||||
absoluteMode: 'Absolute mode maps mouse coordinates directly, suitable for most scenarios',
|
||||
relativeMode: 'Relative mode sends mouse movement delta, for games or special software',
|
||||
mouseThrottle: 'Send interval controls mouse event frequency. Higher values reduce network load',
|
||||
hidBackend: 'OTG backend requires USB OTG hardware support. CH9329 is a serial HID chip solution',
|
||||
// ATX related
|
||||
atxActiveLevel: 'Active level depends on your hardware wiring. High means high voltage when triggered',
|
||||
wolInterface: 'Network interface name for sending Wake-on-LAN magic packets, e.g., eth0 or br0',
|
||||
// Network related
|
||||
stunServer: 'STUN server for NAT traversal to establish P2P connections. Leave empty for public servers',
|
||||
turnServer: 'TURN server provides relay when P2P fails. Requires more bandwidth but more reliable',
|
||||
// Audio related
|
||||
audioQuality: 'Higher quality means better audio but requires more network bandwidth',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ import { createI18n } from 'vue-i18n'
|
||||
import zhCN from './zh-CN'
|
||||
import enUS from './en-US'
|
||||
|
||||
// Supported languages
|
||||
export const supportedLanguages = [
|
||||
{ code: 'zh-CN', name: '中文', flag: '🇨🇳' },
|
||||
{ code: 'en-US', name: 'English', flag: '🇺🇸' },
|
||||
@@ -10,33 +9,26 @@ export const supportedLanguages = [
|
||||
|
||||
export type SupportedLocale = (typeof supportedLanguages)[number]['code']
|
||||
|
||||
// Detect browser language with improved logic
|
||||
function detectLanguage(): SupportedLocale {
|
||||
// 1. Check localStorage for saved preference
|
||||
const stored = localStorage.getItem('language')
|
||||
if (stored && supportedLanguages.some((l) => l.code === stored)) {
|
||||
return stored as SupportedLocale
|
||||
}
|
||||
|
||||
// 2. Check browser language list (navigator.languages is more comprehensive)
|
||||
const languages = navigator.languages || [navigator.language]
|
||||
for (const lang of languages) {
|
||||
const normalizedLang = lang.toLowerCase()
|
||||
// Check for Chinese variants (zh, zh-CN, zh-TW, zh-HK, etc.)
|
||||
if (normalizedLang.startsWith('zh')) {
|
||||
return 'zh-CN'
|
||||
}
|
||||
// Check for English variants
|
||||
if (normalizedLang.startsWith('en')) {
|
||||
return 'en-US'
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Default to English
|
||||
return 'en-US'
|
||||
}
|
||||
|
||||
// Initialize language and set HTML lang attribute
|
||||
function initializeLanguage(): SupportedLocale {
|
||||
const lang = detectLanguage()
|
||||
document.documentElement.setAttribute('lang', lang)
|
||||
|
||||
@@ -109,7 +109,6 @@ export default {
|
||||
settingsTip: '系统设置',
|
||||
fullscreen: '全屏',
|
||||
fullscreenTip: '切换全屏模式',
|
||||
// Video Config
|
||||
videoConfig: '视频配置',
|
||||
streamSettings: '流设置',
|
||||
deviceSettings: '设备配置',
|
||||
@@ -141,7 +140,6 @@ export default {
|
||||
notRecommended: '不推荐',
|
||||
multiSourceCodecLocked: '{sources} 已启用,当前编码已锁定',
|
||||
multiSourceVideoParamsWarning: '{sources} 已启用,修改视频设备和输入参数将导致流中断',
|
||||
// HID Config
|
||||
hidConfig: '鼠键配置',
|
||||
mouseSettings: '鼠标设置',
|
||||
hidDeviceSettings: 'HID 设备设置',
|
||||
@@ -154,7 +152,6 @@ export default {
|
||||
absolute: '绝对定位',
|
||||
relative: '相对定位',
|
||||
applying: '应用中...',
|
||||
// Audio Config
|
||||
audioConfig: '音频',
|
||||
playbackControl: '播放控制',
|
||||
volume: '音量',
|
||||
@@ -218,19 +215,16 @@ export default {
|
||||
title: '初始化设置',
|
||||
welcome: '欢迎使用 One-KVM',
|
||||
description: '请完成初始设置以开始使用',
|
||||
// Step titles
|
||||
stepAccount: '账号设置',
|
||||
stepVideo: '视频设置',
|
||||
stepAudioVideo: '音视频设置',
|
||||
stepHid: '鼠键设置',
|
||||
// Account
|
||||
setUsername: '设置管理员用户名',
|
||||
usernameHint: '用户名至少2个字符',
|
||||
setPassword: '设置管理员密码',
|
||||
passwordHint: '密码至少4个字符',
|
||||
confirmPassword: '确认密码',
|
||||
passwordMismatch: '两次输入的密码不一致',
|
||||
// Video
|
||||
videoDevice: '视频设备',
|
||||
selectVideoDevice: '选择视频采集设备',
|
||||
videoFormat: '画面格式',
|
||||
@@ -242,13 +236,11 @@ export default {
|
||||
noVideoDevices: '未检测到视频设备',
|
||||
noSignalDetected: '未检测到 HDMI 信号,请连接 HDMI 线缆后刷新。',
|
||||
refreshDevices: '刷新设备',
|
||||
// Audio
|
||||
audioDevice: '音频设备',
|
||||
selectAudioDevice: '选择音频采集设备',
|
||||
noAudio: '不使用音频',
|
||||
noAudioDevices: '未检测到音频设备',
|
||||
audioDeviceHelp: '选择用于捕获远程主机音频的设备。通常与视频采集卡在同一 USB 设备上。',
|
||||
// HID
|
||||
hidBackend: 'HID 后端',
|
||||
selectHidBackend: '选择 HID 控制方式',
|
||||
serialHid: '串口 HID',
|
||||
@@ -261,31 +253,25 @@ export default {
|
||||
selectUdc: '选择 UDC',
|
||||
noUdcDevices: '未检测到 UDC 设备',
|
||||
hidDisabledHint: '禁用 HID 后将无法控制远程主机的键盘和鼠标',
|
||||
// Complete
|
||||
complete: '完成设置',
|
||||
setupFailed: '设置失败',
|
||||
// Advanced encoder
|
||||
advancedEncoder: '高级选项:编码器后端',
|
||||
encoderHint: '默认的"自动"选项适用于大多数情况。仅在需要特定编码器后端时更改。',
|
||||
autoRecommended: '自动(推荐)',
|
||||
hardware: '硬件',
|
||||
software: '软件',
|
||||
// Progress
|
||||
progress: '步骤 {current} / {total}',
|
||||
// Help tooltips
|
||||
ch9329Help: 'CH9329 是一款串口转 HID 芯片,通过串口连接到主机。适用于大多数硬件配置。',
|
||||
otgHelp: 'USB OTG 模式通过 USB 设备控制器直接模拟 HID 设备。需要硬件支持 USB OTG 功能。',
|
||||
otgLowEndpointHint: '检测到低端点 UDC,将自动禁用多媒体键盘。',
|
||||
videoDeviceHelp: '选择用于捕获远程主机画面的视频采集设备。通常是 HDMI 采集卡。',
|
||||
videoFormatHelp: 'MJPEG 格式兼容性最好,H.264/H.265 带宽占用更低但需要编码支持。',
|
||||
// Extensions
|
||||
stepExtensions: '扩展设置',
|
||||
extensionsDescription: '选择要自动启动的扩展服务',
|
||||
ttydTitle: 'Web 终端 (ttyd)',
|
||||
ttydDescription: '在浏览器中访问设备的命令行终端',
|
||||
extensionsHint: '这些设置可以在设置页面中随时更改',
|
||||
notInstalled: '未安装',
|
||||
// Password strength
|
||||
passwordStrength: '密码强度',
|
||||
passwordWeak: '弱',
|
||||
passwordMedium: '中',
|
||||
@@ -349,7 +335,6 @@ export default {
|
||||
uvc_capture_stall: '',
|
||||
},
|
||||
},
|
||||
// WebRTC
|
||||
webrtcConnected: 'WebRTC 已连接',
|
||||
webrtcConnectedDesc: '正在使用 H.264 低延迟视频流',
|
||||
webrtcFailed: 'WebRTC 连接失败',
|
||||
@@ -362,29 +347,23 @@ export default {
|
||||
webrtcPhaseSetRemote: '正在应用远端会话描述...',
|
||||
webrtcPhaseApplyIce: '正在应用 ICE 候选...',
|
||||
webrtcPhaseNegotiating: '正在协商安全连接...',
|
||||
// Pointer Lock
|
||||
pointerLocked: '鼠标已锁定',
|
||||
pointerLockedDesc: '按 Escape 键释放鼠标',
|
||||
pointerLockFailed: '鼠标锁定失败',
|
||||
relativeModeHint: '相对鼠标模式',
|
||||
relativeModeHintDesc: '点击视频区域以锁定鼠标,按 Escape 释放',
|
||||
// Meta Key Hint
|
||||
metaKeyHint: '检测到系统键',
|
||||
metaKeyHintDesc: '请进入全屏模式以捕获 Win/Meta 键',
|
||||
// Stream mode change
|
||||
streamModeChanged: '视频模式已切换',
|
||||
streamModeChangedDesc: '服务器已切换到 {mode} 模式',
|
||||
// 设备监控
|
||||
deviceLost: '视频设备丢失',
|
||||
deviceLostDesc: '{device}: {reason}',
|
||||
deviceRecovering: '视频设备恢复中',
|
||||
deviceRecoveringDesc: '正在尝试恢复视频设备(第 {attempt} 次)',
|
||||
deviceRecovered: '视频设备已恢复',
|
||||
deviceRecoveredDesc: '视频设备已成功重连',
|
||||
// 加载状态
|
||||
pleaseWait: '请稍候...',
|
||||
retryCount: '正在重试 (第 {count} 次)',
|
||||
// 错误详情
|
||||
errorDetails: '错误详情',
|
||||
},
|
||||
hid: {
|
||||
@@ -396,7 +375,6 @@ export default {
|
||||
pasteText: '粘贴文本',
|
||||
absoluteMouse: '绝对定位',
|
||||
relativeMouse: '相对定位',
|
||||
// 设备监控
|
||||
deviceLost: 'HID 设备丢失',
|
||||
deviceLostDesc: '{backend}: {reason}',
|
||||
reconnecting: 'HID 重连中',
|
||||
@@ -423,7 +401,6 @@ export default {
|
||||
},
|
||||
},
|
||||
audio: {
|
||||
// 设备监控
|
||||
deviceLost: '音频设备丢失',
|
||||
deviceLostDesc: '{device}: {reason}',
|
||||
reconnecting: '音频重连中',
|
||||
@@ -467,7 +444,6 @@ export default {
|
||||
uploadImageHint: '点击上传 ISO/IMG 镜像',
|
||||
imageMounted: '镜像 {name} 已挂载',
|
||||
imageUnmounted: '镜像已卸载',
|
||||
// URL download
|
||||
downloadFromUrl: '从 URL 下载',
|
||||
downloadFromUrlDesc: '输入镜像文件的 URL 地址,支持 ISO/IMG 格式',
|
||||
url: 'URL 地址',
|
||||
@@ -478,16 +454,13 @@ export default {
|
||||
downloadFailed: '下载失败',
|
||||
largeFileWarning: '>2.2GB',
|
||||
largeFileTooltip: '文件大于 2.2GB,请使用 Flash 模式挂载',
|
||||
// 设备监控
|
||||
error: 'MSD 错误',
|
||||
errorDesc: '{reason}',
|
||||
recovered: 'MSD 已恢复',
|
||||
recoveredDesc: 'MSD 设备已恢复正常',
|
||||
// 操作状态
|
||||
operationInProgress: '操作进行中,请稍候',
|
||||
driveConnected: '虚拟U盘已连接',
|
||||
imageConnected: '镜像 {name} 已连接',
|
||||
// 驱动器初始化
|
||||
selectDriveSize: '选择虚拟驱动器大小',
|
||||
selectedSize: '选定大小',
|
||||
customSize: '自定义大小',
|
||||
@@ -519,7 +492,6 @@ export default {
|
||||
security: '安全',
|
||||
about: '关于',
|
||||
aboutDesc: '开放轻量的 IP-KVM 解决方案',
|
||||
// Device info
|
||||
deviceInfo: '设备信息',
|
||||
deviceInfoDesc: '主机系统信息',
|
||||
hostname: '主机名',
|
||||
@@ -544,11 +516,9 @@ export default {
|
||||
networkSettings: '网络设置',
|
||||
msdSettings: 'MSD 设置',
|
||||
atxSettings: 'ATX 设置',
|
||||
// Network tab
|
||||
httpSettings: 'HTTP 设置',
|
||||
httpPort: 'HTTP 端口',
|
||||
configureHttpPort: '配置 HTTP 服务器端口',
|
||||
// Web server
|
||||
webServer: '访问地址',
|
||||
webServerDesc: '配置 HTTP/HTTPS 端口和监听地址,修改后需要重启生效',
|
||||
httpsPort: 'HTTPS 端口',
|
||||
@@ -568,20 +538,17 @@ export default {
|
||||
bindAddressListEmpty: '请至少填写一个 IP 地址。',
|
||||
httpsEnabled: '启用 HTTPS',
|
||||
httpsEnabledDesc: '启用 HTTPS 加密连接(未指定证书将生成自签证书)',
|
||||
// Port config
|
||||
portConfig: '端口与协议',
|
||||
portConfigDesc: '服务一次只运行在一个端口上,由 HTTPS 开关决定使用哪个端口',
|
||||
httpPortReserved: 'HTTP 端口(备用)',
|
||||
httpsPortReserved: 'HTTPS 端口(备用)',
|
||||
previewUrl: '访问地址预览',
|
||||
// Listen address
|
||||
listenAddress: '监听地址',
|
||||
listenAddressDesc: '配置 Web 服务监听哪些网络接口',
|
||||
bindModeAllDesc: '0.0.0.0 — 监听所有网络接口',
|
||||
bindModeLocalDesc: '127.0.0.1 — 仅允许本机访问',
|
||||
bindModeCustomDesc: '指定一组 IP 地址',
|
||||
effectiveAddresses: '监听地址预览',
|
||||
// SSL certificate
|
||||
sslCertificate: 'SSL 证书',
|
||||
sslCertificateDesc: '上传自定义 PEM 证书替换自签名证书,修改后需要重启生效',
|
||||
sslCertCustom: '自定义证书',
|
||||
@@ -627,13 +594,11 @@ export default {
|
||||
updateMsgVerifying: '校验中(SHA256)',
|
||||
updateMsgInstalling: '替换程序中',
|
||||
updateMsgRestarting: '服务重启中',
|
||||
// Auth
|
||||
auth: '访问控制',
|
||||
authSettings: '访问设置',
|
||||
authSettingsDesc: '单用户访问与会话策略',
|
||||
allowMultipleSessions: '允许多个 Web 会话',
|
||||
allowMultipleSessionsDesc: '关闭后,新登录会踢掉旧会话。',
|
||||
// User management
|
||||
userManagement: '用户管理',
|
||||
userManagementDesc: '管理用户账号和权限',
|
||||
addUser: '添加用户',
|
||||
@@ -648,7 +613,6 @@ export default {
|
||||
noUsers: '暂无用户',
|
||||
create: '创建',
|
||||
confirmDeleteUser: '确定要删除用户 "{name}" 吗?',
|
||||
// MSD/ATX status
|
||||
msdStatus: 'MSD 状态',
|
||||
atxStatus: 'ATX 状态',
|
||||
available: '可用',
|
||||
@@ -664,7 +628,6 @@ export default {
|
||||
disabled: '已禁用',
|
||||
msdDesc: '虚拟存储设备允许您将 ISO 镜像和虚拟驱动器挂载到目标机器。请在主页面的 MSD 面板中管理镜像。',
|
||||
atxDesc: 'ATX 电源控制允许您远程开关机和重启目标机器。请在主页面的 ATX 面板中控制电源。',
|
||||
// ATX configuration
|
||||
atxSettingsDesc: '配置 ATX 电源控制硬件绑定',
|
||||
atxEnable: '启用 ATX 控制',
|
||||
atxEnableDesc: '启用后可以远程控制电源和重启按钮',
|
||||
@@ -692,16 +655,13 @@ export default {
|
||||
atxLedPin: 'GPIO 引脚',
|
||||
atxLedInverted: '反转逻辑',
|
||||
atxLedInvertedDesc: 'LED 亮起时 GPIO 为低电平',
|
||||
// WOL configuration
|
||||
atxWolSettings: '网络唤醒设置',
|
||||
atxWolSettingsDesc: '配置 Wake-on-LAN 魔术包发送选项',
|
||||
atxWolInterface: '网络接口',
|
||||
atxWolInterfacePlaceholder: '例如: eth0, enp0s3',
|
||||
atxWolInterfaceHint: '指定发送 WOL 包的网络接口,留空则使用系统默认路由',
|
||||
// Basic tab descriptions
|
||||
themeDesc: '选择您喜欢的颜色方案',
|
||||
languageDesc: '选择您的首选语言',
|
||||
// Video tab
|
||||
videoSettings: '视频设置',
|
||||
videoSettingsDesc: '配置视频采集设备',
|
||||
videoDevice: '视频设备',
|
||||
@@ -718,7 +678,6 @@ export default {
|
||||
software: '软件',
|
||||
supportedFormats: '支持的格式',
|
||||
encoderHint: '硬件编码器性能更好,CPU 占用更低。软件编码器兼容性更好,但需要更多 CPU 资源。',
|
||||
// HID tab
|
||||
hidSettings: 'HID 设置',
|
||||
hidSettingsDesc: '配置键盘和鼠标控制',
|
||||
hidBackend: 'HID 后端',
|
||||
@@ -747,7 +706,6 @@ export default {
|
||||
otgProfileWarning: '修改 HID 功能将导致 USB 设备重新连接',
|
||||
otgLowEndpointHint: '检测到低端点 UDC,将自动禁用多媒体键盘。',
|
||||
otgFunctionMinWarning: '请至少启用一个 HID 功能后再保存',
|
||||
// OTG Descriptor
|
||||
otgDescriptor: 'USB 设备描述符',
|
||||
otgDescriptorDesc: '配置 USB 设备标识信息',
|
||||
vendorId: '厂商 ID (VID)',
|
||||
@@ -861,7 +819,6 @@ export default {
|
||||
resetConfirmDesc: '将通过 authorized 属性复位 USB 设备「{device}」,该设备上的所有连接将短暂中断。确定继续?',
|
||||
resetAction: '确认复位',
|
||||
},
|
||||
// WebRTC / ICE
|
||||
webrtcSettings: 'WebRTC 设置',
|
||||
webrtcSettingsDesc: '配置 STUN/TURN 服务器以实现 NAT 穿透',
|
||||
publicIceServersHint: '留空将使用 Google 公共 STUN 服务器,TURN 服务器需自行配置',
|
||||
@@ -930,7 +887,6 @@ export default {
|
||||
notConnected: '未连接',
|
||||
connected: '已连接',
|
||||
image: '镜像',
|
||||
// MSD 状态详情
|
||||
msdStatus: '状态',
|
||||
msdStandby: '空闲',
|
||||
msdImageMode: '镜像模式',
|
||||
@@ -940,7 +896,6 @@ export default {
|
||||
msdNoImage: '无',
|
||||
},
|
||||
extensions: {
|
||||
// Common
|
||||
available: '可用',
|
||||
unavailable: '不可用',
|
||||
running: '运行中',
|
||||
@@ -957,7 +912,6 @@ export default {
|
||||
title: '远程访问',
|
||||
desc: 'GOSTC 内网穿透与 Easytier 组网',
|
||||
},
|
||||
// ttyd
|
||||
ttyd: {
|
||||
title: 'Ttyd 网页终端',
|
||||
desc: '通过 ttyd 提供网页终端访问',
|
||||
@@ -966,7 +920,6 @@ export default {
|
||||
port: '端口',
|
||||
shell: 'Shell',
|
||||
},
|
||||
// gostc
|
||||
gostc: {
|
||||
title: 'GOSTC 内网穿透',
|
||||
desc: '通过 GOSTC 实现内网穿透',
|
||||
@@ -975,7 +928,6 @@ export default {
|
||||
key: '客户端密钥',
|
||||
tls: '启用 TLS',
|
||||
},
|
||||
// easytier
|
||||
easytier: {
|
||||
title: 'Easytier 组网',
|
||||
desc: '通过 EasyTier 实现 P2P VPN 组网',
|
||||
@@ -986,7 +938,6 @@ export default {
|
||||
virtualIp: '虚拟 IP',
|
||||
virtualIpHint: '留空则自动分配,手动指定需包含网段(如 10.0.0.1/24)',
|
||||
},
|
||||
// rustdesk
|
||||
rustdesk: {
|
||||
title: 'RustDesk 远程',
|
||||
desc: '使用 RustDesk 客户端进行远程访问',
|
||||
@@ -1077,31 +1028,24 @@ export default {
|
||||
p2p: 'P2P 直连',
|
||||
relay: 'TURN 中继',
|
||||
},
|
||||
// 帮助提示文本
|
||||
help: {
|
||||
// MSD 相关
|
||||
flashMode: 'Flash 模式将镜像作为 U 盘挂载,支持大多数 BIOS 启动',
|
||||
cdromMode: 'CDROM 模式将镜像作为光驱挂载,适用于需要光盘启动的系统',
|
||||
readOnlyMode: '只读模式更安全,目标系统无法修改镜像内容',
|
||||
readWriteMode: '读写模式允许目标系统写入数据,适用于需要保存配置的场景',
|
||||
driveSize: '虚拟驱动器大小。较大的驱动器支持存放更多文件,但初始化时间更长',
|
||||
// 视频相关
|
||||
mjpegMode: 'MJPEG 模式兼容性最好,适用于所有浏览器,但延迟较高',
|
||||
webrtcMode: 'WebRTC 模式延迟更低,但需要浏览器支持相应编解码器',
|
||||
videoBitratePreset: '速度优先:最低延迟,适合网络较差的场景;均衡:画质和延迟平衡;质量优先:最佳画质,需要较好的网络带宽',
|
||||
encoderBackend: '硬件编码器性能更好功耗更低,软件编码器兼容性更好',
|
||||
// HID 相关
|
||||
absoluteMode: '绝对定位模式直接映射鼠标坐标,适用于大多数场景',
|
||||
relativeMode: '相对定位模式发送鼠标移动增量,适用于游戏或特殊软件',
|
||||
mouseThrottle: '发送间隔控制鼠标事件的发送频率,较大的值可减少网络负载',
|
||||
hidBackend: 'OTG 后端需要硬件支持 USB OTG,CH9329 是串口 HID 芯片方案',
|
||||
// ATX 相关
|
||||
atxActiveLevel: '活跃电平取决于您的硬件接线方式。高电平表示触发时输出高电压,低电平相反',
|
||||
wolInterface: '用于发送 Wake-on-LAN 魔术包的网络接口名称,如 eth0 或 br0',
|
||||
// 网络相关
|
||||
stunServer: 'STUN 服务器用于 NAT 穿透,帮助建立 P2P 连接。留空使用公共服务器',
|
||||
turnServer: 'TURN 服务器在 P2P 连接失败时提供中继。需要更多带宽但连接更可靠',
|
||||
// 音频相关
|
||||
audioQuality: '更高的质量意味着更好的音频效果,但需要更多的网络带宽',
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user