{ "action": { "confirm": "확인", "cancel": "취소", "close": "닫기", "delete": "삭제", "save": "저장", "create": "생성", "copy": "복사", "copied": "복사됨", "refresh": "새로고침", "gotIt": "확인", "edit": "편집", "open": "열기", "clone": "복제", "reconnect": "재연결", "disconnect": "연결 끊기", "submit": "확인" }, "status": { "loading": "불러오는 중...", "processing": "처리 중...", "connecting": "연결 중...", "connected": "연결됨", "disconnected": "연결 끊김", "background": "백그라운드", "suspended": "일시 중단", "reconnecting": "재연결 중", "error": "연결 오류", "reading": "불러오는 중...", "saving": "저장 중..." }, "error": { "title": "문제가 발생했습니다", "body": "앱에서 예기치 않은 문제가 발생했습니다", "recoverable": "이 오류는 복구 가능합니다. 페이지를 새로고침해 보세요.", "refreshPage": "페이지 새로고침", "restartApp": "앱 재시작", "supportHint": "문제가 지속되면 로그를 확인하거나 지원팀에 문의하세요" }, "toast": { "closeAria": "알림 닫기" }, "metrics": { "timezone": "시간대 {{value}}", "memory": "메모리 {{percent}}%{{detail}}", "sessionTransfer": "세션 트래픽 {{value}}" }, "palette": { "title": "명령 팔레트", "aria": "명령 팔레트", "placeholder": "명령, 세션 또는 스니펫 검색...", "empty": "일치하는 결과가 없습니다", "emptyHint": "다른 키워드를 시도해 보세요", "resultCount": "{{count}}개 결과", "badge": { "command": "명령", "session": "세션", "snippet": "스니펫" }, "hint": { "nav": "탐색", "run": "실행", "close": "닫기" }, "cmd": { "newSession": "새 세션", "newSessionDesc": "새 SSH 세션 프로필 생성", "quickConnect": "빠른 연결", "quickConnectDesc": "호스트 정보로 직접 연결", "localTerminal": "로컬 터미널", "localTerminalDesc": "로컬 셸 열기", "settings": "설정 열기", "settingsDesc": "앱 환경설정", "toggleSidebar": "사이드바 전환", "toggleSidebarDesc": "터미널에 집중하도록 사이드바 숨기기", "newTab": "새 탭", "closeTab": "현재 탭 닫기", "closeAllTabs": "모든 탭 닫기", "portForward": "새 포트 포워딩", "upgradePro": "OpsXShell 프로로 업그레이드", "editSession": "세션 편집: {{name}}" } }, "tab": { "welcome": "환영합니다", "new": "새 탭", "settings": "설정", "portForward": "포트 포워딩", "terminal": "터미널", "batch": "일괄 실행", "newTerminal": "새 터미널", "closeAria": "{{title}} 닫기", "listAria": "열린 탭", "kind": { "terminal": "터미널", "sftp": "SFTP", "portforward": "포워딩", "serial": "시리얼", "rdp": "RDP", "vnc": "VNC", "batch": "일괄", "settings": "설정" }, "menu": { "closeOthers": "다른 탭 닫기", "closeRight": "오른쪽 탭 닫기", "closeLeft": "왼쪽 탭 닫기", "closeAll": "모두 닫기", "clone": "탭 복제", "openSftp": "SFTP 열기" }, "renameAria": "탭 {{title}} 이름 바꾸기", "renameHint": "더블 클릭해 이름 변경" }, "sidebar": { "brandSub": "SSH / SFTP 터미널", "collapse": "사이드바 접기 (Ctrl/Cmd+B)", "collapseAria": "사이드바 접기", "expand": "사이드바 펼치기", "expandAria": "사이드바 펼치기", "toggle": "사이드바 전환", "searchPlaceholder": "검색...", "localShell": { "openDefault": "기본 로컬 셸 열기", "choose": "셸 선택", "title": "로컬 셸", "subtitle": "이 컴퓨터에서 터미널 열기", "default": "기본" } }, "connectionPanel": { "title": "연결", "empty": "연결 없음", "emptyDesc": "활성 연결이 없습니다. 서버에 연결하면 여기에 표시됩니다.", "stat": { "total": "전체", "active": "활성", "background": "백그라운드", "error": "연결 끊김/오류" }, "status": { "connected": "연결됨", "connecting": "연결 중", "background": "백그라운드", "suspended": "일시 중단", "error": "오류", "disconnected": "연결 끊김", "reconnecting": "재연결 중" }, "refCount": "참조 {{count}}개", "reconnect": "재연결", "reconnecting": "재연결 중...", "disconnect": "연결 끊기" }, "pro": { "upgrade": "프로로 업그레이드", "feature": "Pro 기능", "unlock": "프로 고급 기능 잠금 해제", "comingSoon": "출시 예정", "activateSuccess": "활성화됨", "activateFailed": "활성화 실패", "licenseActivated": "Pro 라이선스가 활성화되었습니다", "paymentPending": "결제 후 라이선스를 여기에 붙여넣거나 나중에 다시 활성화해 보세요", "invalidLicense": "활성화 실패: 잘못된 라이선스", "goUpgrade": "업그레이드", "haveLicense": "라이선스가 있나요? 활성화", "title": "OpsXShell · 프로 잠금 해제", "subtitleComingSoon": "고급 기능 곧 제공 · 프로로 먼저 체험", "subtitleUnlock": "고급 기능을 잠금 해제하는 중", "subtitleDefault": "포트 포워딩, 터미널 AI, 일괄 운영, 호스트 목록, 원격 데스크톱 등 프로 기능", "activated": "Pro 활성화됨", "expiresAt": " · {{date}}까지 유효", "lifetime": " · 평생 라이선스", "oneTimeFee": "무료 / 프로 연간 / 프로 영구", "pasteLicense": "라이선스 붙여넣기", "activateButton": "활성화", "clearLicense": "로컬 라이선스 삭제", "paymentNote": "결제는 Waffo가 처리합니다. 이 앱은 카드 정보를 수집하지 않습니다.", "testDeviceId": "테스트 환경 · 기기 ID: {{deviceId}}", "later": "나중에 하기", "viewPro": "프로 요금제 보기", "wallComingSoonSuffix": "곧 제공", "wallUnlock": "프로 고급 기능 잠금 해제", "wallMessageComingSoon": "이 기능은 OpsXShell 프로에 포함되며 아직 준비 중입니다. 프로 연간 또는 영구로 먼저 체험하세요.", "wallMessageDefault": "포트 포워딩, 터미널 AI, 일괄 실행, 호스트 목록, 원격 데스크톱은 프로에 포함됩니다. 프로 연간 또는 영구로 이 기기에서 사용하세요.", "checkoutUnavailable": "결제를 사용할 수 없습니다 ({{status}})", "emailLabel": "이메일", "emailRequired": "결제 전에 이메일을 입력하세요", "claimPending": "라이선스를 받는 중…", "invalidKeyFormat": "키 형식이 올바르지 않습니다. LIC- 라이선스 키를 붙여넣으세요", "accountEmail": "계정: {{email}}", "freeTier": "무료", "proTier": "프로", "freeItems": { "ssh": "SSH 터미널", "sftp": "SFTP 파일 관리자", "local": "로컬 터미널", "crud": "세션 CRUD", "import": "단일 / ssh_config 가져오기" }, "proItems": { "forward": "포트 포워딩", "proxy": "세션 프록시 / SOCKS", "serial": "시리얼 터미널", "ai": "터미널 AI 어시스턴트", "batch": "일괄 실행 / 브로드캐스트 동기화", "broadcast": "브로드캐스트 동기 입력", "importExport": "호스트 목록 일괄 가져오기/내보내기", "desktop": "원격 데스크톱 (RDP / VNC)" }, "planYearly": "프로 연간", "planYearlyDesc": "¥99 / 년 · 기기 2대", "planPerpetual": "프로 영구", "planPerpetualDesc": "¥199 · 기기 5대 · 평생", "planTrial": "프로 체험", "devices": "최대 {{count}}대", "goUpgradeYearly": "프로 연간 구매", "goUpgradePerpetual": "프로 영구 구매", "activatedYearly": "프로 연간 활성화됨", "activatedPerpetual": "프로 영구 활성화됨", "activatedTrial": "프로 체험 활성화됨", "choosePlan": "선택: 무료 / 프로 연간 / 프로 영구", "planFreePrice": "¥0", "planFreeDesc": "SSH · SFTP · 로컬 터미널", "planFreeCta": "현재 요금제", "planIncludesPro": "모든 프로 기능 포함", "planFree": "무료", "subtitleUnlockDetail": "관련 기능: {{feature}}", "wallUnlockComingSoon": "프로 고급 기능 곧 제공", "wallMessageComingSoonFeature": "「{{feature}}」는 프로 고급 기능이며 아직 준비 중입니다. 프로 연간 또는 영구로 먼저 체험하세요.", "wallMessageFeature": "「{{feature}}」는 프로 고급 기능입니다. 프로 연간 또는 영구로 이 기기에서 사용하세요." }, "launcher": { "title": "빠른 실행", "description": "세션, 로컬 Shell, 데스크톱, 시리얼", "cards": { "quickConnect": { "title": "빠른 연결", "desc": "user@host:port" }, "saveSession": { "title": "세션 저장", "desc": "자격 증명, 그룹, 프록시" }, "serial": { "title": "시리얼 터미널", "desc": "보레이트 및 포트 설정" }, "rdp": { "title": "RDP 데스크톱", "desc": "원격 Windows" }, "vnc": { "title": "VNC 데스크톱", "desc": "원격 그래픽" } }, "sectionLocalShell": "로컬 셸", "sectionSavedSessions": "저장된 세션", "systemDefault": "시스템 기본값" }, "statusBar": { "socksLabel": "포워딩", "socksIdle": "포트 포워딩 열기 · 우클릭으로 SOCKS 복사", "socksRunning": "SOCKS5 실행 중 · 클릭하여 관리 · 우클릭으로 복사", "forwardOpenIdle": "포트 포워딩 열기 · 우클릭으로 socks5://127.0.0.1:{{port}} 복사", "forwardOpenRunning": "SOCKS5 실행 중 (:{{port}}) · 클릭하여 관리 · 우클릭으로 복사", "forwardStarted": "포워딩 시작됨", "forwardStartedDynamic": "SOCKS5 시작됨: socks5://127.0.0.1:{{port}}", "forwardResumed": "포트 포워딩 {{count}}개를 복구했습니다", "socksStartFailed": "시작 실패: {{message}}", "socksStopFailed": "중지 실패: {{message}}", "socksCopied": "socks5://127.0.0.1:{{port}} 복사됨" }, "portForward": { "title": "포트 포워딩", "connectedAs": "연결됨: {{target}}", "notConnected": "연결되지 않음 — 먼저 SSH를 연결하세요", "socksDefaultHint": "로컬 SOCKS5: 127.0.0.1:1080", "socksRunning": "SOCKS5 실행 중", "socksStart": "SOCKS5 시작", "addRule": "추가", "emptyTitle": "포트 포워딩 없음", "emptyDesc": "SOCKS5를 시작하거나 로컬/원격 규칙을 추가하세요", "emptyAction": "127.0.0.1:1080 시작", "typeLocal": "로컬", "typeRemote": "원격", "typeDynamic": "동적", "running": "실행 중", "socksProxy": "SOCKS5: 127.0.0.1:{{port}}", "remoteToLocal": "원격 {{bind}}:{{remote}} → {{host}}:{{local}}", "stats": "{{connections}}개 연결 · ↑{{up}} · ↓{{down}}", "copyProxy": "프록시 복사", "copyRule": "규칙 복제", "editRule": "편집", "stopListener": "중지", "start": "시작", "delete": "삭제", "editTitle": "포워딩 편집", "addTitle": "포워딩 추가", "typeLocalDesc": "원격 서비스 접근", "typeRemoteDesc": "로컬 서비스 노출", "typeDynamicDesc": "SOCKS5", "selectType": "유형", "drawerSubtitle": "현재 SSH 세션을 통한 터널", "ruleFields": "세부 정보", "dynamicHint": "로컬 SOCKS5(기본 :1080). 트래픽은 현재 SSH 출구를 통해 나갑니다.", "dynamicSingleHint": "SSH 호스트당 동적 규칙 1개. 중지 후 포트 변경.", "dynamicPortHint": "사용 중이면 다른 포트(예: 1081).", "ruleList": "규칙", "ruleListEmpty": "아직 로컬/원격 규칙이 없습니다", "addSection": "새로 추가", "errorDynamicExists": "동적 규칙이 이미 존재합니다 (1080). 대신 시작하거나 중지하세요.", "diagram": { "title": "작동 방식", "localApp": "로컬 앱", "sshHost": "SSH 호스트", "remoteService": "원격 서비스", "remoteClient": "원격 클라이언트", "localService": "로컬 서비스", "localClient": "로컬", "browser": "로컬 클라이언트", "socksProxy": "로컬 SOCKS", "anyTarget": "모든 대상", "localSide": "로컬", "remoteSide": "원격", "firewall": "방화벽", "viaApp": "OpsXShell 경유", "viaSsh": "SSH 경유", "toTarget": "대상으로", "toListen": "수신", "targetDb": "DB", "targetWeb": "웹", "targetApi": "API", "remotePeerA": "원격 A", "remotePeerB": "원격 B", "remotePeerC": "원격 C", "cloudA": "클라우드 A", "cloudB": "클라우드 B", "internet": "인터넷", "localCaption": "로컬: 원격 포트를 로컬 포트인 것처럼 접근합니다.", "remoteCaption": "원격: 원격 접근을 로컬 서비스로 포워딩합니다.", "dynamicCaption": "동적: 로컬 SOCKS5, 현재 SSH 출구로 외부 접속." }, "ruleName": "이름", "ruleNamePlaceholder": "예: MySQL", "localListenPort": "로컬 수신 포트", "localListenPortHint": "기본 localhost — ssh -L 포트:… 와 같음. 보통 포트만 입력.", "localBindAdvanced": "고급: 로컬 바인드 변경", "localTargetPort": "로컬 대상 포트", "remoteTargetPort": "대상 포트", "remoteListenPort": "원격 수신 포트", "remoteListenPortHint": "기본은 원격 localhost — ssh -R 포트:… 와 같습니다. 보통 포트만 입력하세요.", "remoteListenAddress": "원격 수신", "remoteListenAddressPlaceholder": "127.0.0.1:18080", "remoteListenAddressHint": "127.0.0.1 = 원격 본기만 / 0.0.0.0 = 원격 LAN(GatewayPorts 필요).", "errorRemoteListenAddress": "유효한 원격 수신 주소 입력(예: 127.0.0.1:18080)", "localTargetAddress": "로컬 / LAN 대상", "localTargetAddressPlaceholder": "127.0.0.1:8080", "localTargetAddressHint": "로컬/LAN 서비스로 전달 (예: 127.0.0.1:8080). 0.0.0.0 금지.", "viaSessionRemote": "{{target}} 에서 수신 (기본 localhost)", "errorRemoteListenPort": "유효한 원격 수신 포트(1–65535)를 입력하세요", "errorLocalTargetAddress": "유효한 로컬/LAN 대상 입력(예: 127.0.0.1:8080)", "portPlaceholder": "예: 3306", "remoteHost": "대상 호스트", "remoteHostPlaceholder": "127.0.0.1", "socksRuleName": "SOCKS5 프록시", "defaultLocalName": "로컬 포워딩", "defaultRemoteName": "원격 포워딩", "sessionRestoredTitle": "세션 복원됨", "sessionRestoredDesc": "마지막 세션의 포트 포워딩 탭이 복원되었습니다.\n다시 사용하려면 SSH를 재연결하세요.", "stopEditTitle": "편집 전 중지", "stopEditMessage": "이 포워딩이 실행 중입니다. 편집하기 전에 중지하시겠습니까?", "stopEditConfirm": "중지하고 편집", "deleteTitle": "규칙 삭제", "deleteRunning": "실행 중인 포워딩이 먼저 중지됩니다.", "deleteConfirm": "이 규칙을 삭제하시겠습니까?", "errorNamePort": "이름과 유효한 포트(1–65535)를 입력하세요", "errorTargetPort": "유효한 대상 포트(1–65535)를 입력하세요", "errorRemoteHost": "대상 호스트를 입력하세요(SSH 서버 기준)", "errorNotConnected": "연결되지 않음", "errorStartFailed": "시작 실패", "errorStopFailed": "중지 실패", "errorSocksRunning": "SOCKS5가 이미 실행 중입니다", "copySuffix": "복사", "remoteBindHint": "0.0.0.0 은 GatewayPorts 필요. 없으면 종종 127.0.0.1 만 바인드. 대상에 0.0.0.0 금지.", "localToRemote": "로컬 {{bind}}:{{local}} → 원격 {{host}}:{{remote}}", "localToRemotePort": "로컬 :{{local}} → 원격 {{host}}:{{remote}}", "remoteHostHint": "SSH 서버 기준. 본기는 127.0.0.1, LAN은 도달 가능한 IP. 0.0.0.0 불가.", "localBindHost": "로컬 바인드", "localBindHostPlaceholder": "127.0.0.1", "localBindHostHint": "기본은 이 기기만. 0.0.0.0 또는 LAN IP로 네트워크 접근 허용.", "errorTargetHostInvalid": "대상은 0.0.0.0 불가 — 127.0.0.1 또는 도달 가능한 IP", "listenAddress": "로컬 수신", "listenAddressPlaceholder": "127.0.0.1:8080", "listenAddressHint": "기본은 이 기기만. 0.0.0.0이면 LAN 접근 가능.", "targetAddress": "원격 대상", "targetAddressPlaceholder": "127.0.0.1:80", "targetAddressHint": "SSH 서버에서 본 주소. 본기 서비스는 127.0.0.1:포트.", "errorListenAddress": "유효한 수신 주소 입력(예: 127.0.0.1:8080)", "errorTargetAddress": "유효한 대상 입력(예: 127.0.0.1:80)", "targetAddressHintVia": "{{target}} 경유. 본기 서비스는 127.0.0.1:포트(새 원격 포트 생성 안 함).", "viaSession": "세션 경유 {{target}}", "remoteToLocalPort": "원격 :{{remote}} → {{host}}:{{local}}", "remoteBindAdvanced": "고급: 원격 바인드 변경", "remoteBindHost": "원격 바인드", "remoteBindHostPlaceholder": "127.0.0.1", "remoteBindHostHint": "기본은 원격 호스트만. 0.0.0.0 은 GatewayPorts 필요. 없으면 대부분 sshd 가 여전히 127.0.0.1 만 바인드합니다.", "remoteGatewayPortsWarning": "원격 0.0.0.0 수신을 요청했습니다. GatewayPorts 가 없으면 sshd 가 조용히 127.0.0.1 만 바인드하는 경우가 많습니다." } }