mirror of
https://github.com/sipeed/NanoKVM.git
synced 2026-09-11 00:22:56 -05:00
* fix: stop HDMI capture when logged out * feat: stop HDMI capture when viewers are idle * fix: keep HDMI capture active for consumers
690 lines
30 KiB
TypeScript
690 lines
30 KiB
TypeScript
const ko = {
|
|
translation: {
|
|
head: {
|
|
desktop: '원격 데스크톱',
|
|
login: '로그인',
|
|
changePassword: '비밀번호 변경',
|
|
terminal: '터미널',
|
|
wifi: 'Wi-Fi'
|
|
},
|
|
auth: {
|
|
login: '로그인',
|
|
placeholderUsername: '사용자 이름을 입력하세요.',
|
|
placeholderPassword: '비밀번호를 입력하세요.',
|
|
placeholderPassword2: '비밀번호를 다시 입력하세요.',
|
|
noEmptyUsername: '사용자 이름은 비어있을 수 없습니다.',
|
|
noEmptyPassword: '비밀번호는 비어있을 수 없습니다.',
|
|
noAccount:
|
|
'사용자 정보를 불러오는 데 실패했습니다. 페이지를 새로고침하거나 비밀번호를 초기화하세요.',
|
|
invalidUser: '사용자 이름이나 비밀번호가 틀렸습니다.',
|
|
locked: '로그인 횟수가 너무 많습니다. 나중에 다시 시도해 주세요.',
|
|
globalLocked: '시스템이 보호 중입니다. 나중에 다시 시도해 주세요.',
|
|
error: '알 수 없는 오류',
|
|
changePassword: '비밀번호 변경',
|
|
changePasswordDesc: '보안을 위해 웹 로그인 비밀번호를 변경하세요.',
|
|
differentPassword: '비밀번호가 서로 일치하지 않습니다.',
|
|
illegalUsername: '사용자 이름에 사용할 수 없는 문자가 있습니다.',
|
|
illegalPassword: '비밀번호에 사용할 수 없는 문자가 있습니다.',
|
|
forgetPassword: '비밀번호 분실',
|
|
ok: '확인',
|
|
cancel: '취소',
|
|
loginButtonText: '로그인',
|
|
tips: {
|
|
reset1: '비밀번호를 재설정하려면 NanoKVM의 BOOT 버튼을 10초 동안 누르고 계세요.',
|
|
reset2: '자세한 절차는 이 문서를 참조하세요:',
|
|
reset3: '웹 기본 계정:',
|
|
reset4: 'SSH 기본 계정:',
|
|
change1: '이 작업을 수행하면 다음 비밀번호가 변경됩니다:',
|
|
change2: '웹 로그인 비밀번호',
|
|
change3: '시스템 루트 비밀번호 (SSH 로그인 비밀번호)',
|
|
change4: '비밀번호를 재설정하려면 NanoKVM의 BOOT 버튼을 길게 누르세요.'
|
|
}
|
|
},
|
|
wifi: {
|
|
title: 'Wi-Fi',
|
|
description: 'NanoKVM Wi-Fi 설정',
|
|
success: 'NanoKVM의 네트워크 상태를 확인하고 새 IP 주소로 접속하세요.',
|
|
failed: '작업에 실패했습니다. 다시 시도하세요.',
|
|
invalidMode:
|
|
'현재 모드는 네트워크 설정을 지원하지 않습니다. 장치로 이동하여 Wi-Fi 구성 모드를 활성화하십시오.',
|
|
confirmBtn: '확인',
|
|
finishBtn: '완료',
|
|
ap: {
|
|
authTitle: '인증 필요',
|
|
authDescription: '계속하려면 AP 비밀번호를 입력하세요',
|
|
authFailed: '잘못된 AP 비밀번호',
|
|
passPlaceholder: 'AP 비밀번호',
|
|
verifyBtn: '확인'
|
|
}
|
|
},
|
|
screen: {
|
|
scale: '규모',
|
|
title: '화면',
|
|
video: '비디오 모드',
|
|
videoDirectTips: '이 모드를 사용하려면 "설정 > 장치"에서 HTTPS를 활성화하세요',
|
|
resolution: '해상도',
|
|
auto: '자동 설정',
|
|
autoTips:
|
|
'일부 해상도에서는 화면이 왜곡되거나 마우스 동작이 비정상적으로 나타날 수 있습니다. 원격 컴퓨터의 해상도를 변경하거나 자동 설정 대신 수동 설정을 사용해 보세요.',
|
|
fps: 'FPS',
|
|
customizeFps: '사용자 지정',
|
|
quality: '품질',
|
|
qualityLossless: '무손실',
|
|
qualityHigh: '높음',
|
|
qualityMedium: '중간',
|
|
qualityLow: '낮음',
|
|
frameDetect: '프레임 탐지',
|
|
frameDetectTip:
|
|
'프레임 간의 차이를 계산합니다. 원격 호스트 화면에 변경 사항이 감지되지 않으면 비디오 스트림 전송을 중지합니다.',
|
|
resetHdmi: 'HDMI 초기화',
|
|
captureStatus: {
|
|
hdmiError: 'HDMI 화면 오류',
|
|
unsupportedResolution: '현재 해상도는 지원되지 않습니다',
|
|
retrieving: '화면을 가져오는 중...',
|
|
changingResolution: '해상도를 전환하는 중...',
|
|
updateFailed: '지금은 화면을 업데이트할 수 없습니다',
|
|
videoError: '비디오 표시 오류',
|
|
noHdmi: 'HDMI 신호가 감지되지 않았습니다',
|
|
unavailable: '지금은 화면을 표시할 수 없습니다'
|
|
}
|
|
},
|
|
keyboard: {
|
|
title: '키보드',
|
|
paste: '붙여넣기',
|
|
tips: '표준 키보드 문자 및 기호만 지원됩니다',
|
|
placeholder: '입력하세요',
|
|
submit: '전송',
|
|
virtual: '키보드',
|
|
readClipboard: '클립보드에서 읽기',
|
|
clipboardPermissionDenied:
|
|
'클립보드 권한이 거부되었습니다. 브라우저에서 클립보드 액세스를 허용해 주세요.',
|
|
clipboardReadError: '클립보드를 읽지 못했습니다.',
|
|
dropdownEnglish: '영어',
|
|
dropdownGerman: '독일어',
|
|
dropdownFrench: '프랑스어',
|
|
dropdownRussian: '러시아어',
|
|
shortcut: {
|
|
title: '바로가기',
|
|
custom: '관습',
|
|
capture: '바로가기를 캡처하려면 여기를 클릭하세요',
|
|
clear: '클리어',
|
|
save: '저장',
|
|
captureTips: 'Windows 키와 같은 시스템 수준 키를 캡처하려면 전체 화면 권한이 필요합니다.',
|
|
enterFullScreen: '전체 화면 모드를 전환합니다.'
|
|
},
|
|
leaderKey: {
|
|
title: '리더 키',
|
|
desc: '브라우저 제한을 우회하고 시스템 바로가기를 원격 호스트에 직접 보냅니다.',
|
|
howToUse: '사용방법',
|
|
simultaneous: {
|
|
title: '동시 모드',
|
|
desc1: '리더 키를 누른 상태에서 단축키를 누르세요.',
|
|
desc2: '직관적이지만 시스템 단축키와 충돌할 수 있습니다.'
|
|
},
|
|
sequential: {
|
|
title: '순차 모드',
|
|
desc1: '리더 키를 누름 → 단축키를 순서대로 누름 → 리더 키를 다시 누름.',
|
|
desc2: '더 많은 단계가 필요하지만 시스템 충돌을 완전히 방지합니다.'
|
|
},
|
|
enable: '리더 키 활성화',
|
|
tip: '리더 키로 지정하면 이 키는 단축키 트리거로만 동작하며 기본 동작을 잃습니다.',
|
|
placeholder: '리더 키를 누르세요',
|
|
shiftRight: '오른쪽 Shift',
|
|
ctrlRight: '오른쪽 Ctrl',
|
|
metaRight: '오른쪽 Win',
|
|
submit: '전송',
|
|
recorder: {
|
|
rec: 'REC',
|
|
activate: '키 활성화',
|
|
input: '단축키를 눌러주세요...'
|
|
}
|
|
}
|
|
},
|
|
mouse: {
|
|
title: '마우스',
|
|
cursor: '커서 스타일',
|
|
default: '기본 커서',
|
|
pointer: '포인터 커서',
|
|
cell: '셀 커서',
|
|
text: '텍스트 커서',
|
|
grab: '잡기 커서',
|
|
hide: '커서 숨기기',
|
|
mode: '마우스 모드',
|
|
absolute: '절대값 모드',
|
|
relative: '상대값 모드',
|
|
direction: '스크롤 휠 방향',
|
|
scrollUp: '위로 스크롤',
|
|
scrollDown: '아래로 스크롤',
|
|
speed: '스크롤 휠 속도',
|
|
fast: '빠름',
|
|
slow: '느림',
|
|
requestPointer: '상대값 모드를 사용 중입니다. 커서를 찾으려면 데스크톱을 클릭하세요.',
|
|
resetHid: 'HID 초기화',
|
|
hidOnly: {
|
|
title: 'HID 전용 모드',
|
|
desc: '마우스와 키보드가 응답하지 않고 HID 초기화도 도움이 되지 않는다면, NanoKVM과 장치 간의 호환성 문제일 수 있습니다. 더 나은 호환성을 위해 HID 전용 모드를 활성화해 보세요.',
|
|
tip1: 'HID 전용 모드를 활성화하면 가상 USB와 가상 네트워크가 언마운트됩니다',
|
|
tip2: 'HID 전용 모드에서는 이미지 마운트가 비활성화됩니다',
|
|
tip3: '모드 전환 후 NanoKVM이 자동으로 재부팅됩니다',
|
|
enable: 'HID 전용 모드 활성화',
|
|
disable: 'HID 전용 모드 비활성화'
|
|
}
|
|
},
|
|
image: {
|
|
title: '이미지',
|
|
loading: '불러오는 중...',
|
|
empty: '아무것도 없습니다.',
|
|
mountMode: '마운트 모드',
|
|
mountFailed: '마운트 실패',
|
|
mountDesc:
|
|
'일부 시스템에서는 이미지를 마운트하기 전에 원격 호스트에서 가상 디스크를 제거해야 합니다.',
|
|
unmountFailed: '언마운트 실패',
|
|
unmountDesc:
|
|
'일부 시스템에서는 이미지를 언마운트하기 전에 원격 호스트에서 수동으로 제거하여야 합니다.',
|
|
refresh: '이미지 목록 새로고침',
|
|
attention: '주의',
|
|
deleteConfirm: '이 이미지를 제거하시겠습니까?',
|
|
okBtn: '네',
|
|
cancelBtn: '아니오',
|
|
tips: {
|
|
title: '업로드 방법',
|
|
usb1: 'USB를 통해 NanoKVM을 컴퓨터에 연결하세요.',
|
|
usb2: '가상 디스크가 마운트되었는지 확인하세요. (설정 - 가상 디스크).',
|
|
usb3: '컴퓨터에서 가상 디스크를 열고 이미지 파일을 가상 디스크의 루트 디렉토리로 복사하세요.',
|
|
scp1: 'NanoKVM과 컴퓨터가 동일한 로컬 네트워크에 있는지 확인하세요.',
|
|
scp2: '컴퓨터에서 터미널을 열고 SCP 명령을 사용하여 이미지 파일을 NanoKVM의 /data 디렉터리에 업로드하세요.',
|
|
scp3: '예시: scp [이미지 파일 경로] root@[NanoKVM IP 주소]:/data',
|
|
tfCard: 'TF 카드',
|
|
tf1: '이 방법은 Linux 시스템에서 지원됩니다',
|
|
tf2: 'NanoKVM에서 TF 카드를 가져옵니다(전체 버전의 경우 먼저 케이스를 분해하세요).',
|
|
tf3: 'TF 카드를 카드 리더기에 삽입하고 컴퓨터에 연결하세요.',
|
|
tf4: '이미지 파일을 TF 카드의 /data 디렉터리에 복사하세요.',
|
|
tf5: 'TF 카드를 NanoKVM에 삽입하세요.'
|
|
}
|
|
},
|
|
script: {
|
|
title: '스크립트',
|
|
upload: '업로드',
|
|
run: '실행',
|
|
runBackground: '백그라운드에서 실행',
|
|
runFailed: '실행 실패',
|
|
attention: '주의',
|
|
delDesc: '이 파일을 정말로 삭제합니까?',
|
|
confirm: '네',
|
|
cancel: '아니오',
|
|
delete: '삭제',
|
|
close: '닫기'
|
|
},
|
|
terminal: {
|
|
title: '터미널',
|
|
nanokvm: 'NanoKVM 터미널',
|
|
serial: '시리얼 포트 터미널',
|
|
serialPort: '시리얼 포트',
|
|
serialPortPlaceholder: '시리얼 포트를 입력하세요',
|
|
baudrate: '전송 속도',
|
|
parity: '패리티',
|
|
parityNone: '없음',
|
|
parityEven: '짝수',
|
|
parityOdd: '홀수',
|
|
flowControl: '흐름 제어',
|
|
flowControlNone: '없음',
|
|
flowControlSoft: '소프트웨어',
|
|
flowControlHard: '하드웨어',
|
|
dataBits: '데이터 비트',
|
|
stopBits: '정지 비트',
|
|
confirm: '확인'
|
|
},
|
|
wol: {
|
|
title: 'Wake-on-LAN',
|
|
sending: '패킷 전송 중...',
|
|
sent: '패킷 전송 완료',
|
|
input: 'MAC주소를 입력하세요.',
|
|
ok: '확인'
|
|
},
|
|
download: {
|
|
title: '이미지 다운로드',
|
|
input: '원격 이미지 URL을 입력하세요.',
|
|
ok: '확인',
|
|
disabled: '/data 파티션이 읽기 전용(RO) 상태이므로 이미지를 다운로드할 수 없습니다.',
|
|
uploadbox: '여기에 파일을 놓거나 클릭하여 선택하세요.',
|
|
inputfile: '이미지 파일을 입력해주세요',
|
|
NoISO: 'ISO 없음',
|
|
sha256: 'SHA-256 (선택 사항)',
|
|
sha256Placeholder: '64자 SHA-256 체크섬을 입력하세요',
|
|
invalidSHA256: 'SHA-256은 64자의 16진수 문자열이어야 합니다',
|
|
failed: '다운로드 실패',
|
|
success: '다운로드 성공',
|
|
checksumFailed: '다운로드 실패: SHA-256 검증 실패',
|
|
cancel: '취소',
|
|
cancelFailed: '다운로드 취소 실패'
|
|
},
|
|
power: {
|
|
title: '전원',
|
|
showConfirm: '확인',
|
|
showConfirmTip: '전원 작업에는 추가 확인이 필요합니다',
|
|
reset: '리셋',
|
|
power: '전원',
|
|
powerShort: '전원 (짧게 누르기)',
|
|
powerLong: '전원 (길게 누르기)',
|
|
resetConfirm: '리셋 작업을 진행하시겠습니까?',
|
|
powerConfirm: '전원 작업을 진행하시겠습니까?',
|
|
okBtn: '네',
|
|
cancelBtn: '아니오'
|
|
},
|
|
settings: {
|
|
title: '설정',
|
|
mcp: {
|
|
title: 'MCP 서비스',
|
|
service: 'MCP 원격 제어',
|
|
serviceDesc:
|
|
'신뢰할 수 있는 MCP 클라이언트가 키보드와 마우스를 제어하고 스크린샷을 캡처하도록 허용합니다',
|
|
securityWarning:
|
|
'이 API 키를 가진 사람은 누구나 원격 호스트를 제어하고 화면을 볼 수 있습니다. HTTPS를 사용하고 신뢰할 수 있는 네트워크에서만 활성화하세요.',
|
|
endpoint: '엔드포인트',
|
|
apiKey: 'API 키',
|
|
regenerateConfirmTitle: 'MCP API 키를 다시 생성하시겠습니까?',
|
|
regenerateConfirmDesc: '현재 키는 즉시 작동을 중지합니다.',
|
|
enableConfirmTitle: '외부 MCP 제어를 활성화하시겠습니까?',
|
|
enableConfirmDesc:
|
|
'MCP를 활성화하면 PicoClaw가 중지되고 활성 PicoClaw 세션이 모두 닫힙니다.',
|
|
failed: 'MCP 작업에 실패했습니다',
|
|
copyFailed: '복사에 실패했습니다. 수동으로 복사하세요.',
|
|
okBtn: '확인',
|
|
cancelBtn: '취소'
|
|
},
|
|
about: {
|
|
title: 'NanoKVM 정보',
|
|
information: '정보',
|
|
ip: 'IP',
|
|
mdns: 'mDNS',
|
|
application: '펌웨어 버전',
|
|
applicationTip: 'NanoKVM 웹 애플리케이션 버전',
|
|
image: '이미지 버전',
|
|
imageTip: 'NanoKVM 시스템 이미지 버전',
|
|
deviceKey: '장치 키',
|
|
community: '커뮤니티',
|
|
hostname: '호스트 이름',
|
|
hostnameUpdated: '호스트 이름이 업데이트되었습니다. 적용하려면 재부팅하세요.',
|
|
ipType: {
|
|
Wired: '유선',
|
|
Wireless: '무선',
|
|
Other: '기타'
|
|
}
|
|
},
|
|
appearance: {
|
|
title: '디자인',
|
|
display: '표시',
|
|
language: '언어',
|
|
languageDesc: '인터페이스 언어를 선택하세요',
|
|
webTitle: '웹 제목',
|
|
webTitleDesc: '웹 페이지 제목 사용자 지정',
|
|
menuBar: {
|
|
title: '메뉴 바',
|
|
mode: '표시 모드',
|
|
modeDesc: '메뉴 바를 화면에 표시합니다',
|
|
modeOff: '꺼짐',
|
|
modeAuto: '자동 숨기기',
|
|
modeAlways: '항상 보이기',
|
|
icons: '하위 메뉴 아이콘',
|
|
iconsDesc: '메뉴 바에 하위 메뉴 아이콘을 표시합니다'
|
|
}
|
|
},
|
|
device: {
|
|
title: '장치',
|
|
oled: {
|
|
title: 'OLED',
|
|
description: 'OLED 화면 자동 절전',
|
|
0: '사용 안 함',
|
|
15: '15초',
|
|
30: '30초',
|
|
60: '1분',
|
|
180: '3분',
|
|
300: '5분',
|
|
600: '10분',
|
|
1800: '30분',
|
|
3600: '1시간'
|
|
},
|
|
ssh: {
|
|
description: 'SSH 원격 접속 활성화',
|
|
tip: '활성화하기 전에 강력한 비밀번호를 설정하세요. (계정 - 비밀번호 변경)'
|
|
},
|
|
advanced: '고급 설정',
|
|
swap: {
|
|
title: '스왑',
|
|
disable: '비활성화',
|
|
description: '스왑 파일 크기 설정',
|
|
tip: '이 기능을 활성화하면 SD 카드의 수명이 단축될 수 있습니다!'
|
|
},
|
|
mouseJiggler: {
|
|
title: '마우스 흔들기',
|
|
description: '원격 호스트가 절전 모드로 진입하는 것을 방지',
|
|
disable: '비활성화',
|
|
absolute: '절대값 모드',
|
|
relative: '상대값 모드'
|
|
},
|
|
mdns: {
|
|
description: 'mDNS 검색 서비스 활성화',
|
|
tip: '사용하지 않는 경우 끄는 것이 좋습니다'
|
|
},
|
|
hdmi: {
|
|
description: 'HDMI/모니터 출력 활성화',
|
|
idleTimeoutTitle: '캡처 유휴 시간 제한',
|
|
idleTimeoutDescription: '활성 시청자가 없는 상태가 다음 시간 동안 지속되면 HDMI 캡처 중지',
|
|
minutes: '분'
|
|
},
|
|
autostart: {
|
|
title: '자동 시작 스크립트 설정',
|
|
description: '시스템 시작 시 자동으로 실행되는 스크립트를 관리합니다.',
|
|
new: '새로운',
|
|
deleteConfirm: '이 파일을 정말로 삭제합니까?',
|
|
yes: '네',
|
|
no: '아니오',
|
|
scriptName: '자동 시작 스크립트 이름',
|
|
scriptContent: '자동 시작 스크립트 내용',
|
|
settings: '설정'
|
|
},
|
|
hidOnly: 'HID 전용 모드',
|
|
hidOnlyDesc: '가상 장치 에뮬레이션을 중지하고 기본 HID 제어만 유지합니다.',
|
|
disk: '가상 디스크',
|
|
diskDesc: '원격 호스트에서 가상 USB를 마운트합니다.',
|
|
network: '가상 네트워크',
|
|
networkDesc: '원격 호스트에서 가상 네트워크 카드를 마운트합니다.',
|
|
reboot: '재부팅',
|
|
rebootDesc: 'NanoKVM을 재부팅하시겠습니까?',
|
|
okBtn: '네',
|
|
cancelBtn: '아니오'
|
|
},
|
|
network: {
|
|
title: '네트워크',
|
|
wifi: {
|
|
title: 'Wi-Fi',
|
|
description: 'Wi-Fi 설정',
|
|
apMode: 'AP 모드가 활성화되었습니다. QR 코드를 스캔하여 Wi-Fi에 연결하세요',
|
|
connect: 'Wi-Fi 연결',
|
|
connectDesc1: '네트워크 SSID와 비밀번호를 입력하세요',
|
|
connectDesc2: '이 네트워크에 연결할 비밀번호를 입력하세요',
|
|
disconnect: '네트워크 연결을 끊으시겠습니까?',
|
|
failed: '연결에 실패했습니다. 다시 시도하세요.',
|
|
ssid: '이름',
|
|
password: '비밀번호',
|
|
joinBtn: '연결',
|
|
confirmBtn: '확인',
|
|
cancelBtn: '취소'
|
|
},
|
|
tls: {
|
|
description: 'HTTPS 프로토콜 활성화',
|
|
tip: '주의: HTTPS 사용 시 특히 MJPEG 비디오 모드에서 지연 시간이 증가할 수 있습니다.'
|
|
},
|
|
dns: {
|
|
title: 'DNS',
|
|
description: 'NanoKVM의 DNS 서버 설정',
|
|
mode: '모드',
|
|
dhcp: 'DHCP',
|
|
manual: '수동',
|
|
add: 'DNS 추가',
|
|
save: '저장',
|
|
invalid: '유효한 IP 주소를 입력하세요',
|
|
noDhcp: '현재 사용 가능한 DHCP DNS가 없습니다',
|
|
saved: 'DNS 설정이 저장되었습니다',
|
|
saveFailed: 'DNS 설정 저장 실패',
|
|
unsaved: '저장되지 않은 변경사항',
|
|
maxServers: '최대 {{count}}개의 DNS 서버가 허용됩니다',
|
|
dnsServers: 'DNS 서버',
|
|
dhcpServersDescription: 'DNS 서버는 DHCP에서 자동으로 가져옵니다',
|
|
manualServersDescription: 'DNS 서버를 수동으로 편집할 수 있습니다',
|
|
networkDetails: '네트워크 세부 정보',
|
|
interface: '인터페이스',
|
|
ipAddress: 'IP 주소',
|
|
subnetMask: '서브넷 마스크',
|
|
router: '라우터',
|
|
none: '없음'
|
|
}
|
|
},
|
|
tailscale: {
|
|
title: 'Tailscale',
|
|
memory: {
|
|
title: '메모리 최적화',
|
|
tip: '메모리 사용량이 제한을 초과하면 가비지 컬렉션이 더 적극적으로 실행되어 메모리를 확보하려고 시도합니다. Tailscale을 사용할 경우 50MB로 설정하는 것이 좋습니다. 변경 사항을 적용하려면 Tailscale을 다시 시작해야 합니다.'
|
|
},
|
|
swap: {
|
|
title: '스왑 메모리',
|
|
tip: '메모리 최적화를 활성화한 후에도 문제가 지속되면 스왑 메모리를 활성화해 보세요. 이 설정은 스왑 파일 크기를 기본값으로 256MB로 설정하며, "설정 > 기기"에서 조정할 수 있습니다.'
|
|
},
|
|
restart: '정말로 Tailscale을 다시 시작하시겠습니까?',
|
|
stop: '정말로 Tailscale을 중지하시겠습니까?',
|
|
stopDesc: 'Tailscale에서 로그아웃하고 자동 시작을 비활성화합니다.',
|
|
loading: '불러오는 중...',
|
|
notInstall: 'Tailscale이 없습니다. 설치해주세요.',
|
|
install: '설치',
|
|
installing: '설치중',
|
|
failed: '설치 실패',
|
|
retry: '새로고침하고 다시 시도하거나, 수동으로 설치하세요',
|
|
download: '다운로드 중 :',
|
|
package: '패키지 설치',
|
|
unzip: '압축 해제',
|
|
upTailscale: 'tailscale을 NanoKVM의 /usr/bin/ 경로에 업로드 했습니다.',
|
|
upTailscaled: 'tailscaled을 NanoKVM의 /usr/sbin/ 경로에 업로드 했습니다.',
|
|
refresh: '현재 페이지 새로고침',
|
|
notRunning: 'Tailscale이 실행되고 있지 않습니다. 계속하려면 시작해 주세요.',
|
|
run: '시작',
|
|
notLogin: '이 기기는 현재 연동 되지 않았습니다. 로그인해서 계정에 이 장치를 연동하세요.',
|
|
urlPeriod: '이 주소는 10분간 유효합니다.',
|
|
login: '로그인',
|
|
loginSuccess: '로그인 성공',
|
|
enable: 'Tailscale 활성화',
|
|
deviceName: '장치 이름',
|
|
deviceIP: '장치 IP',
|
|
account: '계정',
|
|
logout: '로그아웃',
|
|
logoutDesc: '정말로 로그아웃 하시겠습니까?',
|
|
uninstall: 'Tailscale 제거',
|
|
uninstallDesc: '정말로 Tailscale을 제거할까요?',
|
|
okBtn: '네',
|
|
cancelBtn: '아니오'
|
|
},
|
|
update: {
|
|
title: '업데이트 확인',
|
|
queryFailed: '버전 확인 실패',
|
|
updateFailed: '업데이트 실패, 재시도하세요.',
|
|
isLatest: '이미 최신 버전입니다.',
|
|
available: '업데이트가 가능합니다. 정말로 업데이트 할까요?',
|
|
updating: '업데이트 시작. 잠시 기다려주세요...',
|
|
confirm: '확인',
|
|
cancel: '취소',
|
|
preview: '미리보기 업데이트',
|
|
previewDesc: '새로운 기능과 개선 사항에 미리 접근하세요',
|
|
previewTip: '미리보기 버전에는 버그나 완성되지 않은 기능이 포함될 수 있으니 주의하세요!',
|
|
offline: {
|
|
title: '오프라인 업데이트',
|
|
desc: '로컬 설치 패키지를 통한 업데이트',
|
|
upload: '업로드',
|
|
invalidName: '유효하지 않은 파일 이름 형식입니다. GitHub 릴리즈에서 다운로드하세요.',
|
|
updateFailed: '업데이트에 실패했습니다. 재시도하세요.'
|
|
}
|
|
},
|
|
account: {
|
|
title: '계정',
|
|
webAccount: '웹 계정',
|
|
password: '비밀번호',
|
|
updateBtn: '업데이트',
|
|
logoutBtn: '로그아웃',
|
|
logoutDesc: '정말로 로그아웃 하시겠습니까?',
|
|
okBtn: '네',
|
|
cancelBtn: '아니오'
|
|
}
|
|
},
|
|
picoclaw: {
|
|
title: 'PicoClaw 어시스턴트',
|
|
empty: '패널을 열고 작업을 시작하세요.',
|
|
inputPlaceholder: 'PicoClaw가 무엇을 하기를 원하는지 설명하세요',
|
|
newConversation: '새 대화',
|
|
processing: '처리 중...',
|
|
agent: {
|
|
defaultTitle: '일반 어시스턴트',
|
|
defaultDescription: '일반 대화, 검색, 작업 공간 지원.',
|
|
kvmTitle: '원격 제어',
|
|
kvmDescription: 'NanoKVM을 통한 원격 호스트 제어.',
|
|
switched: '에이전트 역할 변경됨',
|
|
switchFailed: '에이전트 역할 변경에 실패했습니다'
|
|
},
|
|
send: '전송',
|
|
cancel: '취소',
|
|
status: {
|
|
connecting: '게이트웨이 연결 중...',
|
|
connected: 'PicoClaw 세션이 연결되었습니다',
|
|
disconnected: 'PicoClaw 세션이 종료되었습니다',
|
|
stopped: '중지 요청이 전송되었습니다',
|
|
runtimeStarted: 'PicoClaw 런타임이 시작되었습니다',
|
|
runtimeStartFailed: 'PicoClaw 런타임 시작에 실패했습니다',
|
|
runtimeStopped: 'PicoClaw 런타임이 중지되었습니다',
|
|
runtimeStopFailed: 'PicoClaw 런타임 중지에 실패했습니다',
|
|
controlSwitchedToMCP: '제어가 외부 MCP 서비스로 전환되었습니다'
|
|
},
|
|
connection: {
|
|
runtime: {
|
|
checking: '확인 중',
|
|
restoring: 'Restoring PicoClaw',
|
|
ready: '런타임 준비됨',
|
|
stopped: '런타임 중지됨',
|
|
blockedByMCP: '외부 MCP 제어가 활성화되어 있습니다',
|
|
readyBlockedByMCP: 'The runtime is running, but external MCP currently controls device input.',
|
|
readyWithoutControl: 'The runtime is running. Grant PicoClaw device control before reconnecting.',
|
|
unavailable: '런타임 사용 불가',
|
|
configError: '구성 에러'
|
|
},
|
|
transport: {
|
|
connecting: '연결 중',
|
|
connected: '연결됨',
|
|
disconnected: 'Disconnected',
|
|
reconnect: 'Reconnect',
|
|
reconnectDescription: 'Reconnect to the running PicoClaw session.',
|
|
reconnectBlocked: 'PicoClaw needs device control before reconnecting.'
|
|
},
|
|
run: {
|
|
idle: '대기',
|
|
busy: '작업 중'
|
|
}
|
|
},
|
|
message: {
|
|
toolAction: '동작',
|
|
observation: '관찰',
|
|
screenshot: '스크린샷'
|
|
},
|
|
overlay: {
|
|
locked: 'PicoClaw가 기기를 제어하고 있습니다. 수동 입력이 일시 중지됩니다.'
|
|
},
|
|
control: {
|
|
picoclaw: '장치 제어: PicoClaw',
|
|
picoclawDescription: 'PicoClaw can write keyboard and mouse input. Manual input may pause.',
|
|
mcp: '장치 제어: 외부 MCP',
|
|
mcpDescription: 'External MCP can write to the device. PicoClaw will not take over input.',
|
|
off: '장치 제어: 꺼짐',
|
|
offDescription: 'AI will not write keyboard or mouse input. Manual control remains available.',
|
|
transitioning: 'Device control: switching',
|
|
transitioningDescription: 'Device control is syncing. Please wait.',
|
|
grant: '제어 권한 부여',
|
|
release: '해제',
|
|
releasing: 'Releasing...',
|
|
switching: 'Switching...',
|
|
releasingLabel: 'Device control: releasing',
|
|
releasingDescription: 'Device control is being returned. PicoClaw has stopped current writes.',
|
|
granted: 'PicoClaw 제어 권한이 부여되었습니다',
|
|
released: 'PicoClaw 제어가 해제되었습니다',
|
|
grantFailed: 'PicoClaw 제어 권한 부여에 실패했습니다',
|
|
releaseFailed: 'PicoClaw 제어 해제에 실패했습니다',
|
|
grantConfirmTitle: '장치 제어를 PicoClaw로 전환할까요?',
|
|
grantConfirmDesc: '외부 MCP 장치 쓰기가 중단됩니다.'
|
|
},
|
|
install: {
|
|
install: 'PicoClaw 설치',
|
|
installing: 'PicoClaw 설치 중',
|
|
success: 'PicoClaw가 성공적으로 설치되었습니다',
|
|
failed: 'PicoClaw 설치에 실패했습니다',
|
|
uninstalling: '런타임 삭제 중...',
|
|
uninstalled: '런타임 삭제에 성공했습니다.',
|
|
uninstallFailed: '삭제에 실패했습니다.',
|
|
requiredTitle: 'PicoClaw가 설치되지 않았습니다',
|
|
requiredDescription: 'PicoClaw 런타임을 시작하기 전에 PicoClaw를 설치하세요.',
|
|
progressDescription: 'PicoClaw가 다운로드되고 설치되고 있습니다.',
|
|
stages: {
|
|
preparing: '준비 중',
|
|
downloading: '다운로드 중',
|
|
extracting: '압축 해제 중',
|
|
verifying: '검증 중',
|
|
installing: '설치 중',
|
|
installed: '설치 완료',
|
|
install_timeout: '시간 초과',
|
|
install_failed: '실패'
|
|
}
|
|
},
|
|
model: {
|
|
requiredTitle: '모델 구성이 필요합니다',
|
|
requiredDescription: 'PicoClaw 채팅을 사용하기 전에 PicoClaw 모델을 구성하세요.',
|
|
docsTitle: '구성 가이드',
|
|
docsDesc: '지원하는 모델과 프로트콜',
|
|
menuLabel: '모델 구성',
|
|
modelIdentifier: '모델 식별자',
|
|
modelIdentifierPlaceholder: 'openai/gpt-5.4',
|
|
apiBase: 'API Base URL',
|
|
apiBasePlaceholder: 'https://api.example.com/v1',
|
|
apiKey: 'API 키',
|
|
apiKeyPlaceholder: '모델 API 키를 입력하세요',
|
|
save: '저장',
|
|
saving: '저장 중',
|
|
saved: '모델 구성이 저장되었습니다',
|
|
saveFailed: '모델 구성 저장에 실패했습니다',
|
|
invalid: '모델 식별자, API Base URL, API 키가 필요합니다'
|
|
},
|
|
uninstall: {
|
|
menuLabel: '제거',
|
|
confirmTitle: 'PicoClaw 제거',
|
|
confirmContent: 'PicoClaw를 정말로 제거할까요? 실행 파일과 모든 구성 파일이 삭제됩니다.',
|
|
confirmOk: '제거',
|
|
confirmCancel: '취소'
|
|
},
|
|
history: {
|
|
title: '기록',
|
|
loading: '기록 불러오는 중...',
|
|
emptyTitle: '기록 없음',
|
|
emptyDescription: '이전 PicoClaw 세션은 여기에 표시됩니다.',
|
|
loadFailed: '세션 기록을 불러오지 못했습니다',
|
|
deleteFailed: '세션 삭제에 실패했습니다',
|
|
deleteConfirmTitle: '세션 삭제',
|
|
deleteConfirmContent: '정말로 "{{title}}"를 삭제할까요?',
|
|
deleteConfirmOk: '삭제',
|
|
deleteConfirmCancel: '취소',
|
|
messageCount_one: '{{count}}개의 메시지',
|
|
messageCount_other: '{{count}}개의 메시지',
|
|
messageCount: '{{count}}개의 메시지'
|
|
},
|
|
config: {
|
|
startRuntime: 'PicoClaw 시작',
|
|
stopRuntime: 'PicoClaw 중지'
|
|
},
|
|
start: {
|
|
enableConfirmTitle: '제어를 PicoClaw로 전환하시겠습니까?',
|
|
enableConfirmDesc: 'PicoClaw를 시작하면 외부 MCP 서비스가 비활성화됩니다.',
|
|
enableConfirmOk: 'PicoClaw 시작',
|
|
enableConfirmCancel: '취소',
|
|
title: 'PicoClaw 시작',
|
|
description: '런타임을 시작하여 PicoClaw 어시스턴트 사용을 시작하세요.',
|
|
switchFromMCP: 'Switch to PicoClaw and start',
|
|
takeoverAndStart: 'Take over and start'
|
|
}
|
|
},
|
|
error: {
|
|
title: '문제가 발생했습니다.',
|
|
refresh: '새로고침'
|
|
},
|
|
fullscreen: {
|
|
toggle: '전체 화면 전환'
|
|
},
|
|
menu: {
|
|
collapse: '메뉴 접기',
|
|
expand: '메뉴 펼치기'
|
|
}
|
|
}
|
|
};
|
|
|
|
export default ko;
|