{ "app": { "brand": "nanobot", "loading": { "connecting": "nanobot에 연결 중…", "boot": "nanobot 불러오는 중…" }, "error": { "title": "nanobot에 연결할 수 없습니다", "gatewayHint": "gateway(`nanobot gateway`)가 실행 중인지, 그리고 이 페이지가 같은 머신에서 열려 있는지 확인하세요." }, "auth": { "title": "인증이 필요합니다", "hint": "gateway 설정의 tokenIssueSecret에 구성된 비밀 값을 입력하세요.", "placeholder": "비밀번호", "submit": "연결", "invalid": "비밀번호가 올바르지 않습니다. 다시 시도하세요." }, "account": { "section": "계정", "logoutHint": "이 브라우저를 gateway에서 연결 해제합니다.", "logout": "로그아웃" }, "system": { "section": "시스템", "restartHint": "런타임 변경 사항을 적용하려면 nanobot을 다시 시작하세요.", "restart": "nanobot 다시 시작", "restarting": "다시 시작 중..." }, "restart": { "completed": "{{seconds}}초 만에 다시 시작되었습니다." }, "documentTitle": { "base": "nanobot", "chat": "{{title}} · nanobot" }, "meta": { "description": "nanobot 웹 UI — nanobot 작업공간과 대화하세요." } }, "sidebar": { "navigation": "사이드바 탐색", "globalActions": "전역 작업", "collapse": "사이드바 접기", "toggleTheme": "테마 전환", "home": "홈", "newChat": "새 채팅", "searchAria": "검색", "viewOptions": "View", "compactList": "Compact list", "showPreviews": "Show previews", "showTimestamps": "Show time", "sortLabel": "Sort", "sortUpdated": "Recently updated", "sortCreated": "Recently created", "sortTitle": "Title A-Z", "searchPlaceholder": "검색", "searchResults": "결과", "noSearchResults": "일치하는 채팅이 없습니다.", "recent": "최근 대화", "refreshSessions": "세션 새로고침", "settings": "설정", "language": { "label": "언어", "ariaLabel": "언어 변경" } }, "settings": { "backToChat": "채팅으로 돌아가기", "sidebar": { "title": "설정", "ariaLabel": "설정 섹션" }, "nav": { "general": "일반", "byok": "BYOK", "overview": "Overview", "appearance": "Appearance", "models": "Models", "providers": "Providers", "image": "Image", "web": "Web", "runtime": "Runtime", "advanced": "Advanced" }, "sections": { "interface": "인터페이스", "ai": "AI", "system": "시스템", "status": "Status", "localPreferences": "Local preferences", "presets": "Presets", "imageGeneration": "이미지 생성", "imageDefaults": "기본값", "webSearch": "Web search", "webBehavior": "Behavior", "identity": "Identity", "safety": "Safety", "capabilities": "기능", "integrations": "Integrations" }, "rows": { "theme": "테마", "language": "언어", "provider": "제공자", "model": "모델", "restart": "nanobot 재시작", "configPath": "설정 경로", "activePreset": "Active preset", "gateway": "Gateway", "restartState": "Restart state", "pendingChanges": "대기 중인 변경 사항", "selectedPreset": "Selected preset", "presetModel": "Preset model", "density": "Density", "activityMode": "Activity detail", "codeWrap": "Code wrapping", "maxResults": "Max results", "timeout": "Timeout", "jinaReader": "Jina reader", "imageGeneration": "이미지 생성", "imageProvider": "이미지 제공자", "imageProviderStatus": "제공자 상태", "imageProviderBase": "제공자 기준 주소", "imageModel": "이미지 모델", "defaultAspectRatio": "기본 비율", "defaultImageSize": "기본 크기", "maxImagesPerTurn": "턴당 최대 이미지 수", "imageSaveDir": "저장 디렉터리", "botName": "Bot name", "botIcon": "Bot icon", "timezone": "Timezone", "toolHintMaxLength": "Tool hint length", "workspacePath": "Workspace path", "heartbeat": "Heartbeat", "dream": "Dream", "unifiedSession": "Unified session", "restrictWorkspace": "Restrict to workspace", "execTool": "Exec tool", "execSandbox": "Exec sandbox", "ssrfWhitelist": "SSRF whitelist", "mcpServers": "MCP servers", "pathAppend": "PATH append", "configurationDocs": "Configuration docs" }, "help": { "theme": "밝은 모드와 어두운 모드를 전환합니다.", "language": "WebUI에서 사용할 언어를 선택합니다.", "provider": "새 모델 요청에 사용할 제공자를 선택합니다.", "model": "nanobot이 기본으로 사용할 모델 이름을 설정합니다.", "configPath": "현재 게이트웨이가 사용하는 설정 파일입니다.", "selectedPreset": "Named presets are read-only here; edit them in config.json.", "presetModel": "Switch to Default to edit model and provider from the WebUI.", "density": "Stored only in this browser.", "activityMode": "Choose how much agent activity chrome to show by default.", "codeWrap": "Keep long code lines readable on smaller screens.", "maxResults": "Results returned by each web_search call.", "timeout": "Seconds before a search provider request times out.", "jinaReader": "Use Jina Reader for web_fetch when available.", "imageGeneration": "구성된 이미지 제공자를 사용할 수 있을 때 채팅에서 generate_image를 노출합니다.", "imageProvider": "generate_image가 사용할 레지스트리 제공자를 선택합니다.", "imageProviderStatus": "이미지 생성은 Providers의 제공자 자격 증명을 재사용합니다.", "imageModel": "선택한 이미지 제공자에 보낼 모델 이름입니다.", "defaultAspectRatio": "프롬프트에서 가로세로 비율을 선택하지 않았을 때 사용됩니다.", "defaultImageSize": "지원하는 제공자에게 보내는 크기 힌트입니다.", "maxImagesPerTurn": "한 번의 generate_image 요청에 대한 상한입니다.", "botName": "Shown in runtime surfaces that use the configured bot identity.", "botIcon": "Short emoji or text shown beside the bot name.", "timezone": "IANA timezone used by runtime context and schedules.", "toolHintMaxLength": "Maximum characters shown in tool progress hints.", "advancedReadOnly": "Advanced safety controls are read-only in WebUI. Edit config.json intentionally when needed." }, "values": { "light": "라이트", "dark": "다크", "notAvailable": "사용할 수 없음", "enabled": "Enabled", "disabled": "Disabled", "restartPending": "재시작 대기 중", "ready": "준비됨", "comfortable": "Comfortable", "compact": "Compact", "auto": "Auto", "expanded": "Expanded", "on": "On", "off": "Off", "configured": "Configured", "notConfigured": "Not configured", "restartRequired": "Restart required", "liveReload": "Live reload ready" }, "status": { "loading": "설정을 불러오는 중...", "loadError": "설정을 불러올 수 없습니다", "unsaved": "저장되지 않은 변경 사항이 있습니다.", "upToDate": "최신 상태입니다.", "savedRestart": "저장되었습니다. 적용하려면 nanobot을 재시작하세요.", "restartAfterSaving": "변경 사항을 저장한 뒤 준비되면 재시작하세요.", "savedRestartApply": "저장되었습니다. 준비되면 재시작하세요.", "imageProviderRestart": "이미지 제공자 변경 사항이 저장되었습니다. 준비되면 재시작하세요." }, "actions": { "save": "저장", "saving": "저장 중", "edit": "편집", "cancel": "취소", "openDocs": "Open docs" }, "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 요청에 적용됩니다." } }, "overview": { "model": "Current model", "providers": "Providers", "configuredCount": "{{count}} configured", "totalProviders": "{{count}} available", "webSearch": "Web search", "imageGeneration": "이미지 생성", "workspace": "Workspace" }, "providers": { "searchPlaceholder": "Search providers", "noMatches": "No providers match this search." }, "image": { "selectProvider": "제공자 선택", "selectAspect": "비율 선택", "selectSize": "크기 선택", "configureProvider": "제공자 구성", "missingCredential": "이미지 생성을 활성화하기 전에 이 제공자를 구성하세요." } }, "chat": { "fallbackTitle": "채팅 {{id}}", "loading": "불러오는 중…", "noSessions": "아직 세션이 없습니다.", "showMore": "{{count}}개 더 보기", "actions": "{{title}} 채팅 작업", "activity": { "running": "Agent running", "complete": "Agent finished" }, "pin": "Pin", "unpin": "Unpin", "rename": "Rename", "renameTitle": "Rename chat", "renameDescription": "Choose a local sidebar name for this chat.", "renamePlaceholder": "Chat name", "renameSave": "Save", "archive": "Archive", "unarchive": "Unarchive", "showArchived": "Show archived", "hideArchived": "Hide archived", "delete": "삭제", "newChat": "새 채팅", "groups": { "pinned": "Pinned", "all": "Chats", "today": "Today", "yesterday": "Yesterday", "earlier": "Earlier", "archived": "Archived" } }, "deleteConfirm": { "title": "이 채팅을 삭제할까요?", "description": "이 작업은 되돌릴 수 없습니다.", "cancel": "취소", "confirm": "삭제" }, "connection": { "idle": "대기 중", "connecting": "연결 중…", "open": "연결됨", "reconnecting": "재연결 중…", "closed": "연결 끊김", "error": "연결 오류" }, "thread": { "loadingConversation": "대화 불러오는 중…", "empty": { "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": "이미지 편집을 도와주세요. 먼저 편집할 이미지를 업로드하거나 지정하게 한 뒤, 편집된 결과를 생성해 주세요." } }, "description": "질문을 하거나, 로컬 작업을 이어가거나, 새 스레드를 시작할 수 있습니다." }, "header": { "toggleSidebar": "사이드바 전환", "newChat": "새 채팅 시작", "toggleTheme": "헤더에서 테마 전환", "settings": "설정 열기" }, "composer": { "placeholderThread": "메시지를 입력하세요…", "placeholderHero": "무슨 생각을 하고 있나요?", "placeholderOpening": "새 채팅을 여는 중…", "placeholderStreaming": "모델이 응답 중입니다…", "inputAria": "메시지 입력", "sendHint": "Enter로 전송 · Shift+Enter로 줄바꿈", "runRuntimeTitle": "실행 중 · {{elapsed}}", "goalStateStrip": "목표 · {{label}}", "goalStateFallback": "목표", "goalStateExpandAria": "전체 목표 보기", "goalStateSheetTitle": "목표", "goalStateCloseAria": "목표 닫기", "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" } }, "tools": { "search": "검색", "reason": "추론", "deepResearch": "심층 조사", "voice": "음성 입력" }, "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 스냅샷으로 메모리를 되돌립니다." }, "goal": { "title": "장기 목표", "description": "에이전트에게 지속적인 다단계 목표로 처리하도록 지시합니다." }, "help": { "title": "도움말 보기", "description": "사용 가능한 슬래시 명령을 나열합니다." } } }, "encoding": "처리 중…", "remove": "첨부 제거", "normalizedSizeHint": "{{orig}} → {{current}} (자동 압축)", "imageRejected": { "unsupported_type": "지원하지 않는 파일 형식입니다", "too_many_images": "메시지당 최대 {{max}}장까지 가능합니다", "magic_mismatch": "이미지 파일이 아닌 것 같습니다", "decode_failed": "이 이미지를 디코딩할 수 없습니다", "too_large": "이미지가 너무 큽니다. 더 작은 걸로 시도해 주세요", "io": "이 파일을 읽을 수 없습니다" } }, "scrollToBottom": "맨 아래로 스크롤", "loadEarlier": "이전 메시지 불러오기" }, "message": { "streaming": "생성 중", "assistantTyping": "도우미가 입력 중", "toolSingle": "도구 사용 중", "toolMany": "도구 {{count}}개 사용됨", "toolSummary": "도구 {{count}}개", "toolSummaryMany": "도구 {{count}}개", "reasoningTools": "추론 · 도구 {{count}}개", "reasoningToolsSingular": "추론 · 도구 1개", "reasoning": "추론", "reasoningStreaming": "추론 중…", "reasoningSummary": "추론", "agentActivitySummary": "{{reasoning}}단계 · 도구 호출 {{tools}}회", "agentActivityToolsOnly": "도구 호출 {{tools}}회", "agentActivityLiveSummary": "진행 중… · {{reasoning}}단계 · 도구 호출 {{tools}}회", "agentActivityLiveToolsOnly": "진행 중… · 도구 호출 {{tools}}회", "imageAttachment": "이미지 첨부", "copyReply": "답변 복사", "copiedReply": "답변이 복사됨", "turnLatencyTitle": "응답 시간(엔드투엔드)" }, "lightbox": { "title": "이미지 미리보기", "open": "이미지 보기", "prev": "이전 이미지", "next": "다음 이미지", "close": "미리보기 닫기" }, "code": { "fallbackLanguage": "코드", "copyAria": "코드 복사", "copy": "복사", "copied": "복사됨" }, "common": { "dismiss": "닫기" }, "errors": { "messageTooBig": { "title": "메시지가 너무 큽니다", "body": "마지막 메시지가 서버의 크기 제한을 초과하여 거부되었습니다. 이미지를 줄이거나 더 작은 파일로 바꿔서 다시 보내 주세요." } } }