Files
securebit-chat/locales/ko.json
T
lockbitchat 414c27fda6 v6.7.3: faster loading, and pages search engines can read
The bundles carried all thirteen translations at once and a page fetched them a
third time as raw source; each page now loads only its own language. Alongside
that: JavaScript is minified, the eight stylesheets are served as one file, the
QR scanner is fetched after the app is up instead of on every visit, Inter ships
once rather than five copies of the same file, and Font Awesome is subset to the
82 icons this app draws instead of all 2468.

1.85 MB across 43 requests becomes under 700 KB across 33. On mobile the page
starts drawing in 1.6 s instead of 6.3 s and is usable in 4.5 s instead of 11 s.

Pages also carry their text in the HTML now. Everything was drawn by JavaScript
into an empty div, so crawlers saw correct metadata around nothing, and twelve of
the thirteen language pages had never been shown to anyone. The documentation is
published under /docs/ with a new FAQ, and unknown addresses return a real 404.

Separately: the localized shells were served with the year-long immutable cache
header meant for static assets, which pinned anyone who opened /de/ or /ru/ to
that build. The header is fixed and the service worker refreshes what it cached.

Claude-Session: https://claude.ai/code/session_014KjzTXxrhzYoDDWChYQ4u2
2026-09-04 00:41:46 -04:00

887 lines
55 KiB
JSON

{
"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 확인.",
"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": "종단 간 자유",
"desktop.callsNotHere": "이 빌드에서는 아직 통화를 사용할 수 없습니다. 메시지, 파일, 그룹 채팅은 평소대로 작동합니다."
},
"manifest": {
"name": "SecureBit.chat - 종단 간 암호화 비공개 메신저",
"short_name": "SecureBit",
"description": "ECDH, DTLS, SAS로 보호되는 군용 수준 암호화 P2P 메신저"
}
}