diff --git a/src/lib/i18n/ko.json b/src/lib/i18n/ko.json new file mode 100644 index 0000000..05c374c --- /dev/null +++ b/src/lib/i18n/ko.json @@ -0,0 +1,531 @@ +{ + "nav.recording": "녹음", + "nav.hardware": "하드웨어", + "nav.storage": "저장소", + "nav.calendar": "캘린더", + "nav.sync": "동기화", + "nav.ai": "AI", + "nav.mcp": "MCP 서버", + "nav.privacy": "개인정보 보호", + "nav.about": "정보", + "nav.language": "언어", + + "settings.language.title": "언어", + "settings.language.display": "표시 언어", + "settings.language.display_hint": "앱 인터페이스의 언어입니다. 언어를 추가하는 것은 번역 파일 하나를 넣는 것만큼 간단합니다.", + + "settings.transcription.title": "전사 언어", + "settings.transcription.label": "언어", + "settings.transcription.auto": "자동 감지", + "settings.transcription.applies_hint": "다음 녹음에 적용됩니다. 실제로 사용된 언어는 이후 각 회의에 표시됩니다.", + "settings.transcription.english_only": "영어 전용", + "settings.transcription.model_english_only": "“{model}”은(는) 영어 전용입니다.", + "settings.transcription.no_model": "선택된 모델이 없습니다.", + "settings.transcription.switch_multilingual": "언어를 선택하려면 위에서 다국어 모델로 전환하세요.", + + "settings.hardware.title": "하드웨어", + "settings.hardware.active_backend": "활성 백엔드", + "settings.hardware.model_meta": "· 모델 {size}", + "settings.hardware.preferred_backend": "선호 백엔드", + "settings.hardware.auto_backend": "자동(사용 가능한 최적)", + "settings.hardware.not_available": "사용 불가", + "settings.hardware.fallback_hint": "선택한 백엔드를 로드하지 못하면 자동으로 대체됩니다(NPU → NVIDIA → AMD → Intel → CPU).", + "settings.hardware.audio_devices": "오디오 장치", + "settings.hardware.recording_device": "녹음 장치", + "settings.hardware.default_system_audio": "기본 시스템 오디오", + "settings.hardware.recording_device_hint": "WhispAssist는 이 장치가 재생하는 것(루프백)—통화의 상대편—을 녹음합니다. Windows 시스템 기본값을 따르지 않게 하려면 특정 출력을 선택하세요.", + "settings.hardware.microphone": "마이크", + "settings.hardware.mic_off": "끔 — 내 마이크를 캡처하지 않음", + "settings.hardware.default_mic": "기본 마이크", + "settings.hardware.mic_hint": "회의의 양쪽이 모두 캡처되도록 실시간 전사에 본인의 음성을 추가합니다. 장치에 남아 있으며 아무것도 업로드되지 않습니다. 위의 시스템 오디오만 전사하려면 “끔”을 선택하세요.", + "settings.hardware.npu_detected": "NPU 가속기 감지됨", + "settings.hardware.ready": "준비됨", + "settings.hardware.downloading": "다운로드 중…", + "settings.hardware.package_needed": "패키지 필요", + "settings.hardware.npu_hint": "NPU에는 일회성 가속 패키지(Whisper ONNX 모델{extra})가 필요합니다. 백그라운드에서 다운로드되며 지금 시작할 수도 있습니다.", + "settings.hardware.plus_openvino": " + OpenVINO 런타임", + "settings.hardware.download_npu": "NPU 패키지 다운로드", + "settings.hardware.dml_title": "GPU 가속(DirectML)", + "settings.hardware.dml_hint": "GPU는 Vulkan 없이 DirectML을 통해 가속할 수 있습니다 — 일회성 패키지(Whisper ONNX 모델{extra}).", + "settings.hardware.plus_directml": " + DirectML 런타임", + "settings.hardware.download_dml": "DirectML 패키지 다운로드", + "settings.hardware.detection_unavailable": "하드웨어 감지를 사용할 수 없습니다.", + "settings.hardware.low_overhead": "낮은 오버헤드 사전 설정", + "settings.hardware.low_overhead_note": "CPU + 가장 작은 모델, 배터리/백그라운드 사용용", + "settings.hardware.models": "모델", + "settings.hardware.downloading_model": "{name} 다운로드 중", + "settings.hardware.active_badge": "활성", + "settings.hardware.installed": "설치됨", + "settings.hardware.use": "사용", + "settings.hardware.remove": "제거", + "settings.hardware.cant_remove_active": "활성 모델은 제거할 수 없습니다", + "settings.hardware.download": "다운로드", + "settings.hardware.diarization": "화자 분리", + "settings.hardware.diarization_hint": "두 모델을 모두 설치하면 완료된 녹음이 하나의 연속 전사가 아니라 화자별(화자 1, 화자 2, …)로 분리됩니다. 완전히 오프라인으로 실행되며, 중지 후 회의당 한 번 실행됩니다. 이들이 없으면 모든 줄이 단일 화자에게 귀속됩니다.", + + "settings.storage.title": "저장소", + "settings.storage.location_label": "위치", + "settings.storage.location_hint": "저장 위치 변경은 아직 지원되지 않습니다 — 현재 회의, 모델, 데이터베이스가 여기에 있습니다.", + "settings.storage.retention_title": "보존", + "settings.storage.retention_hint": "한도를 초과하는 가장 오래된 회의를 자동으로 삭제합니다. 시작 시 한 번 확인하며, 비워 두면 한도가 없습니다. 현재 녹음 중인 회의는 절대 건드리지 않습니다.", + "settings.storage.max_age": "최대 보관 기간(일)", + "settings.storage.max_size": "최대 크기(GB)", + "settings.storage.no_limit": "한도 없음", + "settings.storage.export_import_title": "내보내기 및 가져오기", + "settings.storage.export_hint_1": "녹음을 이동식 번들 폴더(오디오, 전사, 노트, 요약 및", + "settings.storage.export_hint_2": "매니페스트)로 컴퓨터 간에 이동하세요. 아무 폴더 — 동기화된 드라이브, USB 메모리, 동기화 대상의 로컬 마운트 지점 — 로 내보낸 다음 다른 컴퓨터에서 가져오세요. 가져온 회의는 새 id를 받으므로 다시 가져와도 아무것도 덮어쓰지 않습니다.", + "settings.storage.export_dialog_title": "모든 회의를 다음으로 내보내기…", + "settings.storage.import_dialog_title": "번들(또는 번들 폴더) 가져오기…", + "settings.storage.exporting": "내보내는 중…", + "settings.storage.export_all": "모든 회의 내보내기…", + "settings.storage.importing": "가져오는 중…", + "settings.storage.import_all": "회의 가져오기…", + "settings.storage.exported_one": "회의 {n}개를 내보냈습니다.", + "settings.storage.exported_many": "회의 {n}개를 내보냈습니다.", + "settings.storage.imported_one": "회의 {n}개를 가져왔습니다.", + "settings.storage.imported_many": "회의 {n}개를 가져왔습니다.", + + "settings.calendar.title": "캘린더 및 Outlook .pst", + "settings.calendar.intro_1": "로컬 Outlook 백업에서 이벤트와 참석자를 가져옵니다", + "settings.calendar.intro_2": "— 읽기 전용이며 파일에 아무것도 다시 쓰지 않습니다. 이 장치를 벗어나는 것은 없습니다.", + "settings.calendar.pst_file": ".pst 파일", + "settings.calendar.no_file": "선택된 파일 없음", + "settings.calendar.browse": "찾아보기…", + "settings.calendar.password": "비밀번호", + "settings.calendar.password_note": "거의 필요 없음", + "settings.calendar.optional": "선택 사항", + "settings.calendar.import_range": "가져오기 범위", + "settings.calendar.range_30": "최근 30일", + "settings.calendar.range_90": "최근 90일", + "settings.calendar.range_180": "최근 6개월", + "settings.calendar.range_365": "최근 1년", + "settings.calendar.range_all": "전체 기간", + "settings.calendar.range_hint": "오래된 사서함에는 수년간의 반복/휴일 항목이 있을 수 있습니다 — 범위를 좁히면 가져온 캘린더가 실제로 관련 있는 것만 유지됩니다. 이 가져오기 버튼과 시작 시 자동 재가져오기 모두에 적용됩니다.", + "settings.calendar.importing": "가져오는 중…", + "settings.calendar.import": "가져오기", + "settings.calendar.import_progress": "이벤트 {processed}/{total}개", + "settings.calendar.auto_reimport": "시작 시 이 파일을 자동으로 다시 가져오기", + "settings.calendar.auto_reimport_hint": "타이머가 아니라 시작 시 한 번 실행됩니다 — 재가져오기는 안전하게 반복할 수 있습니다(기존 이벤트는 매칭되어 업데이트되며 중복되지 않습니다).", + "settings.calendar.import_failed": "가져오기 실패: {error} — 파일 자체는 손대지 않습니다. 경로를 확인하고 다시 시도하세요.", + "settings.calendar.cleanup_title": "정리", + "settings.calendar.cleanup_hint": "이미 녹음된 회의에 연결된 이벤트는 아래에서 어떤 옵션을 선택하든 항상 유지됩니다.", + "settings.calendar.cleanup_30": "30일 이상 지난 항목", + "settings.calendar.cleanup_90": "90일 이상 지난 항목", + "settings.calendar.cleanup_180": "6개월 이상 지난 항목", + "settings.calendar.cleanup_365": "1년 이상 지난 항목", + "settings.calendar.cleanup_all": "모두 삭제", + "settings.calendar.cleaning": "정리 중…", + "settings.calendar.cleanup_btn": "캘린더 정리", + "settings.calendar.cleanup_result": "{deleted}{extra} 삭제됨.", + "settings.calendar.cleanup_kept": ", {n}개 유지됨(회의에 연결됨)", + "settings.calendar.cleanup_failed": "정리 실패: {error}", + "settings.calendar.imported_events": "가져온 이벤트", + "settings.calendar.no_events": "아직 가져온 이벤트가 없습니다.", + "settings.calendar.search_title": "제목 검색", + "settings.calendar.search_placeholder": "회의 이름…", + "settings.calendar.date_label": "날짜", + "settings.calendar.events_count": "이벤트 {total}개 중 {shown}개", + "settings.calendar.untitled": "(제목 없음)", + + "settings.dialog_title": "설정", + "settings.close": "닫기", + "settings.close_title": "닫기(Esc)", + + "settings.sync.stub": "미리 보기 모드 — 동기화 백엔드는 아직 구현되지 않았습니다(9단계). 변경 사항은 인터페이스에만 유지됩니다.", + "settings.sync.title": "동기화 및 업로드", + "settings.sync.enable_label": "구성된 대상으로 회의 아티팩트 업로드 활성화", + "settings.sync.enable_hint": "기본적으로 꺼져 있습니다. 이 항목이 켜져 있고 대상이 활성화되어 있지 않으면 아무것도 업로드되지 않습니다. 자체 호스팅 대상은 데이터를 본인의 서버에 보관하며, 타사 클라우드는 명확히 표시됩니다.", + "settings.sync.targets_title": "대상", + "settings.sync.no_targets": "아직 대상이 없습니다. 아래에서 하나 추가하세요.", + "settings.sync.third_party": "타사", + "settings.sync.your_server": "내 서버", + "settings.sync.edit": "편집", + "settings.sync.remove": "제거", + "settings.sync.edit_target": "대상 편집", + "settings.sync.add_target": "대상 추가", + "settings.sync.webdav_hint": "WebDAV는 Nextcloud, ownCloud, Cloudreve, Seafile, Synology를 지원합니다. (Seafile: 서버 측에서 SeafDAV를 활성화하세요.)", + "settings.sync.name": "이름", + "settings.sync.name_placeholder": "홈 Nextcloud", + "settings.sync.provider": "공급자", + "settings.sync.server_url": "서버 URL", + "settings.sync.server_url_note_1": "서버 URL만 입력하세요 — WhispAssist가", + "settings.sync.server_url_note_2": "을(를) 자동으로 추가합니다.", + "settings.sync.remote_folder": "원격 폴더", + "settings.sync.username": "사용자 이름", + "settings.sync.app_password": "앱 비밀번호", + "settings.sync.pw_keep": "현재 비밀번호를 유지하려면 비워 두세요", + "settings.sync.pw_store": "운영 체제 자격 증명 저장소에 저장됨", + "settings.sync.upload_legend": "업로드", + "settings.sync.artifact_transcript": "전사", + "settings.sync.artifact_notes": "노트", + "settings.sync.artifact_summary": "요약", + "settings.sync.artifact_recording": "녹음(.wav, 보존된 경우)", + "settings.sync.allow_plaintext": "LAN 주소에 대해 평문 http 허용(권장하지 않음)", + "settings.sync.encrypt_before": "업로드 전 암호화(대상은 암호문만 저장)", + "settings.sync.requires_vault": "— 잠금 해제된 보관소가 필요합니다", + "settings.sync.test_connection": "연결 테스트", + "settings.sync.save_changes": "변경 사항 저장", + "settings.sync.add_target_btn": "대상 추가", + "settings.sync.cancel": "취소", + "settings.sync.third_party_banner": "{kind}은(는) 타사 클라우드입니다 — 업로드하면 데이터가 장치를 벗어나 {kind}(으)로 전송됩니다.", + "settings.sync.link_account": "{kind} 계정 연결…", + "settings.sync.oauth_hint": "OAuth 로그인(루프백 리디렉션)을 엽니다. 토큰은 운영 체제 자격 증명 저장소에 저장됩니다.", + "settings.sync.footnote": "자격 증명은 설정이나 데이터베이스에 절대 기록되지 않습니다 — 운영 체제 자격 증명 저장소에만 저장됩니다. LAN 이외의 대상에는 TLS가 필요합니다.", + + "settings.ai.title": "AI 요약 공급자", + "settings.ai.intro_1": "요약은 기본적으로 로컬 LLM에서 실행됩니다. 이 PC 또는 LAN의 다른 컴퓨터에 있는 Ollama를 가리키도록 설정하세요(예:", + "settings.ai.intro_2": "— 둘 다 로컬로 간주되므로 네트워크를 벗어나는 것이 없습니다. 호스팅 공급자(Anthropic)는 선택 사항이며 기본적으로 꺼져 있고, 하나를 켜는 순간 전사를 제3자에게 전송합니다.", + "settings.ai.provider": "공급자", + "settings.ai.off": "끔", + "settings.ai.provider_ollama": "Ollama(로컬 / LAN)", + "settings.ai.provider_custom": "사용자 지정(OpenAI 호환)", + "settings.ai.provider_anthropic": "Anthropic(Claude) — 호스팅됨, 이 장치를 벗어남", + "settings.ai.endpoint": "엔드포인트", + "settings.ai.model": "모델", + "settings.ai.api_key": "API 키", + "settings.ai.api_key_set_placeholder": "••••••••••••••••(이미 설정됨 — 유지하려면 비워 두세요)", + "settings.ai.show_api_key": "API 키 표시", + "settings.ai.hide_api_key": "API 키 숨기기", + "settings.ai.anthropic_banner": "Anthropic은 호스팅된 타사 서비스입니다 — 요약을 생성하면 이 회의의 전사가 장치를 벗어납니다.", + "settings.ai.endpoint_banner": "이 엔드포인트는 내 컴퓨터나 LAN에 없습니다 — 전사가 네트워크를 벗어나게 됩니다.", + "settings.ai.saving": "저장 중…", + "settings.ai.save": "저장", + "settings.ai.test_connection": "연결 테스트", + "settings.ai.this_hosted_provider": "이 호스팅 공급자", + "settings.ai.reachable": "연결 가능", + "settings.ai.unreachable": "연결 불가", + "settings.ai.model_count_one": "· 모델 {n}개", + "settings.ai.model_count_many": "· 모델 {n}개", + "settings.ai.on_lan": "· 내 컴퓨터 / LAN에서", + "settings.ai.leaves_network": "· 네트워크를 벗어남", + "settings.ai.advanced_title": "Ollama 고급 구성", + "settings.ai.changed": "{n}개 변경됨", + "settings.ai.reset_all": "모두 기본값으로 재설정", + "settings.ai.system_prompt": "시스템 프롬프트", + "settings.ai.system_prompt_placeholder": "예: 당신은 간결한 회의 요약가입니다.", + "settings.ai.system_prompt_hint": "WhispAssist에 필요한 출력 형식 앞에 추가되므로, 지침이 요약/작업 항목 구문 분석을 깨뜨릴 수 없습니다.", + "settings.ai.think": "사고", + "settings.ai.think_help": "추론 노력(추론 모델 전용).", + "settings.ai.keep_alive": "활성 유지", + "settings.ai.keep_alive_help": "모델이 RAM에 유지되는 시간. 예: 5m, 1h, 0(언로드), -1(영구).", + "settings.ai.runtime_hardware": "런타임 및 하드웨어", + "settings.ai.rarely_needed": "— 거의 필요하지 않음", + "settings.ai.save_advanced": "고급 저장", + "settings.ai.saved": "저장됨", + "settings.ai.turn_off": "끄기", + "settings.ai.default_value": "기본값 {value}.", + "settings.ai.reset_default": "기본값으로 재설정", + "settings.ai.reset_field": "{name} 재설정", + + "settings.mcp.title": "MCP 서버", + "settings.mcp.banner_1": "이를 통해 본인의 코딩 에이전트(Claude Code, Codex, Copilot, OpenCode 등)가 로컬 컴퓨터에서 회의 컨텍스트를 가져올 수 있습니다. 연결되면", + "settings.mcp.banner_agent": "해당 에이전트", + "settings.mcp.banner_2": "가 읽은 내용을 자체 모델 공급자의 클라우드로 전달할 수 있습니다 — WhispAssist의 제어를 벗어납니다. WhispAssist 자체는 이 데이터를 어디에도 전송하지 않으며, 서버는 이 장치에서만 수신 대기합니다(", + "settings.mcp.banner_3": "). 모든 읽기는 아래에 기록됩니다.", + "settings.mcp.enable": "MCP 서버 활성화", + "settings.mcp.enable_hint": "기본적으로 꺼져 있습니다. 루프백 전용, 토큰 보호 — 네트워크에서 접근할 수 있는 것이 없습니다.", + "settings.mcp.transport": "전송", + "settings.mcp.transport_http": "스트리밍 HTTP", + "settings.mcp.transport_stdio": "stdio(에이전트가 프로세스를 생성함)", + "settings.mcp.port": "포트", + "settings.mcp.transport_change_hint": "전송/포트를 변경하려면 먼저 서버를 끈 다음 다시 켜세요.", + "settings.mcp.scope_title": "범위", + "settings.mcp.expose": "노출", + "settings.mcp.scope_none": "없음 — 아무것도 공유하지 않음", + "settings.mcp.scope_selected": "선택됨 — 공유로 표시한 기능 브리프만", + "settings.mcp.scope_all": "전체 — 회의, 전사, 작업 항목 및 공유 브리프", + "settings.mcp.expose_recordings": "저장된 녹음이 있는 회의도 허용(기본적으로 꺼짐 — 이 항목이 켜질 때까지 녹음된 회의의 전사는 “전체” 범위에서도 보류됩니다)", + "settings.mcp.token_title": "새 인증 토큰 — 한 번만 표시되므로 지금 복사하세요", + "settings.mcp.token_hint": "이 내용은 다시 표시되지 않습니다. 운영 체제 자격 증명 저장소에 저장됩니다. 분실한 경우 서버를 껐다가 다시 켜 새 토큰을 발급하세요.", + "settings.mcp.copied": "복사됨", + "settings.mcp.copy": "복사", + "settings.mcp.endpoint": "엔드포인트", + "settings.mcp.endpoint_hint": "에이전트의 MCP 클라이언트 구성을 {kind}(으)로 지정하고, 위의 토큰을 bearer 자격 증명으로 사용하세요.", + "settings.mcp.kind_command": "명령", + "settings.mcp.kind_url": "URL", + "settings.mcp.access_log": "접근 로그", + "settings.mcp.access_log_hint": "에이전트가 수행한 모든 도구 읽기(허용 또는 거부)(FR-MCP-5).", + "settings.mcp.no_reads": "아직 아무 에이전트도 읽지 않았습니다.", + "settings.mcp.log_meeting": "회의 {id}", + "settings.mcp.refresh": "새로 고침", + + "settings.privacy.title": "개인정보 보호", + "settings.privacy.intro": "WhispAssist가 현재 이 장치 밖으로 실제로 보낼 수 있도록 허용된 내용입니다. 모두 꺼져 있으면(기본값) 장치를 벗어나는 것이 전혀 없습니다.", + "settings.privacy.llm_endpoint": "LLM 엔드포인트", + "settings.privacy.off": "끔", + "settings.privacy.local_only": "로컬 전용", + "settings.privacy.leaves_device": "이 장치를 벗어남", + "settings.privacy.sync_label": "동기화", + "settings.privacy.enabled": "활성화됨", + "settings.privacy.mcp_label": "MCP 서버", + "settings.privacy.mcp_on": "켬 · {scope}", + "settings.privacy.mcp_loopback_note": "루프백에서만 수신 — 위의 송신 목록에 아무것도 추가하지 않습니다. 연결된 에이전트는 여전히 읽은 내용을 자체 모델 공급자에게 전달할 수 있습니다. MCP 서버 탭을 참조하세요.", + "settings.privacy.egress_title": "송신 허용 목록", + "settings.privacy.no_egress": "허용 목록에 있는 호스트가 없습니다 — WA는 콘텐츠 송신을 하지 않습니다.", + "settings.privacy.sync_targets_title": "동기화 대상", + "settings.privacy.third_party": "타사", + "settings.privacy.your_server": "내 서버", + "settings.privacy.tls": "TLS", + "settings.privacy.no_tls": "TLS 없음", + "settings.privacy.refresh": "새로 고침", + "settings.privacy.unavailable": "개인정보 자체 점검을 사용할 수 없습니다.", + "settings.privacy.vault_title": "암호화 보관소", + "settings.privacy.vault_intro": "비밀번호로 노트, 전사, 요약을 저장 시 암호화합니다. (오디오 파일은 아직 암호화되지 않습니다.)", + "settings.privacy.vault_password": "보관소 비밀번호", + "settings.privacy.enable_vault": "보관소 활성화", + "settings.privacy.vault_pw_hint": "8자 이상 사용하세요. 잊어버리면 암호화된 콘텐츠를 복구할 수 없습니다.", + "settings.privacy.vault_locked_1": "보관소가 ", + "settings.privacy.locked_word": "잠김", + "settings.privacy.vault_locked_2": " 상태입니다. 암호화된 회의를 읽으려면 잠금을 해제하세요.", + "settings.privacy.password": "비밀번호", + "settings.privacy.unlock": "잠금 해제", + "settings.privacy.vault_unlocked_1": "보관소가 ", + "settings.privacy.unlocked_word": "잠금 해제됨", + "settings.privacy.vault_unlocked_2": " 상태입니다. 새 노트, 전사, 요약은 저장 시 암호화됩니다.", + "settings.privacy.lock_now": "지금 잠그기", + "settings.privacy.change_password": "비밀번호 변경", + "settings.privacy.current_password": "현재 비밀번호", + "settings.privacy.new_password": "새 비밀번호", + + "settings.about.title": "정보", + "settings.about.tagline": "완전히 로컬이며 오픈 소스인 Windows 네이티브 회의 도우미입니다.", + "settings.about.build_commit": "빌드 커밋", + + "consent.heading": "녹음하기 전에", + "consent.body": "참가자의 동의 없이 대화를 녹음하는 것은 귀하의 지역에서 불법일 수 있습니다. 현지 녹음 법률을 확인하세요. 이것은 주의 사항이며 법률 자문이 아닙니다.", + "consent.accept": "이해했습니다 — 녹음 활성화", + "consent.cancel": "취소", + + "hosted.heading": "{provider} 사용 전", + "hosted.body_1": "다음으로 생성하면", + "hosted.body_2": "이 회의의 전사가 그들의 서버로 전송됩니다 — 이 장치를 벗어나며 그들의 개인정보 처리방침이 적용됩니다. 데이터가 장치를 벗어난 후에는 WhispAssist가 데이터 처리에 대해 아무런 제어권이 없습니다. 이 항목은 기본적으로 꺼져 있으며, 지금 선택하는 것입니다.", + "hosted.accept": "이해했습니다 — 계속", + "hosted.cancel": "취소", + + "theme.group": "테마", + "theme.system": "시스템에 맞춤", + "theme.light": "밝게", + "theme.dark": "어둡게", + + "import.dialog_label": "파일 또는 URL에서 회의 추가", + "import.title": "회의 추가", + "import.close": "닫기", + "import.close_title": "닫기(Esc)", + "import.body": "기존 녹음을 가져옵니다 — 로컬 오디오/비디오 파일 또는 링크(YouTube, 스트리밍 페이지 또는 직접 미디어 URL). 실시간 녹음과 마찬가지로 전사되고 화자 분리됩니다.", + "import.file_or_url": "파일 또는 URL", + "import.source_placeholder": "URL을 붙여넣거나 파일을 찾아보세요…", + "import.choose_file": "로컬 파일 선택", + "import.browse": "찾아보기…", + "import.title_label": "제목", + "import.optional": "선택 사항", + "import.title_placeholder": "기본값은 파일 이름", + "import.filter_av": "오디오 / 비디오", + "import.requires_1": "다음이 필요합니다:", + "import.requires_2": "이(가) 설치되어 PATH에 있어야 합니다(URL의 경우", + "import.requires_3": "도 필요). WhispAssist는 이들을 포함하지 않습니다.", + "import.importing": "가져오는 중… 시간이 걸릴 수 있습니다", + "import.import": "가져오기", + "import.cancel": "취소", + + "tagchip.filter": "“{tag}” 태그가 지정된 회의 필터링", + "tagchip.remove": "{tag} 태그 제거", + + "levelmeter.system_mic": "시스템 및 마이크 입력 레벨", + "levelmeter.system": "시스템 입력 레벨", + + "app.tagline": "로컬 · 비공개", + "app.note_template": "노트 템플릿", + "app.no_template": "템플릿 없음", + "app.add_meeting": "회의 추가", + "app.add_meeting_title": "파일 또는 URL에서 회의 추가", + "app.record": "녹음", + "app.record_title": "녹음 시작(Ctrl+Shift+R)", + "app.stop": "중지", + "app.stop_title": "녹음 중지(Ctrl+Shift+R)", + "app.cancel": "취소", + "app.cancel_title": "이 녹음을 취소하고 삭제", + "app.recording": "녹음 중…", + "app.backend_title": "활성 전사 백엔드", + "app.retention_title": "이 회의의 오디오를 .wav로 저장", + "app.saving": "저장 중", + "app.not_saved": "저장되지 않음", + "app.reconnecting": "오디오 장치를 다시 연결하는 중…", + "app.settings": "설정", + "app.settings_title": "설정(Ctrl+,)", + "app.discard_confirm": "이 녹음을 취소하시겠습니까? 오디오와 전사가 삭제됩니다.", + "app.announce_started": "녹음 시작됨", + "app.announce_paused": "녹음 일시 중지됨", + "app.announce_stopped": "녹음 중지됨", + "app.consent_dialog": "녹음 동의", + "app.vault_dialog": "암호화 보관소 잠금 해제", + "app.vault_title": "암호화 보관소 잠금 해제", + "app.vault_desc": "회의가 저장 시 암호화되어 있습니다. 읽으려면 비밀번호를 입력하세요.", + "app.vault_password": "보관소 비밀번호", + "app.vault_incorrect": "비밀번호가 올바르지 않습니다", + "app.unlock": "잠금 해제", + "app.continue_locked": "잠긴 상태로 계속", + "app.show_meetings": "회의 목록 표시", + "app.hide_meetings": "회의 목록 숨기기", + "app.show_summary": "요약 패널 표시", + "app.hide_summary": "요약 패널 숨기기", + "app.resize_meetings": "회의 목록 크기 조정", + "app.resize_summary": "요약 패널 크기 조정", + + "meetings.search_placeholder": "회의 검색…", + "meetings.search_aria": "회의 검색", + "meetings.filter_tag_aria": "태그로 필터링", + "meetings.all_tags": "모든 태그", + "meetings.from_date_aria": "시작 날짜", + "meetings.to_date_aria": "종료 날짜", + "meetings.bulk_format_aria": "일괄 내보내기 형식", + "meetings.bulk_export": "일괄 내보내기", + "meetings.bulk_export_title": "위의 태그/날짜 필터와 일치하는 모든 회의 내보내기", + "meetings.exporting": "내보내는 중…", + "meetings.exported_one": "회의 {n}개를 내보냈습니다.", + "meetings.exported_many": "회의 {n}개를 내보냈습니다.", + "meetings.searching": "검색 중…", + "meetings.loading": "회의를 불러오는 중…", + "meetings.no_matches": "일치하는 항목이 없습니다.", + "meetings.empty": "아직 회의가 없습니다 — 위의 녹음을 클릭하여 시작하세요.", + "meetings.status.recording": "녹음 중", + "meetings.status.transcribing": "전사 중", + "meetings.status.recovering": "복구 중", + "meetings.status.error": "오류", + "meetings.resume": "전사 재개", + "meetings.delete_aria": "회의 삭제", + "meetings.delete_confirm": "이 회의를 삭제하시겠습니까? 녹음, 전사, 노트가 제거됩니다.", + + "transcript.heading": "전사", + "transcript.title_aria": "회의 제목", + "transcript.lang_title": "전사 언어", + "transcript.lang_auto": "감지 중…", + "transcript.show": "전사 표시", + "transcript.hide": "전사 숨기기", + "transcript.empty": "이 회의에 대한 전사가 없습니다.", + "transcript.will_appear": "녹음하는 동안 전사가 여기에 표시됩니다.", + "transcript.play_from_here": "여기서부터 재생", + "transcript.resize": "전사 및 노트 크기 조정", + "transcript.reprocess_placeholder": "다음으로 다시 전사…", + "transcript.reprocess_lang_aria": "재처리 언어", + "transcript.reprocess_keep_lang": "현재 언어 유지", + "transcript.reprocess_go": "실행", + "transcript.retranscribing": "다시 전사하는 중…", + "transcript.has_note": "노트 있음", + "transcript.note_placeholder": "이 순간에 대한 노트 추가…", + "transcript.note_aria": "이 전사 줄에 대한 노트", + "transcript.filter_md": "Markdown", + "transcript.filter_pdf": "PDF", + "transcript.filter_docx": "Word 문서", + "transcript.filter_obsidian": "Obsidian 노트", + + "notes.heading": "노트", + "notes.show": "노트 표시", + "notes.hide": "노트 숨기기", + "notes.placeholder": "노트…", + "notes.live_placeholder": "말하면서 노트를 입력하세요…", + "notes.toolbar_aria": "노트 서식", + "notes.bold": "굵게", + "notes.italic": "기울임꼴", + "notes.h1": "제목 1", + "notes.h2": "제목 2", + "notes.bullet": "글머리 기호 목록", + "notes.checkbox_title": "체크박스", + "notes.checkbox_aria": "체크박스 목록 항목", + "notes.edit_raw": "원본 markdown 편집", + "notes.render": "markdown 렌더링", + "notes.editor": "편집기", + "notes.preview": "미리 보기", + "notes.export_md_title": "노트를 .md로 내보내기", + "notes.export_pdf_title": "노트를 .pdf로 내보내기", + "notes.export_docx_title": "노트를 .docx로 내보내기", + "notes.export_bundle_title": "오디오 + 전사 + 노트를 폴더로 내보내기", + "notes.export_obsidian_title": "하나의 Obsidian 노트 내보내기(노트 + 요약 + 전사, 오디오 제외)", + + "summary.recording_heading": "녹음", + "summary.loading_recording": "녹음을 불러오는 중…", + "summary.sync_heading": "동기화", + "summary.uploading": "업로드 중…", + "summary.upload_now": "지금 업로드", + "summary.no_uploads": "이 회의에 대한 업로드가 아직 없습니다.", + "summary.retry": "재시도", + "summary.tags_heading": "태그", + "summary.tags_select": "태그를 지정하려면 회의를 선택하세요.", + "summary.tag_add_placeholder": "태그 추가…", + "summary.tag_first_placeholder": "프로젝트, 고객, 주제…", + "summary.generating": "생성 중…", + "summary.generate_tags": "태그 생성", + "summary.saving": "저장 중…", + "summary.save_tags": "태그 저장", + "summary.summary_heading": "요약", + "summary.ai_provider": "AI 공급자", + "summary.provider_off": "끔", + "summary.provider_custom": "사용자 지정", + "summary.local": "로컬", + "summary.leaves_device": "이 장치를 벗어남", + "summary.this_hosted_provider": "이 호스팅 공급자", + "summary.select_generate": "요약을 생성하려면 회의를 선택하세요.", + "summary.decisions_heading": "결정 사항", + "summary.regenerate": "다시 생성", + "summary.generated_hint": "회의 후 로컬에서 생성됨(로컬 LLM 공급자 필요).", + "summary.no_provider": "구성된 AI 공급자가 없습니다 — 설정에서 하나 활성화하세요.", + "summary.generate_summary": "요약 생성", + "summary.briefs_heading": "기능 브리프", + "summary.briefs_select": "기능 브리프를 만들거나 보려면 회의를 선택하세요.", + "summary.briefs_desc": "이 회의를 에이전트가 사용할 수 있는 사양으로 정제합니다(로컬 LLM 공급자 필요) — 코딩 에이전트에 전달하거나, MCP 서버가 켜지면 이를 통해 제공하세요.", + "summary.brief_repo_placeholder": "대상 저장소(선택 사항), 예: acme/reporting-web", + "summary.distilling": "정제 중…", + "summary.create_brief": "기능 브리프 만들기", + "summary.brief_mcp_title": "MCP 서버가 켜져 있을 때 사용 가능", + "summary.copied": "복사됨", + "summary.copy_md": "Markdown으로 복사", + "summary.copy_json": "JSON으로 복사", + "summary.brief_problem": "문제", + "summary.brief_outcome": "원하는 결과", + "summary.brief_criteria": "수락 기준", + "summary.brief_none": "캡처된 내용 없음.", + "summary.brief_context": "컨텍스트", + "summary.action_items_heading": "작업 항목", + "summary.ai_select": "작업 항목을 보려면 회의를 선택하세요.", + "summary.ai_empty": "아직 없습니다 — 아래에서 하나 추가하거나 요약을 생성하여 자동으로 추출하세요.", + "summary.confirmed": "확인됨", + "summary.ai_text_placeholder": "작업 항목…", + "summary.ai_text_aria": "작업 항목 텍스트", + "summary.owner": "담당자", + "summary.due_date": "기한", + "summary.reminder_title": "이 기한에 대한 로컬 알림 예약", + "summary.ai_delete_title": "이 작업 항목 삭제", + "summary.ai_delete_aria": "작업 항목 삭제", + "summary.add_action_item": "작업 항목 추가", + "summary.save_action_items": "작업 항목 저장", + "summary.calendar_heading": "캘린더 이벤트", + "summary.cal_select": "회의를 캘린더 이벤트에 연결하려면 회의를 선택하세요.", + "summary.event_search_placeholder": "이벤트 제목 검색…", + "summary.linked_event": "연결된 이벤트", + "summary.change_event": "이벤트 변경…", + "summary.link_event": "이벤트 연결…", + "summary.untitled_event": "(제목 없음)", + "summary.no_events_1": "아직 가져온 이벤트가 없습니다 — ", + "summary.no_events_2": "설정 → 캘린더에서 가져오세요.", + "summary.no_events_match": "이 검색/날짜와 일치하는 이벤트가 없습니다 — 하나를 지워 보세요.", + "summary.organizer_label": "주최자: {name}", + "summary.participants_heading": "참가자", + "summary.participants_hint": "연결된 캘린더 이벤트에서 채워집니다.", + "summary.speakers_heading": "화자", + "summary.speakers_select": "화자 이름을 지정하려면 회의를 선택하세요.", + "summary.no_speakers": "아직 감지된 화자가 없습니다.", + "summary.speaker_name_placeholder": "화자 이름", + "summary.save": "저장", + "summary.cancel": "취소", + "summary.name_speaker": "이 화자 이름 지정…", + "summary.add_new_name": "+ 새 이름 추가…", + + "settings.recording.title": "녹음", + "settings.recording.record_default": "기본적으로 회의 녹음", + "settings.recording.save_audio_as": "오디오를 다음으로 저장", + "settings.recording.default_hint": "기본적으로 꺼져 있습니다. 꺼져 있으면 오디오는 전사를 생성하는 데만 사용되며 회의가 완료되면 삭제됩니다. 회의별로 녹음을 전환할 수도 있습니다.", + "settings.recording.consent_label": "동의: {status}.", + "settings.recording.consent_ack": "확인됨", + "settings.recording.consent_not": "아직 확인되지 않음", + "settings.recording.auto_label": "캘린더 이벤트가 시작될 때 자동으로 녹음 시작", + "settings.recording.auto_hint": "WhispAssist가 열려 있는 동안에만 작동합니다. 가져온 캘린더 이벤트의 시작 시간이 되면 녹음이 자동으로 시작됩니다(위의 기본 보존 설정 사용). 백그라운드에서 실행되는 것은 없습니다 — 타이머는 앱이 실행 중일 때만 설정됩니다. 설정 → 캘린더에서 이벤트를 가져오세요." +}