{
  "app": {
    "brand": "nanobot",
    "loading": {
      "connecting": "nanobot에 연결 중…",
      "boot": "nanobot 불러오는 중…"
    },
    "error": {
      "title": "nanobot에 연결할 수 없습니다",
      "gatewayHint": "gateway(`nanobot gateway`)가 실행 중인지, 그리고 이 페이지가 같은 머신에서 열려 있는지 확인하세요."
    },
    "system": {
      "section": "시스템",
      "restartHint": "런타임 변경 사항을 적용하려면 nanobot을 다시 시작하세요.",
      "restart": "nanobot 다시 시작",
      "restarting": "다시 시작 중..."
    },
    "restart": {
      "completed": "{{seconds}}초 만에 다시 시작되었습니다."
    },
    "documentTitle": {
      "base": "nanobot",
      "chat": "{{title}} · nanobot"
    },
    "meta": {
      "description": "nanobot 웹 UI — nanobot 작업공간과 대화하세요."
    }
  },
  "sidebar": {
    "collapse": "사이드바 접기",
    "toggleTheme": "테마 전환",
    "newChat": "새 채팅",
    "recent": "최근 대화",
    "refreshSessions": "세션 새로고침",
    "settings": "설정",
    "language": {
      "label": "언어",
      "ariaLabel": "언어 변경"
    }
  },
  "settings": {
    "backToChat": "채팅으로 돌아가기",
    "sidebar": {
      "title": "설정",
      "ariaLabel": "설정 섹션"
    },
    "nav": {
      "general": "일반",
      "byok": "BYOK"
    },
    "sections": {
      "interface": "인터페이스",
      "ai": "AI",
      "system": "시스템"
    },
    "rows": {
      "theme": "테마",
      "language": "언어",
      "provider": "제공자",
      "model": "모델",
      "restart": "nanobot 재시작",
      "configPath": "설정 경로"
    },
    "help": {
      "theme": "밝은 모드와 어두운 모드를 전환합니다.",
      "language": "WebUI에서 사용할 언어를 선택합니다.",
      "provider": "새 모델 요청에 사용할 제공자를 선택합니다.",
      "model": "nanobot이 기본으로 사용할 모델 이름을 설정합니다.",
      "configPath": "현재 게이트웨이가 사용하는 설정 파일입니다."
    },
    "values": {
      "light": "라이트",
      "dark": "다크",
      "notAvailable": "사용할 수 없음"
    },
    "status": {
      "loading": "설정을 불러오는 중...",
      "loadError": "설정을 불러올 수 없습니다",
      "unsaved": "저장되지 않은 변경 사항이 있습니다.",
      "savedRestart": "저장되었습니다. 적용하려면 nanobot을 재시작하세요."
    },
    "actions": {
      "save": "저장",
      "saving": "저장 중",
      "edit": "편집",
      "cancel": "취소"
    },
    "byok": {
      "description": "직접 provider 키를 가져옵니다. Nanobot은 현재 config에서 값을 읽고, 설정된 provider만 일반 설정에서 선택할 수 있습니다.",
      "configured": "설정됨",
      "notConfigured": "설정 안 됨",
      "configuredSection": "설정됨",
      "notConfiguredSection": "설정 안 됨",
      "showMore": "{{count}}개 더 보기",
      "showLess": "접기",
      "apiKey": "API key",
      "apiBase": "API base",
      "apiKeyPlaceholder": "API key 입력",
      "apiKeyConfiguredPlaceholder": "비워 두면 현재 key 유지",
      "configuredKeyHint": "설정된 key",
      "apiBasePlaceholder": "provider 기본값 사용",
      "apiKeyRequired": "이 provider를 설정하려면 API key가 필요합니다.",
      "showApiKey": "API key 표시",
      "hideApiKey": "API key 숨기기",
      "noConfiguredProviders": "설정된 provider가 없습니다",
      "configureFirst": "먼저 BYOK에서 provider를 설정하세요.",
      "openByok": "BYOK 열기",
      "tabs": {
        "ariaLabel": "BYOK 자격 증명 유형",
        "llm": "LLM",
        "webSearch": "Web Search"
      },
      "webSearch": {
        "provider": "검색 provider",
        "providerHelp": "web search 도구가 사용할 백엔드를 선택합니다.",
        "selectProvider": "provider 선택",
        "credentials": "자격 증명",
        "noCredentialRequired": "key 필요 없음",
        "noCredentialHelp": "DuckDuckGo는 API key를 저장하지 않고 사용할 수 있습니다.",
        "apiKeyHelp": "config에 저장되며 저장 후에는 마스킹되어 표시됩니다.",
        "baseUrl": "Base URL",
        "baseUrlHelp": "SearXNG에는 자체 인스턴스 URL이 필요합니다.",
        "baseUrlPlaceholder": "https://search.example.com",
        "apiKeyRequired": "이 검색 provider에는 API key가 필요합니다.",
        "baseUrlRequired": "SearXNG에는 Base URL이 필요합니다.",
        "missingCredential": "저장하기 전에 필요한 자격 증명을 입력하세요.",
        "saveHint": "변경 사항은 새 web search 요청에 적용됩니다."
      }
    }
  },
  "chat": {
    "fallbackTitle": "채팅 {{id}}",
    "loading": "불러오는 중…",
    "noSessions": "아직 세션이 없습니다.",
    "actions": "{{title}} 채팅 작업",
    "delete": "삭제",
    "newChat": "새 채팅"
  },
  "deleteConfirm": {
    "title": "이 채팅을 삭제할까요?",
    "description": "이 작업은 되돌릴 수 없습니다.",
    "cancel": "취소",
    "confirm": "삭제"
  },
  "connection": {
    "idle": "대기 중",
    "connecting": "연결 중…",
    "open": "연결됨",
    "reconnecting": "재연결 중…",
    "closed": "연결 끊김",
    "error": "연결 오류"
  },
  "thread": {
    "loadingConversation": "대화 불러오는 중…",
    "empty": {
      "description": "질문을 하거나, 로컬 작업을 이어가거나, 새 스레드를 시작할 수 있습니다.",
      "greeting": "무엇을 도와드릴까요?",
      "quickActions": {
        "plan": {
          "title": "프로젝트 계획 만들기",
          "prompt": "다음에 만들 것에 대한 간결한 프로젝트 계획을 작성해 주세요."
        },
        "analyze": {
          "title": "이 데이터 분석하기",
          "prompt": "이 데이터를 분석하고 가장 중요한 패턴을 짚어 주세요."
        },
        "brainstorm": {
          "title": "아이디어 브레인스토밍",
          "prompt": "이 문제에 대한 실용적인 아이디어와 트레이드오프를 몇 가지 제안해 주세요."
        },
        "code": {
          "title": "코드 작성하기",
          "prompt": "이 작업을 위한 코드를 작성해 주세요. 가장 작은 유용한 변경부터 시작해 주세요."
        },
        "summarize": {
          "title": "문서 요약하기",
          "prompt": "이 문서를 요약하고 핵심 내용을 정리해 주세요."
        },
        "more": {
          "title": "더 보기",
          "prompt": "이 워크스페이스에서 도와줄 수 있는 유용한 방법을 몇 가지 보여 주세요."
        }
      },
      "imageQuickActions": {
        "icon": {
          "title": "앱 아이콘 디자인",
          "prompt": "nanobot을 위한 깔끔한 1:1 앱 아이콘을 생성해 주세요. 친근한 로봇, 단순한 벡터 스타일, 부드러운 파란색과 흰색 팔레트, 텍스트 없음."
        },
        "sticker": {
          "title": "스티커 만들기",
          "prompt": "작은 로봇 도우미의 귀여운 스티커 스타일 이미지를 생성해 주세요. 투명해 보이는 배경, 표정이 풍부하고 장난스러운 느낌."
        },
        "poster": {
          "title": "포스터 만들기",
          "prompt": "개인 AI 도우미를 위한 세련된 포스터 콘셉트를 생성해 주세요. 현대적인 구성, 강한 시각적 계층, 랜딩 페이지에 어울리는 스타일."
        },
        "product": {
          "title": "제품 목업",
          "prompt": "대화형 AI 웹 앱을 위한 깔끔한 제품 목업 이미지를 생성해 주세요. 미니멀한 인터페이스, 고급스러운 조명, 현실적인 기기 프레임."
        },
        "portrait": {
          "title": "스타일화된 초상화",
          "prompt": "친근한 AI 동반자의 스타일화된 초상화를 생성해 주세요. 부드러운 조명, 세밀하지만 다가가기 쉬운 분위기, 현대적인 일러스트 스타일."
        },
        "edit": {
          "title": "이미지 편집",
          "prompt": "이미지 편집을 도와주세요. 먼저 편집할 이미지를 업로드하거나 지정하게 한 뒤, 편집된 결과를 생성해 주세요."
        }
      }
    },
    "header": {
      "toggleSidebar": "사이드바 전환"
    },
    "composer": {
      "placeholderThread": "메시지를 입력하세요…",
      "placeholderHero": "무슨 생각을 하고 있나요?",
      "placeholderOpening": "새 채팅을 여는 중…",
      "placeholderStreaming": "모델이 응답 중입니다…",
      "inputAria": "메시지 입력",
      "sendHint": "Enter로 전송 · Shift+Enter로 줄바꿈",
      "send": "메시지 보내기",
      "stop": "응답 중지",
      "attachImage": "이미지 첨부",
      "imageMode": {
        "label": "이미지 생성",
        "toggle": "이미지 생성 모드 전환",
        "placeholder": "이미지를 설명하거나 편집하세요…",
        "aspectAria": "이미지 화면 비율",
        "aspectLabel": "이미지 비율",
        "aspect": {
          "auto": "자동",
          "1_1": "정사각형 1:1",
          "3_4": "세로 3:4",
          "9_16": "스토리 9:16",
          "4_3": "가로 4:3",
          "16_9": "와이드 16:9"
        }
      },
      "encoding": "처리 중…",
      "remove": "첨부 제거",
      "normalizedSizeHint": "{{orig}} → {{current}} (자동 압축)",
      "imageRejected": {
        "unsupported_type": "지원하지 않는 파일 형식입니다",
        "too_many_images": "메시지당 최대 {{max}}장까지 가능합니다",
        "magic_mismatch": "이미지 파일이 아닌 것 같습니다",
        "decode_failed": "이 이미지를 디코딩할 수 없습니다",
        "too_large": "이미지가 너무 큽니다. 더 작은 걸로 시도해 주세요",
        "io": "이 파일을 읽을 수 없습니다"
      },
      "slash": {
        "ariaLabel": "슬래시 명령",
        "label": "명령",
        "navigateHint": "↑↓ 선택",
        "selectHint": "Enter/Tab 입력",
        "closeHint": "Esc 닫기",
        "commands": {
          "new": {
            "title": "새 채팅",
            "description": "현재 작업을 중지하고 새 대화를 시작합니다."
          },
          "stop": {
            "title": "현재 작업 중지",
            "description": "이 채팅에서 실행 중인 agent 턴을 취소합니다."
          },
          "restart": {
            "title": "nanobot 재시작",
            "description": "bot 프로세스를 제자리에서 재시작합니다."
          },
          "status": {
            "title": "상태 보기",
            "description": "런타임, provider, channel 상태를 표시합니다."
          },
          "history": {
            "title": "대화 기록 보기",
            "description": "저장된 최근 N개의 대화 메시지를 출력합니다."
          },
          "dream": {
            "title": "Dream 실행",
            "description": "메모리 정리를 수동으로 트리거합니다."
          },
          "dream_log": {
            "title": "Dream 로그 보기",
            "description": "마지막 Dream 정리에서 변경된 내용을 표시합니다."
          },
          "dream_restore": {
            "title": "메모리 복원",
            "description": "이전 Dream 스냅샷으로 메모리를 되돌립니다."
          },
          "help": {
            "title": "도움말 보기",
            "description": "사용 가능한 슬래시 명령을 나열합니다."
          }
        }
      }
    },
    "scrollToBottom": "맨 아래로 스크롤"
  },
  "message": {
    "streaming": "생성 중",
    "assistantTyping": "도우미가 입력 중",
    "toolSingle": "도구 사용 중",
    "toolMany": "도구 {{count}}개 사용됨",
    "imageAttachment": "이미지 첨부"
  },
  "lightbox": {
    "title": "이미지 미리보기",
    "open": "이미지 보기",
    "prev": "이전 이미지",
    "next": "다음 이미지",
    "close": "미리보기 닫기"
  },
  "code": {
    "fallbackLanguage": "코드",
    "copyAria": "코드 복사",
    "copy": "복사",
    "copied": "복사됨"
  },
  "common": {
    "dismiss": "닫기"
  },
  "errors": {
    "messageTooBig": {
      "title": "메시지가 너무 큽니다",
      "body": "마지막 메시지가 서버의 크기 제한을 초과하여 거부되었습니다. 이미지를 줄이거나 더 작은 파일로 바꿔서 다시 보내 주세요."
    }
  }
}
