{ "htmlLang": "ko", "ogLocale": "ko_KR", "dir": "ltr", "nativeName": "한국어", "abbr": "KO", "meta": { "title": "SecureBit.chat - 종단 간 암호화 비공개 메신저", "description": "SecureBit.chat은 브라우저 안에서만 동작하는 무료 P2P 메신저로, 종단 간 암호화를 사용합니다. 계정도 없고 메시지를 보관하는 서버도 없습니다 - ECDH P-384, AES-256-GCM, 그리고 직접 만나서 하는 SAS 확인.", "keywords": "암호화 메신저, 종단 간 암호화, P2P 채팅, P2P 메신저, ECDH, DTLS, SAS 확인, WebRTC, 비공개 채팅, 안전한 채팅, 서버 없음, 계정 없음, 중간자 공격 방어, 순방향 비밀성", "ogTitle": "SecureBit.chat - 종단 간 암호화 P2P 채팅", "ogDescription": "브라우저 안에서만 동작하는 안전한 메신저입니다. 계정도 없고 메시지를 보관하는 서버도 없습니다. 직접 운영하는 STUN/TURN 서버를 쓸 수 있습니다 - 무엇도 강요하지 않습니다.", "ogImageAlt": "SecureBit.chat - 종단 간 암호화 P2P 채팅", "twitterTitle": "SecureBit.chat - 종단 간 암호화 P2P 채팅", "twitterDescription": "브라우저 안에서만 동작하는 안전한 메신저입니다. 계정도 없고 메시지를 보관하는 서버도 없습니다.", "twitterImageAlt": "SecureBit.chat - 종단 간 암호화 P2P 채팅" }, "schema": { "siteDescription": "브라우저 안에서만 동작하는 종단 간 암호화 P2P 채팅입니다.", "appDescription": "무료 종단 간 암호화 P2P 메신저입니다. 계정도 없고 메시지를 보관하는 서버도 없습니다 - ECDH P-384, AES-256-GCM, 직접 만나서 하는 SAS 확인.", "operatingSystem": "제한 없음 (최신 웹 브라우저)", "browserRequirements": "WebRTC와 Web Crypto API가 필요합니다", "featureList": [ "종단 간 암호화 (ECDH P-384, AES-256-GCM)", "메시지 서버 없이 WebRTC로 연결되는 P2P", "중간자 공격을 막는 대면 SAS 확인", "직접 운영하는 STUN/TURN 서버와 릴레이 전용 프라이버시 모드", "암호화된 파일 전송", "설치할 수 있는 프로그레시브 웹 앱, 오프라인 지원" ] }, "ui": { "language.label": "언어", "language.suggest.text": "이 페이지는 한국어로도 볼 수 있습니다.", "language.suggest.cta": "한국어로 보기", "language.suggest.dismiss": "닫기", "community.title": "프라이버시의 미래를 함께 만듭니다", "community.description": "SecureBit은 커뮤니티 덕분에 자랍니다. 여러분의 아이디어와 의견이 안전한 소통의 미래를 만듭니다 - 모든 과정이 공개되어 있고, 전 구간에서 ASN.1 검증을 수행합니다.", "community.github": "GitHub 저장소", "community.feedback": "의견 보내기", "unique.eyebrow": "무엇이 다른가", "unique.heading": "SecureBit이 특별한 이유", "unique.s1.titleTop": "계층으로 쌓은", "unique.s1.titleBottom": "암호화 코어", "unique.s1.collapsed": "암호화 코어", "unique.s1.desc": "ECDH P-384 키 교환, AES-256-GCM 페이로드, ECDSA 서명, 그리고 완전한 ASN.1 검증을 하나의 견고한 파이프라인으로 묶었습니다.", "unique.s1.tags": [ "ECDH P-384", "AES-256-GCM", "ECDSA", "ASN.1" ], "unique.s2.titleTop": "순수 P2P", "unique.s2.titleBottom": "WebRTC 기반", "unique.s2.collapsed": "WebRTC 기반 순수 P2P", "unique.s2.desc": "메시지는 WebRTC를 통해 기기에서 기기로 곧장 오갑니다. 데이터를 붙들고 있는 릴레이는 없고, 서버는 두 사람이 서로를 찾도록 돕기만 합니다.", "unique.s2.tags": [ "DTLS 1.3", "릴레이 없음" ], "unique.s3.titleTop": "완전한", "unique.s3.titleBottom": "순방향 비밀성", "unique.s3.collapsed": "순방향 비밀성", "unique.s3.desc": "세션 키는 끊임없이 교체되고 사용 후 폐기됩니다. 그래서 키 하나가 유출되어도 지난 대화는 열리지 않습니다.", "unique.s3.tags": [ "일회용 키", "자동 교체" ], "unique.s4.titleTop": "트래픽", "unique.s4.titleBottom": "난독화", "unique.s4.collapsed": "트래픽 난독화", "unique.s4.desc": "패킷 크기와 전송 간격을 채우고 무작위로 흐트러뜨려, 회선을 들여다보는 쪽에서도 메타데이터의 규칙이 드러나지 않습니다.", "unique.s4.tags": [ "패킷 패딩", "시간 지터" ], "unique.s5.titleTop": "데이터 수집", "unique.s5.titleBottom": "전혀 없음", "unique.s5.collapsed": "데이터 수집 없음", "unique.s5.desc": "계정도, 로그도, 저장된 메시지도 없습니다. 서버에는 유출되거나 압수되거나 팔릴 것이 아무것도 없습니다.", "unique.s5.tags": [ "계정 없음", "로그 없음" ], "partners.eyebrow": "파트너와 생태계", "partners.heading": "파트너들이 신뢰합니다", "partners.aegis.desc": "포트폴리오 전반의 기밀 금융 소통을 지키는 자본 파트너입니다.", "partners.aegis.role": "전략적 투자자", "partners.furilabs.desc": "프라이버시를 앞세운 리눅스 폰으로, SecureBit을 기본 보안 채널로 함께 제공합니다.", "partners.furilabs.role": "기술 파트너", "partners.inviteTitle": "파트너 되기", "partners.inviteDesc": "프라이버시를 위한 하드웨어나 인프라를 만들고 계신가요? SecureBit을 함께 붙여봅시다.", "partners.inviteCta": "이야기 시작하기", "roadmap.eyebrow": "개발 로드맵", "roadmap.heading": "SecureBit의 발자취", "roadmap.subheading": "첫 프로토타입에서 양자 내성 분산 네트워크까지, 모든 계층에서 완전한 ASN.1 검증과 함께.", "roadmap.progress": "{total}개 중 {shipped}개 완료", "roadmap.upcoming": "{upcoming}개 남음", "roadmap.keyFeatures": "주요 기능", "roadmap.status.released": "출시됨", "roadmap.status.current": "진행 중", "roadmap.status.dev": "개발 중", "roadmap.status.planned": "예정", "roadmap.status.research": "연구", "hero.headlineTop": "두 사람만 읽을 수 있는", "hero.headlineBottom": "직통 회선.", "hero.subheading": "키는 여러분의 기기에서 만들어지고 두 기기 사이에서 곧바로 교환됩니다. 계정도 없고 메시지를 보관하는 서버도 없습니다.", "hero.diagramAlt": "한 상대와 이어진 직통 암호화 회선, 그리고 뒤이어 합류하는 두 사람", "intro.createTitle": "새 채널 만들기", "intro.createDesc": "여러분의 기기가 키와 일회용 초대장을 만듭니다. 그 어느 것도 서버를 거치지 않습니다.", "intro.createCta": "키와 초대장 만들기", "intro.joinTitle": "채널 참여하기", "intro.scanTitle": "카메라로 QR 스캔", "intro.scanSubtitle": "가장 빠릅니다 - 상대의 화면을 비추세요", "intro.orPasteCode": "또는 코드 붙여넣기", "intro.pastePlaceholder": "여기에 초대 코드를 붙여넣으세요…", "intro.connect": "연결", "intro.connecting": "처리 중…", "roadmap.r1.title": "개발 시작", "roadmap.r1.sub": "아이디어, 프로토타입, 인프라 구축", "roadmap.r1.date": "2025년 초", "roadmap.r1.features": [ "개념과 요구사항 정리", "기술 스택 선정: WebRTC, P2P, 암호학", "첫 메시징 프로토타입", "저장소와 CI 구축", "기본 암호화 구조", "UX/UI 설계" ], "roadmap.r2.title": "알파 공개", "roadmap.r2.sub": "첫 공개 알파: 기본 채팅과 키 교환", "roadmap.r2.date": "2025년 봄", "roadmap.r2.features": [ "WebRTC 기반 기본 P2P 메시징", "간단한 종단 간 암호화 (시연용 방식)", "안정적인 시그널링과 재연결", "테스트를 위한 최소 화면", "초기 테스터 의견 수집" ], "roadmap.r3.title": "보안 강화", "roadmap.r3.sub": "보안을 다지고 안정 브랜치 공개", "roadmap.r3.date": "2025년 여름", "roadmap.r3.features": [ "ECDH/ECDSA 실사용 적용", "순방향 비밀성과 키 교체", "인증 검사 개선", "파일 암호화와 대용량 전송", "기본 암호 처리 감사" ], "roadmap.r4.title": "확장과 안정성", "roadmap.r4.sub": "네트워크 확장과 안정성 개선", "roadmap.r4.date": "2025년 가을", "roadmap.r4.features": [ "P2P 연결과 NAT 통과 최적화", "재연결 구조와 메시지 대기열", "모바일 배터리 소모 감소", "여러 기기 간 동기화", "개발자를 위한 모니터링과 로깅 도구" ], "roadmap.r5.title": "프라이버시 우선", "roadmap.r5.sub": "프라이버시에 집중: 메타데이터 최소화", "roadmap.r5.date": "2025년 겨울", "roadmap.r5.features": [ "메타데이터 보호와 지문 축소", "어니언 라우팅과 DHT 실험", "익명 연결 옵션", "공개 코드 감사 준비", "사용자 확인 절차 개선" ], "roadmap.r6.title": "Enhanced Security Edition", "roadmap.r6.sub": "완전한 ASN.1 검증을 갖춘 18겹 군용 수준 암호화", "roadmap.r6.date": "2025년 말", "roadmap.r6.features": [ "ECDH + DTLS + SAS 삼중 보안", "ECDH P-384와 AES-GCM 256비트 암호화", "DTLS 지문 확인", "SAS(짧은 인증 문자열) 확인", "키 교체를 동반한 순방향 비밀성", "중간자 공격 방어 강화", "완전한 ASN.1 DER 검증", "OID와 EC 점 확인", "SPKI 구조 검증", "P2P WebRTC 구조", "메타데이터 보호", "100% 공개 소스" ], "roadmap.r7.title": "Desktop Edition", "roadmap.r7.sub": "Windows, macOS, Linux용 네이티브 데스크톱 앱", "roadmap.r7.date": "2026년 초", "roadmap.r7.features": [ "Windows 데스크톱 앱 (Tauri v2)", "macOS 데스크톱 앱 (Tauri v2)", "Linux AppImage (Tauri v2)", "실시간 알림", "자동 재연결", "기기 간 동기화", "개선된 화면", "최대 100MB 파일 지원" ], "roadmap.r8.title": "안전한 음성과 통화", "roadmap.r8.sub": "암호화된 음성 메시지, 음성 통화, 영상 통화", "roadmap.r8.date": "2026년 초", "roadmap.r8.features": [ "종단 간 암호화된 음성 메시지", "1:1 암호화 음성 통화 (WebRTC)", "1:1 암호화 영상 통화 (WebRTC)", "실시간 미디어의 순방향 비밀성", "SRTP/DTLS로 보호되는 미디어 스트림", "통화 중 SAS 확인", "통화 알림과 자동 재연결", "지연이 적은 P2P 미디어" ], "roadmap.r9.title": "그룹 소통", "roadmap.r9.sub": "프라이버시를 지키는 그룹 채팅", "roadmap.r9.date": "지금", "roadmap.r9.features": [ "최대 8명까지 P2P 그룹 채팅", "메시 전달과 서명된 릴레이 대체 경로", "모두가 함께 대조하는 하나의 그룹 안전 코드", "코드 추측을 막는 커밋 후 공개 절차", "설계상 일회용인 그룹 전용 신원 키", "에포크 순서를 갖춘 서명된 구성원 명단", "서명된 메시지 - 기록이 갈라지면 증명할 수 있습니다", "서버 없음, 공유 그룹 키 없음, 기록 없음" ], "roadmap.r10.title": "Mobile Edition", "roadmap.r10.sub": "iOS와 Android용 네이티브 모바일 앱", "roadmap.r10.date": "2027년 2분기", "roadmap.r10.features": [ "iOS 네이티브 앱 (Swift/SwiftUI)", "Android 네이티브 앱 (Kotlin/Jetpack Compose)", "모바일 브라우저 PWA 지원", "실시간 푸시 알림", "배터리 최적화", "모바일에 맞춘 화면", "오프라인 메시지 대기열", "생체 인증" ], "roadmap.r11.title": "양자 내성 에디션", "roadmap.r11.sub": "양자 컴퓨터에 대한 대비", "roadmap.r11.date": "2027년 4분기", "roadmap.r11.features": [ "포스트 양자 암호 CRYSTALS-Kyber", "SPHINCS+ 전자 서명", "고전과 포스트 양자를 함께 쓰는 혼합 방식", "양자에 안전한 키 교환", "갱신된 해시 알고리즘", "기존 세션 이전", "v5.x 호환", "양자 내성 프로토콜" ], "roadmap.r12.title": "분산 네트워크", "roadmap.r12.sub": "완전히 분산된 네트워크", "roadmap.r12.date": "2028년", "roadmap.r12.features": [ "노드 메시 네트워크", "피어 탐색을 위한 DHT", "내장 어니언 라우팅", "토크노믹스와 노드 보상", "DAO를 통한 거버넌스", "다른 네트워크와의 상호 운용", "플랫폼 간 호환", "스스로 복구하는 네트워크" ], "roadmap.r13.title": "AI 프라이버시 도우미", "roadmap.r13.sub": "프라이버시와 보안을 위한 인공지능", "roadmap.r13.date": "2028년 이후", "roadmap.r13.features": [ "기기 안에서 이루어지는 AI 위협 분석", "중간자 공격 자동 감지", "적응형 암호화", "맞춤형 보안 권고", "영지식 기계 학습", "개인용 AI 도우미", "예측 기반 보안", "자율적인 공격 방어" ], "handshake.step1": "ECDH P-384 키 쌍 생성 중", "handshake.step2": "확인 코드 유도 중", "handshake.step3": "순방향 비밀성 고정 중", "handshake.securingTitle": "채널을 보호하는 중", "handshake.answerTitle": "응답을 만드는 중", "handshake.securingDesc": "변조를 견딜 만큼 단단한 키를 벼리는 중입니다.", "handshake.shareTitle": "초대장 공유하기", "handshake.sendAnswerTitle": "응답 돌려보내기", "handshake.shareDesc": "QR을 보여주거나 코드를 상대에게 보내세요. 한 번만 쓸 수 있고 곧 만료됩니다.", "handshake.sendAnswerDesc": "채널을 만든 사람에게 이 응답을 전해 악수를 마치도록 하세요.", "handshake.establish": "연결 맺기", "handshake.thenReceive": "그다음 상대가 보내는 응답을 받으세요", "handshake.pasteAnswerPlaceholder": "상대의 응답 코드를 붙여넣으세요…", "handshake.answerSentNote": "이 응답을 만든 사람에게 보내고 기다리세요 - 상대가 연결되면 대화가 열립니다.", "handshake.qrHint": "상대가 코드를 다 읽을 때까지 이 화면을 열어 두세요.", "handshake.qrHintFrames": "악수가 {frames}개 화면으로 나뉘어 있습니다 - 상대가 전부 읽을 때까지 열어 두세요.", "verify.title": "보안 확인", "verify.desc": "다른 경로(통화나 대면)로 상대와 이 안전 코드를 대조한 뒤, 입력해서 대화를 여세요.", "verify.enterLabel": "대조한 코드를 입력하세요", "verify.placeholder": "여기에 코드 입력", "verify.confirm": "코드 확인", "verify.confirmed": "확인됨", "verify.mismatch": "일치하지 않음", "verify.yours": "내 확인", "verify.peer": "상대의 확인", "verify.pending": "대기 중", "verify.waiting": "코드 대기 중…", "verify.verified": "채널 확인 완료", "verify.bothConfirmed": "양쪽 모두 확인했습니다. 안전한 대화를 여는 중…", "pwa.bannerTitle": "SecureBit.chat 설치", "pwa.bannerDesc": "보안이 강화된 네이티브 앱 경험을 누리세요", "pwa.install": "설치", "pwa.dismiss": "닫기", "pwa.close": "닫기", "pwa.iosTitle": "iOS에 설치하기", "pwa.iosStep1": "공유 버튼을 누르세요", "pwa.iosStep1Hint": "보통 Safari 아래쪽에 있습니다", "pwa.iosStep2": "'홈 화면에 추가'를 찾으세요", "pwa.iosStep2Hint": "공유 메뉴를 아래로 내려보세요", "pwa.iosStep3": "'추가'를 누르세요", "pwa.iosStep3Hint": "확인하면 SecureBit.chat이 설치됩니다", "pwa.genericTitle": "SecureBit 설치", "pwa.genericDesc": "브라우저마다 설치 방법이 다릅니다. 쓰시는 브라우저에 맞는 순서를 고르세요.", "pwa.gotIt": "알겠습니다", "pwa.installedTitle": "앱이 설치되었습니다", "pwa.installedIos": "iOS 앱이 설치되었습니다. 홈 화면에서 열어보세요.", "pwa.installedGeneric": "이제 SecureBit.chat이 기기에 있습니다", "pwa.anytimeTitle": "언제든 설치할 수 있습니다", "pwa.anytimeDesc": "가장 좋은 경험을 위해, 브라우저 메뉴에서 언제든 SecureBit.chat을 설치할 수 있습니다.", "pwa.ok": "확인", "step.open": "1단계 · 채널 열기", "step.exchange": "2단계 · 교환", "step.verification": "3단계 · 확인", "action.create": "만들기", "action.join": "참여", "action.back": "뒤로", "action.copy": "복사", "action.copied": "복사됨", "action.scan": "스캔", "action.downloadDesktop": "데스크톱 앱 내려받기", "action.advancedSettings": "고급 설정", "cred.offerTag": "초대 · 또는 텍스트 복사", "cred.answerTag": "응답 · 또는 텍스트 복사", "cred.reveal": "눌러서 보기 - 이 코드는 남에게 알리지 마세요", "qr.title": "QR 코드 스캔", "qr.subtitle": "상대의 QR에 카메라를 맞추세요", "qr.scanning": "읽는 중…", "qr.hint": "모든 조각을 읽을 때까지 흔들리지 않게 유지하세요. 카메라는 기기 안에서만 쓰이며 - 아무것도 전송되지 않습니다.", "mesh.you": "나", "mesh.peer": "상대 · 세션 1", "mesh.joined2": "지민 합류 · +2", "mesh.joined3": "민준 합류 · +3", "ice.title": "네트워크 설정", "ice.subtitle": "기기 안에서만 설정됩니다 - 상대에게 전달되지 않습니다", "ice.intro": "SecureBit은 기본적으로 공개 STUN 서버로 P2P 연결을 맺습니다. 직접 운영하신다면 자신의 STUN/TURN을 지정하세요.", "ice.publicTitle": "공개 서버 (기본값)", "ice.publicDesc": "설정이 필요 없습니다. 대부분에게 충분합니다.", "ice.customTitle": "내 STUN/TURN 서버", "ice.customDesc": "최대 {max}개까지.", "ice.turnNote": "TURN 릴레이는 양쪽의 IP와 트래픽 흐름은 볼 수 있지만, 종단 간 암호화된 메시지 내용은 결코 볼 수 없습니다. 되도록 ", "ice.turnNoteTls": " (TLS)를 쓰세요.", "ice.test": "서버 시험", "ice.testing": "시험 중…", "ice.relayTitle": "릴레이 전용 모드", "ice.relayBadge": "최대 프라이버시", "ice.relayDesc": "모든 트래픽을 TURN으로 보내 상대가 여러분의 IP를 결코 알 수 없게 합니다. TURN 서버가 필요합니다.", "ice.relayWarning": "릴레이 전용 모드가 켜져 있지만 TURN 서버가 설정되지 않았습니다. 연결을 시작할 수 없습니다.", "ice.persist": "이 기기에 저장", "ice.persistDesc": "이 브라우저에 암호화되어 저장됩니다. 꺼두면 이번 세션에만 적용됩니다.", "ice.forget": "저장된 설정 지우기", "ice.cancel": "취소", "ice.apply": "적용", "ice.errUnavailable": "이 브라우저에서는 WebRTC를 쓸 수 없습니다", "ice.errInvalid": "서버 설정이 올바르지 않습니다", "update.title": "업데이트가 있습니다", "update.desc": "SecureBit의 새 버전이 확인되었습니다.", "update.currentVersion": "현재 버전", "update.newVersion": "새 버전", "update.now": "지금 업데이트", "update.later": "나중에", "update.unknown": "없음", "update.stepSaving": "데이터를 저장하는 중…", "update.stepSwCaches": "Service Worker 캐시를 비우는 중…", "update.stepSwUnregister": "Service Worker 등록을 해제하는 중…", "update.stepBrowserCache": "브라우저 캐시를 비우는 중…", "update.stepVersion": "버전을 갱신하는 중…", "update.stepReload": "앱을 다시 불러오는 중…", "update.error": "업데이트 오류. 페이지를 직접 새로고침하세요 (Ctrl+F5 또는 Cmd+Shift+R)", "update.confirmSkip": "새 버전이 있습니다. 보안과 안정성을 위해 업데이트를 권합니다. 업데이트 없이 계속할까요?", "offline.backOnline": "다시 연결됨", "offline.mode": "오프라인 모드", "offline.dismiss": "닫기", "offline.lostTitle": "연결이 끊어졌습니다", "offline.lostDesc": "SecureBit이 오프라인 상태입니다. 일부 기능이 제한되지만 데이터는 안전합니다.", "offline.point1": "세션과 키는 그대로 유지됩니다", "offline.point2": "서버에는 아무 데이터도 저장되지 않습니다", "offline.point3": "다시 연결되면 메시지와 파일이 동기화됩니다", "offline.continue": "오프라인으로 계속", "offline.restoredTitle": "다시 연결되면", "offline.restoredDesc": "연결이 끊겨도 잃는 것은 없습니다. SecureBit은 모든 것을 기기 안에 대기시켜 두었다가, 다시 온라인이 되는 즉시 암호화된 세션을 이어갑니다.", "offline.r1Title": "보낸 메시지는 전달됩니다", "offline.r1Desc": "오프라인일 때 쓴 내용은 자동으로 상대에게 전송됩니다.", "offline.r2Title": "파일 전송이 마무리됩니다", "offline.r2Desc": "전송은 멈춘 지점부터 이어집니다 - 다시 보낼 필요가 없습니다.", "offline.r3Title": "상대의 메시지와 파일이 도착합니다", "offline.r3Desc": "끊긴 동안 상대가 보낸 것들이 순서대로 도착합니다.", "offline.r4Title": "아무것도 사라지지 않습니다", "offline.r4Desc": "다시 연결되어도 빈틈은 없습니다 - 대화는 멈춘 그 자리에서 이어집니다.", "offline.gotIt": "알겠습니다", "qr.showTitle": "QR 코드 보여주기", "qr.showSubtitle": "전체 화면 · 상대가 스캔하도록", "qr.showSubtitleFrames": "전체 화면 · 상대가 {frames}개 화면을 모두 스캔하도록", "notify.enabledBody": "알림이 켜졌습니다. 새 메시지가 오면 알려드립니다.", "notify.workingBody": "알림이 정상 작동합니다. 새 메시지가 오면 알려드립니다.", "pw.label": "비밀번호 입력란", "pw.placeholder": "비밀번호를 입력하세요…", "pw.decrypt": "복호화", "pw.cancel": "취소", "file.title": "파일 전송", "file.drop": "여기에 파일을 놓으세요", "file.dropHint": "보내기 전에 종단 간 암호화 · 최대 100MB", "file.browse": "기기에서 찾기", "file.incoming": "파일 요청이 왔습니다", "file.accept": "수락", "file.reject": "거절", "file.download": "내려받기", "file.notReady": "연결이 아직 준비되지 않았습니다", "file.tooLarge": "파일이 너무 큽니다", "file.typeNotAllowed": "허용되지 않는 파일 형식", "file.maxConcurrent": "동시 전송 한도에 도달했습니다", "file.gone": "이 파일은 더 이상 내려받을 수 없습니다.", "call.incoming": "걸려온 전화", "call.incomingVideo": "걸려온 영상 통화", "call.encrypted": "암호화된 통화", "call.encryptedShort": "암호화됨", "call.peer": "보안 상대", "call.connecting": "연결 중…", "call.ringing": "신호 가는 중…", "call.accept": "받기", "call.decline": "거절", "call.end": "통화 종료", "call.camera": "카메라", "call.cameraOff": "카메라 꺼짐", "call.peerCameraOff": "상대의 카메라가 꺼져 있습니다", "call.flipCamera": "카메라 전환", "call.addVideo": "영상 추가", "call.video": "영상", "call.muted": "음소거됨", "call.expand": "크게", "call.minimize": "작게", "call.quality": "연결 품질", "call.qualityExcellent": "아주 좋음", "call.videoPrefix": "영상 · ", "call.voicePrefix": "음성 · ", "group.new": "새 그룹", "group.create": "그룹 만들기", "group.join": "그룹 참여", "group.name": "그룹 이름", "group.nameTooLong": "그룹 이름이 너무 깁니다.", "group.capacity": "최대 {max}명까지, 기기와 기기가 직접 연결됩니다. 그룹이 열리기 전에 모두가 하나의 안전 코드를 대조합니다.", "group.invite": "초대", "group.inviteMore": "구성원 더 초대하기", "group.invitePeople": "{count}명 초대", "group.invitation": "그룹 초대", "group.addMembers": "구성원 추가", "group.roomFor": "{remaining}명 더 들어올 수 있습니다. 그들이 합류하면 모두가 새 그룹 코드를 대조합니다.", "group.membersCount": "구성원 {count}명", "group.member": "구성원", "group.members": "구성원", "group.remove": "{name} 내보내기", "group.message": "'{name}'에 메시지 보내기", "group.leave": "나가기", "group.leaveThis": "이 그룹에서 나가기", "group.cancel": "그룹 취소", "group.close": "닫기", "group.cancelBtn": "취소", "group.decline": "거절", "group.working": "처리 중…", "group.sasTitle": "그룹 안전 코드", "group.sasEveryone": "모두에게 같은 코드가 보입니다", "group.sasCompare": "이 그룹을 열려면 모든 구성원과 그룹 코드를 대조하세요.", "group.sasReadAloud": "이 숫자들을 소리 내어 읽어주세요 - ", "group.sasWarning": "한 사람이라도 다른 코드를 읽는다면, 누군가 사이에 끼어 있는 것입니다. 그룹을 취소하세요 - 확인하지 마세요.", "group.confirmFirst": "먼저 그룹 코드를 확인하세요", "group.codeSuffix": " · 코드 {code}", "group.exchangingNonces": "일회용 값을 주고받는 중…", "group.waitingCommit": "모든 구성원의 확약을 기다리는 중…", "group.waitingJoin": "다른 구성원의 합류를 기다리는 중…", "group.emptyChat": "아직 아무것도 없습니다. 모든 메시지는 보낸 사람이 서명하며, 구성원 각자의 암호화된 회선을 통해 오갑니다.", "group.noVerified": "아직 확인된 대화가 없습니다. 먼저 1:1 대화를 열어 안전 코드를 대조하세요 - 그룹은 이미 확인한 연결로 만들어집니다.", "group.noMoreToAdd": "추가할 다른 확인된 대화가 없습니다. 1:1 대화를 열어 먼저 안전 코드를 대조하세요.", "group.directLink": "기기 간 직접 연결", "group.noDirectLink": "아직 직접 연결이 없습니다 - 연결이 만들어지는 동안 메시지는 다른 구성원을 거칩니다", "group.relayNote": "일부 구성원과는 아직 직접 연결이 없습니다. 그들의 메시지는 다른 구성원을 거쳐 오가는데, 그 사람은 대화가 오간다는 사실은 알 수 있지만 서명 너머의 내용을 읽거나 바꿀 수는 없습니다. 그룹은 계속해서 직접 연결을 시도합니다.", "group.relayOnlyOff": "릴레이 전용 모드가 꺼져 있어, 모든 구성원이 여러분에게 직접 연결되며 IP 주소를 알게 됩니다 - 다른 사람이 초대한 구성원도 마찬가지입니다. 그것이 중요하다면 네트워크 설정에서 켜세요.", "group.memberOffline": "{name}님은 오프라인이라 메시지를 받지 못합니다. 여전히 구성원이며, 내보내면 그룹 키가 새로 만들어집니다.", "group.joinNote": "다른 구성원들이 여러분이 이 그룹에 있다는 것을 알게 됩니다. 따라잡을 대화 기록은 없습니다 - 그룹은 비어 있는 상태로 시작합니다.", "group.inviteSentNote": "상대가 수락할 때까지 그룹은 그대로 동작합니다. 그들이 따라잡을 기록은 없고, 지금부터 보내는 것만 보게 됩니다.", "group.errNotCreated": "그룹이 만들어지지 않았습니다", "group.errNobodyAccepted": "제때 초대를 수락한 사람이 없습니다.", "group.errNothingSent": "아무것도 전송되거나 확인되지 않았습니다. 이 창을 닫고 모두가 연결된 뒤 다시 시도하세요.", "group.errNotFormed": "이 그룹을 만들 수 없었습니다.", "group.errFull": "이 그룹은 가득 찼습니다.", "group.errInviteFailed": "초대를 보내지 못했습니다 - 그 대화는 연결되어 있지 않습니다.", "group.errNoMemberList": "그룹을 만든 사람이 구성원 명단을 끝내 보내지 않았습니다.", "group.errUnsignedList": "구성원 명단에 그룹을 만든 사람의 서명이 없습니다. 다시 시도하지 말고 - 그 사람에게 알리세요.", "group.errNotOwner": "그룹 소유자가 아닌 누군가가 구성원을 바꾸려 했습니다.", "hdr.tagline": "종단 간 암호화", "hdr.netSettings": "고급 네트워크 설정", "hdr.netSettingsTitle": "고급 네트워크 설정 (STUN/TURN)", "hdr.disconnect": "연결 끊기", "status.connected": "연결됨", "status.connecting": "연결 중…", "status.notConnected": "연결되지 않음", "status.reconnecting": "다시 연결 중…", "status.retrying": "다시 시도 중…", "status.verifying": "확인 중…", "status.peerDisconnected": "상대가 연결을 끊었습니다", "sec.replayProtection": "재전송 공격 방어", "sec.messageIntegrity": "메시지 무결성 (HMAC)", "sec.forwardSecrecy": "완전 순방향 비밀성", "sec.metadataProtection": "메타데이터 보호", "sec.trafficObfuscation": "트래픽 난독화", "sec.realTests": "실제 암호학 검사", "sec.simulatedData": "모의 데이터", "sec.testPassed": "검사 통과", "sec.testFailed": "검사 실패 또는 사용 불가", "sec.verificationDone": "실제 암호학 검증이 끝났습니다", "sec.verificationInProgress": "보안 검증 진행 중…", "sec.verificationWait": "보안 검증 진행 중…\n실시간 암호학 검증이 끝날 때까지 기다려 주세요.", "sec.verificationUnavailable": "보안 검증을 쓸 수 없습니다", "chat.placeholder": "암호화된 메시지를 쓰세요…", "chat.send": "메시지 보내기", "chat.sendFiles": "파일 보내기", "chat.hideFiles": "파일 숨기기", "chat.recordVoice": "음성 메시지 녹음", "chat.sendVoice": "음성 메시지 보내기", "chat.discard": "취소", "chat.codeBlock": "코드 블록으로 보내기 (입력창이 넓어집니다)", "chat.codeHint": "코드 조각 · 서식 유지 · ⌘↵ 로 전송", "chat.viewOnce": "한 번만 보기", "chat.viewOnceTitle": "한 번만 보기 - 상대가 읽으면 사라집니다", "chat.viewOncePrefix": "한 번만 보기 · ", "chat.viewOnceTap": "한 번만 보기 · 눌러서 확인", "chat.viewedOnce": "이미 확인함", "chat.disappearing": "사라지는 메시지 - 양쪽에서 삭제됩니다", "chat.disappearAfter": "사라지기까지", "chat.visibleFor": "표시 시간", "chat.timerPrefix": "타이머 · ", "chat.expired": "이 메시지는 만료되었습니다", "chat.deleteForEveryone": "모두에게서 삭제", "chat.sending": "보내는 중", "chat.delivered": "전달됨", "chat.notSent": "보내지 못함", "chat.notSentReason": "보내지 못함 - 보안 채널이 아직 준비되지 않았습니다. 다시 연결한 뒤 계속하세요.", "chat.encrypted": "암호화됨", "chat.decrypted": "복호화됨", "chat.encryptedOnDevice": "기기에서 암호화됨", "chat.uploading": "올리는 중", "chat.downloading": "내려받는 중", "chat.transferring": "전송 중…", "chat.copied": "복사했습니다", "chat.collapse": "접기", "chat.closeMenu": "메뉴 닫기", "chat.newChat": "새 대화", "chat.newGroup": "새 그룹", "chat.createGroup": "그룹 만들기", "chat.groupChats": "그룹 대화", "chat.secureChat": "안전한 대화", "chat.nameThis": "이 대화에 이름 붙이기", "chat.rename": "대화 이름 바꾸기 (기기 안에서만)", "chat.renameHint": "두 번 눌러 이름 바꾸기", "chat.localLabel": "기기 안 이름 · 이 기기에만 저장됩니다", "chat.setStatus": "상태 설정", "chat.yourStatusPrefix": "내 상태 - ", "chat.meshHint": "최대 8명 · P2P 메시", "chat.offline": "오프라인", "chat.noNetwork": "네트워크 없음 · 재연결 중", "chat.startVoiceCall": "암호화 음성 통화 걸기", "chat.startVideoCall": "암호화 영상 통화 걸기", "chat.verifyForCalls": "통화를 쓰려면 먼저 세션을 확인하세요", "chat.e2eeNote": "모든 메시지는 기기를 떠나기 전에 종단 간 암호화됩니다.", "chat.peersOnly": "연결된 상대에게만 종단 간으로 전송되며 - 서버에 저장되지 않습니다.", "flow.invitationCreated": "안전한 초대를 만들었습니다", "flow.invitationCreatedBang": "안전한 초대를 만들고 암호화했습니다.", "flow.responseCreated": "안전한 응답을 만들었습니다", "flow.responseCreatedBang": "안전한 응답을 만들었습니다.", "flow.sendInvitation": "안전한 경로(통화, 문자 등)로 초대 코드를 상대에게 보내세요.", "flow.sendResponse": "안전한 경로로 응답 코드를 처음 연 사람에게 보내거나, 아래 QR을 스캔하게 하세요.", "flow.sendEncryptedCode": "암호화된 코드 보내기", "flow.sendTheResponse": "응답 보내기", "flow.pasteOrWrite": "코드를 붙여넣거나 입력하세요…", "flow.processingInvitation": "안전한 초대를 처리하는 중…", "flow.processingResponse": "안전한 응답을 처리하는 중…", "flow.finalizing": "안전한 연결을 마무리하는 중…", "flow.channelEstablished": "안전한 채널이 만들어졌습니다", "flow.channelReady": "안전한 채널이 준비되었습니다", "flow.restoring": "연결을 되살리는 중…", "flow.invitationCaptured": "초대를 읽었습니다.", "err.needInvitation": "상대가 준 초대 코드를 붙여넣어야 합니다.", "err.needResponse": "상대가 준 응답 코드를 붙여넣어야 합니다.", "err.responseFormat": "응답 형식이 올바르지 않습니다 - 코드를 확인하세요", "err.responseNoKey": "응답 코드가 올바르지 않습니다 - 암호 키가 없거나 손상되었습니다. 코드를 확인한 뒤 다시 시도하세요.", "err.responseNoSignKey": "응답 코드가 올바르지 않습니다 - 서명 확인 키가 없습니다. 코드를 확인한 뒤 다시 시도하세요.", "err.responseOutdated": "응답 데이터가 오래되었습니다 - 새 초대를 사용하세요", "err.setupError": "연결을 맺는 중 오류가 났습니다", "err.notReady": "연결이 아직 준비되지 않았습니다", "err.securityBreach": "보안 침해가 감지되어 연결을 거부했습니다", "err.securityValidation": "보안 검증에 실패했습니다 - 공격일 수 있습니다", "err.retiredQr": "이 QR은 더 이상 쓰지 않는 형식이라 초대를 전달하지 못했습니다. 상대에게 새로 만들어 달라고 하거나 복사·붙여넣기를 쓰세요.", "err.compressedQrNote": "압축된 QR은 간결함을 위해 SDP를 생략할 수 있습니다. 연결에 실패하면 복사·붙여넣기를 쓰세요.", "err.inviteNotConnected": "초대를 보내지 못했습니다. 그 대화는 지금 연결되어 있지 않습니다.", "err.inviteNotConnectedRetry": "초대를 보내지 못했습니다. 그 대화는 지금 연결되어 있지 않습니다 - 다시 열고 시도하세요.", "err.nobodyAccepted": "아무도 초대를 수락하지 않았습니다. 그룹은 그대로입니다.", "err.noAudio": "소리가 녹음되지 않았습니다 - 마이크 권한을 확인한 뒤 다시 시도하세요.", "err.voiceNeedsConnection": "음성 메시지를 보내려면 활성화된 안전한 연결이 필요합니다. 다시 연결한 뒤 시도하세요.", "err.voiceRestoring": "연결을 되살리는 중입니다 - 잠시 뒤에 음성 메시지를 다시 보내보세요.", "err.fileTooLarge": "파일이 너무 큽니다", "sas.safetyNumber": "안전 번호", "sas.incorrect": "코드가 맞지 않습니다. 상대와 대조한 뒤 다시 시도하세요.", "sas.noMatch": "코드가 일치하지 않습니다", "sas.makeSure": "두 코드가 정확히 같은지 확인하세요.", "sas.tooManyAttempts": "잘못된 시도가 너무 많습니다. 안전을 위해 세션을 초기화했습니다.", "sas.verificationFailed": "확인 실패", "sas.verified": "확인됨 · 완전 순방향 비밀성", "sas.runVerification": "보안 검증 실행", "sec.panelTitle": "네트워크와 암호학 상세", "sec.security": "보안", "sec.transport": "전송", "sec.keyExchange": "키 교환", "sec.allEnabled": "모든 보안 기능이 기본으로 켜져 있습니다", "sec.realTimeNote": "실제 암호학 함수로 실시간 검증합니다 - 꾸며낸 데이터는 없습니다.", "sec.simulatedWarning": "주의: 연결이 아직 완전히 맺어지지 않았을 수 있어 - 값이 모의일 수 있습니다.", "dl.title": "SecureBit 내려받기", "dl.free": "무료 · 공개 소스", "dl.soon": "모바일 앱(iOS, Android)과 브라우저 확장(Chrome, Firefox, Opera)이 곧 나옵니다.", "chatHdr.chat": "대화", "chatHdr.chats": "대화", "chatHdr.newChat": "+ 새로", "chatHdr.secure": "보안", "chatHdr.p2pSub": "P2P · 종단 간 암호화", "chatHdr.save": "저장", "chatHdr.close": "닫기", "chatHdr.expand": "넓게 보기", "chatHdr.you": "나", "chatHdr.qrCode": "QR 코드", "chat.disconnected": "연결 끊김", "call.mute": "음소거", "call.endShort": "종료", "group.add": "추가", "group.send": "보내기", "sec.pfsShort": "완전 순방향 비밀성", "sec.cipher": "암호", "chat.close": "닫기", "file.needConnection": "파일 전송에는 연결이 필요합니다", "presence.available": "대화 가능", "presence.away": "자리 비움", "presence.busy": "바쁨", "presence.offline": "오프라인", "presence.invisible": "숨김", "presence.availableDesc": "온라인이며 연락 가능", "presence.awayDesc": "자리 비움 · 잠시 나감", "presence.busyDesc": "방해 금지", "presence.invisibleDesc": "다른 사람에게 오프라인으로 보이기", "presence.online": "온라인", "conn.p2p": "P2P · 연결됨", "conn.verifying": "확인 중…", "conn.connecting": "연결 중…", "conn.reconnecting": "다시 연결 중…", "conn.peerDisconnected": "상대가 연결을 끊었습니다", "conn.disconnected": "연결 끊김", "chat.defaultLabel": "대화", "groupPhase.forming": "구성하는 중…", "groupPhase.commitments": "확약을 주고받는 중…", "groupPhase.revealing": "공개하는 중…", "groupPhase.compare": "그룹 코드를 대조하세요", "groupPhase.ready": "그룹 준비 완료", "groupPhase.failed": "그룹이 만들어지지 않았습니다", "call.qualityGood": "좋음", "call.qualityFair": "보통", "call.qualityWeak": "약함", "msg.code": "코드", "msg.timer": "타이머", "msg.voice": "음성", "msg.play": "재생", "msg.sent": "보냄", "msg.read": "읽음", "report.title": "실시간 보안 검증", "report.active": "동작 중", "report.testsPassed": "통과한 검사", "report.verifiedAt": "검증 시각", "report.source": "출처", "secTest.verifyECDHKeyExchange": "ECDH 키 교환", "secTest.verifyECDSASignatures": "ECDSA 전자 서명", "secTest.verifyEncryption": "AES-GCM 암호화", "secTest.verifyMessageIntegrity": "메시지 무결성", "secTest.verifyPerfectForwardSecrecy": "완전 순방향 비밀성", "secTest.verifyPFS": "완전 순방향 비밀성", "secTest.verifyReplayProtection": "재전송 공격 방어", "secTest.verifyDTLSFingerprint": "DTLS 지문", "secTest.verifySASVerification": "SAS 확인", "secTest.verifyMetadataProtection": "메타데이터 보호", "secTest.verifyTrafficObfuscation": "트래픽 난독화", "secTest.verifyPacketPadding": "패킷 패딩", "secTest.verifyNestedEncryption": "중첩 암호화", "secTest.verifyNonExtractableKeys": "추출 불가 키", "secTest.verifyRateLimiting": "속도 제한", "secTest.verifyMutualAuth": "상호 인증", "secTest.verifyAuthProof": "인증 증명", "secTest.verifyEnhancedValidation": "강화된 검증", "secTest.verifyAdvancedFeatures": "고급 기능", "secTest.verifySignature": "서명 검사", "secDetail.Security system initializing...": "보안 시스템을 시작하는 중…", "secDetail.Nested encryption active": "중첩 암호화가 켜져 있습니다", "secDetail.Nested encryption failed": "중첩 암호화 실패", "secDetail.Packet padding active": "패킷 패딩이 켜져 있습니다", "secDetail.Packet padding failed": "패킷 패딩 실패", "secDetail.Advanced features active": "고급 기능이 켜져 있습니다", "secDetail.Advanced features failed": "고급 기능 실패", "secDetail.No encryption key available": "쓸 수 있는 암호화 키가 없습니다", "secDetail.AES-GCM encryption/decryption working correctly": "AES-GCM 암호화와 복호화가 정상 동작합니다", "secDetail.No ECDH key pair available": "쓸 수 있는 ECDH 키 쌍이 없습니다", "secDetail.Key derivation failed": "키 유도에 실패했습니다", "secDetail.No ECDSA key pair available": "쓸 수 있는 ECDSA 키 쌍이 없습니다", "secDetail.ECDSA digital signatures working correctly": "ECDSA 전자 서명이 정상 동작합니다", "secDetail.MAC key not available or invalid": "MAC 키가 없거나 올바르지 않습니다", "secDetail.Rate limiter did not block a message over the limit": "속도 제한기가 한도를 넘은 메시지를 막지 못했습니다", "secDetail.Rate limiter is not available": "속도 제한기를 쓸 수 없습니다", "secDetail.Replay protection is working correctly": "재전송 공격 방어가 정상 동작합니다", "secDetail.Replay protection not enabled": "재전송 공격 방어가 꺼져 있습니다", "secDetail.SAS code not available": "SAS 코드를 쓸 수 없습니다", "secDetail.SAS verification code is valid and available": "SAS 확인 코드가 유효하며 사용할 수 있습니다", "secDetail.Traffic obfuscation is working correctly": "트래픽 난독화가 정상 동작합니다", "secDetail.Traffic obfuscation not enabled": "트래픽 난독화가 꺼져 있습니다", "secDetail.No non-extractable ephemeral ECDH key pair for this session": "이 세션에는 추출할 수 없는 일회용 ECDH 키 쌍이 없습니다", "secDetail.Session-level PFS only: keys are ephemeral per session, but the Double Ratchet is not active for this connection (peer on an older version), so a compromised session key exposes the whole conversation": "세션 단위 순방향 비밀성만 적용됩니다. 키는 세션마다 일회용이지만 이 연결에서는 Double Ratchet이 동작하지 않아(상대가 이전 버전 사용), 세션 키가 유출되면 대화 전체가 드러납니다.", "msg.pause": "일시정지", "msg.failed": "실패", "groupErr.timeout": "코드가 준비되기 전에 어떤 구성원이 응답을 멈췄습니다.", "groupErr.keyMismatch": "어떤 구성원의 키가 밝힌 신원과 맞지 않았습니다.", "groupErr.revealMismatch": "어떤 구성원이 공개한 값이 앞서 확약한 것과 맞지 않았습니다.", "groupErr.commitChanged": "어떤 구성원이 도중에 확약을 바꿨습니다.", "groupErr.missingKey": "명단에 있던 구성원의 키가 끝내 도착하지 않았습니다.", "groupErr.outsider": "그룹 밖의 누군가에게서 프레임이 도착했습니다.", "groupErr.limit": "그룹은 최대 여덟 명까지입니다.", "groupErr.tooLarge": "메시지가 너무 커서 그룹에 보낼 수 없었습니다.", "fileType.text": "일반 텍스트", "fileType.images": "이미지", "fileType.archives": "압축 파일", "fileType.voice": "음성 메시지", "fileType.unsupported": "지원하지 않음", "qrScan.title": "QR 코드 스캔", "qrScan.auto": "자동 모드", "qrScan.reset": "초기화", "qrScan.autoScroll": "자동 스크롤이 켜졌습니다", "qrScan.starting": "카메라를 켜는 중…", "qrScan.point": "상대의 QR에 카메라를 맞추세요", "qrScan.tapFocus": "화면을 눌러 초점을 맞추세요", "qrScan.focusing": "초점 맞추는 중…", "iceErr.notArray": "서버 목록은 배열이어야 합니다", "iceErr.invalidJson": "올바르지 않은 JSON", "iceErr.tooMany": "서버가 너무 많습니다 (최대 {max}개)", "iceErr.invalidEntry": "{label}: 올바르지 않은 항목", "iceErr.urlCount": "{label}: URL이 1개에서 {max}개 사이여야 합니다", "iceErr.turnCreds": "{label}: TURN 서버는 보통 사용자 이름과 자격 증명이 필요합니다", "iceUrl.notString": "URL은 문자열이어야 합니다", "iceUrl.empty": "URL이 비어 있습니다", "iceUrl.tooLong": "URL이 너무 깁니다", "iceUrl.badChars": "URL에 쓸 수 없는 문자가 있습니다", "iceUrl.badScheme": "URL은 stun:, stuns:, turn: 또는 turns: 로 시작해야 합니다", "iceUrl.badQuery": "URL의 질의가 올바르지 않습니다", "iceUrl.noHost": "URL에 호스트가 없습니다", "iceUrl.badHost": "URL의 호스트나 포트가 올바르지 않습니다", "iceUrl.badTransport": "URL 질의는 transport=udp 또는 transport=tcp 여야 합니다", "msg.off": "끔", "file.consentUnavailable": "동의를 구할 수 없습니다", "secLevel.MAXIMUM": "최고", "secLevel.INITIALIZING": "시작 중", "secLevel.ERROR": "오류", "secLevel.UNKNOWN": "알 수 없음", "status.error": "오류", "offline.disconnect": "연결 끊기", "offline.learnMore": "자세히 보기", "pwa.installApp": "앱 설치", "chat.onWeb": "웹 버전을 쓰고 있습니다", "groupCall.startVoice": "그룹 음성 통화 시작", "groupCall.startVideo": "그룹 영상 통화 시작", "groupCall.join": "참여", "groupCall.dismiss": "나중에", "groupCall.leave": "통화 나가기", "groupCall.you": "나", "groupCall.connecting": "연결 중…", "groupCall.waitingLink": "직접 연결을 기다리는 중…", "groupCall.legFailed": "연결하지 못했습니다", "groupCall.startedVoice": "{name} 님이 음성 통화를 시작했습니다", "groupCall.startedVideo": "{name} 님이 영상 통화를 시작했습니다", "groupCall.inCall": "통화 중 {count}명", "groupCall.err.permission_denied": "통화를 시작할 수 없습니다 - 마이크와 카메라 접근이 차단되어 있습니다. 이 사이트에 허용한 뒤 다시 시도하세요.", "groupCall.err.device_not_found": "통화를 시작할 수 없습니다 - 이 기기에서 마이크를 찾을 수 없습니다.", "groupCall.err.device_busy": "통화를 시작할 수 없습니다 - 마이크를 다른 앱이 사용 중입니다. 종료한 뒤 다시 시도하세요.", "groupCall.err.media_failed": "통화를 시작할 수 없습니다 - 마이크를 열지 못했습니다.", "groupCall.err.call_in_progress": "이 그룹에서 이미 통화가 진행 중입니다. 새로 시작하지 말고 참여하세요.", "groupCall.err.not_ready": "통화하기 전에 그룹 코드를 확인하세요.", "groupCall.speaking": "{name} 님이 말하는 중", "groupCall.pin": "{name} 크게 보기", "groupCall.unpin": "전체 보기로 돌아가기", "groupCall.showEveryone": "전체", "msg.after5s": "읽은 뒤 5초", "msg.after15s": "읽은 뒤 15초", "msg.after30s": "읽은 뒤 30초", "msg.after1m": "읽은 뒤 1분", "msg.sec30": "30초", "msg.min5": "5분", "msg.hour1": "1시간", "desktop.shareDesc": "상대에게 코드를 보내세요. 일회용이며 곧 만료됩니다.", "desktop.invitationCreated": "보안 초대가 만들어졌습니다 - 상대에게 보내세요.", "desktop.joinDesc": "상대의 초대 코드를 붙여넣어 보안 응답을 만드세요.", "desktop.offerTag": "초대 · 텍스트 복사", "desktop.answerTag": "응답 · 텍스트 복사", "desktop.offerPlaceholder": "초대 코드가 여기에 표시됩니다…", "desktop.answerPlaceholder": "응답 코드가 여기에 표시됩니다…", "desktop.backToChats": "채팅으로 돌아가기", "desktop.sendFeedback": "피드백 보내기", "desktop.callsNeedVerified": "통화하려면 검증된 보안 채널이 필요합니다.", "desktop.noOpenChannel": "열린 보안 채널이 없습니다.", "desktop.chatCarriesCall": "이 채팅이 그룹 통화를 전달하고 있습니다. 1:1 통화를 걸기 전에 그룹 통화에서 나가세요.", "desktop.err.permission_denied": "통화를 시작할 수 없습니다 - 마이크와 카메라 접근이 차단되어 있습니다. 시스템 설정에서 허용한 뒤 다시 시도하세요.", "desktop.language": "언어", "desktop.languageHint": "즉시 적용됩니다. 이미 보낸 메시지는 원래 언어 그대로 남습니다.", "desktop.compareCode": "상대와 확인 코드를 비교하고 일치하면 확인하세요.", "desktop.verifyBeforeFiles": "파일을 보내기 전에 검증을 마치세요.", "desktop.verifyBeforeSending": "메시지를 보내기 전에 검증을 마치세요.", "desktop.disconnectedByBackend": "연결이 안전하게 종료되었습니다.", "desktop.restoreFailed": "연결을 복구하지 못했습니다. 이 채팅을 닫습니다.", "desktop.channelNotReady": "데이터 채널이 아직 없습니다. 연결이 맺어질 때까지 기다리세요.", "desktop.enterCode": "확인 코드를 입력하세요.", "desktop.noOffer": "초대가 없습니다. 먼저 만드세요.", "desktop.notInitiator": "이 연결을 만든 쪽이 아니므로 적용할 응답이 없습니다.", "desktop.decryptFailed": "메시지를 복호화하지 못해 버렸습니다.", "desktop.badMessageFormat": "형식이 잘못된 프레임이 도착해 버렸습니다.", "desktop.notSentNotReady": "메시지를 보내지 못했습니다: 보안 채널이 준비되지 않았습니다. 검증이 끝나기를 기다리거나 다시 연결하세요.", "desktop.micDenied": "마이크 접근이 거부되었습니다.", "desktop.noChannelWait": "열린 보안 채널이 없습니다 - 연결이 맺어질 때까지 기다리세요.", "desktop.sasFailed": "검증에 실패했습니다. 중간자가 있을 수 있어 연결을 중단했습니다.", "desktop.sasOk": "검증에 성공했습니다. 이 채널은 종단 간 인증되었습니다.", "desktop.iceForgotten": "저장된 서버를 지웠습니다. 공개 ICE 서버를 사용합니다.", "desktop.icePublic": "공개 ICE 서버를 사용합니다.", "desktop.verificationInProgress": "보안 검증이 아직 진행 중입니다. 끝날 때까지 기다리세요.", "desktop.fileGone": "이 파일은 더 이상 내려받을 수 없습니다.", "desktop.codeMismatch": "확인 코드가 일치하지 않습니다. 안전을 위해 연결을 끊습니다.", "desktop.noLocalCode": "검증 실패: 비교할 로컬 파생 코드가 없습니다. 안전을 위해 연결을 끊습니다.", "desktop.protocolViolation": "상대가 당신이 확인하기 전에 코드가 확인되었다고 주장했습니다. 안전을 위해 연결을 끊습니다.", "desktop.verificationRejected": "검증이 거부되었습니다. 안전을 위해 연결을 중단했습니다.", "secLevel.HIGH": "높음", "secLevel.MEDIUM": "보통", "secLevel.LOW": "낮음", "desktop.rerun": "다시 검사", "desktop.ice.customDesc": "최대 {max}개 서버, 한 줄에 URL 하나 또는 JSON.", "desktop.ice.persistDesc": "이 기기에 로컬로 저장됩니다. 이번 세션에만 사용하려면 꺼 두세요.", "desktop.group.leaveNote": "다른 구성원에게 당신이 나갔다고 알립니다. 이후 이 기기에는 이 그룹에 대한 것이 아무것도 남지 않습니다 - 다시 들어갈 사본을 가진 서버가 없으므로 새 초대가 필요합니다.", "desktop.sec.ecdsaOk": "핸드셰이크 중 상대 키 패키지 서명을 검증했습니다 (ECDSA P-384 / SHA-384)", "desktop.sec.ecdsaNone": "완료된 핸드셰이크가 없습니다", "desktop.sec.ecdhOk": "임시 ECDH P-384 교환에서 HKDF-SHA-256으로 세션 키를 파생했습니다", "desktop.sec.ecdhNone": "세션 키가 파생되지 않았습니다", "desktop.sec.encryptionOk": "코어에서 AES-GCM 암·복호화를 검증했습니다", "desktop.sec.encryptionNa": "AES-GCM 자체 검사를 실행할 수 없었습니다", "desktop.sec.integrityOk": "메시지 무결성을 검증했습니다 (AES-GCM 인증)", "desktop.sec.integrityNa": "무결성 자체 검사를 실행할 수 없었습니다", "desktop.sec.pfsOk": "Double Ratchet 작동 중 - 메시지마다 고유한 키가 있습니다", "desktop.sec.pfsNa": "측정되지 않음", "desktop.sec.replayOk": "래칫 메시지 키는 사용 즉시 파기되어 가로챈 프레임을 재생할 수 없습니다", "desktop.sec.replayNa": "측정되지 않음", "desktop.sec.dtlsPinned": "상대 DTLS 지문 고정: {fp}", "desktop.sec.dtlsNone": "원격 DTLS 지문이 없습니다", "desktop.sec.sasBoth": "양쪽 모두 대역 외에서 안전 코드를 확인했습니다", "desktop.sec.sasIncomplete": "안전 코드가 양쪽 모두에게 확인되지 않았습니다", "desktop.sec.metadataOk": "전용 메타데이터 키를 파생했습니다 (HKDF metadata-protection-v4)", "desktop.sec.metadataNone": "메타데이터 키 없음", "desktop.sec.coverOn": "위장 트래픽 작동 중: 래칫 채널에 무작위 더미 프레임 (15-30초마다 32-128 B)", "desktop.sec.coverOff": "위장 트래픽 생성기가 실행되고 있지 않습니다", "desktop.sec.coverUnsupported": "위장 트래픽에는 Double Ratchet 세션이 필요합니다 (상대가 구버전입니다)", "desktop.tagline": "종단 간 자유" }, "manifest": { "name": "SecureBit.chat - 종단 간 암호화 비공개 메신저", "short_name": "SecureBit", "description": "ECDH, DTLS, SAS로 보호되는 군용 수준 암호화 P2P 메신저" } }