"""VoxCast UI strings: Korean. Key/placeholder parity with en.py enforced."""

STRINGS: dict[str, str] = {
    # ── Panel (main.qml) ────────────────────────────────────────────────
    "panel_ready": "준비 완료",
    "panel_transcribing": "전사 중...",
    "panel_correcting": "교정 중...",
    "panel_enhancing": "AI 다듬는 중…",
    "panel_converting": "변환 중...",
    "panel_error": "오류",
    "panel_drop_file": "파일 놓기 → Markdown",
    "panel_acc_ai_mode": "AI 모드",
    "panel_acc_settings": "설정",
    "panel_acc_undock": "분리",
    "panel_acc_hide": "숨기기",

    # ── Settings window ─────────────────────────────────────────────────
    "settings_title": "설정",
    "sec_interface": "인터페이스",
    "row_ui_language": "언어",
    "sec_audio": "오디오",
    "row_microphone": "마이크",
    "opt_system_default": "시스템 기본값",
    "row_voice_test": "음성 테스트",
    "btn_test": "테스트",
    "btn_stop": "중지",
    "btn_play": "재생",
    "sec_recognition": "음성 인식",
    "row_model": "모델",
    "model_swift": "Swift",
    "model_precise": "Precise",
    "model_ultra": "Ultra",
    "hint_model_swift": "빠르고 가벼워 그래픽 카드가 없는 노트북과 PC에 알맞은 선택입니다.",
    "hint_model_precise": "균형 잡힌 정확도로 대부분의 PC에서 잘 작동하는 무난한 일상용 선택입니다.",
    "hint_model_ultra": "가장 높은 정확도를 제공하며 그래픽 카드(4 GB)와 함께 쓰기에 이상적입니다. 없으면 눈에 띄게 느려집니다.",
    "compat_gpu_ok": "그래픽 카드({vram} GB)에서 실행됩니다.",
    "compat_gpu_low": "그래픽 카드({vram} GB)의 메모리가 이 모델에 부족하여 프로세서에서 실행됩니다(더 느림).",
    "compat_cpu": "호환되는 그래픽 카드가 감지되지 않아 이 모델은 프로세서에서 실행됩니다.",
    "compat_cpu_forced": "프로세서에서 실행됩니다(설정에서 지정됨).",
    "row_language": "언어",
    "row_lang_auto": "언어 자동 감지",
    "hint_lang_auto": "받아쓰기할 때마다 언어를 감지합니다. 언어를 고정하면 더 빠르고 정확합니다.",
    "row_live_mode": "실시간 전사",
    "hint_live_mode": "말을 마친 뒤가 아니라 말하는 동안 커서 위치에 텍스트가 나타납니다. 이 모드에서는 AI 다듬기가 적용되지 않으며 텍스트가 커서에 입력됩니다.",
    "hint_output_live": "실시간 전사가 켜져 있습니다. 말하는 동안 텍스트가 커서 위치에 입력되므로 이 출력 옵션은 적용되지 않습니다.",
    "hint_live_cpu": "그래픽 카드가 있을 때 가장 잘 작동합니다. 프로세서에서는 말하는 속도를 따라가지 못할 수 있습니다.",
    "live_cpu_warning": "실시간 모드가 프로세서에서 실행되어 지연될 수 있습니다. 그래픽 카드 사용을 권장합니다.",
    "sec_output": "출력",
    "row_text_output": "텍스트 출력",
    "opt_clipboard": "클립보드",
    "opt_type_at_cursor": "커서에 입력",
    "opt_both": "둘 다",
    "row_insert_method": "삽입 방식",
    "opt_paste": "붙여넣기(Ctrl+V)",
    "opt_typing": "타이핑",
    "hint_typing": "키보드 입력을 시뮬레이션합니다. 터미널에서도 작동합니다.",
    "sec_controls": "조작",
    "row_hotkey": "단축키",
    "row_mode": "모드",
    "opt_hold": "누르고 있기",
    "opt_toggle": "전환",
    "sec_performance": "성능",
    "row_compute": "연산 장치",
    "opt_auto": "자동",
    "opt_gpu": "GPU",
    "opt_cpu": "CPU",
    "hint_cpu_slow": "CPU 모드는 더 느립니다.",
    "sec_system": "시스템",
    "row_autostart": "자동 시작",
    "row_startup_sound": "시작 소리",
    "row_recording_sound": "녹음 소리",
    "row_shutdown_sound": "종료 소리",
    "row_always_on_top": "항상 위에 표시",
    "row_small_panel": "작은 패널",
    "sec_file_conversion": "파일 변환",
    "row_save_mode": "저장 방식",
    "opt_ask": "물어보기",
    "opt_beside_file": "파일 옆에",
    "opt_folder": "폴더",
    "row_folder": "폴더",
    "btn_browse": "찾아보기",
    "row_timestamps": "타임스탬프",
    "row_open_after": "완료 후 열기",
    "row_context_menu": "우클릭 메뉴",
    "hint_context_menu": "탐색기 우클릭 메뉴에 'Markdown으로 변환'을 추가합니다.",
    "sec_ai": "AI 다듬기",
    "row_enable": "사용",
    "hint_ai": "받아쓴 내용을 AI로 다듬습니다(정리, 이메일, 답장…). 패널을 우클릭하거나 패널의 AI 버튼으로 활성 모드를 선택하세요.",
    "row_provider": "제공업체",
    "row_api_key": "API 키",
    "ph_api_key": "API 키 붙여넣기",
    "ph_api_key_saved": "•••••••• 저장됨, 바꾸려면 입력하세요",
    "btn_save": "저장",
    "hint_key_stored": "키는 Windows 자격 증명 관리자에 안전하게 저장됩니다.",
    "btn_clear": "지우기",
    "btn_load": "불러오기",
    "btn_loading": "불러오는 중",
    "row_active_mode": "활성 모드",
    "mode_normal": "일반(AI 없음)",
    # Display names of the built-in AI modes (shown while the user hasn't
    # renamed them; the stored name stays the English default).
    "mode_cleanup": "정리",
    "mode_email": "이메일",
    "mode_reply": "답장",
    "mode_todo": "할 일 목록",
    "mode_notes": "메모",
    "mode_formal": "격식체",
    "lbl_custom_modes": "사용자 지정 모드",
    "sec_license": "라이선스",
    "row_status": "상태",
    "lic_activated": "● 인증됨",
    "lic_not_activated": "○ 미인증",
    "btn_activate": "정품 인증",
    "sec_updates": "업데이트",
    "row_version": "버전",
    "btn_check_updates": "업데이트 확인",
    "btn_checking": "확인 중",
    "btn_downloading_pct": "{pct}%  다운로드 중…",
    "btn_download_install": "v{version} 다운로드 및 설치",
    "btn_reset": "초기화",
    "reset_title": "설정 초기화",
    "reset_question": "모든 설정을 기본값으로 되돌릴까요?",
    "dlg_model_dl_title": "다운로드 필요",
    "dlg_model_dl_text": "선택한 모델이 아직 설치되어 있지 않습니다. VoxCast가 약 {size}의 음성 데이터를 다운로드한 후 전환합니다. 지금 다운로드를 시작할까요?",

    # ── Mode editor ─────────────────────────────────────────────────────
    "ph_mode_name": "모드 이름",
    "tip_remove_mode": "모드 삭제",
    "ph_system_prompt": "시스템 프롬프트입니다. AI가 전사 텍스트를 어떻게 변환할지 지시합니다.",
    "btn_add_mode": "모드 추가",
    "mode_new": "새 모드",

    # ── Mode menu (panel) ───────────────────────────────────────────────
    "menu_ai_mode": "AI 모드",
    "menu_ai_mode_off": "AI 모드  ·  꺼짐",
    "menu_ai_settings": "설정…",
    "menu_copy_raw": "원본 전사 텍스트 복사",
    "tray_raw_copied": "원본 전사 텍스트가 클립보드에 복사되었습니다.",

    # ── Activation overlay ──────────────────────────────────────────────
    "act_title": "VoxCast 정품 인증",
    "act_intro": "라이선스 키를 입력하여 이 기기를 인증하세요. 인증은 한 번만 온라인으로 진행되며, 이후 VoxCast는 완전히 오프라인으로 작동합니다.",
    "act_enter_key": "라이선스 키를 입력해 주세요.",
    "act_button": "정품 인증",
    "act_button_busy": "인증 중…",
    "act_update_available": "버전 {version}을(를) 사용할 수 있습니다.",
    "act_update_now": "지금 업데이트",
    "act_device": "기기: ",
    "act_quit": "종료",

    # ── First-run overlay ───────────────────────────────────────────────
    "fr_title": "VoxCast 초기 설정",
    "fr_pick_language": "음성 인식에 사용할 언어를 선택하세요.\n매번 느린 자동 감지를 거치지 않아도 됩니다.",
    "fr_continue": "계속",
    "fr_preparing": "모델 준비 중...",
    "fr_hint_label": "팁:",
    "status_hw_check": "하드웨어 확인 중...",
    "fr_hw_gpu": "그래픽 카드가 감지되었습니다({vram} GB). {model} 모델을 설정합니다.",
    "fr_hw_cpu": "전용 그래픽 카드가 감지되지 않았습니다. {model} 모델을 설정합니다.",
    "fr_hint_download": "모델은 한 번만 다운로드되어 기기에 저장되며, 클라우드가 필요 없습니다.",
    "fr_hint_hotkey": "Ctrl+Shift+Space를 눌러 받아쓰기를 시작하고, 다시 누르면 중지됩니다.",
    "fr_hint_ai": "패널을 우클릭하여 AI 모드(예: 이메일, 답장)를 선택하세요.",
    "fr_hint_dragfile": "파일을 패널로 끌어오면 Markdown으로 변환됩니다.",
    "fr_hint_audio": "오디오 파일(mp3, ogg, m4a…)을 놓으면 전사됩니다.",
    "fr_hint_explorer": "탐색기에서 파일 우클릭 → “Markdown으로 변환”.",
    "fr_hint_dock": "패널을 화면 가장자리에 고정하면 필요할 때까지 밖으로 밀려나 있습니다.",
    "fr_hint_settings": "모델, 언어, 단축키는 언제든지 설정에서 변경할 수 있습니다.",

    # ── Status messages (Python → panel) ────────────────────────────────
    "status_init_services": "서비스 초기화 중...",
    "status_loading_vad": "음성 활동 감지 불러오는 중...",
    "status_loading_model": "음성 인식 모델 불러오는 중...",
    "status_init_models": "모델 초기화 중...",
    "status_loading": "모델 불러오는 중...",
    "status_switching_model": "모델 전환 중...",
    "status_downloading_engine": "음성 인식 엔진 다운로드 중...",
    "status_engine_ready": "음성 인식 엔진 준비 완료",
    "status_downloading_correction": "교정 모델 다운로드 중...",
    "status_correction_ready": "교정 모델 다운로드 완료",

    # ── Meeting recording ────────────────────────────────────────────────
    "menu_meeting_start": "회의 녹음",
    "menu_meeting_stop": "회의 녹음 중지",
    "meeting_consent_title": "회의 녹음",
    "meeting_consent_body": "VoxCast는 통화와 회의를 전사할 수 있도록 시스템 오디오와 마이크를 녹음합니다.\n\n모든 참가자가 녹음에 동의했는지 반드시 확인하세요. 많은 국가에서(독일 포함) 동의 없는 통화 녹음은 형사 처벌 대상입니다.",
    "meeting_consent_accept": "확인했습니다, 녹음 시작",
    "meeting_consent_cancel": "취소",
    "status_meeting_recording": "회의 녹음 중",
    "status_meeting_transcribing": "회의 전사 중… {pct}%",
    "meeting_done_title": "회의 전사 완료",
    "meeting_done_body": "녹취록이 저장되었습니다. 여기를 클릭하면 열립니다.",
    "meeting_resume_note": "완료되지 않은 회의 녹음을 발견하여 지금 전사합니다.",
    "menu_meeting_folder": "회의 폴더 열기",
    "meeting_source_title": "무엇을 녹음할까요?",
    "meeting_source_system": "시스템 전체",
    "meeting_source_empty": "지금 오디오를 재생 중인 앱이 없습니다",
    "meeting_app_fallback": "앱 단위 캡처를 시작할 수 없어 대신 시스템 전체를 녹음합니다.",
    "md_meeting_source": "출처",
    "meeting_partial_note": "녹음이 일찍 종료되었지만 부분 녹음은 정상적으로 처리되었습니다.",
    "meeting_system_silent": "시스템 오디오가 녹음되지 않았습니다. 재생 장치를 확인하세요. 일부 헤드셋은 Windows가 녹음할 수 없는 방식으로 오디오를 재생하므로, 기본 출력 장치를 바꾸면 해결됩니다.",
    "meeting_summary_failed": "AI 요약에 실패하여 녹취록이 요약 없이 저장되었습니다.",
    "err_meeting_folder": "회의 폴더를 만들 수 없습니다. 설정에서 폴더를 확인하세요.",
    "err_meeting_disk": "디스크 여유 공간이 부족하여 회의 녹음이 중지되었습니다.",
    "err_meeting_maxlen": "최대 회의 길이(4시간)에 도달하여 녹음이 중지되었습니다.",
    "err_meeting_capture": "회의 녹음에 실패했습니다. 오디오를 캡처할 수 없었습니다.",
    "err_meeting_transcribe": "회의 전사에 실패했습니다. 다시 시도할 수 있도록 오디오 파일은 보존되었습니다.",
    "md_meeting_title": "회의",
    "md_meeting_date": "날짜",
    "md_meeting_duration": "길이",
    "md_meeting_summary": "요약",
    "md_meeting_transcript": "녹취록",
    "sec_remote": "원격 서버",
    "row_remote_enable": "원격 서버 사용",
    "hint_remote": "더 강력한 GPU 또는 CPU가 있는 다른 컴퓨터에서 전사를 실행합니다. 받아쓰기, 파일 변환, 회의가 서버에서 처리됩니다.",
    "hint_recognition_remote": "인식은 원격 서버가 처리하므로 아래의 로컬 모델은 비활성화됩니다. 모델은 서버에서 선택합니다.",
    "row_remote_url": "서버 주소",
    "ph_remote_url": "http://192.168.1.10:8590",
    "row_remote_key": "API 키",
    "ph_remote_key": "서버의 API 키를 붙여넣으세요",
    "btn_remote_test": "연결 테스트",
    "remote_testing": "테스트 중...",
    "btn_remote_discover": "서버 찾기",
    "remote_discovering": "검색 중...",
    "remote_discover_none": "서버를 찾을 수 없습니다. 서버가 실행 중인지, 두 기기가 같은 네트워크에 있는지, 서버의 방화벽이 로컬 네트워크에서 VoxCast Server를 허용하는지 확인하세요.",
    "remote_enhance_available": "AI 다듬기 사용 가능",
    "remote_update_available": "서버 업데이트가 있습니다: {version}",
    "row_tls_mode": "인증서",
    "tls_verify": "유효한 인증서 요구",
    "tls_pinned": "이 서버 신뢰",
    "tls_insecure": "모든 인증서 허용",
    "btn_trust_cert": "인증서 확인",
    "tls_trust_title": "이 서버를 신뢰하시겠어요?",
    "tls_trust_body": "서버가 이 인증서 지문을 제시했습니다. 신뢰하기 전에 사용 중인 서버와 일치하는지 확인하세요.",
    "tls_trust_confirm": "신뢰",
    "tls_trust_failed": "서버의 인증서를 읽을 수 없습니다. 주소와 HTTPS가 켜져 있는지 확인하세요.",
    "tls_insecure_warning": "연결이 검증되지 않았습니다. 신뢰할 수 있는 네트워크에서만 사용하세요.",
    "row_enhance_source": "AI 다듬기",
    "enhance_own": "내 API 키",
    "enhance_server": "서버 사용",
    "hint_enhance_server": "서버가 자체 AI 키로 다듬으므로 여기에 입력할 필요가 없습니다.",
    "lbl_server_modes": "회사 모드 (서버에서)",
    "managed_locked": "조직에서 관리함",
    "remote_http_warn": "이 연결은 암호화되지 않았습니다. 신뢰할 수 있는 로컬 네트워크에서만 사용하세요.",
    "remote_live_hint": "실시간 자막은 이 기기에서 실행되며 로컬에 설치된 모델이 필요합니다.",
    "remote_connected": "연결됨: {where}의 {model}",
    "remote_on_gpu": "GPU ({vram} GB)",
    "remote_on_cpu": "CPU",
    "err_remote_unreachable": "원격 서버에 연결할 수 없습니다. 주소와 네트워크를 확인하세요.",
    "err_remote_auth": "원격 서버가 API 키를 거부했습니다.",
    "err_remote_busy": "원격 서버가 사용 중입니다. 잠시 후 다시 시도하세요.",
    "err_remote_failed": "원격 서버가 이 오디오를 처리하지 못했습니다.",
    "sec_meeting": "회의",
    "row_meeting_mic": "마이크 녹음",
    "hint_meeting_mic": "다른 참가자뿐 아니라 자신의 목소리도 함께 녹음합니다.",
    "row_meeting_language": "언어",
    "lang_meeting_auto": "자동 감지",
    "row_convert_language": "오디오 언어",
    "lang_convert_auto": "자동 감지",
    "err_convert_engine_loading": "음성 엔진을 아직 불러오는 중입니다. 잠시 후 변환을 다시 시도해 주세요.",
    "err_convert_no_speech": "이 파일에서 음성을 인식하지 못했습니다. Markdown 파일이 생성되지 않았습니다.",
    "err_convert_engine_error": "받아쓰기 중 음성 엔진에서 오류가 발생했습니다.",
    "tray_convert_failed": "{name}을(를) 변환하지 못했습니다: {error}",
    "hint_meeting_language": "자동 감지는 어떤 언어의 회의든 처리하며, 대화 중에 언어가 바뀌어도 대응합니다. 감지가 잘 안 될 때만 언어를 직접 선택하세요.",
    "row_meeting_keep": "오디오 파일 보관",
    "hint_meeting_keep": "녹음을 녹취록 옆에 .wav 파일로 저장합니다.",
    "row_meeting_summary": "AI 요약",
    "hint_meeting_summary": "녹취록 앞에 AI가 생성한 요약을 추가합니다(AI 다듬기 설정이 필요합니다).",
    "hint_meeting_summary_nokey": "AI 다듬기가 설정되지 않아 요약을 건너뜁니다.",
    "row_meeting_folder": "저장 위치",
    "meeting_folder_default": "문서\\VoxCast\\Meetings",
    "btn_open": "열기",

    # ── Errors / tray (Python) ──────────────────────────────────────────
    "err_audio_lib": "오디오 라이브러리를 사용할 수 없습니다",
    "err_gpu_oom": "GPU 메모리가 부족합니다. CPU 모드로 다시 시작하세요.",
    "err_gpu_fallback": "그래픽 카드를 사용할 수 없어 프로세서에서 실행합니다(더 느림).",
    "err_hotkey_init": "단축키 시스템이 초기화되지 않았습니다",
    "err_mic": "마이크 오류입니다. 오디오 장치를 확인하세요.",
    "err_mic_test_busy": "이미 녹음이 진행 중입니다. 마이크를 테스트하기 전에 중지하세요.",
    "err_model_switch": "모델 전환에 실패했습니다. 다시 시도해 주세요.",
    "err_model_download": "음성 모델 다운로드에 실패했습니다. 인터넷 연결을 확인하세요.",
    "err_speech_start": "음성 인식을 시작할 수 없습니다.",
    "err_transcription": "전사에 실패했습니다. 다시 시도해 주세요.",
    "err_model_missing": "음성 모델을 찾을 수 없습니다. 설정에서 모델을 선택해 주세요.",
    "tray_cpu_fallback": "호환되는 GPU를 찾지 못해 CPU에서 실행합니다.\nGPU 가속을 사용할 때보다 전사가 느립니다.",
    "tray_cpu_configured": "설정에 지정된 대로 CPU에서 실행합니다.",
    "tray_cpu_detected": "호환되는 GPU가 감지되지 않아 CPU에서 실행합니다.\n더 빠른 전사를 위해 호환 GPU 사용을 권장합니다.",
    "tray_file_not_found": "파일을 찾을 수 없습니다.",
    "tray_no_supported_files": "변환할 수 있는 지원 파일이 없습니다.",
    "tray_still_starting": "VoxCast가 아직 시작 중입니다. 잠시 후 다시 시도하세요.",
    "tray_no_output_folder": "출력 폴더가 설정되지 않았습니다. 저장 위치를 선택하세요.",
    "tray_context_menu_failed": "우클릭 메뉴를 업데이트할 수 없습니다.",
    "tray_need_api_key": "먼저 API 키를 입력하고 저장하세요.",
    "tray_models_load_failed": "모델을 불러올 수 없습니다.",
    "tray_show_hide": "표시/숨기기",

    # ── License (Python user messages) ──────────────────────────────────
    "lic_enter_key": "라이선스 키를 입력해 주세요.",
    "lic_saved_failed": "인증되었지만 라이선스를 이 PC에 저장할 수 없었습니다.",
    "lic_success": "VoxCast가 정품 인증되었습니다. 감사합니다!",
    "lic_check_failed": "정품 인증에 실패했습니다. 키를 확인해 주세요.",
    "lic_no_server": "인증 서버에 연결할 수 없습니다. 인터넷 연결을 확인하세요.",
    "lic_unexpected": "정품 인증이 예기치 않게 실패했습니다. 다시 시도해 주세요.",

    # ── Updates (Python user messages) ──────────────────────────────────
    "upd_checking": "업데이트 확인 중…",
    "upd_latest": "최신 버전을 사용 중입니다.",
    "upd_available": "버전 {version}을(를) 사용할 수 있습니다.",
    "upd_dialog_title": "업데이트 사용 가능",
    "upd_whats_new": "새로운 기능",
    "upd_required": "필수",
    "upd_no_notes": "전반적인 개선 및 오류 수정.",
    "upd_later": "나중에",
    "upd_install_now": "다운로드 및 설치",
    "upd_install_note": "업데이트가 현재 버전을 자동으로 교체하므로 따로 할 일이 없습니다.",
    "upd_downloading": "버전 {version} 다운로드 중…",
    "upd_failed": "업데이트에 실패했습니다. 다시 시도해 주세요.",
    "upd_starting_installer": "설치 프로그램 시작 중…",
    "upd_installer_failed": "설치 프로그램을 시작할 수 없습니다.",
    "upd_err_filename": "업데이트 매니페스트에 예기치 않은 설치 파일 이름이 있습니다.",
    "upd_err_https": "업데이트 다운로드는 HTTPS를 사용해야 합니다.",
    "upd_err_response": "업데이트 서버가 잘못된 응답을 반환했습니다.",
    "upd_err_no_url": "다운로드 URL이 제공되지 않았습니다.",
    "upd_err_no_checksum": "업데이트 매니페스트에 체크섬이 없습니다. 중단되었습니다.",
    "upd_err_redirect": "업데이트 서버가 예기치 않은 리디렉션을 반환했습니다.",
    "upd_err_integrity": "다운로드한 파일이 무결성 검사를 통과하지 못했습니다. 중단되었습니다.",
    "upd_err_check": "업데이트를 확인할 수 없습니다: {error}",
    "upd_err_download": "다운로드 실패: {error}",
    "upd_err_save": "업데이트를 저장할 수 없습니다: {error}",
    "upd_err_host": "신뢰할 수 없는 호스트 '{host}'의 업데이트 다운로드를 거부했습니다.",

    # ── LLM (user messages) ─────────────────────────────────────────────
    # ── Late additions (review sweep) ───────────────────────────────────
    "act_first": "먼저 VoxCast를 정품 인증해 주세요.",
    "llm_enhance_failed": "AI 다듬기 실패: {error}",
    "llm_truncated": "AI 응답이 잘려서 원본 전사 텍스트를 대신 사용했습니다.",
    "llm_mode_needs_key": "AI 모드가 선택되었습니다. 다듬기를 사용하려면 설정에서 API 키를 추가하세요.",
    "tt_recording": "녹음 중...",
    "tray_saved": "저장됨: {name}",
    "tray_converted": "{n}개 파일을 Markdown으로 변환했습니다.",
    "hk_press_key": "키를 누르세요...",
    "hk_acc_record": "단축키로 사용할 키를 누르세요",
    "no_folder": "선택된 폴더 없음",
    "llm_load_models_ph": "모델 불러오기 →",

    "llm_no_key": "API 키가 제공되지 않았습니다.",
    "llm_no_key_configured": "API 키가 설정되지 않았습니다.",
    "llm_bad_key": "잘못되었거나 권한이 없는 API 키입니다.",
    "llm_rate_limit": "요청 한도에 도달했습니다. 잠시 후 다시 시도해 주세요.",
    "llm_provider_down": "AI 제공업체를 일시적으로 사용할 수 없습니다.",
    "llm_request_failed": "요청에 실패했습니다({code}).",
    "llm_network": "네트워크 오류: {error}",
    "llm_no_model": "이 API 키로 사용할 수 있는 AI 모델을 찾지 못했습니다.",
}
